You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

25 lines
907 B

import { InstantiableCanonical } from './InstantiableCanonical.ts'
import { CanonicalDefinition } from './Canonical.ts'
import Middleware from '../http/Middleware.ts'
import { Unit } from '../lifecycle/decorators.ts'
/**
* Canonical unit which loads and instantiates application middleware.
* @extends InstantiableCanonical
*/
@Unit()
export default class Middlewares extends InstantiableCanonical<Middleware> {
protected base_path = './app/http/middleware'
protected canonical_item = 'middleware'
protected suffix = '.middleware.ts'
public async init_canonical_item(def: CanonicalDefinition) {
const item = await super.init_canonical_item(def)
if ( !(item instanceof Middleware) ) {
throw new TypeError(`Invalid middleware definition: ${def.original_name}. Middleware must extend from Daton's base Middleware class.`)
}
return item
}
}