@saltcorn/data 0.7.1 → 0.7.2-beta.3

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.
Files changed (246) hide show
  1. package/dist/app-locales/en.json +6 -0
  2. package/dist/app-locales/public/da.json +3 -0
  3. package/dist/app-locales/public/tlh.json +3 -0
  4. package/dist/base-plugin/actions.d.ts.map +1 -1
  5. package/dist/base-plugin/actions.js +4 -1
  6. package/dist/base-plugin/actions.js.map +1 -1
  7. package/dist/base-plugin/fieldviews.d.ts +24 -0
  8. package/dist/base-plugin/fieldviews.d.ts.map +1 -1
  9. package/dist/base-plugin/fieldviews.js +57 -5
  10. package/dist/base-plugin/fieldviews.js.map +1 -1
  11. package/dist/base-plugin/index.d.ts +230 -13
  12. package/dist/base-plugin/index.d.ts.map +1 -1
  13. package/dist/base-plugin/types.d.ts +114 -73
  14. package/dist/base-plugin/types.d.ts.map +1 -1
  15. package/dist/base-plugin/types.js +141 -37
  16. package/dist/base-plugin/types.js.map +1 -1
  17. package/dist/base-plugin/viewtemplates/edit.d.ts +47 -3
  18. package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -1
  19. package/dist/base-plugin/viewtemplates/edit.js +204 -85
  20. package/dist/base-plugin/viewtemplates/edit.js.map +1 -1
  21. package/dist/base-plugin/viewtemplates/feed.d.ts +14 -1
  22. package/dist/base-plugin/viewtemplates/feed.d.ts.map +1 -1
  23. package/dist/base-plugin/viewtemplates/feed.js +20 -8
  24. package/dist/base-plugin/viewtemplates/feed.js.map +1 -1
  25. package/dist/base-plugin/viewtemplates/filter.d.ts +17 -1
  26. package/dist/base-plugin/viewtemplates/filter.d.ts.map +1 -1
  27. package/dist/base-plugin/viewtemplates/filter.js +64 -45
  28. package/dist/base-plugin/viewtemplates/filter.js.map +1 -1
  29. package/dist/base-plugin/viewtemplates/list.d.ts +20 -1
  30. package/dist/base-plugin/viewtemplates/list.d.ts.map +1 -1
  31. package/dist/base-plugin/viewtemplates/list.js +59 -40
  32. package/dist/base-plugin/viewtemplates/list.js.map +1 -1
  33. package/dist/base-plugin/viewtemplates/listshowlist.d.ts +14 -1
  34. package/dist/base-plugin/viewtemplates/listshowlist.d.ts.map +1 -1
  35. package/dist/base-plugin/viewtemplates/listshowlist.js +15 -4
  36. package/dist/base-plugin/viewtemplates/listshowlist.js.map +1 -1
  37. package/dist/base-plugin/viewtemplates/room.d.ts +41 -1
  38. package/dist/base-plugin/viewtemplates/room.d.ts.map +1 -1
  39. package/dist/base-plugin/viewtemplates/room.js +107 -80
  40. package/dist/base-plugin/viewtemplates/room.js.map +1 -1
  41. package/dist/base-plugin/viewtemplates/show.d.ts +37 -4
  42. package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
  43. package/dist/base-plugin/viewtemplates/show.js +112 -75
  44. package/dist/base-plugin/viewtemplates/show.js.map +1 -1
  45. package/dist/base-plugin/viewtemplates/viewable_fields.d.ts +26 -7
  46. package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -1
  47. package/dist/base-plugin/viewtemplates/viewable_fields.js +60 -48
  48. package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -1
  49. package/dist/coverage/coverage-final.json +46 -0
  50. package/dist/coverage/lcov-report/block-navigation.d.ts +2 -0
  51. package/dist/coverage/lcov-report/block-navigation.d.ts.map +1 -0
  52. package/dist/coverage/lcov-report/block-navigation.js +71 -0
  53. package/dist/coverage/lcov-report/block-navigation.js.map +1 -0
  54. package/dist/coverage/lcov-report/prettify.d.ts +1 -0
  55. package/dist/coverage/lcov-report/prettify.d.ts.map +1 -0
  56. package/dist/coverage/lcov-report/prettify.js +478 -0
  57. package/dist/coverage/lcov-report/prettify.js.map +1 -0
  58. package/dist/coverage/lcov-report/sorter.d.ts +2 -0
  59. package/dist/coverage/lcov-report/sorter.d.ts.map +1 -0
  60. package/dist/coverage/lcov-report/sorter.js +164 -0
  61. package/dist/coverage/lcov-report/sorter.js.map +1 -0
  62. package/dist/db/connect.d.ts.map +1 -1
  63. package/dist/db/connect.js +8 -1
  64. package/dist/db/connect.js.map +1 -1
  65. package/dist/db/connect_mobile.d.ts +9 -0
  66. package/dist/db/connect_mobile.d.ts.map +1 -0
  67. package/dist/db/connect_mobile.js +15 -0
  68. package/dist/db/connect_mobile.js.map +1 -0
  69. package/dist/db/fixtures.d.ts.map +1 -1
  70. package/dist/db/fixtures.js +2 -1
  71. package/dist/db/fixtures.js.map +1 -1
  72. package/dist/db/index.d.ts.map +1 -1
  73. package/dist/db/index.js +16 -2
  74. package/dist/db/index.js.map +1 -1
  75. package/dist/db/state.d.ts +207 -52
  76. package/dist/db/state.d.ts.map +1 -1
  77. package/dist/db/state.js +87 -84
  78. package/dist/db/state.js.map +1 -1
  79. package/dist/index.d.ts +8 -0
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +27 -2
  82. package/dist/index.js.map +1 -1
  83. package/dist/migrate.d.ts.map +1 -1
  84. package/dist/migrate.js +54 -40
  85. package/dist/migrate.js.map +1 -1
  86. package/dist/mobile-mocks/db/postgres.d.ts +1 -0
  87. package/dist/mobile-mocks/db/postgres.d.ts.map +1 -0
  88. package/dist/mobile-mocks/db/postgres.js +2 -0
  89. package/dist/mobile-mocks/db/postgres.js.map +1 -0
  90. package/dist/mobile-mocks/db/sqlite.d.ts +1 -0
  91. package/dist/mobile-mocks/db/sqlite.d.ts.map +1 -0
  92. package/dist/mobile-mocks/db/sqlite.js +2 -0
  93. package/dist/mobile-mocks/db/sqlite.js.map +1 -0
  94. package/dist/mobile-mocks/models/email.d.ts +1 -0
  95. package/dist/mobile-mocks/models/email.d.ts.map +1 -0
  96. package/dist/mobile-mocks/models/email.js +2 -0
  97. package/dist/mobile-mocks/models/email.js.map +1 -0
  98. package/dist/mobile-mocks/node/async_hooks.d.ts +4 -0
  99. package/dist/mobile-mocks/node/async_hooks.d.ts.map +1 -0
  100. package/dist/mobile-mocks/node/async_hooks.js +8 -0
  101. package/dist/mobile-mocks/node/async_hooks.js.map +1 -0
  102. package/dist/mobile-mocks/node/child_process.d.ts +3 -0
  103. package/dist/mobile-mocks/node/child_process.d.ts.map +1 -0
  104. package/dist/mobile-mocks/node/child_process.js +6 -0
  105. package/dist/mobile-mocks/node/child_process.js.map +1 -0
  106. package/dist/mobile-mocks/node/fs/promises.d.ts +6 -0
  107. package/dist/mobile-mocks/node/fs/promises.d.ts.map +1 -0
  108. package/dist/mobile-mocks/node/fs/promises.js +16 -0
  109. package/dist/mobile-mocks/node/fs/promises.js.map +1 -0
  110. package/dist/mobile-mocks/node/fs.d.ts +4 -0
  111. package/dist/mobile-mocks/node/fs.d.ts.map +1 -0
  112. package/dist/mobile-mocks/node/fs.js +15 -0
  113. package/dist/mobile-mocks/node/fs.js.map +1 -0
  114. package/dist/mobile-mocks/node/latest-version.d.ts +2 -0
  115. package/dist/mobile-mocks/node/latest-version.d.ts.map +1 -0
  116. package/dist/mobile-mocks/node/latest-version.js +7 -0
  117. package/dist/mobile-mocks/node/latest-version.js.map +1 -0
  118. package/dist/mobile-mocks/node/v8.d.ts +3 -0
  119. package/dist/mobile-mocks/node/v8.d.ts.map +1 -0
  120. package/dist/mobile-mocks/node/v8.js +8 -0
  121. package/dist/mobile-mocks/node/v8.js.map +1 -0
  122. package/dist/mobile-mocks/npm/env-paths.d.ts +6 -0
  123. package/dist/mobile-mocks/npm/env-paths.d.ts.map +1 -0
  124. package/dist/mobile-mocks/npm/env-paths.js +9 -0
  125. package/dist/mobile-mocks/npm/env-paths.js.map +1 -0
  126. package/dist/mobile-mocks/saltcorn/plugin-testing.d.ts +1 -0
  127. package/dist/mobile-mocks/saltcorn/plugin-testing.d.ts.map +1 -0
  128. package/dist/mobile-mocks/saltcorn/plugin-testing.js +2 -0
  129. package/dist/mobile-mocks/saltcorn/plugin-testing.js.map +1 -0
  130. package/dist/models/config.d.ts +9 -10
  131. package/dist/models/config.d.ts.map +1 -1
  132. package/dist/models/config.js +8 -7
  133. package/dist/models/config.js.map +1 -1
  134. package/dist/models/discovery.d.ts.map +1 -1
  135. package/dist/models/discovery.js +5 -1
  136. package/dist/models/discovery.js.map +1 -1
  137. package/dist/models/field.d.ts +5 -4
  138. package/dist/models/field.d.ts.map +1 -1
  139. package/dist/models/field.js +22 -19
  140. package/dist/models/field.js.map +1 -1
  141. package/dist/models/fieldrepeat.d.ts +5 -0
  142. package/dist/models/fieldrepeat.d.ts.map +1 -1
  143. package/dist/models/fieldrepeat.js +2 -0
  144. package/dist/models/fieldrepeat.js.map +1 -1
  145. package/dist/models/form.d.ts +2 -0
  146. package/dist/models/form.d.ts.map +1 -1
  147. package/dist/models/form.js +1 -0
  148. package/dist/models/form.js.map +1 -1
  149. package/dist/models/index.d.ts +2 -13
  150. package/dist/models/index.d.ts.map +1 -1
  151. package/dist/models/layout.d.ts.map +1 -1
  152. package/dist/models/layout.js +12 -2
  153. package/dist/models/layout.js.map +1 -1
  154. package/dist/models/page.d.ts +1 -1
  155. package/dist/models/page.d.ts.map +1 -1
  156. package/dist/models/page.js +10 -9
  157. package/dist/models/page.js.map +1 -1
  158. package/dist/models/scheduler.d.ts.map +1 -1
  159. package/dist/models/scheduler.js +3 -1
  160. package/dist/models/scheduler.js.map +1 -1
  161. package/dist/models/table.d.ts +2 -1
  162. package/dist/models/table.d.ts.map +1 -1
  163. package/dist/models/table.js +21 -10
  164. package/dist/models/table.js.map +1 -1
  165. package/dist/models/trigger.d.ts +3 -3
  166. package/dist/models/trigger.d.ts.map +1 -1
  167. package/dist/models/trigger.js +4 -5
  168. package/dist/models/trigger.js.map +1 -1
  169. package/dist/models/user.d.ts +1 -1
  170. package/dist/models/user.d.ts.map +1 -1
  171. package/dist/models/user.js +7 -15
  172. package/dist/models/user.js.map +1 -1
  173. package/dist/models/view.d.ts +16 -12
  174. package/dist/models/view.d.ts.map +1 -1
  175. package/dist/models/view.js +63 -15
  176. package/dist/models/view.js.map +1 -1
  177. package/dist/models/workflow.d.ts +1 -0
  178. package/dist/models/workflow.d.ts.map +1 -1
  179. package/dist/models/workflow.js +58 -2
  180. package/dist/models/workflow.js.map +1 -1
  181. package/dist/package.json +127 -0
  182. package/dist/plugin-helper.d.ts +17 -13
  183. package/dist/plugin-helper.d.ts.map +1 -1
  184. package/dist/plugin-helper.js +89 -61
  185. package/dist/plugin-helper.js.map +1 -1
  186. package/dist/tests/actions.test.js +30 -5
  187. package/dist/tests/actions.test.js.map +1 -1
  188. package/dist/tests/db.test.d.ts +2 -0
  189. package/dist/tests/db.test.d.ts.map +1 -0
  190. package/dist/tests/db.test.js +32 -0
  191. package/dist/tests/db.test.js.map +1 -0
  192. package/dist/tests/exact_views.test.js +274 -19
  193. package/dist/tests/exact_views.test.js.map +1 -1
  194. package/dist/tests/models.test.js +46 -1
  195. package/dist/tests/models.test.js.map +1 -1
  196. package/dist/tests/remote_query_helper.d.ts +341 -0
  197. package/dist/tests/remote_query_helper.d.ts.map +1 -0
  198. package/dist/tests/remote_query_helper.js +446 -0
  199. package/dist/tests/remote_query_helper.js.map +1 -0
  200. package/dist/tests/state.test.d.ts +2 -0
  201. package/dist/tests/state.test.d.ts.map +1 -0
  202. package/dist/tests/state.test.js +78 -0
  203. package/dist/tests/state.test.js.map +1 -0
  204. package/dist/tests/view.test.js +29 -0
  205. package/dist/tests/view.test.js.map +1 -1
  206. package/dist/tsconfig.json +24 -0
  207. package/dist/tsconfig.ref.json +9 -0
  208. package/dist/tsconfig.ref.tsbuildinfo +1 -1
  209. package/dist/utils.d.ts +3 -1
  210. package/dist/utils.d.ts.map +1 -1
  211. package/dist/utils.js +14 -23
  212. package/dist/utils.js.map +1 -1
  213. package/dist/webpack.config.d.ts +57 -0
  214. package/dist/webpack.config.d.ts.map +1 -0
  215. package/dist/webpack.config.js +75 -0
  216. package/dist/webpack.config.js.map +1 -0
  217. package/package.json +38 -13
  218. package/CHANGELOG.md +0 -8
  219. package/dist/models/backup.d.ts +0 -9
  220. package/dist/models/backup.d.ts.map +0 -1
  221. package/dist/models/backup.js +0 -278
  222. package/dist/models/backup.js.map +0 -1
  223. package/dist/models/pack.d.ts +0 -42
  224. package/dist/models/pack.d.ts.map +0 -1
  225. package/dist/models/pack.js +0 -419
  226. package/dist/models/pack.js.map +0 -1
  227. package/dist/models/tenant.d.ts +0 -17
  228. package/dist/models/tenant.d.ts.map +0 -1
  229. package/dist/models/tenant.js +0 -152
  230. package/dist/models/tenant.js.map +0 -1
  231. package/dist/tests/backup.test.d.ts +0 -2
  232. package/dist/tests/backup.test.d.ts.map +0 -1
  233. package/dist/tests/backup.test.js +0 -101
  234. package/dist/tests/backup.test.js.map +0 -1
  235. package/dist/tests/pack.test.d.ts +0 -2
  236. package/dist/tests/pack.test.d.ts.map +0 -1
  237. package/dist/tests/pack.test.js +0 -338
  238. package/dist/tests/pack.test.js.map +0 -1
  239. package/dist/tests/random.test.d.ts +0 -2
  240. package/dist/tests/random.test.d.ts.map +0 -1
  241. package/dist/tests/random.test.js +0 -149
  242. package/dist/tests/random.test.js.map +0 -1
  243. package/dist/tests/tenant.test.d.ts +0 -2
  244. package/dist/tests/tenant.test.d.ts.map +0 -1
  245. package/dist/tests/tenant.test.js +0 -52
  246. package/dist/tests/tenant.test.js.map +0 -1
