UNPKG

@pulzar/core

Version:

Next-generation Node.js framework for ultra-fast web applications with zero-reflection DI, GraphQL, WebSockets, events, and edge runtime support

63 lines 1.95 kB
export function defineModule(definition) { return { name: definition.name, providers: definition.providers || [], imports: definition.imports || [], exports: definition.exports || [], controllers: definition.controllers || [], routes: definition.routes || [], }; } export function createModuleMetadata(definition) { const providers = new Map(); const imports = new Set(); const exports = new Set(); const controllers = new Set(); const routes = new Set(); // Process providers definition.providers.forEach((provider) => { const token = provider.name; providers.set(token, provider); }); // Process imports definition.imports?.forEach((importModule) => { imports.add(importModule.name); }); // Process exports definition.exports?.forEach((exportProvider) => { const token = exportProvider.name; exports.add(token); }); // Process controllers definition.controllers?.forEach((controller) => { controllers.add(controller.name); }); // Process routes definition.routes?.forEach((route) => { routes.add(route); }); return { name: definition.name, providers, imports, exports, controllers, routes, }; } // Decorator for module classes export function Module(definition) { return function (target) { const moduleDef = defineModule({ name: definition.name || target.name, providers: definition.providers || [], imports: definition.imports || [], exports: definition.exports || [], controllers: definition.controllers || [], routes: definition.routes || [], }); // Store metadata on the class Reflect.defineMetadata("ignite:module", moduleDef, target); }; } //# sourceMappingURL=define-module.js.map