import Arbitrary from '@/ecs/arbitrary.js'; import Base from '@/ecs/base.js'; import Schema from '@/ecs/schema.js'; import gather from '@/engine/gather.js'; const specificationsOrClasses = gather( import.meta.glob('./*.js', {eager: true, import: 'default'}), ); const Components = {}; for (const componentName in specificationsOrClasses) { const specificationOrClass = specificationsOrClasses[componentName]; if (specificationOrClass instanceof Base) { Components[componentName] = specificationOrClass; } else { Components[componentName] = class Component extends Arbitrary { static name = componentName; static schema = new Schema({ type: 'object', properties: specificationOrClass, }); }; } } export default Components;