zents
Version:
ZenTS is a Node.js & TypeScript MVC-Framework for building rich web applications, released as free and open-source software under the MIT License. It is designed for building web applications with modern tools and design patterns.
56 lines • 2.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AutoLoader = void 0;
const ControllerLoader_1 = require("../controller/ControllerLoader");
const DatabaseContainer_1 = require("../database/DatabaseContainer");
const EmailTemplateLoader_1 = require("../email/EmailTemplateLoader");
const EntityLoader_1 = require("../database/EntityLoader");
const Registry_1 = require("./Registry");
const SecurityProviderLoader_1 = require("../security/SecurityProviderLoader");
const ServiceLoader_1 = require("../service/ServiceLoader");
const TemplateEngineLoader_1 = require("../template/TemplateEngineLoader");
const createConnection_1 = require("../database/createConnection");
const createRedisClient_1 = require("../database/createRedisClient");
class AutoLoader {
async createRegistry() {
const [controllers, services, templateData, emailTemplates, entities, connection, redisClient,] = await Promise.all([
this.loadControllers(),
this.loadServices(),
this.loadTemplateData(),
this.loadEmailTemplates(),
this.loadEntities(),
createConnection_1.createConnection(),
createRedisClient_1.createRedisClient(),
]);
const databaseContainer = new DatabaseContainer_1.DatabaseContainer(connection, redisClient);
const securityProviders = this.loadSecurityProviders(entities, databaseContainer);
const registry = new Registry_1.Registry(controllers, services, templateData, emailTemplates, databaseContainer, entities, securityProviders);
return registry;
}
loadSecurityProviders(entities, databaseContainer) {
const securityProviderLoader = new SecurityProviderLoader_1.SecurityProviderLoader();
return securityProviderLoader.load(entities, databaseContainer);
}
async loadControllers() {
const controllerLoader = new ControllerLoader_1.ControllerLoader();
return await controllerLoader.load();
}
async loadServices() {
const serviceLoader = new ServiceLoader_1.ServiceLoader();
return await serviceLoader.load();
}
async loadTemplateData() {
const templateEngineLoader = new TemplateEngineLoader_1.TemplateEngineLoader();
return await templateEngineLoader.load();
}
async loadEntities() {
const entityLoader = new EntityLoader_1.EntityLoader();
return await entityLoader.load();
}
async loadEmailTemplates() {
const emailTemplateLoader = new EmailTemplateLoader_1.EmailTemplateLoader();
return await emailTemplateLoader.load();
}
}
exports.AutoLoader = AutoLoader;
//# sourceMappingURL=AutoLoader.js.map