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.
23 lines
794 B
23 lines
794 B
import {Canonical, CanonicalDefinition} from './Canonical.ts'
|
|
import {isRouterDefinition, RouterDefinition} from '../http/type/RouterDefinition.ts'
|
|
import {Unit} from '../lifecycle/decorators.ts'
|
|
|
|
/**
|
|
* Canonical unit which loads router definitions.
|
|
* @extends Canonical
|
|
*/
|
|
@Unit()
|
|
export default class Routes extends Canonical<RouterDefinition> {
|
|
protected base_path = './app/http/routes'
|
|
protected canonical_item = 'route_group'
|
|
protected suffix = '.routes.ts'
|
|
|
|
public async init_canonical_item(def: CanonicalDefinition): Promise<RouterDefinition> {
|
|
const item = await super.init_canonical_item(def)
|
|
if ( !isRouterDefinition(item) ) {
|
|
throw new TypeError(`Invalid routes definition: ${def.original_name}.`)
|
|
}
|
|
return item
|
|
}
|
|
}
|