@saltcorn/data 0.6.2 → 0.6.3-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 (173) hide show
  1. package/dist/base-plugin/fieldviews.d.ts.map +1 -1
  2. package/dist/base-plugin/fieldviews.js +2 -0
  3. package/dist/base-plugin/fieldviews.js.map +1 -1
  4. package/dist/base-plugin/index.d.ts +72 -67
  5. package/dist/base-plugin/index.d.ts.map +1 -1
  6. package/dist/base-plugin/types.d.ts.map +1 -1
  7. package/dist/base-plugin/types.js +9 -8
  8. package/dist/base-plugin/types.js.map +1 -1
  9. package/dist/base-plugin/viewtemplates/edit.d.ts +1 -1
  10. package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -1
  11. package/dist/base-plugin/viewtemplates/edit.js +25 -2
  12. package/dist/base-plugin/viewtemplates/edit.js.map +1 -1
  13. package/dist/base-plugin/viewtemplates/feed.d.ts +1 -1
  14. package/dist/base-plugin/viewtemplates/feed.d.ts.map +1 -1
  15. package/dist/base-plugin/viewtemplates/feed.js +11 -1
  16. package/dist/base-plugin/viewtemplates/feed.js.map +1 -1
  17. package/dist/base-plugin/viewtemplates/list.d.ts +1 -1
  18. package/dist/base-plugin/viewtemplates/list.d.ts.map +1 -1
  19. package/dist/base-plugin/viewtemplates/list.js +23 -11
  20. package/dist/base-plugin/viewtemplates/list.js.map +1 -1
  21. package/dist/base-plugin/viewtemplates/show.d.ts +5 -0
  22. package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
  23. package/dist/base-plugin/viewtemplates/show.js +43 -7
  24. package/dist/base-plugin/viewtemplates/show.js.map +1 -1
  25. package/dist/base-plugin/viewtemplates/viewable_fields.d.ts +2 -1
  26. package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -1
  27. package/dist/base-plugin/viewtemplates/viewable_fields.js +30 -10
  28. package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -1
  29. package/dist/contracts.js +1 -1
  30. package/dist/contracts.js.map +1 -1
  31. package/dist/db/connect.d.ts.map +1 -1
  32. package/dist/db/connect.js +9 -2
  33. package/dist/db/connect.js.map +1 -1
  34. package/dist/db/index.d.ts +6 -0
  35. package/dist/db/index.d.ts.map +1 -1
  36. package/dist/db/index.js +6 -0
  37. package/dist/db/index.js.map +1 -1
  38. package/dist/db/state.d.ts +1 -0
  39. package/dist/db/state.d.ts.map +1 -1
  40. package/dist/db/state.js +13 -4
  41. package/dist/db/state.js.map +1 -1
  42. package/dist/migrate.js +1 -1
  43. package/dist/migrate.js.map +1 -1
  44. package/dist/migrations/202112282254.d.ts +3 -0
  45. package/dist/migrations/202112282254.d.ts.map +1 -0
  46. package/dist/migrations/202112282254.js +5 -0
  47. package/dist/migrations/202112282254.js.map +1 -0
  48. package/dist/models/backup.d.ts +8 -21
  49. package/dist/models/backup.d.ts.map +1 -1
  50. package/dist/models/backup.js +107 -103
  51. package/dist/models/backup.js.map +1 -1
  52. package/dist/models/config.d.ts +39 -179
  53. package/dist/models/config.d.ts.map +1 -1
  54. package/dist/models/config.js +77 -50
  55. package/dist/models/config.js.map +1 -1
  56. package/dist/models/crash.d.ts +40 -47
  57. package/dist/models/crash.d.ts.map +1 -1
  58. package/dist/models/crash.js +40 -39
  59. package/dist/models/crash.js.map +1 -1
  60. package/dist/models/email.d.ts +11 -13
  61. package/dist/models/email.d.ts.map +1 -1
  62. package/dist/models/email.js +19 -15
  63. package/dist/models/email.js.map +1 -1
  64. package/dist/models/eventlog.d.ts +39 -38
  65. package/dist/models/eventlog.d.ts.map +1 -1
  66. package/dist/models/eventlog.js +14 -29
  67. package/dist/models/eventlog.js.map +1 -1
  68. package/dist/models/expression.d.ts +37 -31
  69. package/dist/models/expression.d.ts.map +1 -1
  70. package/dist/models/expression.js +47 -23
  71. package/dist/models/expression.js.map +1 -1
  72. package/dist/models/field.d.ts +125 -121
  73. package/dist/models/field.d.ts.map +1 -1
  74. package/dist/models/field.js +125 -147
  75. package/dist/models/field.js.map +1 -1
  76. package/dist/models/fieldrepeat.d.ts +25 -20
  77. package/dist/models/fieldrepeat.d.ts.map +1 -1
  78. package/dist/models/fieldrepeat.js +8 -14
  79. package/dist/models/fieldrepeat.js.map +1 -1
  80. package/dist/models/file.d.ts +56 -58
  81. package/dist/models/file.d.ts.map +1 -1
  82. package/dist/models/file.js +25 -52
  83. package/dist/models/file.js.map +1 -1
  84. package/dist/models/form.d.ts +69 -50
  85. package/dist/models/form.d.ts.map +1 -1
  86. package/dist/models/form.js +49 -49
  87. package/dist/models/form.js.map +1 -1
  88. package/dist/models/index.d.ts +39 -0
  89. package/dist/models/index.d.ts.map +1 -1
  90. package/dist/models/index.js.map +1 -1
  91. package/dist/models/layout.d.ts +16 -31
  92. package/dist/models/layout.d.ts.map +1 -1
  93. package/dist/models/layout.js +2 -4
  94. package/dist/models/layout.js.map +1 -1
  95. package/dist/models/library.d.ts +21 -19
  96. package/dist/models/library.d.ts.map +1 -1
  97. package/dist/models/library.js +10 -8
  98. package/dist/models/library.js.map +1 -1
  99. package/dist/models/pack.d.ts +37 -87
  100. package/dist/models/pack.d.ts.map +1 -1
  101. package/dist/models/pack.js +120 -87
  102. package/dist/models/pack.js.map +1 -1
  103. package/dist/models/page.d.ts +23 -47
  104. package/dist/models/page.d.ts.map +1 -1
  105. package/dist/models/page.js +16 -40
  106. package/dist/models/page.js.map +1 -1
  107. package/dist/models/plugin.d.ts +41 -65
  108. package/dist/models/plugin.d.ts.map +1 -1
  109. package/dist/models/plugin.js +17 -39
  110. package/dist/models/plugin.js.map +1 -1
  111. package/dist/models/role.d.ts +18 -11
  112. package/dist/models/role.d.ts.map +1 -1
  113. package/dist/models/role.js +16 -8
  114. package/dist/models/role.js.map +1 -1
  115. package/dist/models/scheduler.d.ts +8 -8
  116. package/dist/models/scheduler.d.ts.map +1 -1
  117. package/dist/models/scheduler.js +17 -14
  118. package/dist/models/scheduler.js.map +1 -1
  119. package/dist/models/table.d.ts +87 -133
  120. package/dist/models/table.d.ts.map +1 -1
  121. package/dist/models/table.js +237 -182
  122. package/dist/models/table.js.map +1 -1
  123. package/dist/models/table_constraints.d.ts +44 -39
  124. package/dist/models/table_constraints.d.ts.map +1 -1
  125. package/dist/models/table_constraints.js +13 -32
  126. package/dist/models/table_constraints.js.map +1 -1
  127. package/dist/models/tenant.d.ts +6 -0
  128. package/dist/models/tenant.d.ts.map +1 -1
  129. package/dist/models/tenant.js +9 -0
  130. package/dist/models/tenant.js.map +1 -1
  131. package/dist/models/trigger.d.ts +50 -69
  132. package/dist/models/trigger.d.ts.map +1 -1
  133. package/dist/models/trigger.js +8 -34
  134. package/dist/models/trigger.js.map +1 -1
  135. package/dist/models/user.d.ts +108 -142
  136. package/dist/models/user.d.ts.map +1 -1
  137. package/dist/models/user.js +51 -71
  138. package/dist/models/user.js.map +1 -1
  139. package/dist/models/view.d.ts +94 -98
  140. package/dist/models/view.d.ts.map +1 -1
  141. package/dist/models/view.js +103 -80
  142. package/dist/models/view.js.map +1 -1
  143. package/dist/models/workflow.d.ts +23 -21
  144. package/dist/models/workflow.d.ts.map +1 -1
  145. package/dist/models/workflow.js +9 -17
  146. package/dist/models/workflow.js.map +1 -1
  147. package/dist/plugin-helper.d.ts.map +1 -1
  148. package/dist/plugin-helper.js +30 -12
  149. package/dist/plugin-helper.js.map +1 -1
  150. package/dist/tests/calc.test.js +13 -0
  151. package/dist/tests/calc.test.js.map +1 -1
  152. package/dist/tests/exact_views.test.js +214 -0
  153. package/dist/tests/exact_views.test.js.map +1 -1
  154. package/dist/tests/table.test.js +57 -2
  155. package/dist/tests/table.test.js.map +1 -1
  156. package/dist/tsconfig.ref.tsbuildinfo +1 -1
  157. package/dist/utils.d.ts +2 -0
  158. package/dist/utils.d.ts.map +1 -1
  159. package/dist/utils.js +26 -0
  160. package/dist/utils.js.map +1 -1
  161. package/package.json +17 -5
  162. package/dist/coverage/lcov-report/block-navigation.d.ts +0 -2
  163. package/dist/coverage/lcov-report/block-navigation.d.ts.map +0 -1
  164. package/dist/coverage/lcov-report/block-navigation.js +0 -66
  165. package/dist/coverage/lcov-report/block-navigation.js.map +0 -1
  166. package/dist/coverage/lcov-report/prettify.d.ts +0 -1
  167. package/dist/coverage/lcov-report/prettify.d.ts.map +0 -1
  168. package/dist/coverage/lcov-report/prettify.js +0 -478
  169. package/dist/coverage/lcov-report/prettify.js.map +0 -1
  170. package/dist/coverage/lcov-report/sorter.d.ts +0 -2
  171. package/dist/coverage/lcov-report/sorter.d.ts.map +0 -1
  172. package/dist/coverage/lcov-report/sorter.js +0 -141
  173. package/dist/coverage/lcov-report/sorter.js.map +0 -1
