UNPKG

@itrocks/framework

Version:

RAD framework for intuitive web application development, blending data and domain-driven design with modular architecture

66 lines 3.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.run = run; const app_dir_1 = require("@itrocks/app-dir"); const action_1 = require("@itrocks/action"); const action_request_1 = require("@itrocks/action-request"); const action_request_2 = require("@itrocks/action-request"); const class_type_1 = require("@itrocks/class-type"); const config_1 = require("@itrocks/config"); const fastify_1 = require("@itrocks/fastify"); const fastify_file_session_store_1 = require("@itrocks/fastify-file-session-store"); const route_1 = require("@itrocks/route"); const store_1 = require("@itrocks/store"); const template_1 = require("@itrocks/template"); const node_path_1 = require("node:path"); template_1.frontScripts.push('/node_modules/air-datepicker/locale/en.js', '/node_modules/air-datepicker/locale/fr.js'); async function execute(request) { // Access control if (!request.request.session.user && !config_1.config.access.free.includes(request.route + '/' + request.action)) { request.action = 'login'; request.route = '/user'; } // Resolve action class or function module const module = route_1.routes.resolve(request.route + '/' + request.action); // undefined module if (!module) { console.error('Action ' + request.route + '/' + request.action + ' not found'); throw 'Action ' + request.route + '/' + request.action + ' not found'; } // ActionClass module if ((0, class_type_1.isAnyType)(module)) { const action = (new module); if (request.format in action) { const need = (0, action_1.needOf)(action); if (need.alternative && (need.alternative !== request.action) && (((need.need === 'object') && !request.ids.length) || ((need.need === 'Store') && !(0, store_1.storeOf)(request.type)))) { request.action = need.alternative; return execute(request); } if ((need.need === 'object') && !request.ids.length && !request.request.data.confirm) { console.error('Action ' + request.route + '/' + request.action + ' needs at least one object'); throw 'Action ' + request.route + '/' + request.action + ' needs at least one '; } return action[request.format](request); } } // ActionFunction module return module(request); } async function run() { await (0, route_1.loadRoutes)(route_1.routes, config_1.config.routes); (0, action_request_1.actionRequestDependsOn)({ getModule: route_1.routes.resolve.bind(route_1.routes) }); return new fastify_1.FastifyServer({ assetPath: app_dir_1.appDir, execute: request => execute(new action_request_2.Request(request)), favicon: '/node_modules/@itrocks/framework/favicon.ico', frontScripts: template_1.frontScripts, port: 3000, scriptCalls: ['loadCss', 'loadScript'], secret: config_1.config.secret, store: new fastify_file_session_store_1.FileStore((0, node_path_1.join)(app_dir_1.appDir, config_1.config.session.path)) }).run(); } //# sourceMappingURL=main.js.map