@itrocks/framework 0.3.11 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ export declare function bind(): void;
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bind = bind;
4
+ const lazy_loading_1 = require("@itrocks/lazy-loading");
5
+ (0, lazy_loading_1.initLazyLoading)();
6
+ const action_1 = require("@itrocks/action");
7
+ const app_dir_1 = require("@itrocks/app-dir");
8
+ const class_file_1 = require("@itrocks/class-file");
9
+ const class_type_1 = require("@itrocks/class-type");
10
+ const class_type_2 = require("@itrocks/class-type");
11
+ const class_view_1 = require("@itrocks/class-view");
12
+ const class_view_2 = require("@itrocks/class-view");
13
+ const collection_1 = require("@itrocks/collection");
14
+ const composition_1 = require("@itrocks/composition");
15
+ const config_1 = require("@itrocks/config");
16
+ const core_transformers_1 = require("@itrocks/core-transformers");
17
+ const core_transformers_2 = require("@itrocks/core-transformers");
18
+ const property_1 = require("@itrocks/decorator/property");
19
+ const file_1 = require("@itrocks/file");
20
+ const lazy_loading_2 = require("@itrocks/lazy-loading");
21
+ const list_properties_1 = require("@itrocks/list-properties");
22
+ const mysql_1 = require("@itrocks/mysql");
23
+ const password_1 = require("@itrocks/password");
24
+ const transformers_1 = require("@itrocks/password/transformers");
25
+ const property_translate_1 = require("@itrocks/property-translate");
26
+ const transformers_2 = require("@itrocks/property-translate/transformers");
27
+ const property_type_1 = require("@itrocks/property-type");
28
+ const property_view_1 = require("@itrocks/property-view");
29
+ const property_view_2 = require("@itrocks/property-view");
30
+ const rename_1 = require("@itrocks/rename");
31
+ const rename_2 = require("@itrocks/rename");
32
+ const required_1 = require("@itrocks/required");
33
+ const route_1 = require("@itrocks/route");
34
+ const route_2 = require("@itrocks/route");
35
+ const sql_functions_1 = require("@itrocks/sql-functions");
36
+ const sql_join_1 = require("@itrocks/sql-join");
37
+ const storage_1 = require("@itrocks/storage");
38
+ const store_1 = require("@itrocks/store");
39
+ const store_2 = require("@itrocks/store");
40
+ const string_formats_1 = require("@itrocks/string-formats");
41
+ const transformers_3 = require("@itrocks/string-formats/transformers");
42
+ const template_1 = require("@itrocks/template");
43
+ const template_insight_1 = require("@itrocks/template-insight");
44
+ const transformer_1 = require("@itrocks/transformer");
45
+ const transformer_2 = require("@itrocks/transformer");
46
+ const transformer_3 = require("@itrocks/transformer");
47
+ const translate_1 = require("@itrocks/translate");
48
+ const date_fns_1 = require("date-fns");
49
+ const node_path_1 = require("node:path");
50
+ const node_path_2 = require("node:path");
51
+ const sql_join_dependencies_1 = require("./sql-join-dependencies");
52
+ const sql_join_dependencies_2 = require("./sql-join-dependencies");
53
+ const sql_join_dependencies_3 = require("./sql-join-dependencies");
54
+ const sql_join_dependencies_4 = require("./sql-join-dependencies");
55
+ const sql_join_dependencies_5 = require("./sql-join-dependencies");
56
+ async function propertyOutput(object, property) {
57
+ return (0, transformer_1.applyTransformer)(await object[property], object, property, transformer_2.HTML, transformer_3.OUTPUT);
58
+ }
59
+ function bind() {
60
+ (0, class_view_1.classViewDependsOn)({ propertyOutput, requiredOf: required_1.requiredOf, tr: translate_1.tr });
61
+ if (config_1.config.dataSource) {
62
+ (0, storage_1.createDataSource)(config_1.config.dataSource);
63
+ }
64
+ (0, collection_1.initCollection)();
65
+ (0, core_transformers_1.initCoreTransformers)({
66
+ displayOf: property_view_1.displayOf,
67
+ fieldIdOf: rename_2.toCssId,
68
+ fieldNameOf: rename_2.toField,
69
+ formatDate: date => (0, date_fns_1.format)(date, (0, translate_1.tr)('dd/MM/yyyy', { ucFirst: false })),
70
+ ignoreTransformedValue: transformer_2.IGNORE,
71
+ parseDate: date => (0, date_fns_1.parse)(date, (0, translate_1.tr)('dd/MM/yyyy', { ucFirst: false }), new Date),
72
+ propertyOutput,
73
+ representativeValueOf: class_view_2.representativeValueOf,
74
+ routeOf: route_2.routeOf,
75
+ tr: translate_1.tr
76
+ });
77
+ (0, file_1.initFileTransformers)();
78
+ (0, list_properties_1.initListProperties)();
79
+ (0, property_view_2.initOrderedProperties)();
80
+ (0, string_formats_1.multilineDependsOn)({
81
+ setTransformers: transformers_3.setMultilineTransformers
82
+ });
83
+ (0, mysql_1.mysqlDependsOn)({
84
+ applyReadTransformer: async function (data, property, object) {
85
+ const value = await (0, transformer_1.applyTransformer)(data[property.toString()], object, property, transformer_3.SQL, transformer_3.READ, data);
86
+ if ((value !== transformer_2.IGNORE) && Reflect.getOwnMetadata(lazy_loading_2.PROTECT_GET, object, (0, property_1.metadataNameOf)(property))) {
87
+ Reflect.deleteMetadata(lazy_loading_2.PROTECT_GET, object, (0, property_1.metadataNameOf)(property));
88
+ }
89
+ return value;
90
+ },
91
+ applySaveTransformer: async function (object, property, data) {
92
+ const value = Reflect.getMetadata(lazy_loading_2.PROTECT_GET, object, (0, property_1.metadataNameOf)(property))
93
+ ? (Object.hasOwn(object, property) ? object[property] : undefined)
94
+ : await object[property];
95
+ return (0, transformer_1.applyTransformer)(value, object, property, transformer_3.SQL, transformer_3.SAVE, data);
96
+ },
97
+ columnOf: rename_1.toColumn,
98
+ componentOf: composition_1.componentOf,
99
+ ignoreTransformedValue: transformer_2.IGNORE,
100
+ QueryFunction: sql_functions_1.SqlFunction,
101
+ queryFunctionCall: value => [value.value, value.sql],
102
+ storeOf: store_2.storeOf
103
+ });
104
+ (0, password_1.passwordDependsOn)({
105
+ setTransformers: transformers_1.setPasswordTransformers
106
+ });
107
+ (0, route_1.routeDependsOn)({
108
+ calculate: (target) => route_2.routes.summarize((0, class_file_1.fileOf)(target).slice(app_dir_1.appDir.length, -3))
109
+ });
110
+ (0, property_translate_1.propertyTranslateDependsOn)({
111
+ setTransformers: transformers_2.setPropertyTranslateTransformers
112
+ });
113
+ (0, store_1.storeDependsOn)({
114
+ setTransformers: core_transformers_2.initStoreTransformers,
115
+ toStoreName: rename_1.toColumn
116
+ });
117
+ (0, sql_join_1.sqlJoinDependsOn)({
118
+ columnDefinitionOf: (tableDefinition, column) => (0, sql_join_dependencies_1.columnDefinitionsOf)(tableDefinition)[column],
119
+ columnDefinitionsOf: sql_join_dependencies_1.columnDefinitionsOf,
120
+ columnOf: sql_join_dependencies_2.columnOf,
121
+ componentOf: columnDefinition => (0, composition_1.componentOf)(columnDefinition.class.type, columnDefinition.name),
122
+ mandatoryOf: columnDefinition => (0, required_1.requiredOf)(columnDefinition.class.type, columnDefinition.name),
123
+ multipleOf: columnDefinition => columnDefinition.type instanceof property_type_1.CollectionType,
124
+ rightColumnDefinitionOf: sql_join_dependencies_3.rightColumnDefinitionOf,
125
+ scalarOf: columnDefinition => (0, sql_join_dependencies_4.tableDefinitionOf)(columnDefinition) === undefined,
126
+ storedAsValueOf: columnDefinition => {
127
+ const tableDefinition = (0, sql_join_dependencies_4.tableDefinitionOf)(columnDefinition);
128
+ return !!tableDefinition && !(0, store_2.storeOf)(tableDefinition);
129
+ },
130
+ tableDefinitionIdentity: tableDefinition => tableDefinition,
131
+ tableDefinitionOf: sql_join_dependencies_4.tableDefinitionOf,
132
+ tableOf: sql_join_dependencies_5.tableOf
133
+ });
134
+ (0, template_1.templateDependsOn)({
135
+ toString: async (data) => (((typeof data)[0] === 'o') && (data.toString === Object.prototype.toString))
136
+ ? (await require('@itrocks/class-view').representativeValueOf(data))
137
+ : '' + data
138
+ });
139
+ (0, translate_1.trInit)('fr-FR');
140
+ (0, translate_1.trLoad)((0, node_path_1.join)(__dirname, '..', 'fr-FR.csv')).catch();
141
+ (0, translate_1.trLoad)((0, node_path_1.join)(app_dir_1.appDir, 'app', 'fr-FR.csv')).catch();
142
+ (0, translate_1.trLoad)((0, node_path_1.join)(app_dir_1.appDir, 'fr-FR.csv')).catch();
143
+ action_1.Action.prototype.htmlTemplateResponse = async function (data, request, templateFile, statusCode = 200, headers = {}) {
144
+ const containerData = Object.assign(defaultContainerData(request), this);
145
+ const contained = !request.request.headers['xhr-info'] && config_1.config.container?.file;
146
+ const template = new template_insight_1.Template(data, containerData);
147
+ return this.htmlResponse(await template.parseFile(templateFile, contained && (0, node_path_1.join)(app_dir_1.appDir, config_1.config.container.file)), statusCode, headers);
148
+ };
149
+ }
150
+ function configContainerData() {
151
+ const configContainerData = config_1.config.container?.data ?? {};
152
+ for (const [name, value] of Object.entries(configContainerData)) {
153
+ if ((typeof value === 'string') && '@.'.includes(value[0])) {
154
+ const exported = value.includes(':')
155
+ ? require(value.split(':')[0])[value.split(':')[1]]
156
+ : (require(value).default ?? Object.values(require(value))[0]);
157
+ configContainerData[name] =
158
+ (0, class_type_1.isAnyFunction)(exported) ? exported(config_1.config[name]) :
159
+ (0, class_type_2.isAnyType)(exported) ? new exported(config_1.config[name]) :
160
+ exported;
161
+ }
162
+ }
163
+ return configContainerData;
164
+ }
165
+ function defaultContainerData(request) {
166
+ return Object.assign({
167
+ action: request.action,
168
+ favicon: config_1.config.container?.favicon ?? (0, node_path_2.normalize)((0, node_path_1.join)(__dirname, '../favicon.ico')),
169
+ manifest: config_1.config.container?.manifest ? [config_1.config.container.manifest] : [],
170
+ request,
171
+ scripts: config_1.config.container?.scripts,
172
+ session: request.request.session,
173
+ styleSheets: config_1.config.container?.styleSheets,
174
+ }, configContainerData());
175
+ }
176
+ //# sourceMappingURL=dependencies.js.map
@@ -0,0 +1,4 @@
1
+ import '@itrocks/class-file/automation';
2
+ export { servers } from './main';
3
+ export { ReflectClass } from './reflect-class';
4
+ export { ReflectProperty } from './reflect-property';
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReflectProperty = exports.ReflectClass = exports.servers = void 0;
4
+ require("@itrocks/class-file/automation");
5
+ const compose_1 = require("@itrocks/compose");
6
+ const config_1 = require("@itrocks/config");
7
+ const config_2 = require("@itrocks/config");
8
+ var main_1 = require("./main");
9
+ Object.defineProperty(exports, "servers", { enumerable: true, get: function () { return main_1.servers; } });
10
+ var reflect_class_1 = require("./reflect-class");
11
+ Object.defineProperty(exports, "ReflectClass", { enumerable: true, get: function () { return reflect_class_1.ReflectClass; } });
12
+ var reflect_property_1 = require("./reflect-property");
13
+ Object.defineProperty(exports, "ReflectProperty", { enumerable: true, get: function () { return reflect_property_1.ReflectProperty; } });
14
+ (0, config_2.scanConfigFiles)().then(() => {
15
+ const frameworkCompose = {
16
+ '@itrocks/store:Store': '/store-representative:Store'
17
+ };
18
+ (0, compose_1.compose)(__dirname, Object.assign(frameworkCompose, config_1.config.compose));
19
+ require('@itrocks/default-action-workflow').build();
20
+ require('./dependencies').bind();
21
+ require('./main').run();
22
+ });
23
+ //# sourceMappingURL=framework.js.map
package/cjs/main.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export declare function run(): Promise<void>;
2
+ export declare const servers: {
3
+ stop: () => void;
4
+ }[];
package/cjs/main.js ADDED
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.servers = void 0;
4
+ exports.run = run;
5
+ const action_1 = require("@itrocks/action");
6
+ const action_2 = require("@itrocks/action");
7
+ const action_request_1 = require("@itrocks/action-request");
8
+ const action_request_2 = require("@itrocks/action-request");
9
+ const app_dir_1 = require("@itrocks/app-dir");
10
+ const class_type_1 = require("@itrocks/class-type");
11
+ const config_1 = require("@itrocks/config");
12
+ const fastify_1 = require("@itrocks/fastify");
13
+ const fastify_file_session_store_1 = require("@itrocks/fastify-file-session-store");
14
+ const request_response_1 = require("@itrocks/request-response");
15
+ const route_1 = require("@itrocks/route");
16
+ const store_1 = require("@itrocks/store");
17
+ const template_1 = require("@itrocks/template");
18
+ const node_path_1 = require("node:path");
19
+ const node_path_2 = require("node:path");
20
+ template_1.frontScripts.push('/lib/air-datepicker/locale/en.js', '/lib/air-datepicker/locale/fr.js');
21
+ async function execute(request) {
22
+ // Access control
23
+ if ((config_1.config.access?.free !== '*')
24
+ && !request.request.session.user
25
+ && !config_1.config.access?.free?.includes(request.route + '/' + request.action)) {
26
+ request.action = 'login';
27
+ request.route = '/user';
28
+ }
29
+ // Resolve action class or function module
30
+ const module = route_1.routes.resolve(request.route + '/' + request.action);
31
+ // undefined module
32
+ if (!module) {
33
+ console.error('Action ' + request.route + '/' + request.action + ' not found');
34
+ throw 'Action ' + request.route + '/' + request.action + ' not found';
35
+ }
36
+ // ActionClass module
37
+ if ((0, class_type_1.isAnyType)(module)) {
38
+ const action = (new module);
39
+ if (request.format in action) {
40
+ const need = (0, action_2.needOf)(action);
41
+ if (need.alternative
42
+ && (need.alternative !== request.action)
43
+ && (((need.need === 'object') && !request.ids.length)
44
+ || ((need.need === 'Store') && !(0, store_1.storeOf)(request.type)))) {
45
+ request.action = need.alternative;
46
+ return execute(request);
47
+ }
48
+ if ((need.need === 'object') && !request.ids.length && !request.request.data.confirm) {
49
+ console.error('Action ' + request.route + '/' + request.action + ' needs at least one object');
50
+ throw 'Action ' + request.route + '/' + request.action + ' needs at least one ';
51
+ }
52
+ return toResponse(await action[request.format](request));
53
+ }
54
+ }
55
+ // ActionFunction module
56
+ return toResponse(await module(request));
57
+ }
58
+ async function run() {
59
+ await (0, route_1.loadRoutes)(route_1.routes, config_1.config.routes ?? {});
60
+ (0, action_request_1.actionRequestDependsOn)({
61
+ getModule: route_1.routes.resolve.bind(route_1.routes),
62
+ isDomainObject: object => (0, class_type_1.isAnyType)(object) && !(object.prototype instanceof action_1.Action)
63
+ });
64
+ const server = new fastify_1.FastifyServer({
65
+ assetPath: app_dir_1.appDir,
66
+ execute: request => execute(new action_request_2.Request(request)),
67
+ favicon: config_1.config.container?.favicon ?? (0, node_path_2.normalize)((0, node_path_1.join)(__dirname, '../favicon.png')),
68
+ frontScripts: template_1.frontScripts,
69
+ host: config_1.config.server.host,
70
+ manifest: config_1.config.container?.manifest,
71
+ port: config_1.config.server.port,
72
+ scriptCalls: ['loadCss', 'loadScript'],
73
+ secret: config_1.config.session.secret ?? config_1.config.secret ?? 'defaultSecretHaving32CharactersOrGreater',
74
+ secure: config_1.config.server.secure ?? 'auto',
75
+ store: new fastify_file_session_store_1.FileStore((0, node_path_2.normalize)((0, node_path_1.join)(app_dir_1.appDir, config_1.config.session.path)))
76
+ });
77
+ server.run();
78
+ exports.servers.push(server);
79
+ }
80
+ exports.servers = new Array();
81
+ function toResponse(mixedResponse) {
82
+ return (typeof mixedResponse === 'string')
83
+ ? new request_response_1.Response(mixedResponse)
84
+ : mixedResponse;
85
+ }
86
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1,10 @@
1
+ import { PropertyTypes } from '@itrocks/property-type';
2
+ import { ReflectClass as RC } from '@itrocks/reflect';
3
+ import { ReflectProperty } from './reflect-property';
4
+ export declare class ReflectClass<T extends object = object> extends RC<T> {
5
+ inheritPropertyTypes(propertyTypes: PropertyTypes<T>): void;
6
+ get parent(): ReflectClass | null;
7
+ get properties(): ReflectProperty<T, keyof T>[];
8
+ get property(): { [K in keyof T]: ReflectProperty<T, K>; };
9
+ get uses(): import("@itrocks/class-type").Type[];
10
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReflectClass = void 0;
4
+ const reflect_1 = require("@itrocks/reflect");
5
+ const uses_1 = require("@itrocks/uses");
6
+ const reflect_property_1 = require("./reflect-property");
7
+ class ReflectClass extends reflect_1.ReflectClass {
8
+ inheritPropertyTypes(propertyTypes) {
9
+ super.inheritPropertyTypes(propertyTypes);
10
+ for (const uses of this.uses) {
11
+ Object.assign(propertyTypes, new ReflectClass(uses).propertyTypes);
12
+ }
13
+ }
14
+ get parent() {
15
+ const parentType = Object.getPrototypeOf(this.type);
16
+ const parent = (parentType === Function.prototype) ? null : new ReflectClass(parentType);
17
+ Object.defineProperty(this, 'parent', { configurable: true, enumerable: false, value: parent, writable: true });
18
+ return parent;
19
+ }
20
+ get properties() {
21
+ const properties = new Array;
22
+ for (const name of this.propertyNames) {
23
+ properties.push(new reflect_property_1.ReflectProperty(this, name));
24
+ }
25
+ Object.defineProperty(this, 'properties', { configurable: true, enumerable: false, value: properties, writable: true });
26
+ return properties;
27
+ }
28
+ get property() {
29
+ const properties = {};
30
+ for (const property of this.properties) {
31
+ properties[property.name] = property;
32
+ }
33
+ Object.defineProperty(this, 'property', { configurable: true, enumerable: false, value: properties, writable: true });
34
+ return properties;
35
+ }
36
+ get uses() {
37
+ const value = (0, uses_1.usesOf)(this.type);
38
+ Object.defineProperty(this, 'uses', { configurable: true, enumerable: false, value, writable: true });
39
+ return value;
40
+ }
41
+ }
42
+ exports.ReflectClass = ReflectClass;
43
+ //# sourceMappingURL=reflect-class.js.map
@@ -0,0 +1,10 @@
1
+ import { HtmlContainer } from '@itrocks/core-transformers';
2
+ import { ReflectProperty as RP } from '@itrocks/reflect';
3
+ import { ReflectClass } from './reflect-class';
4
+ export declare class ReflectProperty<T extends object, K extends keyof T = keyof T> extends RP<T, K> {
5
+ get class(): ReflectClass<T>;
6
+ edit(format?: string): Promise<any>;
7
+ output(format?: string, askFor?: HtmlContainer): Promise<any>;
8
+ outputMandatoryContainer(format?: string): Promise<any>;
9
+ outputOptionalContainer(format?: string): Promise<any>;
10
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReflectProperty = void 0;
4
+ const core_transformers_1 = require("@itrocks/core-transformers");
5
+ const reflect_1 = require("@itrocks/reflect");
6
+ const transformer_1 = require("@itrocks/transformer");
7
+ const transformer_2 = require("@itrocks/transformer");
8
+ const reflect_class_1 = require("./reflect-class");
9
+ class ReflectProperty extends reflect_1.ReflectProperty {
10
+ get class() {
11
+ const value = super.class;
12
+ Object.defineProperty(this, 'class', { configurable: true, enumerable: false, value, writable: true });
13
+ return value ? new reflect_class_1.ReflectClass(value.object ?? value.type) : value;
14
+ }
15
+ async edit(format = transformer_2.HTML) {
16
+ const object = this.object ?? this.class.type;
17
+ const value = this.object ? this.object[this.name] : undefined;
18
+ return (0, transformer_1.applyTransformer)(await value, object, this.name, format, transformer_2.EDIT);
19
+ }
20
+ async output(format = transformer_2.HTML, askFor) {
21
+ const object = this.object ?? this.class.type;
22
+ const value = this.object ? await this.object[this.name] : undefined;
23
+ return (0, transformer_1.applyTransformer)(value, object, this.name, format, transformer_2.OUTPUT, askFor);
24
+ }
25
+ async outputMandatoryContainer(format = transformer_2.HTML) {
26
+ return this.output(format, new core_transformers_1.HtmlContainer(true));
27
+ }
28
+ async outputOptionalContainer(format = transformer_2.HTML) {
29
+ return this.output(format, new core_transformers_1.HtmlContainer(false));
30
+ }
31
+ }
32
+ exports.ReflectProperty = ReflectProperty;
33
+ //# sourceMappingURL=reflect-property.js.map
@@ -0,0 +1,9 @@
1
+ import { Type } from '@itrocks/class-type';
2
+ import { ReflectProperty } from './reflect-property';
3
+ export type ColumnDefinition = ReflectProperty<any, any>;
4
+ export type TableDefinition = Type;
5
+ export declare function columnDefinitionsOf(tableDefinition: TableDefinition): Record<string, ColumnDefinition>;
6
+ export declare function columnOf(columnDefinition: ColumnDefinition): string;
7
+ export declare function rightColumnDefinitionOf(columnDefinition: ColumnDefinition): ColumnDefinition | undefined;
8
+ export declare function tableDefinitionOf(columnDefinition: ColumnDefinition): TableDefinition | undefined;
9
+ export declare function tableOf(tableDefinition: TableDefinition): string;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.columnDefinitionsOf = columnDefinitionsOf;
4
+ exports.columnOf = columnOf;
5
+ exports.rightColumnDefinitionOf = rightColumnDefinitionOf;
6
+ exports.tableDefinitionOf = tableDefinitionOf;
7
+ exports.tableOf = tableOf;
8
+ const class_type_1 = require("@itrocks/class-type");
9
+ const class_type_2 = require("@itrocks/class-type");
10
+ const composition_1 = require("@itrocks/composition");
11
+ const property_type_1 = require("@itrocks/property-type");
12
+ const rename_1 = require("@itrocks/rename");
13
+ const store_1 = require("@itrocks/store");
14
+ const reflect_class_1 = require("./reflect-class");
15
+ function columnDefinitionsOf(tableDefinition) {
16
+ return new reflect_class_1.ReflectClass(tableDefinition).property;
17
+ }
18
+ function columnOf(columnDefinition) {
19
+ const tableDefinition = tableDefinitionOf(columnDefinition);
20
+ const property = tableDefinition && (0, store_1.storeOf)(tableDefinition)
21
+ ? columnDefinition.name.toString() + 'Id'
22
+ : columnDefinition.name;
23
+ return (0, rename_1.toColumn)(property);
24
+ }
25
+ function rightColumnDefinitionOf(columnDefinition) {
26
+ const leftTableDefinition = columnDefinition.class.type;
27
+ const rightTableDefinition = tableDefinitionOf(columnDefinition);
28
+ if (!rightTableDefinition)
29
+ return;
30
+ for (const candidate of new reflect_class_1.ReflectClass(rightTableDefinition).properties) {
31
+ if (!(0, composition_1.compositeOf)(rightTableDefinition, candidate.name))
32
+ continue;
33
+ const candidateTableDefinition = tableDefinitionOf(candidate);
34
+ if (candidateTableDefinition && (0, class_type_1.inherits)(leftTableDefinition, candidateTableDefinition))
35
+ return candidate;
36
+ }
37
+ }
38
+ function tableDefinitionOf(columnDefinition) {
39
+ const propertyType = columnDefinition.type;
40
+ const type = (propertyType instanceof property_type_1.CollectionType) ? propertyType.elementType.lead : propertyType.lead;
41
+ return (0, class_type_2.isAnyType)(type) ? type : undefined;
42
+ }
43
+ function tableOf(tableDefinition) {
44
+ const table = (0, store_1.storeOf)(tableDefinition);
45
+ if (!table)
46
+ throw new Error(`Type ${tableDefinition.name} is not stored`);
47
+ return table;
48
+ }
49
+ //# sourceMappingURL=sql-join-dependencies.js.map
@@ -0,0 +1,2 @@
1
+ import { Type } from '@itrocks/class-type';
2
+ export declare function Store(name?: string | false): (target: Type) => void;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Store = Store;
4
+ const class_view_1 = require("@itrocks/class-view");
5
+ const store_1 = require("@itrocks/store");
6
+ function Store(name = '') {
7
+ const callBack = (0, store_1.Store)(name);
8
+ return function (target) {
9
+ (0, class_view_1.representativeOf)(target);
10
+ callBack(target);
11
+ };
12
+ }
13
+ //# sourceMappingURL=store-representative.js.map
package/package.json CHANGED
@@ -45,6 +45,7 @@
45
45
  "@itrocks/required": "latest",
46
46
  "@itrocks/route": "latest",
47
47
  "@itrocks/sql-functions": "latest",
48
+ "@itrocks/sql-join": "latest",
48
49
  "@itrocks/storage": "latest",
49
50
  "@itrocks/store": "latest",
50
51
  "@itrocks/string-formats": "latest",
@@ -69,6 +70,8 @@
69
70
  "favicon.png",
70
71
  "LICENSE",
71
72
  "README.md",
73
+ "cjs",
74
+ "!*.map",
72
75
  "*.csv",
73
76
  "*.d.ts",
74
77
  "*.js"
@@ -97,5 +100,5 @@
97
100
  "build:back": "tsc",
98
101
  "build:front": "tsc -p src/front/tsconfig.json && sed -i 's#../../##g' *.js *.d.ts"
99
102
  },
100
- "version": "0.3.11"
103
+ "version": "0.4.0"
101
104
  }