0.1.6•Updated a month ago
import { existsSync, walkSync } from "jsr:@std/fs";
import { join } from "$fresh/src/server/deps.ts";
import type { Entity } from "@infinity-beyond/classes/data_types/entity/mod.ts";
export const FetchInfinityClasses = async () => {
const Entities: Map<string, Entity> = new Map();
const classes_path = join(Deno.cwd(), 'classes');
if(!existsSync(classes_path)) {
console.warn(`Could not find a classes directory!`)
console.info(`To make use of Infinity Beyond, please add all necessary classes to ${classes_path}\n`);
} else {
for(const dirEntry of walkSync(classes_path, { includeDirs: false })) {
if(!/\.ts$/.test(dirEntry.name)) continue;
const entity_import = await import(`file://${dirEntry.path}`);
const entity_exports = Object.values(entity_import) as (Entity)[];
const entity = entity_exports.find(e => (e as Entity).__is_instanceof_entity);
if(!entity) continue;
Entities.set(entity.name, entity);
}
}
return Entities;
}