import {Canonical, CanonicalDefinition} from './Canonical.ts' import {isInstantiable} from '../../../di/src/type/Instantiable.ts' export class InvalidCanonicalExportError extends Error { constructor(name: string) { super(`Unable to import canonical item from "${name}". The default export of this file is invalid.`) } } export class InstantiableCanonical extends Canonical { public async init_canonical_item(def: CanonicalDefinition) { if ( isInstantiable(def.imported.default) ) { return this.make(def.imported.default) } throw new InvalidCanonicalExportError(def.original_name) } }