import {CanonicalInstantiable} from "./CanonicalInstantiable"; import {Singleton} from "@extollo/di"; import {Controller} from "../http/Controller"; import {CanonicalDefinition} from "./Canonical"; @Singleton() export class Controllers extends CanonicalInstantiable { protected appPath = ['http', 'controllers'] protected canonicalItem = 'controller' protected suffix = '.controller.js' public async initCanonicalItem(definition: CanonicalDefinition) { const item = await super.initCanonicalItem(definition) if ( !(item instanceof Controller) ) { throw new TypeError(`Invalid controller definition: ${definition.originalName}. Controllers must extend from @extollo/lib.http.Controller.`) } return item } }