UNPKG

rage-framework

Version:

## How to Install *server-side* ```bash npm install @rage-framework/server ```

65 lines 3.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.NgModule = exports.Module = void 0; const container_1 = require("../container"); const cache_layer_service_1 = require("../services/cache/cache-layer.service"); const generic_constructor_1 = require("../helpers/generic-constructor"); const logger_service_1 = require("../services/utils/logger.service"); const resolver_service_1 = require("../services/utils/resolver.service"); const metadata_service_1 = require("../services/utils/metadata.service"); const bootstrapLogger = container_1.Container.get(logger_service_1.LoggerService); const resolverService = container_1.Container.get(resolver_service_1.ResolverService); const cacheService = container_1.Container.get(cache_layer_service_1.CacheService); const metadataService = container_1.Container.get(metadata_service_1.MetadataService); function Module(module) { return (target) => { module = module || {}; const original = Object.assign(target); const moduleName = target.name || target.constructor.name; const generatedHashData = metadataService.generateHashData(module, original); const uniqueModuleTemplate = metadataService.parseModuleTemplate(moduleName, generatedHashData, `${target}`); const uniqueHashForClass = metadataService.createUniqueHash(uniqueModuleTemplate); Object.defineProperty(original, 'originalName', { value: original.name || original.constructor.name, writable: false, }); Object.defineProperty(original, 'name', { value: uniqueHashForClass, writable: true, }); const currentModuleLayer = cacheService.createLayer({ name: uniqueHashForClass, }); original.metadata = { moduleName: original.originalName, moduleHash: uniqueHashForClass, options: null, type: 'module', raw: uniqueModuleTemplate, }; const constructorFunction = function (...args) { bootstrapLogger.log(`Bootstrap -> @Module('${original.originalName}'): loading...`); return generic_constructor_1.GenericConstruct(module, original, currentModuleLayer)(original, args); }; Object.assign(constructorFunction, original); resolverService .resolveDependencies(uniqueHashForClass, original, moduleName) .subscribe(() => bootstrapLogger.log(`Start -> @Module('${original.originalName}'): loaded!`)); Object.getOwnPropertyNames(original) .filter((prop) => typeof original[prop] === 'function') .map((descriptor) => Object.defineProperty(constructorFunction, descriptor, { configurable: true, writable: true, value: original[descriptor], })); const service = { type: constructorFunction, }; container_1.Container.set(service); return constructorFunction; }; } exports.Module = Module; /** @angular module compatability */ exports.NgModule = Module; //# sourceMappingURL=module.js.map