@@ -1,58 +1,213 @@
1
1
  /**
2
- * @function
3
- * @returns {State}
2
+ * State of Saltcorn
3
+ * Keeps cache for main objects
4
+ * @category saltcorn-data
5
+ * @module db/state
6
+ * @subcategory db
4
7
  */
5
- export const getState: any;
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
- * Get tenant
8
- * @param {string} ten
9
- * @returns {object}
20
+ * State Class
21
+ * @category saltcorn-data
10
22
  */
11
- export function getTenant(ten: string): object;
12
- /**
13
- * Switch to multi_tenant
14
- * @param {object} plugin_loader
15
- * @param {boolean} disableMigrate - if true then dont migrate db
16
- * @returns {Promise<void>}
17
- */
18
- export function init_multi_tenant(plugin_loader: object, disableMigrate: boolean, tenantList: any): Promise<void>;
19
- /**
20
- * Restart tenant
21
- * @param {object} plugin_loader
22
- * @returns {Promise<void>}
23
- */
24
- export function restart_tenant(plugin_loader: object): Promise<void>;
25
- /**
26
- * Get other domain tenant
27
- * @param {string} hostname
28
- * @returns {object}
29
- */
30
- export function get_other_domain_tenant(hostname: string): object;
31
- /**
32
- * Set tenant base url???
33
- * From my point of view it just add tenant to list of otherdomaintenant
34
- * @param {object} tenant_subdomain
35
- * @param {string} [value] - new
36
- */
37
- export function set_tenant_base_url(tenant_subdomain: object, value?: string | undefined): void;
38
- /**
39
- * Get Process Init Time - moment when Saltcorn process was initiated
40
- * @returns {Date}
41
- */
42
- export function get_process_init_time(): Date;
43
- export namespace features {
44
- const serve_static_dependencies: boolean;
45
- const deep_public_plugin_serve: boolean;
46
- const fieldrepeats_in_field_attributes: boolean;
47
- const no_plugin_fieldview_length_check: boolean;
48
- const bootstrap5: boolean;
49
- const version_plugin_serve_path: boolean;
50
- const prefix_or_in_queries: boolean;
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
- export function add_tenant(t: any): void;
53
- /**
54
- * @param {object} v
55
- * @returns {void}
56
- */
57
- export function process_send(v: object): void;
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
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../db/state.js"],"names":[],"mappings":"AAwkBA;;;GAGG;AACH,2BASE;AAYF;;;;GAIG;AACH,+BAHW,MAAM,GACJ,MAAM,CAKlB;AAwBD;;;;;GAKG;AACH,iDAJW,MAAM,kBACN,OAAO,oBACL,QAAQ,IAAI,CAAC,CAiBzB;AAMD;;;;GAIG;AACH,8CAHW,MAAM,GACJ,QAAQ,IAAI,CAAC,CAMzB;AA1ED;;;;GAIG;AACH,kDAHW,MAAM,GACJ,MAAM,CAEuD;AAmB1E;;;;;GAKG;AACH,sDAHW,MAAM,oCAUhB;AAwCD;;;GAGG;AACH,yCAFa,IAAI,CAEoC;;;;;;;;;;AApBrD,yCAEC;AAvnBD;;;GAGG;AACH,gCAHW,MAAM,GACJ,IAAI,CAIhB"}
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
- const { contract, is } = require("contractis");
10
- const { is_plugin_wrap, is_plugin, is_header, is_viewtemplate, is_plugin_type, is_plugin_layout, } = require("../contracts");
11
- const moment = require("moment");
12
- const db = require(".");
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 File = require("../models/file");
15
- const Trigger = require("../models/trigger");
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 { structuredClone, removeAllWhiteSpace } = require("../utils");
20
- const { I18n } = require("i18n");
21
- const path = require("path");
22
- const fs = require("fs");
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 {object} v
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: db.slugify };
97
- this.functions = { moment, slugify: db.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: path.join(__dirname, "..", "app-locales"),
107
+ directory: (0, path_1.join)(__dirname, "..", "app-locales"),
104
108
  });
