@saltcorn/data 0.7.1-beta.3 → 0.7.2-beta.2
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.
- package/dist/app-locales/en.json +6 -0
- package/dist/app-locales/public/da.json +3 -0
- package/dist/app-locales/public/tlh.json +3 -0
- package/dist/base-plugin/actions.d.ts.map +1 -1
- package/dist/base-plugin/actions.js +4 -1
- package/dist/base-plugin/actions.js.map +1 -1
- package/dist/base-plugin/fieldviews.d.ts +29 -0
- package/dist/base-plugin/fieldviews.d.ts.map +1 -1
- package/dist/base-plugin/fieldviews.js +60 -5
- package/dist/base-plugin/fieldviews.js.map +1 -1
- package/dist/base-plugin/index.d.ts +245 -20
- package/dist/base-plugin/index.d.ts.map +1 -1
- package/dist/base-plugin/types.d.ts +127 -65
- package/dist/base-plugin/types.d.ts.map +1 -1
- package/dist/base-plugin/types.js +152 -36
- package/dist/base-plugin/types.js.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.d.ts +46 -8
- package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.js +258 -112
- package/dist/base-plugin/viewtemplates/edit.js.map +1 -1
- package/dist/base-plugin/viewtemplates/feed.d.ts +14 -1
- package/dist/base-plugin/viewtemplates/feed.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/feed.js +20 -8
- package/dist/base-plugin/viewtemplates/feed.js.map +1 -1
- package/dist/base-plugin/viewtemplates/filter.d.ts +17 -1
- package/dist/base-plugin/viewtemplates/filter.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/filter.js +64 -45
- package/dist/base-plugin/viewtemplates/filter.js.map +1 -1
- package/dist/base-plugin/viewtemplates/list.d.ts +21 -1
- package/dist/base-plugin/viewtemplates/list.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/list.js +63 -40
- package/dist/base-plugin/viewtemplates/list.js.map +1 -1
- package/dist/base-plugin/viewtemplates/listshowlist.d.ts +14 -1
- package/dist/base-plugin/viewtemplates/listshowlist.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/listshowlist.js +15 -4
- package/dist/base-plugin/viewtemplates/listshowlist.js.map +1 -1
- package/dist/base-plugin/viewtemplates/room.d.ts +41 -1
- package/dist/base-plugin/viewtemplates/room.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/room.js +107 -80
- package/dist/base-plugin/viewtemplates/room.js.map +1 -1
- package/dist/base-plugin/viewtemplates/show.d.ts +38 -4
- package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/show.js +120 -75
- package/dist/base-plugin/viewtemplates/show.js.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts +26 -7
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.js +60 -48
- package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -1
- package/dist/coverage/coverage-final.json +46 -0
- package/dist/coverage/lcov-report/block-navigation.d.ts +2 -0
- package/dist/coverage/lcov-report/block-navigation.d.ts.map +1 -0
- package/dist/coverage/lcov-report/block-navigation.js +71 -0
- package/dist/coverage/lcov-report/block-navigation.js.map +1 -0
- package/dist/coverage/lcov-report/prettify.d.ts +1 -0
- package/dist/coverage/lcov-report/prettify.d.ts.map +1 -0
- package/dist/coverage/lcov-report/prettify.js +478 -0
- package/dist/coverage/lcov-report/prettify.js.map +1 -0
- package/dist/coverage/lcov-report/sorter.d.ts +2 -0
- package/dist/coverage/lcov-report/sorter.d.ts.map +1 -0
- package/dist/coverage/lcov-report/sorter.js +164 -0
- package/dist/coverage/lcov-report/sorter.js.map +1 -0
- package/dist/db/connect.d.ts.map +1 -1
- package/dist/db/connect.js +8 -1
- package/dist/db/connect.js.map +1 -1
- package/dist/db/connect_mobile.d.ts +9 -0
- package/dist/db/connect_mobile.d.ts.map +1 -0
- package/dist/db/connect_mobile.js +15 -0
- package/dist/db/connect_mobile.js.map +1 -0
- package/dist/db/fixtures.d.ts.map +1 -1
- package/dist/db/fixtures.js +6 -1
- package/dist/db/fixtures.js.map +1 -1
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +16 -2
- package/dist/db/index.js.map +1 -1
- package/dist/db/state.d.ts +207 -52
- package/dist/db/state.d.ts.map +1 -1
- package/dist/db/state.js +87 -84
- package/dist/db/state.js.map +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -2
- package/dist/index.js.map +1 -1
- package/dist/migrate.d.ts.map +1 -1
- package/dist/migrate.js +54 -40
- package/dist/migrate.js.map +1 -1
- package/dist/mobile-mocks/db/postgres.d.ts +1 -0
- package/dist/mobile-mocks/db/postgres.d.ts.map +1 -0
- package/dist/mobile-mocks/db/postgres.js +2 -0
- package/dist/mobile-mocks/db/postgres.js.map +1 -0
- package/dist/mobile-mocks/db/sqlite.d.ts +1 -0
- package/dist/mobile-mocks/db/sqlite.d.ts.map +1 -0
- package/dist/mobile-mocks/db/sqlite.js +2 -0
- package/dist/mobile-mocks/db/sqlite.js.map +1 -0
- package/dist/mobile-mocks/models/email.d.ts +1 -0
- package/dist/mobile-mocks/models/email.d.ts.map +1 -0
- package/dist/mobile-mocks/models/email.js +2 -0
- package/dist/mobile-mocks/models/email.js.map +1 -0
- package/dist/mobile-mocks/node/async_hooks.d.ts +4 -0
- package/dist/mobile-mocks/node/async_hooks.d.ts.map +1 -0
- package/dist/mobile-mocks/node/async_hooks.js +8 -0
- package/dist/mobile-mocks/node/async_hooks.js.map +1 -0
- package/dist/mobile-mocks/node/child_process.d.ts +3 -0
- package/dist/mobile-mocks/node/child_process.d.ts.map +1 -0
- package/dist/mobile-mocks/node/child_process.js +6 -0
- package/dist/mobile-mocks/node/child_process.js.map +1 -0
- package/dist/mobile-mocks/node/fs/promises.d.ts +6 -0
- package/dist/mobile-mocks/node/fs/promises.d.ts.map +1 -0
- package/dist/mobile-mocks/node/fs/promises.js +16 -0
- package/dist/mobile-mocks/node/fs/promises.js.map +1 -0
- package/dist/mobile-mocks/node/fs.d.ts +4 -0
- package/dist/mobile-mocks/node/fs.d.ts.map +1 -0
- package/dist/mobile-mocks/node/fs.js +15 -0
- package/dist/mobile-mocks/node/fs.js.map +1 -0
- package/dist/mobile-mocks/node/latest-version.d.ts +2 -0
- package/dist/mobile-mocks/node/latest-version.d.ts.map +1 -0
- package/dist/mobile-mocks/node/latest-version.js +7 -0
- package/dist/mobile-mocks/node/latest-version.js.map +1 -0
- package/dist/mobile-mocks/node/v8.d.ts +3 -0
- package/dist/mobile-mocks/node/v8.d.ts.map +1 -0
- package/dist/mobile-mocks/node/v8.js +8 -0
- package/dist/mobile-mocks/node/v8.js.map +1 -0
- package/dist/mobile-mocks/npm/env-paths.d.ts +6 -0
- package/dist/mobile-mocks/npm/env-paths.d.ts.map +1 -0
- package/dist/mobile-mocks/npm/env-paths.js +9 -0
- package/dist/mobile-mocks/npm/env-paths.js.map +1 -0
- package/dist/mobile-mocks/saltcorn/plugin-testing.d.ts +1 -0
- package/dist/mobile-mocks/saltcorn/plugin-testing.d.ts.map +1 -0
- package/dist/mobile-mocks/saltcorn/plugin-testing.js +2 -0
- package/dist/mobile-mocks/saltcorn/plugin-testing.js.map +1 -0
- package/dist/models/config.d.ts +9 -10
- package/dist/models/config.d.ts.map +1 -1
- package/dist/models/config.js +8 -7
- package/dist/models/config.js.map +1 -1
- package/dist/models/discovery.d.ts.map +1 -1
- package/dist/models/discovery.js +5 -1
- package/dist/models/discovery.js.map +1 -1
- package/dist/models/email.d.ts +2 -0
- package/dist/models/email.d.ts.map +1 -1
- package/dist/models/field.d.ts +6 -4
- package/dist/models/field.d.ts.map +1 -1
- package/dist/models/field.js +40 -21
- package/dist/models/field.js.map +1 -1
- package/dist/models/fieldrepeat.d.ts +5 -0
- package/dist/models/fieldrepeat.d.ts.map +1 -1
- package/dist/models/fieldrepeat.js +2 -0
- package/dist/models/fieldrepeat.js.map +1 -1
- package/dist/models/form.d.ts +2 -0
- package/dist/models/form.d.ts.map +1 -1
- package/dist/models/form.js +1 -0
- package/dist/models/form.js.map +1 -1
- package/dist/models/index.d.ts +2 -13
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/layout.d.ts.map +1 -1
- package/dist/models/layout.js +12 -2
- package/dist/models/layout.js.map +1 -1
- package/dist/models/page.d.ts +1 -1
- package/dist/models/page.d.ts.map +1 -1
- package/dist/models/page.js +17 -9
- package/dist/models/page.js.map +1 -1
- package/dist/models/scheduler.d.ts.map +1 -1
- package/dist/models/scheduler.js +3 -1
- package/dist/models/scheduler.js.map +1 -1
- package/dist/models/table.d.ts +2 -1
- package/dist/models/table.d.ts.map +1 -1
- package/dist/models/table.js +32 -11
- package/dist/models/table.js.map +1 -1
- package/dist/models/trigger.d.ts +3 -3
- package/dist/models/trigger.d.ts.map +1 -1
- package/dist/models/trigger.js +4 -5
- package/dist/models/trigger.js.map +1 -1
- package/dist/models/user.d.ts +1 -1
- package/dist/models/user.d.ts.map +1 -1
- package/dist/models/user.js +7 -15
- package/dist/models/user.js.map +1 -1
- package/dist/models/view.d.ts +16 -12
- package/dist/models/view.d.ts.map +1 -1
- package/dist/models/view.js +63 -15
- package/dist/models/view.js.map +1 -1
- package/dist/models/workflow.d.ts +1 -0
- package/dist/models/workflow.d.ts.map +1 -1
- package/dist/models/workflow.js +58 -2
- package/dist/models/workflow.js.map +1 -1
- package/dist/package.json +127 -0
- package/dist/plugin-helper.d.ts +17 -13
- package/dist/plugin-helper.d.ts.map +1 -1
- package/dist/plugin-helper.js +122 -74
- package/dist/plugin-helper.js.map +1 -1
- package/dist/plugin-testing.d.ts +1 -0
- package/dist/plugin-testing.d.ts.map +1 -1
- package/dist/plugin-testing.js +84 -1
- package/dist/plugin-testing.js.map +1 -1
- package/dist/tests/actions.test.js +30 -5
- package/dist/tests/actions.test.js.map +1 -1
- package/dist/tests/db.test.d.ts +2 -0
- package/dist/tests/db.test.d.ts.map +1 -0
- package/dist/tests/db.test.js +32 -0
- package/dist/tests/db.test.js.map +1 -0
- package/dist/tests/exact_views.test.js +274 -19
- package/dist/tests/exact_views.test.js.map +1 -1
- package/dist/tests/field.test.js +36 -0
- package/dist/tests/field.test.js.map +1 -1
- package/dist/tests/mocks.d.ts +2 -0
- package/dist/tests/mocks.d.ts.map +1 -1
- package/dist/tests/mocks.js +2 -0
- package/dist/tests/mocks.js.map +1 -1
- package/dist/tests/models.test.js +46 -1
- package/dist/tests/models.test.js.map +1 -1
- package/dist/tests/remote_query_helper.d.ts +341 -0
- package/dist/tests/remote_query_helper.d.ts.map +1 -0
- package/dist/tests/remote_query_helper.js +446 -0
- package/dist/tests/remote_query_helper.js.map +1 -0
- package/dist/tests/state.test.d.ts +2 -0
- package/dist/tests/state.test.d.ts.map +1 -0
- package/dist/tests/state.test.js +78 -0
- package/dist/tests/state.test.js.map +1 -0
- package/dist/tests/table.test.js +19 -0
- package/dist/tests/table.test.js.map +1 -1
- package/dist/tests/view.test.js +29 -0
- package/dist/tests/view.test.js.map +1 -1
- package/dist/tsconfig.json +24 -0
- package/dist/tsconfig.ref.json +9 -0
- package/dist/tsconfig.ref.tsbuildinfo +1 -1
- package/dist/utils.d.ts +3 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +14 -23
- package/dist/utils.js.map +1 -1
- package/dist/webpack.config.d.ts +57 -0
- package/dist/webpack.config.d.ts.map +1 -0
- package/dist/webpack.config.js +75 -0
- package/dist/webpack.config.js.map +1 -0
- package/package.json +38 -13
- package/CHANGELOG.md +0 -8
- package/dist/models/backup.d.ts +0 -9
- package/dist/models/backup.d.ts.map +0 -1
- package/dist/models/backup.js +0 -278
- package/dist/models/backup.js.map +0 -1
- package/dist/models/pack.d.ts +0 -42
- package/dist/models/pack.d.ts.map +0 -1
- package/dist/models/pack.js +0 -419
- package/dist/models/pack.js.map +0 -1
- package/dist/models/tenant.d.ts +0 -17
- package/dist/models/tenant.d.ts.map +0 -1
- package/dist/models/tenant.js +0 -152
- package/dist/models/tenant.js.map +0 -1
- package/dist/tests/backup.test.d.ts +0 -2
- package/dist/tests/backup.test.d.ts.map +0 -1
- package/dist/tests/backup.test.js +0 -101
- package/dist/tests/backup.test.js.map +0 -1
- package/dist/tests/pack.test.d.ts +0 -2
- package/dist/tests/pack.test.d.ts.map +0 -1
- package/dist/tests/pack.test.js +0 -338
- package/dist/tests/pack.test.js.map +0 -1
- package/dist/tests/random.test.d.ts +0 -2
- package/dist/tests/random.test.d.ts.map +0 -1
- package/dist/tests/random.test.js +0 -149
- package/dist/tests/random.test.js.map +0 -1
- package/dist/tests/tenant.test.d.ts +0 -2
- package/dist/tests/tenant.test.d.ts.map +0 -1
- package/dist/tests/tenant.test.js +0 -52
- package/dist/tests/tenant.test.js.map +0 -1
package/dist/db/state.d.ts
CHANGED
|
@@ -1,58 +1,213 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* State of Saltcorn
|
|
3
|
+
* Keeps cache for main objects
|
|
4
|
+
* @category saltcorn-data
|
|
5
|
+
* @module db/state
|
|
6
|
+
* @subcategory db
|
|
4
7
|
*/
|
|
5
|
-
|
|
8
|
+
import View from "../models/view";
|
|
9
|
+
import Trigger from "../models/trigger";
|
|
10
|
+
import File from "../models/file";
|
|
11
|
+
import Table from "../models/table";
|
|
12
|
+
import Page from "../models/page";
|
|
13
|
+
import Field from "../models/field";
|
|
14
|
+
import { Plugin, PluginLayout, ViewTemplate } from "@saltcorn/types/base_types";
|
|
15
|
+
import { Type } from "@saltcorn/types/common_types";
|
|
16
|
+
import { ConfigTypes, SingleConfig } from "models/config";
|
|
17
|
+
import User from "../models/user";
|
|
18
|
+
import I18n from "i18n";
|
|
6
19
|
/**
|
|
7
|
-
*
|
|
8
|
-
* @
|
|
9
|
-
* @returns {object}
|
|
20
|
+
* State Class
|
|
21
|
+
* @category saltcorn-data
|
|
10
22
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
23
|
+
declare class State {
|
|
24
|
+
tenant: string;
|
|
25
|
+
views: Array<View>;
|
|
26
|
+
triggers: Array<Trigger>;
|
|
27
|
+
virtual_triggers: Array<Trigger>;
|
|
28
|
+
viewtemplates: Record<string, ViewTemplate>;
|
|
29
|
+
tables: Array<Table>;
|
|
30
|
+
types: Record<string, Type>;
|
|
31
|
+
stashed_fieldviews: Record<string, any>;
|
|
32
|
+
files: Record<string, File>;
|
|
33
|
+
pages: Array<Page>;
|
|
34
|
+
fields: Array<Field>;
|
|
35
|
+
configs: ConfigTypes;
|
|
36
|
+
fileviews: Record<string, any>;
|
|
37
|
+
actions: Record<string, any>;
|
|
38
|
+
auth_methods: Record<string, any>;
|
|
39
|
+
plugins: Record<string, Plugin>;
|
|
40
|
+
plugin_cfgs: any;
|
|
41
|
+
plugin_locations: any;
|
|
42
|
+
plugin_module_names: any;
|
|
43
|
+
eventTypes: any;
|
|
44
|
+
fonts: Record<string, string>;
|
|
45
|
+
layouts: Record<string, PluginLayout>;
|
|
46
|
+
headers: any;
|
|
47
|
+
function_context: any;
|
|
48
|
+
functions: any;
|
|
49
|
+
keyFieldviews: any;
|
|
50
|
+
external_tables: any;
|
|
51
|
+
verifier: any;
|
|
52
|
+
i18n: I18n.I18n;
|
|
53
|
+
roomEmitter?: Function;
|
|
54
|
+
localTableIds: number[];
|
|
55
|
+
role_id?: number;
|
|
56
|
+
/**
|
|
57
|
+
* State constructor
|
|
58
|
+
* @param {string} tenant description
|
|
59
|
+
*/
|
|
60
|
+
constructor(tenant: string);
|
|
61
|
+
/**
|
|
62
|
+
* Get Layout by user
|
|
63
|
+
* Based on role of user
|
|
64
|
+
* @param {object} user
|
|
65
|
+
* @returns {object}
|
|
66
|
+
*/
|
|
67
|
+
getLayout(user: User): PluginLayout;
|
|
68
|
+
get2FApolicy(user: User): any;
|
|
69
|
+
/**
|
|
70
|
+
* Refresh State cache for all Saltcorn main objects
|
|
71
|
+
* @param {boolean} noSignal
|
|
72
|
+
* @returns {Promise<void>}
|
|
73
|
+
*/
|
|
74
|
+
refresh(noSignal: boolean): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Refresh config
|
|
77
|
+
* @param {boolean} noSignal
|
|
78
|
+
* @returns {Promise<void>}
|
|
79
|
+
*/
|
|
80
|
+
refresh_config(noSignal: boolean): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* @returns {Promise<void>}
|
|
83
|
+
*/
|
|
84
|
+
refresh_i18n(): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Refresh views
|
|
87
|
+
* @param {boolean} noSignal
|
|
88
|
+
* @returns {Promise<void>}
|
|
89
|
+
*/
|
|
90
|
+
refresh_views(noSignal: boolean): Promise<void>;
|
|
91
|
+
/**
|
|
92
|
+
* Refresh triggers
|
|
93
|
+
* @param {boolean} noSignal
|
|
94
|
+
* @returns {Promise<void>}
|
|
95
|
+
*/
|
|
96
|
+
refresh_triggers(noSignal: boolean): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* Refresh pages
|
|
99
|
+
* @param {boolean} noSignal
|
|
100
|
+
* @returns {Promise<void>}
|
|
101
|
+
*/
|
|
102
|
+
refresh_pages(noSignal: boolean): Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* Refresh files
|
|
105
|
+
* @param {boolean} noSignal
|
|
106
|
+
* @returns {Promise<void>}
|
|
107
|
+
*/
|
|
108
|
+
refresh_files(noSignal: boolean): Promise<void>;
|
|
109
|
+
/**
|
|
110
|
+
* Refresh tables & fields
|
|
111
|
+
* @param {boolean} noSignal
|
|
112
|
+
* @returns {Promise<void>}
|
|
113
|
+
*/
|
|
114
|
+
refresh_tables(noSignal: boolean): Promise<void>;
|
|
115
|
+
/**
|
|
116
|
+
* Get config parameter by key
|
|
117
|
+
* @param {string} key - key of config paramter
|
|
118
|
+
* @param {string} [def] - default value
|
|
119
|
+
* @returns {string}
|
|
120
|
+
*/
|
|
121
|
+
getConfig(key: string, def?: any): any;
|
|
122
|
+
/**
|
|
123
|
+
* Get copy of config parameter
|
|
124
|
+
* @param {string} key - key of parameter
|
|
125
|
+
* @param {string} [def] - default value
|
|
126
|
+
* @returns {string}
|
|
127
|
+
*/
|
|
128
|
+
getConfigCopy(key: string, def: any): any;
|
|
129
|
+
/**
|
|
130
|
+
*
|
|
131
|
+
* Set value of config parameter
|
|
132
|
+
* @param {string} key - key of parameter
|
|
133
|
+
* @param {string} value - value of parameter
|
|
134
|
+
* @returns {Promise<void>}
|
|
135
|
+
*/
|
|
136
|
+
setConfig(key: string, value: any): Promise<void>;
|
|
137
|
+
/**
|
|
138
|
+
* Delete config parameter by key
|
|
139
|
+
* @param {string} keys - key of parameter
|
|
140
|
+
* @returns {Promise<void>}
|
|
141
|
+
*/
|
|
142
|
+
deleteConfig(...keys: string[]): Promise<void>;
|
|
143
|
+
/**
|
|
144
|
+
* Register plugin
|
|
145
|
+
* @param {string} name
|
|
146
|
+
* @param {object} plugin
|
|
147
|
+
* @param {*} cfg
|
|
148
|
+
* @param {*} location
|
|
149
|
+
* @param {string} modname
|
|
150
|
+
* @returns {void}
|
|
151
|
+
*/
|
|
152
|
+
registerPlugin(name: string, plugin: Plugin, cfg?: SingleConfig, location?: string, modname?: string): void;
|
|
153
|
+
/**
|
|
154
|
+
* Get type names
|
|
155
|
+
* @type {string[]}
|
|
156
|
+
*/
|
|
157
|
+
get type_names(): string[];
|
|
158
|
+
/**
|
|
159
|
+
* Add type
|
|
160
|
+
* @param {object} t
|
|
161
|
+
*/
|
|
162
|
+
addType(t: Type): void;
|
|
163
|
+
/**
|
|
164
|
+
* Remove plugin
|
|
165
|
+
* @param {string} name
|
|
166
|
+
* @param {boolean} noSignal
|
|
167
|
+
* @returns {Promise<void>}
|
|
168
|
+
*/
|
|
169
|
+
remove_plugin(name: string, noSignal: boolean): Promise<void>;
|
|
170
|
+
/**
|
|
171
|
+
* Reload plugins
|
|
172
|
+
* @param {boolean} noSignal
|
|
173
|
+
* @returns {Promise<void>}
|
|
174
|
+
*/
|
|
175
|
+
refresh_plugins(noSignal?: boolean): Promise<void>;
|
|
176
|
+
/**
|
|
177
|
+
* @returns {string[]}
|
|
178
|
+
*/
|
|
179
|
+
getStringsForI18n(): any[];
|
|
180
|
+
/**
|
|
181
|
+
*
|
|
182
|
+
* @param {function} f
|
|
183
|
+
*/
|
|
184
|
+
setRoomEmitter(f: Function): void;
|
|
185
|
+
/**
|
|
186
|
+
*
|
|
187
|
+
* @param {*} args
|
|
188
|
+
*/
|
|
189
|
+
emitRoom(...args: any[]): void;
|
|
51
190
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
191
|
+
declare const _default: {
|
|
192
|
+
getState: () => State | undefined;
|
|
193
|
+
getTenant: (ten: string) => State;
|
|
194
|
+
init_multi_tenant: (plugin_loader: Function, disableMigrate: boolean, tenantList: string[]) => Promise<void>;
|
|
195
|
+
restart_tenant: (plugin_loader: Function) => Promise<void>;
|
|
196
|
+
get_other_domain_tenant: (hostname: string) => string;
|
|
197
|
+
set_tenant_base_url: (tenant_subdomain: string, value?: string | undefined) => void;
|
|
198
|
+
get_process_init_time: () => Date;
|
|
199
|
+
features: {
|
|
200
|
+
serve_static_dependencies: boolean;
|
|
201
|
+
deep_public_plugin_serve: boolean;
|
|
202
|
+
fieldrepeats_in_field_attributes: boolean;
|
|
203
|
+
no_plugin_fieldview_length_check: boolean;
|
|
204
|
+
bootstrap5: boolean;
|
|
205
|
+
version_plugin_serve_path: boolean;
|
|
206
|
+
prefix_or_in_queries: boolean;
|
|
207
|
+
json_state_query: boolean;
|
|
208
|
+
};
|
|
209
|
+
add_tenant: (t: string) => void;
|
|
210
|
+
process_send: (v: any) => void;
|
|
211
|
+
};
|
|
212
|
+
export = _default;
|
|
58
213
|
//# sourceMappingURL=state.d.ts.map
|
package/dist/db/state.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../db/state.
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../db/state.ts"],"names":[],"mappings":"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"}
|
package/dist/db/state.js
CHANGED
|
@@ -6,23 +6,26 @@
|
|
|
6
6
|
* @module db/state
|
|
7
7
|
* @subcategory db
|
|
8
8
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const
|
|
9
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
|
+
};
|
|
12
|
+
const view_1 = __importDefault(require("../models/view"));
|
|
13
|
+
const trigger_1 = __importDefault(require("../models/trigger"));
|
|
14
|
+
const file_1 = __importDefault(require("../models/file"));
|
|
15
|
+
const moment_1 = __importDefault(require("moment"));
|
|
16
|
+
const _1 = __importDefault(require("."));
|
|
13
17
|
const { migrate } = require("../migrate");
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const View = require("../models/view");
|
|
17
|
-
const { getAllConfigOrDefaults, setConfig, deleteConfig, configTypes, } = require("../models/config");
|
|
18
|
+
const config_1 = __importDefault(require("../models/config"));
|
|
19
|
+
const { getAllConfigOrDefaults, setConfig, deleteConfig, configTypes } = config_1.default;
|
|
18
20
|
const emergency_layout = require("@saltcorn/markup/emergency_layout");
|
|
19
|
-
const
|
|
20
|
-
const {
|
|
21
|
-
const
|
|
22
|
-
const
|
|
21
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
22
|
+
const { structuredClone, removeAllWhiteSpace } = utils_1.default;
|
|
23
|
+
const i18n_1 = __importDefault(require("i18n"));
|
|
24
|
+
const path_1 = require("path");
|
|
25
|
+
const fs_1 = require("fs");
|
|
26
|
+
const promises_1 = require("fs/promises");
|
|
23
27
|
/**
|
|
24
|
-
* @param
|
|
25
|
-
* @returns {void}
|
|
28
|
+
* @param v
|
|
26
29
|
*/
|
|
27
30
|
const process_send = (v) => {
|
|
28
31
|
if (process.send)
|
|
@@ -93,16 +96,17 @@ class State {
|
|
|
93
96
|
this.fonts = standard_fonts;
|
|
94
97
|
this.layouts = { emergency: { wrap: emergency_layout } };
|
|
95
98
|
this.headers = {};
|
|
96
|
-
this.function_context = { moment, slugify:
|
|
97
|
-
this.functions = { moment, slugify:
|
|
99
|
+
this.function_context = { moment: moment_1.default, slugify: _1.default.slugify };
|
|
100
|
+
this.functions = { moment: moment_1.default, slugify: _1.default.slugify };
|
|
98
101
|
this.keyFieldviews = {};
|
|
99
102
|
this.external_tables = {};
|
|
100
103
|
this.verifier = null;
|
|
101
|
-
this.i18n = new I18n(
|
|
104
|
+
this.i18n = new i18n_1.default.I18n();
|
|
105
|
+
this.i18n.configure({
|
|
102
106
|
locales: [],
|
|
103
|
-
directory:
|
|
107
|
+
directory: (0, path_1.join)(__dirname, "..", "app-locales"),
|
|
104
108
|
});
|
|
105
|
-
|
|
109
|
+
this.localTableIds = new Array();
|
|
106
110
|
}
|
|
107
111
|
/**
|
|
108
112
|
* Get Layout by user
|
|
@@ -152,29 +156,32 @@ class State {
|
|
|
152
156
|
this.getConfig("custom_events", []).forEach((cev) => {
|
|
153
157
|
this.eventTypes[cev.name] = cev;
|
|
154
158
|
});
|
|
155
|
-
this.refresh_i18n();
|
|
156
|
-
if (!noSignal)
|
|
157
|
-
process_send({ refresh: "config", tenant:
|
|
159
|
+
await this.refresh_i18n();
|
|
160
|
+
if (!noSignal && _1.default.is_node)
|
|
161
|
+
process_send({ refresh: "config", tenant: _1.default.getTenantSchema() });
|
|
158
162
|
}
|
|
159
163
|
/**
|
|
160
164
|
* @returns {Promise<void>}
|
|
161
165
|
*/
|
|
162
166
|
async refresh_i18n() {
|
|
163
|
-
const localeDir =
|
|
167
|
+
const localeDir = (0, path_1.join)(__dirname, "..", "app-locales", this.tenant);
|
|
164
168
|
try {
|
|
165
169
|
//avoid race condition
|
|
166
|
-
if (!
|
|
167
|
-
await
|
|
170
|
+
if (!(0, fs_1.existsSync)(localeDir))
|
|
171
|
+
await (0, promises_1.mkdir)(localeDir, { recursive: true });
|
|
172
|
+
}
|
|
173
|
+
catch (e) {
|
|
174
|
+
console.error("app-locale create error", e);
|
|
168
175
|
}
|
|
169
|
-
catch { }
|
|
170
176
|
const allStrings = this.getConfig("localizer_strings", {});
|
|
171
177
|
for (const lang of Object.keys(this.getConfig("localizer_languages", {}))) {
|
|
172
178
|
//write json file
|
|
173
179
|
const strings = allStrings[lang];
|
|
174
180
|
if (strings)
|
|
175
|
-
await
|
|
181
|
+
await (0, promises_1.writeFile)((0, path_1.join)(localeDir, `${lang}.json`), JSON.stringify(strings, null, 2));
|
|
176
182
|
}
|
|
177
|
-
this.i18n = new I18n(
|
|
183
|
+
this.i18n = new i18n_1.default.I18n();
|
|
184
|
+
this.i18n.configure({
|
|
178
185
|
locales: Object.keys(this.getConfig("localizer_languages", {})),
|
|
179
186
|
directory: localeDir,
|
|
180
187
|
autoReload: false,
|
|
@@ -188,7 +195,7 @@ class State {
|
|
|
188
195
|
* @returns {Promise<void>}
|
|
189
196
|
*/
|
|
190
197
|
async refresh_views(noSignal) {
|
|
191
|
-
this.views = await
|
|
198
|
+
this.views = await view_1.default.find();
|
|
192
199
|
this.virtual_triggers = [];
|
|
193
200
|
for (const view of this.views) {
|
|
194
201
|
if (view.viewtemplateObj && view.viewtemplateObj.virtual_triggers) {
|
|
@@ -196,8 +203,8 @@ class State {
|
|
|
196
203
|
this.virtual_triggers.push(...trs);
|
|
197
204
|
}
|
|
198
205
|
}
|
|
199
|
-
if (!noSignal)
|
|
200
|
-
process_send({ refresh: "views", tenant:
|
|
206
|
+
if (!noSignal && _1.default.is_node)
|
|
207
|
+
process_send({ refresh: "views", tenant: _1.default.getTenantSchema() });
|
|
201
208
|
}
|
|
202
209
|
/**
|
|
203
210
|
* Refresh triggers
|
|
@@ -205,9 +212,9 @@ class State {
|
|
|
205
212
|
* @returns {Promise<void>}
|
|
206
213
|
*/
|
|
207
214
|
async refresh_triggers(noSignal) {
|
|
208
|
-
this.triggers = await
|
|
209
|
-
if (!noSignal)
|
|
210
|
-
process_send({ refresh: "triggers", tenant:
|
|
215
|
+
this.triggers = await trigger_1.default.findDB();
|
|
216
|
+
if (!noSignal && _1.default.is_node)
|
|
217
|
+
process_send({ refresh: "triggers", tenant: _1.default.getTenantSchema() });
|
|
211
218
|
}
|
|
212
219
|
/**
|
|
213
220
|
* Refresh pages
|
|
@@ -217,8 +224,8 @@ class State {
|
|
|
217
224
|
async refresh_pages(noSignal) {
|
|
218
225
|
const Page = require("../models/page");
|
|
219
226
|
this.pages = await Page.find();
|
|
220
|
-
if (!noSignal)
|
|
221
|
-
process_send({ refresh: "pages", tenant:
|
|
227
|
+
if (!noSignal && _1.default.is_node)
|
|
228
|
+
process_send({ refresh: "pages", tenant: _1.default.getTenantSchema() });
|
|
222
229
|
}
|
|
223
230
|
/**
|
|
224
231
|
* Refresh files
|
|
@@ -227,13 +234,14 @@ class State {
|
|
|
227
234
|
*/
|
|
228
235
|
// todo what will be if there are a lot of files? Yes, there are cache only ids of files.
|
|
229
236
|
async refresh_files(noSignal) {
|
|
230
|
-
const allfiles = await
|
|
237
|
+
const allfiles = await file_1.default.find();
|
|
231
238
|
this.files = {};
|
|
232
239
|
for (const f of allfiles) {
|
|
233
|
-
|
|
240
|
+
if (f.id)
|
|
241
|
+
this.files[f.id] = f;
|
|
234
242
|
}
|
|
235
|
-
if (!noSignal)
|
|
236
|
-
process_send({ refresh: "files", tenant:
|
|
243
|
+
if (!noSignal && _1.default.is_node)
|
|
244
|
+
process_send({ refresh: "files", tenant: _1.default.getTenantSchema() });
|
|
237
245
|
}
|
|
238
246
|
/**
|
|
239
247
|
* Refresh tables & fields
|
|
@@ -241,8 +249,8 @@ class State {
|
|
|
241
249
|
* @returns {Promise<void>}
|
|
242
250
|
*/
|
|
243
251
|
async refresh_tables(noSignal) {
|
|
244
|
-
const allTables = await
|
|
245
|
-
const allFields = await
|
|
252
|
+
const allTables = await _1.default.select("_sc_tables", {}, { orderBy: "name", nocase: true });
|
|
253
|
+
const allFields = await _1.default.select("_sc_fields", {}, { orderBy: "name", nocase: true });
|
|
246
254
|
for (const table of allTables) {
|
|
247
255
|
table.fields = allFields.filter((f) => f.table_id === table.id);
|
|
248
256
|
table.fields.forEach((f) => {
|
|
@@ -261,8 +269,8 @@ class State {
|
|
|
261
269
|
});
|
|
262
270
|
}
|
|
263
271
|
this.tables = allTables;
|
|
264
|
-
if (!noSignal)
|
|
265
|
-
process_send({ refresh: "tables", tenant:
|
|
272
|
+
if (!noSignal && _1.default.is_node)
|
|
273
|
+
process_send({ refresh: "tables", tenant: _1.default.getTenantSchema() });
|
|
266
274
|
}
|
|
267
275
|
/**
|
|
268
276
|
* Get config parameter by key
|
|
@@ -271,10 +279,10 @@ class State {
|
|
|
271
279
|
* @returns {string}
|
|
272
280
|
*/
|
|
273
281
|
getConfig(key, def) {
|
|
274
|
-
const fixed =
|
|
282
|
+
const fixed = _1.default.connectObj.fixed_configuration[key];
|
|
275
283
|
if (typeof fixed !== "undefined")
|
|
276
284
|
return fixed;
|
|
277
|
-
if (
|
|
285
|
+
if (_1.default.connectObj.inherit_configuration.includes(key)) {
|
|
278
286
|
if (typeof singleton.configs[key] !== "undefined")
|
|
279
287
|
return singleton.configs[key].value;
|
|
280
288
|
else
|
|
@@ -289,7 +297,7 @@ class State {
|
|
|
289
297
|
}
|
|
290
298
|
/**
|
|
291
299
|
* Get copy of config parameter
|
|
292
|
-
* @param {
|
|
300
|
+
* @param {string} key - key of parameter
|
|
293
301
|
* @param {string} [def] - default value
|
|
294
302
|
* @returns {string}
|
|
295
303
|
*/
|
|
@@ -310,13 +318,17 @@ class State {
|
|
|
310
318
|
await setConfig(key, value);
|
|
311
319
|
this.configs[key] = { value };
|
|
312
320
|
if (key.startsWith("localizer_"))
|
|
313
|
-
this.refresh_i18n();
|
|
314
|
-
|
|
321
|
+
await this.refresh_i18n();
|
|
322
|
+
if (_1.default.is_node)
|
|
323
|
+
process_send({ refresh: "config", tenant: _1.default.getTenantSchema() });
|
|
324
|
+
else {
|
|
325
|
+
await this.refresh_config(true);
|
|
326
|
+
}
|
|
315
327
|
}
|
|
316
328
|
}
|
|
317
329
|
/**
|
|
318
330
|
* Delete config parameter by key
|
|
319
|
-
* @param {string}
|
|
331
|
+
* @param {string} keys - key of parameter
|
|
320
332
|
* @returns {Promise<void>}
|
|
321
333
|
*/
|
|
322
334
|
async deleteConfig(...keys) {
|
|
@@ -324,7 +336,11 @@ class State {
|
|
|
324
336
|
await deleteConfig(key);
|
|
325
337
|
delete this.configs[key];
|
|
326
338
|
}
|
|
327
|
-
|
|
339
|
+
if (_1.default.is_node)
|
|
340
|
+
process_send({ refresh: "config", tenant: _1.default.getTenantSchema() });
|
|
341
|
+
else {
|
|
342
|
+
await this.refresh_config(true);
|
|
343
|
+
}
|
|
328
344
|
}
|
|
329
345
|
/**
|
|
330
346
|
* Register plugin
|
|
@@ -371,6 +387,7 @@ class State {
|
|
|
371
387
|
this.auth_methods[k] = v;
|
|
372
388
|
});
|
|
373
389
|
Object.entries(withCfg("external_tables", {})).forEach(([k, v]) => {
|
|
390
|
+
// TODO ch
|
|
374
391
|
if (!v.name)
|
|
375
392
|
v.name = k;
|
|
376
393
|
this.external_tables[k] = v;
|
|
@@ -395,7 +412,8 @@ class State {
|
|
|
395
412
|
});
|
|
396
413
|
const layout = withCfg("layout");
|
|
397
414
|
if (layout) {
|
|
398
|
-
|
|
415
|
+
// TOOO ch
|
|
416
|
+
this.layouts[name] = layout;
|
|
399
417
|
}
|
|
400
418
|
const verifier = withCfg("verifier_workflow");
|
|
401
419
|
if (verifier) {
|
|
@@ -437,8 +455,8 @@ class State {
|
|
|
437
455
|
async remove_plugin(name, noSignal) {
|
|
438
456
|
delete this.plugins[name];
|
|
439
457
|
await this.refresh_plugins();
|
|
440
|
-
if (!noSignal)
|
|
441
|
-
process_send({ removePlugin: name, tenant:
|
|
458
|
+
if (!noSignal && _1.default.is_node)
|
|
459
|
+
process_send({ removePlugin: name, tenant: _1.default.getTenantSchema() });
|
|
442
460
|
}
|
|
443
461
|
/**
|
|
444
462
|
* Reload plugins
|
|
@@ -455,8 +473,8 @@ class State {
|
|
|
455
473
|
this.auth_methods = {};
|
|
456
474
|
this.layouts = { emergency: { wrap: emergency_layout } };
|
|
457
475
|
this.headers = {};
|
|
458
|
-
this.function_context = { moment, slugify:
|
|
459
|
-
this.functions = { moment, slugify:
|
|
476
|
+
this.function_context = { moment: moment_1.default, slugify: _1.default.slugify };
|
|
477
|
+
this.functions = { moment: moment_1.default, slugify: _1.default.slugify };
|
|
460
478
|
this.keyFieldviews = {};
|
|
461
479
|
this.external_tables = {};
|
|
462
480
|
this.eventTypes = {};
|
|
@@ -466,8 +484,8 @@ class State {
|
|
|
466
484
|
this.registerPlugin(k, v, this.plugin_cfgs[k]);
|
|
467
485
|
});
|
|
468
486
|
await this.refresh(true);
|
|
469
|
-
if (!noSignal)
|
|
470
|
-
process_send({ refresh: "plugins", tenant:
|
|
487
|
+
if (!noSignal && _1.default.is_node)
|
|
488
|
+
process_send({ refresh: "plugins", tenant: _1.default.getTenantSchema() });
|
|
471
489
|
}
|
|
472
490
|
/**
|
|
473
491
|
* @returns {string[]}
|
|
@@ -496,23 +514,6 @@ class State {
|
|
|
496
514
|
this.roomEmitter(...args);
|
|
497
515
|
}
|
|
498
516
|
}
|
|
499
|
-
/**
|
|
500
|
-
* State constract
|
|
501
|
-
* @type {{variables: {headers: ((function(*=): *)|*), types: ((function(*=): *)|*), viewtemplates: ((function(*=): *)|*)}, methods: {addType: ((function(*=): *)|*), registerPlugin: ((function(*=): *)|*), type_names: ((function(*=): *)|*), refresh: ((function(*=): *)|*)}}}
|
|
502
|
-
*/
|
|
503
|
-
State.contract = {
|
|
504
|
-
variables: {
|
|
505
|
-
headers: is.any,
|
|
506
|
-
viewtemplates: is.objVals(is_viewtemplate),
|
|
507
|
-
types: is.objVals(is_plugin_type),
|
|
508
|
-
},
|
|
509
|
-
methods: {
|
|
510
|
-
addType: is.fun(is_plugin_type, is.eq(undefined)),
|
|
511
|
-
registerPlugin: is.fun([is.str, is_plugin], is.eq(undefined)),
|
|
512
|
-
refresh: is.fun([], is.promise(is.eq(undefined))),
|
|
513
|
-
type_names: is.getter(is.array(is.str)),
|
|
514
|
-
},
|
|
515
|
-
};
|
|
516
517
|
// the state is singleton
|
|
517
518
|
const singleton = new State("public");
|
|
518
519
|
// return current State object
|
|
@@ -520,17 +521,17 @@ const singleton = new State("public");
|
|
|
520
521
|
* @function
|
|
521
522
|
* @returns {State}
|
|
522
523
|
*/
|
|
523
|
-
const getState =
|
|
524
|
-
if (!
|
|
524
|
+
const getState = () => {
|
|
525
|
+
if (!_1.default.is_it_multi_tenant())
|
|
525
526
|
return singleton;
|
|
526
|
-
const ten =
|
|
527
|
-
if (ten ===
|
|
527
|
+
const ten = _1.default.getTenantSchema();
|
|
528
|
+
if (ten === _1.default.connectObj.default_schema)
|
|
528
529
|
return singleton;
|
|
529
530
|
else
|
|
530
531
|
return tenants[ten];
|
|
531
|
-
}
|
|
532
|
+
};
|
|
532
533
|
// list of all tenants
|
|
533
|
-
|
|
534
|
+
const tenants = { public: singleton };
|
|
534
535
|
// list of tenants with other domains
|
|
535
536
|
const otherdomaintenants = {};
|
|
536
537
|
/**
|
|
@@ -575,6 +576,7 @@ const set_tenant_base_url = (tenant_subdomain, value) => {
|
|
|
575
576
|
* Switch to multi_tenant
|
|
576
577
|
* @param {object} plugin_loader
|
|
577
578
|
* @param {boolean} disableMigrate - if true then dont migrate db
|
|
579
|
+
* @param {string[]} tenantList
|
|
578
580
|
* @returns {Promise<void>}
|
|
579
581
|
*/
|
|
580
582
|
const init_multi_tenant = async (plugin_loader, disableMigrate, tenantList) => {
|
|
@@ -582,8 +584,8 @@ const init_multi_tenant = async (plugin_loader, disableMigrate, tenantList) => {
|
|
|
582
584
|
try {
|
|
583
585
|
tenants[domain] = new State(domain);
|
|
584
586
|
if (!disableMigrate)
|
|
585
|
-
await
|
|
586
|
-
await
|
|
587
|
+
await _1.default.runWithTenant(domain, () => migrate(domain, true));
|
|
588
|
+
await _1.default.runWithTenant(domain, plugin_loader);
|
|
587
589
|
set_tenant_base_url(domain, tenants[domain].configs.base_url.value);
|
|
588
590
|
}
|
|
589
591
|
catch (err) {
|
|
@@ -600,7 +602,7 @@ const add_tenant = (t) => {
|
|
|
600
602
|
* @returns {Promise<void>}
|
|
601
603
|
*/
|
|
602
604
|
const restart_tenant = async (plugin_loader) => {
|
|
603
|
-
const ten =
|
|
605
|
+
const ten = _1.default.getTenantSchema();
|
|
604
606
|
tenants[ten] = new State(ten);
|
|
605
607
|
await plugin_loader();
|
|
606
608
|
};
|
|
@@ -618,6 +620,7 @@ const features = {
|
|
|
618
620
|
bootstrap5: true,
|
|
619
621
|
version_plugin_serve_path: true,
|
|
620
622
|
prefix_or_in_queries: true,
|
|
623
|
+
json_state_query: true,
|
|
621
624
|
};
|
|
622
625
|
module.exports = {
|
|
623
626
|
getState,
|