@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
JavaScript
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