@@ -1,118 +1,136 @@
1
- export = View;
1
+ /**
2
+ * View Data Access Layer
3
+ * @category saltcorn-data
4
+ * @module models/view
5
+ * @subcategory models
6
+ */
7
+ import Form from "./form";
8
+ import type { ViewTemplate, FieldLike, Tablely, RunExtra } from "@saltcorn/types/base_types";
9
+ import type { Where, SelectOptions } from "@saltcorn/db-common/internal";
10
+ import type Workflow from "./workflow";
11
+ import type { ViewCfg } from "@saltcorn/types/model-abstracts/abstract_view";
12
+ import type { AbstractTable } from "@saltcorn/types/model-abstracts/abstract_table";
2
13
  /**
3
14
  * View Class
4
15
  * @category saltcorn-data
5
16
  */
6
17
  declare class View {
18
+ name: string;
19
+ id?: number;
20
+ table_id?: number;
21
+ viewtemplate: string;
22
+ min_role: number;
23
+ viewtemplateObj?: ViewTemplate;
24
+ default_render_page?: string;
25
+ exttable_name?: string;
26
+ description?: string;
27
+ table_name?: string;
28
+ configuration?: any;
29
+ table?: AbstractTable;
30
+ slug?: any;
31
+ /**
32
+ * View constructor
33
+ * @param {object} o
34
+ */
35
+ constructor(o: ViewCfg | View);
7
36
  /**
8
37
  * @param {object} where
9
38
  * @returns {View}
10
39
  */
11
- static findOne(where: object): View;
40
+ static findOne(where: Where): View | undefined;
12
41
  /**
13
42
  * @param where
14
43
  * @param selectopts
15
44
  * @returns {Promise<View[]>}
16
45
  */
17
- static find(where: any, selectopts?: {
18
- orderBy: string;
19
- nocase: boolean;
20
- }): Promise<View[]>;
46
+ static find(where?: Where, selectopts?: SelectOptions): Promise<Array<View>>;
47
+ /**
48
+ * @returns {Promise<object[]>}
49
+ */
50
+ get_state_fields(): Promise<Array<FieldLike>>;
51
+ /**
52
+ * Get menu label
53
+ * @type {string|undefined}
54
+ */
55
+ get menu_label(): string | undefined;
21
56
  /**
22
57
  * @param table
23
58
  * @param pred
24
59
  * @returns {Promise<object[]>}
25
60
  */
26
- static find_table_views_where(table: any, pred: any): Promise<object[]>;
61
+ static find_table_views_where(table: number | Tablely | string, pred: FindViewsPred): Promise<Array<View>>;
62
+ /**
63
+ * @type {object}
64
+ */
65
+ get select_option(): any;
27
66
  /**
28
67
  * @param {function} pred
29
68
  * @returns {Promise<object>}
30
69
  */
31
- static find_all_views_where(pred: Function): Promise<object>;
70
+ static find_all_views_where(pred: FindViewsPred): Promise<Array<View>>;
32
71
  /**
33
72
  * @param {Table|object} table
34
73
  * @returns {Promise<View[]>}
35
74
  */
36
- static find_possible_links_to_table(table: Table | object): Promise<View[]>;
75
+ static find_possible_links_to_table(table: number | Tablely | string): Promise<Array<View>>;
37
76
  /**
38
77
  * Create view in database
39
78
  * @param v
40
79
  * @returns {Promise<View>}
41
80
  */
42
- static create(v: any): Promise<View>;
81
+ static create(v: ViewCfg): Promise<View>;
82
+ /**
83
+ * Clone View
84
+ * @returns {Promise<View>}
85
+ */
86
+ clone(): Promise<View>;
87
+ /**
88
+ * Delete current view from db
89
+ * @returns {Promise<void>}
90
+ */
91
+ delete(): Promise<void>;
43
92
  /**
44
93
  * Delete list of views
45
94
  * @param where - condition
46
95
  * @returns {Promise<void>}
47
96
  */
48
- static delete(where: any): Promise<void>;
97
+ static delete(where: Where): Promise<void>;
49
98
  /**
50
99
  * Update View description
51
100
  * @param v - view name
52
101
  * @param id - id
53
102
  * @returns {Promise<void>}
54
103
  */
55
- static update(v: any, id: any): Promise<void>;
56
- /**
57
- * View constructor
58
- * @param {object} o
59
- */
60
- constructor(o: object);
61
- name: any;
62
- id: any;
63
- viewtemplate: any;
64
- exttable_name: any;
65
- description: any;
66
- table_id: any;
67
- table_name: any;
68
- configuration: any;
69
- min_role: number;
70
- viewtemplateObj: any;
71
- default_render_page: any;
72
- /**
73
- * @returns {Promise<object[]>}
74
- */
75
- get_state_fields(): Promise<object[]>;
76
- /**
77
- * Get menu label
78
- * @type {string|undefined}
79
- */
80
- get menu_label(): string | undefined;
81
- /**
82
- * @type {object}
83
- */
84
- get select_option(): object;
85
- /**
86
- * Clone View
87
- * @returns {Promise<View>}
88
- */
89
- clone(): Promise<View>;
90
- /**
91
- * Delete current view from db
92
- * @returns {Promise<void>}
93
- */
94
- delete(): Promise<void>;
104
+ static update(v: any, id: number): Promise<void>;
95
105
  /**
96
106
  * @param {*} arg
97
107
  * @returns {Promise<object>}
98
108
  */
99
- authorise_post(arg: any): Promise<object>;
109
+ authorise_post(arg: {
110
+ body: any;
111
+ table_id: number;
112
+ req: NonNullable<any>;
113
+ }): Promise<boolean>;
100
114
  /**
101
115
  * @param {*} arg
102
116
  * @returns {Promise<object>}
103
117
  */
104
- authorise_get(arg: any): Promise<object>;
118
+ authorise_get(arg: {
119
+ query: any;
120
+ table_id: number;
121
+ req: NonNullable<any>;
122
+ }): Promise<boolean>;
105
123
  /**
106
124
  * @returns {string}
107
125
  */
108
- getStringsForI18n(): string;
126
+ getStringsForI18n(): string[];
109
127
  /**
110
128
  * Run (Execute) View
111
129
  * @param query
112
130
  * @param extraArgs
113
131
  * @returns {Promise<*>}
114
132
  */
115
- run(query: any, extraArgs: any): Promise<any>;
133
+ run(query: any, extraArgs: RunExtra): Promise<any>;
116
134
  /**
117
135
  * @throws {InvalidConfiguration}
118
136
  */
@@ -123,21 +141,24 @@ declare class View {
123
141
  * @param {*} res
124
142
  * @returns {Promise<object>}
125
143
  */
126
- run_possibly_on_page(query: any, req: any, res: any): Promise<object>;
144
+ run_possibly_on_page(query: NonNullable<any>, req: NonNullable<any>, res: NonNullable<any>): Promise<string>;
127
145
  /**
128
146
  * @param {*} query
129
147
  * @param {*} extraArgs
130
148
  * @throws {InvalidConfiguration}
131
149
  * @returns {Promise<object>}
132
150
  */
133
- runMany(query: any, extraArgs: any): Promise<object>;
151
+ runMany(query: string, extraArgs: RunExtra): Promise<string[] | Array<{
152
+ html: string;
153
+ row: any;
154
+ }>>;
134
155
  /**
135
156
  * @param {*} query
136
157
  * @param {*} body
137
158
  * @param {*} extraArgs
138
159
  * @returns {Promise<object>}
139
160
  */
140
- runPost(query: any, body: any, extraArgs: any): Promise<object>;
161
+ runPost(query: string, body: string, extraArgs: RunExtra): Promise<any>;
141
162
  /**
142
163
  * @param {*} route
143
164
  * @param {*} body
@@ -145,60 +166,35 @@ declare class View {
145
166
  * @param {*} extraArgs
146
167
  * @returns {Promise<void>}
147
168
  */
148
- runRoute(route: any, body: any, res: any, extraArgs: any): Promise<void>;
169
+ runRoute(route: string, body: any, res: NonNullable<any>, extraArgs: RunExtra): Promise<any>;
149
170
  /**
150
171
  * @param {object} req_query
151
172
  * @returns {object}
152
173
  */
153
- combine_state_and_default_state(req_query: object): object;
174
+ combine_state_and_default_state(req_query: any): any;
154
175
  /**
155
176
  * @param {object} query
156
177
  * @param {object} req
157
178
  * @returns {Promise<Form|null>}
158
179
  */
159
- get_state_form(query: object, req: object): Promise<Form | null>;
180
+ get_state_form(query: any, req: ReqFunction): Promise<Form | null>;
160
181
  /**
161
182
  * @param {object} req
162
183
  * @returns {Promise<object>}
163
184
  */
164
- get_config_flow(req: object): Promise<object>;
185
+ get_config_flow(req: ReqFunction): Promise<Workflow>;
186
+ rewrite_query_from_slug(query: any, params: any): void;
165
187
  }
188
+ declare type ReqFunction = {
189
+ __: (arg0: string) => string;
190
+ };
166
191
  declare namespace View {
167
- namespace contract {
168
- namespace variables {
169
- const name: any;
170
- const id: any;
171
- const table_id: any;
172
- const viewtemplate: any;
173
- const min_role: any;
174
- const viewtemplateObj: any;
175
- const default_render_page: any;
176
- }
177
- namespace methods {
178
- export const get_state_fields: any;
179
- export const get_state_form: any;
180
- export const get_config_flow: any;
181
- const _delete: any;
182
- export { _delete as delete };
183
- export const menu_label: any;
184
- export const run: any;
185
- export const runPost: any;
186
- export const runRoute: any;
187
- export const runMany: any;
188
- export const combine_state_and_default_state: any;
189
- }
190
- namespace static_methods {
191
- export const find: any;
192
- export const findOne: any;
193
- export const create: any;
194
- export const update: any;
195
- const _delete_1: any;
196
- export { _delete_1 as delete };
197
- export const find_possible_links_to_table: any;
198
- export const find_all_views_where: any;
199
- export const find_table_views_where: any;
200
- }
201
- }
192
+ type FindViewsPred = (arg0: {
193
+ viewrow: View;
194
+ viewtemplate?: ViewTemplate;
195
+ state_fields: Array<FieldLike>;
196
+ }) => boolean;
202
197
  }
203
- import Form = require("../models/form");
198
+ declare type FindViewsPred = View.FindViewsPred;
199
+ export = View;
204
200
  //# sourceMappingURL=view.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../models/view.js"],"names":[],"mappings":";AAuBA;;;GAGG;AACH;IA6BE;;;OAGG;IACH,sBAHW,MAAM,GACJ,IAAI,CAchB;IAED;;;;OAIG;IACH;;;QAFa,QAAQ,IAAI,EAAE,CAAC,CAU3B;IA0BD;;;;OAIG;IACH,sDAFa,QAAQ,MAAM,EAAE,CAAC,CA8B7B;IAkBD;;;OAGG;IACH,6CAFa,QAAQ,MAAM,CAAC,CAmB3B;IAED;;;OAGG;IACH,2CAHW,QAAM,MAAM,GACV,QAAQ,IAAI,EAAE,CAAC,CAM3B;IAED;;;;OAIG;IAEH,uBAHa,QAAQ,IAAI,CAAC,CAczB;IA2CD;;;;OAIG;IACH,2BAFa,QAAQ,IAAI,CAAC,CAKzB;IAED;;;;;OAKG;IACH,gCAFa,QAAQ,IAAI,CAAC,CAOzB;IA1PD;;;OAGG;IACH,eAFW,MAAM,EAwBhB;IArBC,UAAkB;IAClB,QAAc;IACd,kBAAkC;IAClC,mBAAoC;IACpC,iBAAgC;IAChB,cAA0B;IAIxB,gBAA8B;IAChD,mBAAkD;IAClD,iBAKiB;IAEjB,qBAAkE;IAClE,yBAAgD;IAqClD;;OAEG;IACH,oBAFa,QAAQ,MAAM,EAAE,CAAC,CAU7B;IAED;;;OAGG;IACH,qCAKC;IAqCD;;OAEG;IACH,4BAWC;IAsDD;;;OAGG;IACH,SAFa,QAAQ,IAAI,CAAC,CAkBzB;IAED;;;OAGG;IACH,UAFa,QAAQ,IAAI,CAAC,CAezB;IAyBD;;;OAGG;IACH,0BAFa,QAAQ,MAAM,CAAC,CAK3B;IAED;;;OAGG;IACH,yBAFa,QAAQ,MAAM,CAAC,CAK3B;IAED;;OAEG;IACH,qBAFa,MAAM,CAMlB;IAED;;;;;OAKG;IACH,iCAFa,YAAU,CAgBtB;IAED;;OAEG;IACH,2BAKC;IAED;;;;;OAKG;IACH,sDAFa,QAAQ,MAAM,CAAC,CAqB3B;IAED;;;;;OAKG;IACH,qCAFa,QAAQ,MAAM,CAAC,CAsC3B;IAED;;;;;OAKG;IACH,gDAFa,QAAQ,MAAM,CAAC,CAY3B;IAED;;;;;;OAMG;IACH,2DAFa,QAAQ,IAAI,CAAC,CAczB;IAED;;;OAGG;IACH,2CAHW,MAAM,GACJ,MAAM,CAelB;IAED;;;;OAIG;IACH,sBAJW,MAAM,OACN,MAAM,GACJ,QAAQ,IAAI,GAAC,IAAI,CAAC,CAiC9B;IAED;;;OAGG;IACH,qBAHW,MAAM,GACJ,QAAQ,MAAM,CAAC,CAiB3B;CACF"}
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../models/view.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,IAAI,MAAM,QAAQ,CAAC;AAe1B,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,OAAO,EACP,QAAQ,EACT,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAO,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+CAA+C,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAEpF;;;GAGG;AACH,cAAM,IAAI;IACR,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,YAAY,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,IAAI,CAAC,EAAE,GAAG,CAAC;IAEX;;;OAGG;gBACS,CAAC,EAAE,OAAO,GAAG,IAAI;IA8B7B;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS;IAc9C;;;;OAIG;WACU,IAAI,CACf,KAAK,CAAC,EAAE,KAAK,EACb,UAAU,GAAE,aAAiD,GAC5D,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAUvB;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAcnD;;;OAGG;IACH,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAKnC;IAED;;;;OAIG;WACU,sBAAsB,CACjC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAChC,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IA8BvB;;OAEG;IACH,IAAI,aAAa,IAAI,GAAG,CAWvB;IAED;;;OAGG;WACU,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAmB5E;;;OAGG;WACU,4BAA4B,CACvC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAC/B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAQvB;;;;OAIG;WAEU,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9C;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB5B;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB7B;;;;OAIG;WACU,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhD;;;;;OAKG;WACU,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtD;;;OAGG;IACG,cAAc,CAAC,GAAG,EAAE;QACxB,IAAI,EAAE,GAAG,CAAC;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;KACvB,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpB;;;OAGG;IACG,aAAa,CAAC,GAAG,EAAE;QACvB,KAAK,EAAE,GAAG,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;KACvB,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpB;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAM7B;;;;;OAKG;IACG,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IAiBxD;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAO1B;;;;;OAKG;IACG,oBAAoB,CACxB,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,EACvB,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,EACrB,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,GACpB,OAAO,CAAC,MAAM,CAAC;IAqBlB;;;;;OAKG;IACG,OAAO,CACX,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,QAAQ,GAClB,OAAO,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;IAgDxD;;;;;OAKG;IACG,OAAO,CACX,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,QAAQ,GAClB,OAAO,CAAC,GAAG,CAAC;IAoBf;;;;;;OAMG;IACG,QAAQ,CACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,GAAG,EACT,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,EACrB,SAAS,EAAE,QAAQ,GAClB,OAAO,CAAC,GAAG,CAAC;IAsBf;;;OAGG;IACH,+BAA+B,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG;IAepD;;;;OAIG;IACG,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAsCxE;;;OAGG;IACG,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsB1D,uBAAuB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,IAAI;CAcvD;AAYD,aAAK,WAAW,GAAG;IACjB,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC9B,CAAC;AAEF,kBAAU,IAAI,CAAC;IACb,KAAY,aAAa,GAAG,CAAC,IAAI,EAAE;QACjC,OAAO,EAAE,IAAI,CAAC;QACd,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;KAChC,KAAK,OAAO,CAAC;CACf;AAED,aAAK,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AAExC,SAAS,IAAI,CAAC"}
@@ -5,14 +5,37 @@
5
5
  * @module models/view
6
6
  * @subcategory models
7
7
  */
8
- const db = require("../db");
9
- const Form = require("../models/form");
10
- const { contract, is } = require("contractis");
11
- const { fieldlike, is_viewtemplate, is_tablely } = require("../contracts");
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
17
+ }) : function(o, v) {
18
+ o["default"] = v;
19
+ });
20
+ var __importStar = (this && this.__importStar) || function (mod) {
21
+ if (mod && mod.__esModule) return mod;
22
+ var result = {};
23
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
24
+ __setModuleDefault(result, mod);
25
+ return result;
26
+ };
27
+ var __importDefault = (this && this.__importDefault) || function (mod) {
28
+ return (mod && mod.__esModule) ? mod : { "default": mod };
29
+ };
30
+ const db_1 = __importDefault(require("../db"));
31
+ const form_1 = __importDefault(require("./form"));
12
32
  const { removeEmptyStrings, numberToBool, stringToJSON, InvalidConfiguration, satisfies, structuredClone, } = require("../utils");
