UNPKG

@tsed/platform-http

Version:
48 lines (47 loc) 1.38 kB
import { isArray, isClass } from "@tsed/core"; import { GlobalProviders, ProviderType } from "@tsed/di"; const lookupProperties = ["mount", "imports"]; /** * @ignore */ function getTokens(config) { if (!config) { return []; } if (isArray(config)) { return config.filter(isClass).map((value) => { return { token: value }; }); } return Object.keys(config).reduce((list, route) => { return [ ...list, ...[] .concat(config[route]) .filter(isClass) .map((token) => ({ route, token })) ]; }, []); } /** * @ignore */ function resolveRecursively(providers) { return providers .map(({ token }) => GlobalProviders.get(token)) .filter((provider) => provider?.type === ProviderType.MODULE && provider.configuration) .flatMap((provider) => resolveControllers(provider.configuration)); } /** * Return controllers and is base route according to his configuration in module configuration. * * @param settings * @ignore */ export function resolveControllers(settings) { const providers = lookupProperties.flatMap((property) => getTokens(settings[property])); return [...resolveRecursively(providers), ...providers].filter((provider) => !!provider.route); }