UNPKG

@sentzunhat/zacatl

Version:

A modular, high-performance TypeScript microservice framework for Node.js, featuring layered architecture, dependency injection, and robust validation for building scalable APIs and distributed systems.

54 lines 2.24 kB
import { resolveDependencies } from '../../../dependency-injection/index.js'; import { InternalServerError } from '../../../error/index.js'; import { getContainer } from '../../../dependency-injection/container.js'; export class Application { config; constructor(config) { this.config = config; this.register(); } register() { if (this.config.entryPoints.rest != null) { this.registerRestEntryPoints(); } } registerRestEntryPoints() { const restEntryPoints = this.config.entryPoints.rest; if (restEntryPoints == null) { return; } const { hooks: restHooks, routes: restRoutes } = restEntryPoints; if (restHooks != null && restHooks.length > 0) { for (const hook of restHooks) { if (!getContainer().isRegistered(hook)) { getContainer().registerSingleton(hook, hook); } } } if (restRoutes != null && restRoutes.length > 0) { for (const route of restRoutes) { if (!getContainer().isRegistered(route)) { getContainer().registerSingleton(route, route); } } } const hooks = restHooks != null ? resolveDependencies(restHooks) : []; const routes = restRoutes != null ? resolveDependencies(restRoutes) : []; if (hooks.length !== (restHooks != null ? restHooks.length : 0) || routes.length !== (restRoutes != null ? restRoutes.length : 0)) { throw new InternalServerError({ message: 'Failed to register all REST entry point dependencies', reason: 'Not all REST hooks and routes could be resolved from DI container', component: 'ApplicationLayer', operation: 'register', metadata: { expectedHooks: restHooks != null ? restHooks.length : 0, resolvedHooks: hooks.length, expectedRoutes: restRoutes != null ? restRoutes.length : 0, resolvedRoutes: routes.length, }, }); } } } //# sourceMappingURL=application.js.map