lib/src/service/CanonicalStatic.ts
garrettmills 1d5056b753
All checks were successful
continuous-integration/drone/push Build is passing
Setup eslint and enforce rules
2021-06-02 22:36:25 -05:00

26 lines
1.1 KiB
TypeScript

import {Canonical, CanonicalDefinition} from './Canonical'
import {isStaticClass, StaticClass} from '../di'
import {InvalidCanonicalExportError} from './CanonicalInstantiable'
/**
* Variant of the Canonical unit whose files export static classes, and these static classes
* are the exports of the class.
*
* @example
* The Controllers class is CanonicalStatic. The various `.controller.ts` files export static
* Controller classes, so the canonical items managed by the Controllers service are `Instantiable<Controller>`.
*/
export class CanonicalStatic<T, T2> extends Canonical<StaticClass<T, T2>> {
public async initCanonicalItem(definition: CanonicalDefinition): Promise<StaticClass<T, T2>> {
if ( isStaticClass(definition.imported.default) ) {
return definition.imported.default
}
if ( isStaticClass(definition.imported[definition.canonicalName.split(':').reverse()[0]]) ) {
return definition.imported[definition.canonicalName.split(':').reverse()[0]]
}
throw new InvalidCanonicalExportError(definition.originalName)
}
}