105
- contract.class(this);
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: db.getTenantSchema() });
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 = path.join(__dirname, "..", "app-locales", this.tenant);
167
+ const localeDir = (0, path_1.join)(__dirname, "..", "app-locales", this.tenant);
164
168
  try {
165
169
  //avoid race condition
166
- if (!fs.existsSync(localeDir))
167
- await fs.promises.mkdir(localeDir);
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 fs.promises.writeFile(path.join(localeDir, `${lang}.json`), JSON.stringify(strings, null, 2));
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 View.find();
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: db.getTenantSchema() });
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 Trigger.findDB();
209
- if (!noSignal)
210
- process_send({ refresh: "triggers", tenant: db.getTenantSchema() });
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: db.getTenantSchema() });
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 File.find();
237
+ const allfiles = await file_1.default.find();
231
238
  this.files = {};
232
239
  for (const f of allfiles) {
233
- this.files[f.id] = f;
240
+ if (f.id)
241
+ this.files[f.id] = f;
234
242
  }
235
- if (!noSignal)
236
- process_send({ refresh: "files", tenant: db.getTenantSchema() });
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 db.select("_sc_tables", {}, { orderBy: "name", nocase: true });
245
- const allFields = await db.select("_sc_fields", {}, { orderBy: "name", nocase: true });
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: db.getTenantSchema() });
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 = db.connectObj.fixed_configuration[key];
282
+ const fixed = _1.default.connectObj.fixed_configuration[key];
275
283
  if (typeof fixed !== "undefined")
276
284
  return fixed;
277
- if (db.connectObj.inherit_configuration.includes(key)) {
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 {sring} key - key of parameter
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
- process_send({ refresh: "config", tenant: db.getTenantSchema() });
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} key - key of parameter
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
- process_send({ refresh: "config", tenant: db.getTenantSchema() });
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
- this.layouts[name] = contract(is_plugin_layout, layout);
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: db.getTenantSchema() });
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: db.slugify };
459
- this.functions = { moment, slugify: db.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: db.getTenantSchema() });
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 = contract(is.fun([], is.or(is.class("State"), is.eq(undefined))), () => {
524
- if (!db.is_it_multi_tenant())
524
+ const getState = () => {
525
+ if (!_1.default.is_it_multi_tenant())
525
526
  return singleton;
526
- const ten = db.getTenantSchema();
527
- if (ten === db.connectObj.default_schema)
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
- var tenants = { public: singleton };
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 db.runWithTenant(domain, () => migrate(domain, true));
586
- await db.runWithTenant(domain, plugin_loader);
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 = db.getTenantSchema();
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,