rage-framework
Version:
## How to Install *server-side* ```bash npm install @rage-framework/server ```
75 lines • 3.65 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ResolverService = void 0;
const container_1 = require("../../container");
const cache_layer_service_1 = require("../cache/cache-layer.service");
const events_1 = require("../../helpers/events");
const operators_1 = require("rxjs/operators");
const rxjs_1 = require("rxjs");
const logger_service_1 = require("./logger.service");
const injector_1 = require("../../decorators/injector");
const service_1 = require("../../decorators/service");
let ResolverService = class ResolverService {
resolveDependencies(hash, target, moduleName) {
this.cacheService
.getLayer(events_1.InternalLayers.modules)
.putItem({ key: hash, data: target });
const currentModule = this.cacheService.getLayer(hash);
currentModule.putItem({
key: events_1.InternalEvents.config,
data: { moduleName, moduleHash: hash }
});
return currentModule.getItemObservable(events_1.InternalEvents.load).pipe(operators_1.switchMap(config => {
if (!config.data) {
return rxjs_1.of(null);
}
return currentModule.items.asObservable();
}), operators_1.filter(res => res && res.length), operators_1.map(this.resolveContainerDependencies(target, moduleName)));
}
resolveContainerDependencies(target, moduleName) {
return res => {
res.forEach(i => {
if (i.key === events_1.InternalEvents.load || i.key === events_1.InternalEvents.config) {
return;
}
const found = this.cacheService.searchForItem(i.data);
if (found) {
if (found.provide) {
return found;
}
const moduleType = found.metadata.type.charAt(0).toUpperCase() +
found.metadata.type.slice(1);
this.bootstrapLogger.log(`Start -> @Module('${moduleName}'): @${moduleType}('${found.originalName}')` +
' initialized!');
return container_1.Container.get(found);
}
else {
throw new Error('not found');
}
});
return res;
};
}
};
__decorate([
injector_1.Injector(logger_service_1.LoggerService),
__metadata("design:type", logger_service_1.LoggerService)
], ResolverService.prototype, "bootstrapLogger", void 0);
__decorate([
injector_1.Injector(cache_layer_service_1.CacheService),
__metadata("design:type", cache_layer_service_1.CacheService)
], ResolverService.prototype, "cacheService", void 0);
ResolverService = __decorate([
service_1.Service()
], ResolverService);
exports.ResolverService = ResolverService;
//# sourceMappingURL=resolver.service.js.map