13
33
  const { remove_from_menu } = require("./config");
14
- const { div } = require("@saltcorn/markup/tags");
15
- const { renderForm } = require("@saltcorn/markup");
34
+ const tags_1 = __importDefault(require("@saltcorn/markup/tags"));
35
+ const { div } = tags_1.default;
36
+ const markup_1 = __importDefault(require("@saltcorn/markup"));
37
+ const { renderForm } = markup_1.default;
38
+ const common_types_1 = require("@saltcorn/types/common_types");
16
39
  /**
17
40
  * View Class
18
41
  * @category saltcorn-data
@@ -36,8 +59,11 @@ class View {
36
59
  if (o.table_name)
37
60
  this.table_name = o.table_name;
38
61
  this.configuration = stringToJSON(o.configuration);
62
+ if (!o.min_role && !o.is_public) {
63
+ throw new InvalidConfiguration(`Unable to build view ${this.name}, neither 'min_role' or 'is_public' is given.`);
64
+ }
39
65
  this.min_role =
40
- !o.min_role && typeof o.is_public !== "undefined"
66
+ !o.min_role && typeWithDefinedMember(o, "is_public")
41
67
  ? o.is_public
42
68
  ? 10
43
69
  : 8
@@ -45,7 +71,8 @@ class View {
45
71
  const { getState } = require("../db/state");
46
72
  this.viewtemplateObj = getState().viewtemplates[this.viewtemplate];
47
73
  this.default_render_page = o.default_render_page;
48
- contract.class(this);
74
+ this.table = o.table;
75
+ this.slug = stringToJSON(o.slug);
49
76
  }
50
77
  /**
51
78
  * @param {object} where
@@ -72,14 +99,16 @@ class View {
72
99
  const { getState } = require("../db/state");
73
100
  return getState().views.map((t) => new View(t));
74
101
  }
75
- const views = await db.select("_sc_views", where, selectopts);
102
+ const views = await db_1.default.select("_sc_views", where, selectopts);
76
103
  return views.map((v) => new View(v));
77
104
  }
78
105
  /**
79
106
  * @returns {Promise<object[]>}
80
107
  */
