@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,419 +0,0 @@
1
- "use strict";
2
- /**
3
- * @category saltcorn-data
4
- * @module models/pack
5
- * @subcategory models
6
- */
7
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
- if (k2 === undefined) k2 = k;
9
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || function (mod) {
20
- if (mod && mod.__esModule) return mod;
21
- var result = {};
22
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
- __setModuleDefault(result, mod);
24
- return result;
25
- };
26
- var __importDefault = (this && this.__importDefault) || function (mod) {
27
- return (mod && mod.__esModule) ? mod : { "default": mod };
28
- };
29
- const table_1 = __importDefault(require("./table"));
30
- const db_1 = __importDefault(require("../db"));
31
- const view_1 = __importDefault(require("./view"));
32
- const field_1 = __importDefault(require("./field"));
33
- const trigger_1 = __importDefault(require("./trigger"));
34
- const { getState } = require("../db/state");
35
- const node_fetch_1 = __importDefault(require("node-fetch"));
36
- const page_1 = __importDefault(require("./page"));
37
- const table_constraints_1 = __importDefault(require("./table_constraints"));
38
- const role_1 = __importDefault(require("./role"));
39
- const library_1 = __importDefault(require("./library"));
40
- const config_1 = __importDefault(require("./config"));
41
- const { save_menu_items } = config_1.default;
42
- /**
43
- * @function
44
- * @param {string} name
45
- * @returns {Promise<object>}
46
- */
47
- const table_pack = async (name) => {
48
- const table = await table_1.default.findOne({ name });
49
- if (!table)
50
- throw new Error(`Unable to find table '${name}'`);
51
- const fields = await table.getFields();
52
- const strip_ids = (o) => {
53
- delete o.id;
54
- delete o.table_id;
55
- return o;
56
- };
57
- //const triggers = await Trigger.find({ table_id: table.id });
58
- const constraints = await table_constraints_1.default.find({ table_id: table.id });
59
- return {
60
- name: table.name,
61
- min_role_read: table.min_role_read,
62
- min_role_write: table.min_role_write,
63
- versioned: table.versioned,
64
- ownership_formula: table.ownership_formula,
65
- fields: fields.map((f) => strip_ids(f.toJson)),
66
- //triggers: triggers.map((tr) => tr.toJson),
67
- constraints: constraints.map((c) => c.toJson),
68
- ownership_field_name: table.owner_fieldname_from_fields(fields),
69
- };
70
- };
71
- /**
72
- * @function
73
- * @param {string} name
74
- * @returns {Promise<object>}
75
- */
76
- const view_pack = async (name) => {
77
- const view = await view_1.default.findOne({ name });
78
- if (!view)
79
- throw new Error(`Unable to find view '${name}'`);
80
- const table = await table_1.default.findOne({ id: view.table_id });
81
- if (!table)
82
- throw new Error(`Unable to find table with id '${view.table_id}'`);
83
- return {
84
- name: view.name,
85
- viewtemplate: view.viewtemplate,
86
- configuration: view.configuration,
87
- min_role: view.min_role,
88
- table: table ? table.name : null,
89
- menu_label: view.menu_label,
90
- default_render_page: view.default_render_page,
91
- };
92
- };
93
- /**
94
- * @function
95
- * @param {string} name
96
- * @returns {Promise<object>}
97
- */
98
- const plugin_pack = async (name) => {
99
- const Plugin = (await Promise.resolve().then(() => __importStar(require("./plugin")))).default;
100
- const plugin = await Plugin.findOne({ name });
101
- if (!plugin)
102
- throw new Error(`Unable to find plugin '${name}'`);
103
- return {
104
- name: plugin.name,
105
- source: plugin.source,
106
- location: plugin.location,
107
- configuration: plugin.configuration,
108
- deploy_private_key: plugin.deploy_private_key,
109
- };
110
- };
111
- /**
112
- * @function
113
- * @param {string} name
114
- * @returns {Promise<object>}
115
- */
116
- const page_pack = async (name) => {
117
- const page = await page_1.default.findOne({ name });
118
- const root_page_for_roles = await page.is_root_page_for_roles();
119
- return {
120
- name: page.name,
121
- title: page.title,
122
- description: page.description,
123
- min_role: page.min_role,
124
- layout: page.layout,
125
- fixed_states: page.fixed_states,
126
- menu_label: page.menu_label,
127
- root_page_for_roles,
128
- };
129
- };
130
- /**
131
- * @function
132
- * @param {string} name
133
- * @returns {Promise<object>}
134
- */
135
- const library_pack = async (name) => {
136
- const lib = await library_1.default.findOne({ name });
137
- return lib.toJson;
138
- };
139
- /**
140
- * @function
141
- * @param {string} name
142
- * @returns {Promise<object>}
143
- */
144
- const trigger_pack = async (name) => {
145
- const trig = await trigger_1.default.findOne({ name });
146
- return trig.toJson;
147
- };
148
- /**
149
- * @function
150
- * @param {string} role
151
- * @returns {Promise<object>}
152
- */
153
- const role_pack = async (role) => {
154
- return await role_1.default.findOne({ role });
155
- };
156
- /**
157
- * @function
158
- * @param {string} pack
159
- * @returns {Promise<boolean|object>}
160
- */
161
- const can_install_pack = async (pack) => {
162
- const warns = new Array();
163
- const allTables = (await table_1.default.find()).map((t) => db_1.default.sqlsanitize(t.name.toLowerCase()));
164
- const allViews = (await view_1.default.find()).map((t) => t.name);
165
- const allPages = (await page_1.default.find()).map((t) => t.name);
166
- const packTables = (pack.tables || []).map((t) => db_1.default.sqlsanitize(t.name.toLowerCase()));
167
- const matchTables = allTables.filter((dbt) => packTables.some((pt) => pt === dbt && pt !== "users"));
168
- const matchViews = allViews.filter((dbt) => (pack.views || []).some((pt) => pt.name === dbt));
169
- const matchPages = allPages.filter((dbt) => (pack.pages || []).some((pt) => pt.name === dbt));
170
- if (matchTables.length > 0)
171
- return {
172
- error: "Tables already exist: " + matchTables.join(),
173
- };
174
- pack.tables.forEach((t) => {
175
- if (t.name === "users")
176
- t.fields.forEach((f) => {
177
- if (f.required) {
178
- warns.push(`User field '${f.name}' is required in pack, but there are existing users. You must set a value for each user and then change the field to be required. Got to <a href="/list/users">users table data</a>.`);
179
- }
180
- });
181
- });
182
- matchViews.forEach((v) => {
183
- warns.push(`Clashing view ${v}.`);
184
- });
185
- matchPages.forEach((p) => {
186
- warns.push(`Clashing page ${p}.`);
187
- });
188
- if (warns.length > 0)
189
- return { warning: warns.join(" ") };
190
- else
191
- return true;
192
- };
193
- /**
194
- * @function
195
- * @param {string} pack
196
- * @param {string} name
197
- * @returns {Promise<void>}
198
- */
199
- const uninstall_pack = async (pack, name) => {
200
- for (const pageSpec of pack.pages || []) {
201
- const page = await page_1.default.findOne({ name: pageSpec.name });
202
- if (page)
203
- await page.delete();
204
- }
205
- for (const viewSpec of pack.views) {
206
- const view = await view_1.default.findOne({ name: viewSpec.name });
207
- if (view)
208
- await view.delete();
209
- }
210
- for (const tableSpec of pack.tables) {
211
- const table = await table_1.default.findOne({ name: tableSpec.name });
212
- if (table && table.name === "users")
213
- continue;
214
- if (table) {
215
- const fields = await table.getFields();
216
- for (const field of fields) {
217
- if (field.is_fkey)
218
- await field.delete();
219
- }
220
- const triggers = await trigger_1.default.find({ table_id: table.id });
221
- for (const trigger of triggers) {
222
- await trigger.delete();
223
- }
224
- }
225
- }
226
- for (const tableSpec of pack.tables) {
227
- const table = await table_1.default.findOne({ name: tableSpec.name });
228
- if (table && table.name !== "users")
229
- await table.delete();
230
- }
231
- if (name) {
232
- const existPacks = getState().getConfigCopy("installed_packs", []);
233
- await getState().setConfig("installed_packs", existPacks.filter((p) => p !== name));
234
- }
235
- };
236
- /**
237
- * @function
238
- * @param {object} item
239
- * @returns {Promise<void>}
240
- */
241
- const add_to_menu = async (item) => {
242
- const current_menu = getState().getConfigCopy("menu_items", []);
243
- current_menu.push(item);
244
- await save_menu_items(current_menu);
245
- };
246
- /**
247
- * @function
248
- * @param {string} pack
249
- * @param {string} [name]
250
- * @param {function} loadAndSaveNewPlugin
251
- * @param {boolean} [bare_tables = false]
252
- * @returns {Promise<void>}
253
- */
254
- const install_pack = async (pack, name, loadAndSaveNewPlugin, bare_tables = false) => {
255
- const Plugin = (await Promise.resolve().then(() => __importStar(require("./plugin")))).default;
256
- const existingPlugins = await Plugin.find({});
257
- for (const plugin of pack.plugins) {
258
- if (!existingPlugins.some((ep) => ep.name === plugin.name)) {
259
- const p = new Plugin(plugin);
260
- await loadAndSaveNewPlugin(p);
261
- }
262
- }
263
- for (const role of pack.roles || []) {
264
- await role_1.default.create(role);
265
- }
266
- for (const lib of pack.library || []) {
267
- await library_1.default.create(lib);
268
- }
269
- for (const tableSpec of pack.tables) {
270
- if (tableSpec.name !== "users") {
271
- const table = await table_1.default.create(tableSpec.name, tableSpec);
272
- const [tbl_pk] = await table.getFields();
273
- //set pk
274
- const pack_pk = tableSpec.fields.find((f) => f.primary_key);
275
- if (pack_pk) {
276
- await tbl_pk.update(pack_pk);
277
- }
278
- }
279
- }
280
- for (const tableSpec of pack.tables) {
281
- const _table = await table_1.default.findOne({ name: tableSpec.name });
282
- if (!_table)
283
- throw new Error(`Unable to find table '${tableSpec.name}'`);
284
- const exfields = await _table.getFields();
285
- for (const field of tableSpec.fields) {
286
- const exfield = exfields.find((f) => f.name === field.name);
287
- if (!((_table.name === "users" && field.name === "email") || exfield)) {
288
- if (_table.name === "users" && field.required)
289
- await field_1.default.create({ table: _table, ...field, required: false }, bare_tables);
290
- else
291
- await field_1.default.create({ table: _table, ...field }, bare_tables);
292
- }
293
- }
294
- for (const { table, ...trigger } of tableSpec.triggers || []) {
295
- await trigger_1.default.create({ table: _table, ...trigger }); //legacy, not in new packs
296
- }
297
- for (const constraint of tableSpec.constraints || [])
298
- await table_constraints_1.default.create({ table: _table, ...constraint });
299
- if (tableSpec.ownership_field_name) {
300
- const owner_field = await field_1.default.findOne({
301
- table_id: _table.id,
302
- name: tableSpec.ownership_field_name,
303
- });
304
- await _table.update({ ownership_field_id: owner_field.id });
305
- }
306
- }
307
- for (const viewSpec of pack.views) {
308
- const { table, on_menu, menu_label, on_root_page, ...viewNoTable } = viewSpec;
309
- const vtable = await table_1.default.findOne({ name: table });
310
- await view_1.default.create({
311
- ...viewNoTable,
312
- table_id: vtable ? vtable.id : null,
313
- });
314
- if (menu_label)
315
- await add_to_menu({
316
- label: menu_label,
317
- type: "View",
318
- viewname: viewSpec.name,
319
- min_role: viewSpec.min_role || 10,
320
- });
321
- }
322
- for (const triggerSpec of pack.triggers || []) {
323
- await trigger_1.default.create(triggerSpec);
324
- }
325
- for (const pageFullSpec of pack.pages || []) {
326
- const { root_page_for_roles, menu_label, ...pageSpec } = pageFullSpec;
327
- await page_1.default.create(pageSpec);
328
- for (const role of root_page_for_roles || []) {
329
- const current_root = getState().getConfigCopy(role + "_home", "");
330
- if (!current_root || current_root === "")
331
- await getState().setConfig(role + "_home", pageSpec.name);
332
- }
333
- if (menu_label)
334
- await add_to_menu({
335
- label: menu_label,
336
- type: "Page",
337
- pagename: pageSpec.name,
338
- min_role: pageSpec.min_role,
339
- });
340
- }
341
- if (name) {
342
- const existPacks = getState().getConfigCopy("installed_packs", []);
343
- await getState().setConfig("installed_packs", [...existPacks, name]);
344
- }
345
- };
346
- /**
347
- * @function
348
- * @param {Date} date
349
- * @param {string} [hours = 24]
350
- * @returns {boolean}
351
- */
352
- const is_stale = (date, hours = 24) => {
353
- const oneday = 60 * 60 * hours * 1000;
354
- let now = new Date();
355
- return new Date(date).valueOf() < now.valueOf() - oneday;
356
- };
357
- /**
358
- * @function
359
- * @returns {object[]}
360
- */
361
- const fetch_available_packs = async () => {
362
- const stored = getState().getConfigCopy("available_packs", false);
363
- const stored_at = getState().getConfigCopy("available_packs_fetched_at", false);
364
- //console.log("in fetch", stored_at, stored)
365
- if (!stored || !stored_at || is_stale(stored_at)) {
366
- try {
367
- const from_api = await fetch_available_packs_from_store();
368
- await getState().setConfig("available_packs", from_api);
369
- await getState().setConfig("available_packs_fetched_at", new Date());
370
- return from_api;
371
- }
372
- catch (e) {
373
- console.error("fetch store error", e);
374
- return [];
375
- }
376
- }
377
- else
378
- return stored;
379
- };
380
- /**
381
- * @function
382
- * @returns {Promise<object[]>}
383
- */
384
- const fetch_available_packs_from_store = async () => {
385
- //console.log("fetch packs");
386
- const response = await (0, node_fetch_1.default)("http://store.saltcorn.com/api/packs?fields=name,description");
387
- const json = await response.json();
388
- return json.success;
389
- };
390
- /**
391
- * @function
392
- * @param {string} name
393
- * @returns {Promise<object|null>}
394
- */
395
- const fetch_pack_by_name = async (name) => {
396
- const response = await (0, node_fetch_1.default)("http://store.saltcorn.com/api/packs?name=" + encodeURIComponent(name));
397
- const json = await response.json();
398
- if (json.success.length == 1)
399
- return json.success[0];
400
- else
401
- return null;
402
- };
403
- module.exports = {
404
- table_pack,
405
- view_pack,
406
- plugin_pack,
407
- page_pack,
408
- role_pack,
409
- library_pack,
410
- trigger_pack,
411
- install_pack,
412
- fetch_available_packs,
413
- fetch_pack_by_name,
414
- is_stale,
415
- can_install_pack,
416
- uninstall_pack,
417
- add_to_menu,
418
- };
419
- //# sourceMappingURL=pack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pack.js","sourceRoot":"","sources":["../../models/pack.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import type { Plugin } from "@saltcorn/types/base_types";
2
- import type { Row } from "@saltcorn/db-common/internal";
3
- declare const _default: {
4
- getAllTenants: () => Promise<string[]>;
5
- getAllTenantRows: () => Promise<Row[]>;
6
- createTenant: (subdomain: string, newurl?: string | undefined, email?: string | undefined, description?: string | undefined) => Promise<void>;
7
- domain_sanitize: (s: string) => string;
8
- deleteTenant: (sub: string) => Promise<void>;
9
- eachTenant: (f: () => Promise<void>) => Promise<void>;
10
- copy_tenant_template: ({ tenant_template, target, loadAndSaveNewPlugin, }: {
11
- tenant_template: string;
12
- target: string;
13
- loadAndSaveNewPlugin: (plugin: Plugin) => void;
14
- }) => Promise<void>;
15
- };
16
- export = _default;
17
- //# sourceMappingURL=tenant.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tenant.d.ts","sourceRoot":"","sources":["../../models/tenant.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;;;;;;;;;;;;;;AAoIxD,kBAQE"}
@@ -1,152 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __importDefault = (this && this.__importDefault) || function (mod) {
22
- return (mod && mod.__esModule) ? mod : { "default": mod };
23
- };
24
- /**
25
- * Tenant Management Data Layer Access
26
- * @category saltcorn-data
27
- * @module models/tenant
28
- * @subcategory models
29
- */
30
- const db_1 = __importDefault(require("../db"));
31
- const reset = require("../db/reset_schema");
32
- const internal_1 = require("@saltcorn/db-common/internal");
33
- const config_1 = __importDefault(require("./config"));
34
- const { setConfig } = config_1.default;
35
- const promises_1 = require("fs/promises");
36
- /**
37
- * List all Tenants
38
- * @function
39
- * @returns {Promise<string[]>}
40
- */
41
- const getAllTenants = async () => {
42
- const tens = await db_1.default.select("_sc_tenants");
43
- return tens.map(({ subdomain }) => subdomain);
44
- };
45
- /**
46
- * List all Tenants
47
- * @function
48
- * @returns {Promise<string[]>}
49
- */
50
- const getAllTenantRows = async () => {
51
- return await db_1.default.select("_sc_tenants");
52
- };
53
- /**
54
- * Create Tenant and switch to It:
55
- * - normalize domain name
56
- * - create db schema
57
- * - reset db schema (create required )
58
- * - change current base_url
59
- *
60
- * Arguments:
61
- * subdomain - tenant name (subdomain)
62
- * newurl - base url of tenant
63
- * email - email of creator
64
- * description - description of tenant
65
- * @function
66
- * @param {string} subdomain
67
- * @param {string} [newurl]
68
- * @param {string} [email]
69
- * @param {string} [description]
70
- * @returns {Promise<void>}
71
- */
72
- const createTenant =
73
- // TODO how to set names for arguments
74
- async (subdomain, newurl, email, description) => {
75
- // normalize domain name
76
- const saneDomain = domain_sanitize(subdomain);
77
- // add email
78
- const saneEmail = typeof email !== "undefined" ? email : "";
79
- // add description
80
- const saneDescription = description !== "undefined" ? description : null;
81
- // add info about tenant into main site
82
- const id = await db_1.default.insert("_sc_tenants", { subdomain: saneDomain, email: saneEmail, description: saneDescription }, { noid: true });
83
- //create schema
84
- await db_1.default.query(`CREATE SCHEMA "${saneDomain}";`);
85
- // set continuation storage
86
- //db.tenantNamespace.set("tenant", saneDomain);
87
- await db_1.default.runWithTenant(saneDomain, async () => {
88
- //reset schema
89
- await reset(true, saneDomain);
90
- if (newurl)
91
- await setConfig("base_url", newurl);
92
- });
93
- };
94
- const copy_tenant_template = async ({ tenant_template, target, loadAndSaveNewPlugin, }) => {
95
- const { create_backup, restore } = await Promise.resolve().then(() => __importStar(require("./backup")));
96
- // TODO use a hygenic name for backup file
97
- const backupFile = await db_1.default.runWithTenant(tenant_template, create_backup);
98
- await db_1.default.runWithTenant(target, async () => {
99
- await restore(backupFile, loadAndSaveNewPlugin, true);
100
- await db_1.default.updateWhere("_sc_files", { user_id: null }, {});
101
- await db_1.default.deleteWhere("users", {});
102
- await db_1.default.reset_sequence("users");
103
- //
104
- });
105
- await (0, promises_1.unlink)(backupFile);
106
- };
107
- /**
108
- * Delete Tenant
109
- * Note! This is deleting all tenant data in database!
110
- * @function
111
- * @param {string} sub
112
- * @returns {Promise<void>}
113
- */
114
- const deleteTenant = async (sub) => {
115
- const subdomain = domain_sanitize(sub);
116
- // drop tenant db schema
117
- await db_1.default.query(`drop schema if exists "${subdomain}" CASCADE `);
118
- // delete information about tenant from main site
119
- await db_1.default.deleteWhere("_sc_tenants", { subdomain });
120
- };
121
- /**
122
- * Sanitize Domain (Normalize domain name).
123
- * - force to lower case
124
- * - remove . in name
125
- * @function
126
- * @param {string} s
127
- * @returns {string}
128
- */
129
- const domain_sanitize = (s) => (0, internal_1.sqlsanitize)(s.replace(".", "").toLowerCase());
130
- /**
131
- * Call fuction f for each Tenant
132
- * @param f - called function
133
- * @returns {Promise<void>} no result
134
- */
135
- const eachTenant = async (f) => {
136
- await f();
137
- if (db_1.default.is_it_multi_tenant()) {
138
- const tenantList = await getAllTenants();
139
- for (const domain of tenantList)
140
- await db_1.default.runWithTenant(domain, f);
141
- }
142
- };
143
- module.exports = {
144
- getAllTenants,
145
- getAllTenantRows,
146
- createTenant,
147
- domain_sanitize,
148
- deleteTenant,
149
- eachTenant,
150
- copy_tenant_template,
151
- };
152
- //# sourceMappingURL=tenant.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tenant.js","sourceRoot":"","sources":["../../models/tenant.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=backup.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backup.test.d.ts","sourceRoot":"","sources":["../../tests/backup.test.ts"],"names":[],"mappings":""}