@itrocks/framework
Version:
RAD framework for intuitive web application development, blending data and domain-driven design with modular architecture
100 lines • 5.27 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.bind = bind;
const lazy_loading_1 = require("@itrocks/lazy-loading");
(0, lazy_loading_1.initLazyLoading)();
const action_1 = require("@itrocks/action");
const app_dir_1 = require("@itrocks/app-dir");
const class_file_1 = require("@itrocks/class-file");
const class_view_1 = require("@itrocks/class-view");
const class_view_2 = require("@itrocks/class-view");
const collection_1 = require("@itrocks/collection");
const composition_1 = require("@itrocks/composition");
const config_1 = require("@itrocks/config");
const core_transformers_1 = require("@itrocks/core-transformers");
const core_transformers_2 = require("@itrocks/core-transformers");
const lazy_loading_2 = require("@itrocks/lazy-loading");
const menu_1 = require("@itrocks/menu");
const mysql_1 = require("@itrocks/mysql");
const password_1 = require("@itrocks/password");
const transformers_1 = require("@itrocks/password/transformers");
const property_view_1 = require("@itrocks/property-view");
const rename_1 = require("@itrocks/rename");
const rename_2 = require("@itrocks/rename");
const required_1 = require("@itrocks/required");
const route_1 = require("@itrocks/route");
const route_2 = require("@itrocks/route");
const sql_functions_1 = require("@itrocks/sql-functions");
const storage_1 = require("@itrocks/storage");
const store_1 = require("@itrocks/store");
const store_2 = require("@itrocks/store");
const transformer_1 = require("@itrocks/transformer");
const transformer_2 = require("@itrocks/transformer");
const transformer_3 = require("@itrocks/transformer");
const translate_1 = require("@itrocks/translate");
const date_fns_1 = require("date-fns");
const node_path_1 = require("node:path");
const template_1 = require("./template");
const menu = new menu_1.Menu(config_1.config.menu);
function bind() {
(0, class_view_1.classViewDependsOn)({ requiredOf: required_1.requiredOf, tr: translate_1.tr });
(0, storage_1.createDataSource)(config_1.config.dataSource);
(0, collection_1.initCollection)();
(0, core_transformers_1.initCoreTransformers)({
displayOf: property_view_1.displayOf,
fieldIdOf: rename_2.toCssId,
fieldNameOf: rename_2.toField,
formatDate: date => (0, date_fns_1.format)(date, (0, translate_1.tr)('dd/MM/yyyy', { ucFirst: false })),
ignoreTransformedValue: transformer_2.IGNORE,
parseDate: date => (0, date_fns_1.parse)(date, (0, translate_1.tr)('dd/MM/yyyy', { ucFirst: false }), new Date),
representativeValueOf: class_view_2.representativeValueOf,
routeOf: route_2.routeOf,
tr: translate_1.tr
});
(0, mysql_1.mysqlDependsOn)({
applyReadTransformer: async function (data, property, object) {
const value = await (0, transformer_1.applyTransformer)(data[property], object, property, transformer_3.SQL, transformer_3.READ, data);
if ((value !== transformer_2.IGNORE) && Reflect.getOwnMetadata(lazy_loading_2.PROTECT_GET, object, property)) {
Reflect.deleteMetadata(lazy_loading_2.PROTECT_GET, object, property);
}
return value;
},
applySaveTransformer: async function (object, property, data) {
const value = Reflect.getMetadata(lazy_loading_2.PROTECT_GET, object, property) ? undefined : await object[property];
return (0, transformer_1.applyTransformer)(value, object, property, transformer_3.SQL, transformer_3.SAVE, data);
},
columnOf: rename_1.toColumn,
componentOf: composition_1.componentOf,
ignoreTransformedValue: transformer_2.IGNORE,
QueryFunction: sql_functions_1.SqlFunction,
queryFunctionCall: value => [value.value, value.sql],
storeOf: store_2.storeOf
});
(0, password_1.passwordDependsOn)({
setTransformers: transformers_1.setPasswordTransformers
});
(0, route_1.routeDependsOn)({
calculate: (target) => route_2.routes.summarize((0, class_file_1.fileOf)(target).slice(app_dir_1.appDir.length, -3))
});
(0, store_1.storeDependsOn)({
setTransformers: core_transformers_2.initStoreTransformers,
toStoreName: rename_1.toColumn
});
(0, translate_1.trInit)('fr-FR');
(0, translate_1.trLoad)((0, node_path_1.join)(__dirname, '..', 'fr-FR.csv'));
(0, translate_1.trLoad)((0, node_path_1.join)(app_dir_1.appDir, 'app', 'fr-FR.csv')).catch();
(0, translate_1.trLoad)((0, node_path_1.join)(app_dir_1.appDir, 'fr-FR.csv')).catch();
action_1.Action.prototype.htmlTemplateResponse = async function (data, request, templateFile, statusCode = 200, headers = {}) {
const containerData = {
action: request.action,
menu,
request,
session: request.request.session
};
Object.assign(containerData, this);
const template = new template_1.Template(data, containerData);
template.included = (request.request.headers['sec-fetch-dest'] === 'empty');
return this.htmlResponse(await template.parseFile(templateFile, (0, node_path_1.join)(app_dir_1.appDir, config_1.config.container)), statusCode, headers);
};
}
//# sourceMappingURL=dependencies.js.map