81
108
  async get_state_fields() {
82
- if (this.viewtemplateObj && this.viewtemplateObj.get_state_fields) {
109
+ if (this.viewtemplateObj &&
110
+ this.viewtemplateObj.get_state_fields &&
111
+ this.table_id) {
83
112
  return await this.viewtemplateObj.get_state_fields(this.table_id, this.name, this.configuration);
84
113
  }
85
114
  else
@@ -102,11 +131,11 @@ class View {
102
131
  */
103
132
  static async find_table_views_where(table, pred) {
104
133
  var link_view_opts = [];
105
- const link_views = await View.find(table.id
134
+ const link_views = await View.find(typeWithDefinedMember(table, "id")
106
135
  ? {
107
136
  table_id: table.id,
108
137
  }
109
- : table.name
138
+ : typeWithDefinedMember(table, "name")
110
139
  ? { exttable_name: table.name }
111
140
  : typeof table === "string"
112
141
  ? { exttable_name: table }
@@ -174,8 +203,9 @@ class View {
174
203
  v.min_role = v.is_public ? 10 : 8;
175
204
  delete v.is_public;
176
205
  }
206
+ const { table, ...row } = v;
177
207
  // insert view defintion into _sc_views
178
- const id = await db.insert("_sc_views", v);
208
+ const id = await db_1.default.insert("_sc_views", row);
179
209
  // refresh views list cache
180
210
  await require("../db/state").getState().refresh_views();
181
211
  return new View({ id, ...v });
@@ -207,10 +237,13 @@ class View {
207
237
  * @returns {Promise<void>}
208
238
  */
209
239
  async delete() {
210
- if (this.viewtemplateObj && this.viewtemplateObj.on_delete)
240
+ if (this.viewtemplateObj &&
241
+ this.viewtemplateObj.on_delete &&
242
+ this.table_id &&
243
+ this.configuration)
211
244
  await this.viewtemplateObj.on_delete(this.table_id, this.name, this.configuration);
212
245
  // delete view from _sc_view
213
- await db.deleteWhere("_sc_views", { id: this.id });
246
+ await db_1.default.deleteWhere("_sc_views", { id: this.id });
214
247
  // remove view from menu
215
248
  await remove_from_menu({ name: this.name, type: "View" });
216
249
  // fresh view list cache
@@ -234,7 +267,7 @@ class View {
234
267
  */
235
268
  static async update(v, id) {
236
269
  // update view description
237
- await db.update("_sc_views", v, id);
270
+ await db_1.default.update("_sc_views", v, id);
238
271
  // fresh view list cache
239
272
  await require("../db/state").getState().refresh_views();
240
273
  }
@@ -243,7 +276,7 @@ class View {
243
276
  * @returns {Promise<object>}
244
277
  */
245
278
  async authorise_post(arg) {
246
- if (!this.viewtemplateObj.authorise_post)
279
+ if (!this.viewtemplateObj?.authorise_post)
247
280
  return false;
248
281
  return await this.viewtemplateObj.authorise_post(arg);
249
282
  }
@@ -252,7 +285,7 @@ class View {
252
285
  * @returns {Promise<object>}
253
286
  */
254
287
  async authorise_get(arg) {
255
- if (!this.viewtemplateObj.authorise_get)
288
+ if (!this.viewtemplateObj?.authorise_get)
256
289
  return false;
257
290
  return await this.viewtemplateObj.authorise_get(arg);
258
291
  }
@@ -272,8 +305,9 @@ class View {
272
305
  */
273
306
  async run(query, extraArgs) {
274
307
  this.check_viewtemplate();
308
+ const table_id = this.exttable_name || this.table_id;
275
309
  try {
276
- return await this.viewtemplateObj.run(this.exttable_name || this.table_id, this.name, this.configuration, removeEmptyStrings(query), extraArgs);
310
+ return await this.viewtemplateObj.run(table_id, this.name, this.configuration, removeEmptyStrings(query), extraArgs);
277
311
  }
278
312
  catch (error) {
279
313
  error.message = `In ${this.name} view (${this.viewtemplate} viewtemplate):\n${error.message}`;
@@ -319,17 +353,26 @@ class View {
319
353
  async runMany(query, extraArgs) {
320
354
  this.check_viewtemplate();
321
355
  try {
322
- if (this.viewtemplateObj.runMany)
356
+ if (this.viewtemplateObj?.runMany) {
357
+ if (!this.table_id) {
358
+ throw new InvalidConfiguration(`Unable to call runMany, ${this.viewtemplate} is missing 'table_id'.`);
359
+ }
323
360
  return await this.viewtemplateObj.runMany(this.table_id, this.name, this.configuration, query, extraArgs);
324
- if (this.viewtemplateObj.renderRows) {
325
- const Table = require("./table");
326
- const { stateFieldsToWhere } = require("../plugin-helper");
361
+ }
362
+ if (this.viewtemplateObj?.renderRows) {
363
+ const Table = (await Promise.resolve().then(() => __importStar(require("./table")))).default;
364
+ const { stateFieldsToWhere } = await Promise.resolve().then(() => __importStar(require("../plugin-helper")));
327
365
  const tbl = await Table.findOne({ id: this.table_id });
366
+ if (!tbl)
367
+ throw new Error(`Unable to find table with id ${this.table_id}`);
328
368
  const fields = await tbl.getFields();
329
369
  const qstate = await stateFieldsToWhere({ fields, state: query });
330
370
  const rows = await tbl.getRows(qstate);
331
371
  const rendered = await this.viewtemplateObj.renderRows(tbl, this.name, this.configuration, extraArgs, rows);
332
- return rendered.map((html, ix) => ({ html, row: rows[ix] }));
372
+ return rendered.map((html, ix) => ({
373
+ html,
374
+ row: rows[ix],
375
+ }));
333
376
  }
334
377
  }
335
378
  catch (error) {
@@ -346,6 +389,10 @@ class View {
346
389
  */
347
390
  async runPost(query, body, extraArgs) {
348
391
  this.check_viewtemplate();
392
+ if (!this.viewtemplateObj.runPost)
393
+ throw new InvalidConfiguration(`Unable to call runPost, ${this.viewtemplate} is missing 'runPost'.`);
394
+ if (!this.table_id)
395
+ throw new InvalidConfiguration(`Unable to call runPost, ${this.viewtemplate} is missing 'table_id'.`);
349
396
  return await this.viewtemplateObj.runPost(this.table_id, this.name, this.configuration, removeEmptyStrings(query), removeEmptyStrings(body), extraArgs);
350
397
  }
351
398
  /**
@@ -357,6 +404,10 @@ class View {
357
404
  */
358
405
  async runRoute(route, body, res, extraArgs) {
359
406
  this.check_viewtemplate();
407
+ if (!this.viewtemplateObj.routes)
408
+ throw new InvalidConfiguration(`Unable to call runRoute of view '${this.name}', ${this.viewtemplate} is missing 'routes'.`);
409
+ if (!this.table_id)
410
+ throw new InvalidConfiguration(`Unable to call runRoute, of view '${this.name}', this.table_id is not set.`);
360
411
  const result = await this.viewtemplateObj.routes[route](this.table_id, this.name, this.configuration, body, extraArgs);
361
412
  if (result && result.json)
362
413
  res.json(result.json);
@@ -399,13 +450,15 @@ class View {
399
450
  f.required = false;
400
451
  if (f.label === "Anywhere" && f.name === "_fts")
401
452
  f.label = req.__(f.label);
402
- if (f.type && f.type.name === "Bool")
453
+ if ((0, common_types_1.instanceOfType)(f.type) && f.type.name === "Bool")
403
454
  f.fieldview = "tristate";
404
- if (f.type && f.type.read && typeof query[f.name] !== "undefined") {
455
+ if ((0, common_types_1.instanceOfType)(f.type) &&
456
+ f.type.read &&
457
+ typeof query[f.name] !== "undefined") {
405
458
  query[f.name] = f.type.read(query[f.name]);
406
459
  }
407
460
  });
408
- const form = new Form({
461
+ const form = new form_1.default({
409
462
  methodGET: true,
410
463
  action: `/view/${encodeURIComponent(this.name)}`,
411
464
  fields,
@@ -426,6 +479,8 @@ class View {
426
479
  */
427
480
  async get_config_flow(req) {
428
481
  this.check_viewtemplate();
482
+ if (!this.id)
483
+ throw new InvalidConfiguration(`Unable to execute 'get_config_flow' of view '${this.name}', 'this.name' must be set.`);
429
484
  const configFlow = this.viewtemplateObj.configuration_workflow(req);
430
485
  configFlow.action = `/viewedit/config/${encodeURIComponent(this.name)}`;
431
486
  const oldOnDone = configFlow.onDone || ((c) => c);
@@ -439,59 +494,27 @@ class View {
439
494
  };
440
495
  return configFlow;
441
496
  }
497
+ rewrite_query_from_slug(query, params) {
498
+ let pix = 0;
499
+ if (this.slug && this.slug.steps && this.slug.steps.length > 0) {
500
+ for (const step of this.slug.steps) {
501
+ if (step.unique) {
502
+ query[step.field] = step.transform
503
+ ? { [step.transform]: params[pix] }
504
+ : params[pix];
505
+ return;
506
+ }
507
+ pix += 1;
508
+ }
509
+ }
510
+ }
511
+ }
512
+ function typeWithDefinedMember(object, member) {
513
+ return (typeof object === "object" &&
514
+ object &&
515
+ member in object &&
516
+ object[member] !== undefined &&
517
+ object[member] !== null);
442
518
  }
443
- View.contract = {
444
- variables: {
445
- name: is.str,
446
- id: is.maybe(is.posint),
447
- table_id: is.maybe(is.posint),
448
- viewtemplate: is.str,
449
- min_role: is.posint,
450
- viewtemplateObj: is.maybe(is_viewtemplate),
451
- default_render_page: is.maybe(is.str),
452
- },
453
- methods: {
454
- get_state_fields: is.fun([], is.promise(is.array(fieldlike))),
455
- get_state_form: is.fun([is.obj(), is.obj({ __: is.fun(is.str, is.str) })], is.promise(is.maybe(is.class("Form")))),
456
- get_config_flow: is.fun(is.obj({ __: is.fun(is.str, is.str) }), is.promise(is.class("Workflow"))),
457
- delete: is.fun([], is.promise(is.undefined)),
458
- menu_label: is.getter(is.maybe(is.str)),
459
- run: is.fun([is.obj(), is.obj({ req: is.defined, res: is.defined })], is.promise(is.any)),
460
- runPost: is.fun([is.obj(), is.obj(), is.obj({ req: is.defined, res: is.defined })], is.promise(is.any)),
461
- runRoute: is.fun([
462
- is.str,
463
- is.obj(),
464
- is.obj(),
465
- is.obj({ req: is.defined, res: is.defined }),
466
- ], is.promise(is.any)),
467
- runMany: is.fun([is.obj(), is.obj({ req: is.defined, res: is.defined })], is.promise(is.array(is.obj({ html: is.defined, row: is.obj() })))),
468
- combine_state_and_default_state: is.fun(is.obj(), is.obj()),
469
- },
470
- static_methods: {
471
- find: is.fun([is.maybe(is.obj()), is.maybe(is.obj())], is.promise(is.array(is.class("View")))),
472
- findOne: is.fun(is.obj(), is.maybe(is.class("View"))),
473
- create: is.fun(is.obj({
474
- name: is.str,
475
- table_id: is.maybe(is.posint),
476
- viewtemplate: is.str,
477
- }), is.promise(is.class("View"))),
478
- update: is.fun([is.obj(), is.posint], is.promise(is.undefined)),
479
- delete: is.fun(is.obj(), is.promise(is.undefined)),
480
- find_possible_links_to_table: is.fun(is.or(is.posint, is_tablely, is.str), is.promise(is.array(is.class("View")))),
481
- find_all_views_where: is.fun(is.fun(is.obj({
482
- viewrow: is.class("View"),
483
- viewtemplate: is.obj(),
484
- state_fields: is.array(fieldlike),
485
- }), is.bool), is.promise(is.array(is.class("View")))),
486
- find_table_views_where: is.fun([
487
- is.or(is.posint, is_tablely, is.str),
488
- is.fun(is.obj({
489
- viewrow: is.class("View"),
490
- viewtemplate: is.obj(),
491
- state_fields: is.array(fieldlike),
492
- }), is.bool),
493
- ], is.promise(is.array(is.class("View")))),
494
- },
495
- };
496
519
  module.exports = View;
497
520
  //# sourceMappingURL=view.js.map