0.1.2•Updated 7 months ago
import { join } from "node:path";
import { existsSync, walkSync } from "jsr:@std/fs";
import { Entity } from "@infinity-beyond/classes/entity.ts";
import State from "@infinity-beyond/modules/state.ts";
export const Entities: Record<string, typeof Entity> = {}
const classes_path = join(Deno.cwd(), 'classes');
if(State.Environment == 'PROCESSOR') {
if(!existsSync(classes_path)) {
console.error(`Could not find a classes directory! Please add all necessary classes to:\n ${classes_path}`)
} else {
for(const dirEntry of walkSync(classes_path, { includeDirs: false })) {
if(!/\.tsx?$/.test(dirEntry.name)) continue;
const entity_import = await import(`file://${dirEntry.path}`);
const entity_exports = Object.values(entity_import) as (typeof Entity)[];
const entity = entity_exports.find(e => e?.__is_typeof_entity || e instanceof Entity);
if(!entity) continue;
Entities[entity.name] = entity;
}
}
}