@researchdatabox/redbox-core 0.0.1-beta.9474 → 0.0.1-beta.9604
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CoreController.d.ts.map +1 -1
- package/dist/CoreController.js +8 -4
- package/dist/api-routes/groups/translation.d.ts.map +1 -1
- package/dist/api-routes/groups/translation.js +5 -1
- package/dist/config/branding.config.d.ts +2 -1
- package/dist/config/branding.config.d.ts.map +1 -1
- package/dist/config/branding.config.js +5 -95
- package/dist/config/form.config.d.ts +4 -0
- package/dist/config/form.config.d.ts.map +1 -1
- package/dist/config/form.config.js +1 -1
- package/dist/config/http.config.d.ts +1 -1
- package/dist/config/http.config.d.ts.map +1 -1
- package/dist/config/http.config.js +32 -4
- package/dist/config/routes.config.d.ts.map +1 -1
- package/dist/config/routes.config.js +5 -4
- package/dist/config/validators.config.d.ts +6 -4
- package/dist/config/validators.config.d.ts.map +1 -1
- package/dist/config/validators.config.js +5 -3
- package/dist/config/webpack.config.d.ts.map +1 -1
- package/dist/config/webpack.config.js +9 -9
- package/dist/controllers/BrandingAppController.js +2 -2
- package/dist/controllers/BrandingController.d.ts +8 -0
- package/dist/controllers/BrandingController.d.ts.map +1 -1
- package/dist/controllers/BrandingController.js +88 -28
- package/dist/controllers/DynamicAssetController.d.ts +0 -21
- package/dist/controllers/DynamicAssetController.d.ts.map +1 -1
- package/dist/controllers/DynamicAssetController.js +1 -42
- package/dist/controllers/FormVocabularyController.d.ts +2 -0
- package/dist/controllers/FormVocabularyController.d.ts.map +1 -1
- package/dist/controllers/FormVocabularyController.js +58 -1
- package/dist/controllers/RecordController.d.ts.map +1 -1
- package/dist/controllers/RecordController.js +23 -7
- package/dist/controllers/TranslationController.js +3 -3
- package/dist/controllers/webservice/AdminController.js +2 -2
- package/dist/controllers/webservice/BrandingController.js +2 -2
- package/dist/controllers/webservice/TranslationController.d.ts.map +1 -1
- package/dist/controllers/webservice/TranslationController.js +8 -8
- package/dist/controllers/webservice/UserManagementController.d.ts +1 -1
- package/dist/controllers/webservice/UserManagementController.d.ts.map +1 -1
- package/dist/controllers/webservice/UserManagementController.js +3 -3
- package/dist/hooks/webpack.d.ts.map +1 -1
- package/dist/hooks/webpack.js +17 -7
- package/dist/middleware/redboxSession.d.ts.map +1 -1
- package/dist/middleware/redboxSession.js +6 -2
- package/dist/model/BuildResponse.d.ts +4 -0
- package/dist/model/BuildResponse.d.ts.map +1 -1
- package/dist/sails.d.ts +2 -0
- package/dist/sails.d.ts.map +1 -1
- package/dist/services/BrandingService.d.ts.map +1 -1
- package/dist/services/BrandingService.js +4 -32
- package/dist/services/BrandingThemeCssService.d.ts +21 -0
- package/dist/services/BrandingThemeCssService.d.ts.map +1 -0
- package/dist/services/BrandingThemeCssService.js +113 -0
- package/dist/services/BrandingThemeTokens.d.ts +16 -0
- package/dist/services/BrandingThemeTokens.d.ts.map +1 -0
- package/dist/services/BrandingThemeTokens.js +82 -0
- package/dist/services/CacheService.d.ts.map +1 -1
- package/dist/services/CacheService.js +37 -29
- package/dist/services/FormPayloadPrehydrateService.d.ts +35 -0
- package/dist/services/FormPayloadPrehydrateService.d.ts.map +1 -0
- package/dist/services/FormPayloadPrehydrateService.js +200 -0
- package/dist/services/FormRecordConsistencyService.d.ts +3 -3
- package/dist/services/FormRecordConsistencyService.d.ts.map +1 -1
- package/dist/services/FormRecordConsistencyService.js +18 -18
- package/dist/services/FormsService.js +5 -5
- package/dist/services/I18nEntriesService.d.ts +6 -4
- package/dist/services/I18nEntriesService.d.ts.map +1 -1
- package/dist/services/I18nEntriesService.js +83 -17
- package/dist/services/OniService.js +2 -2
- package/dist/services/RecordsService.js +3 -3
- package/dist/services/SassCompilerService.d.ts +4 -10
- package/dist/services/SassCompilerService.d.ts.map +1 -1
- package/dist/services/SassCompilerService.js +9 -173
- package/dist/services/StandardDatastreamService.d.ts +5 -0
- package/dist/services/StandardDatastreamService.d.ts.map +1 -1
- package/dist/services/StandardDatastreamService.js +51 -6
- package/dist/services/StorageManagerService.d.ts +1 -0
- package/dist/services/StorageManagerService.d.ts.map +1 -1
- package/dist/services/StorageManagerService.js +30 -12
- package/dist/services/TemplateService.d.ts +1 -17
- package/dist/services/TemplateService.d.ts.map +1 -1
- package/dist/services/TemplateService.js +5 -50
- package/dist/services/VocabularyService.d.ts +12 -0
- package/dist/services/VocabularyService.d.ts.map +1 -1
- package/dist/services/VocabularyService.js +201 -14
- package/dist/services/doi-v2/bindings.d.ts.map +1 -1
- package/dist/services/doi-v2/bindings.js +2 -8
- package/dist/services/figshare-v2/bindings.d.ts.map +1 -1
- package/dist/services/figshare-v2/bindings.js +2 -5
- package/dist/services/index.d.ts +6 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +12 -2
- package/dist/visitor/attachment-fields.visitor.d.ts +17 -17
- package/dist/visitor/attachment-fields.visitor.d.ts.map +1 -1
- package/dist/visitor/attachment-fields.visitor.js +44 -34
- package/dist/visitor/client.visitor.d.ts +93 -92
- package/dist/visitor/client.visitor.d.ts.map +1 -1
- package/dist/visitor/client.visitor.js +159 -159
- package/dist/visitor/construct.visitor.d.ts +95 -95
- package/dist/visitor/construct.visitor.d.ts.map +1 -1
- package/dist/visitor/construct.visitor.js +154 -154
- package/dist/visitor/context-variables.visitor.d.ts +35 -35
- package/dist/visitor/context-variables.visitor.d.ts.map +1 -1
- package/dist/visitor/context-variables.visitor.js +85 -75
- package/dist/visitor/data-value.visitor.d.ts +95 -95
- package/dist/visitor/data-value.visitor.d.ts.map +1 -1
- package/dist/visitor/data-value.visitor.js +151 -151
- package/dist/visitor/json-type-def.visitor.d.ts +92 -92
- package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
- package/dist/visitor/json-type-def.visitor.js +152 -152
- package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +96 -96
- package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
- package/dist/visitor/migrate-config-v4-v5.visitor.js +187 -184
- package/dist/visitor/template.visitor.d.ts +96 -94
- package/dist/visitor/template.visitor.d.ts.map +1 -1
- package/dist/visitor/template.visitor.js +214 -159
- package/dist/visitor/validator.visitor.d.ts +92 -92
- package/dist/visitor/validator.visitor.d.ts.map +1 -1
- package/dist/visitor/validator.visitor.js +165 -152
- package/dist/visitor/visitor-helpers.js +9 -9
- package/dist/visitor/vocab-inline.visitor.d.ts +18 -18
- package/dist/visitor/vocab-inline.visitor.d.ts.map +1 -1
- package/dist/visitor/vocab-inline.visitor.js +67 -53
- package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
- package/dist/waterline-models/BrandingConfig.js +5 -4
- package/package.json +15 -12
|
@@ -24,29 +24,31 @@ class TemplateFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
24
24
|
* @param options Configure the visitor.
|
|
25
25
|
* @param options.form The constructed form.
|
|
26
26
|
*/
|
|
27
|
-
start(options) {
|
|
27
|
+
async start(options) {
|
|
28
28
|
this.formPathHelper.reset();
|
|
29
29
|
this.templates = [];
|
|
30
|
-
options.form.accept(this);
|
|
30
|
+
await options.form.accept(this);
|
|
31
31
|
return this.templates;
|
|
32
32
|
}
|
|
33
|
-
visitFormConfig(item) {
|
|
34
|
-
|
|
35
|
-
this.
|
|
36
|
-
this.
|
|
37
|
-
(item?.componentDefinitions ?? []).
|
|
33
|
+
async visitFormConfig(item) {
|
|
34
|
+
await this.extractExpressions(item.expressions);
|
|
35
|
+
await this.extractBehaviours(item.behaviours);
|
|
36
|
+
await this.extractValidators(item.validators);
|
|
37
|
+
for (const [index, componentDefinition] of (item?.componentDefinitions ?? []).entries()) {
|
|
38
38
|
// Visit children
|
|
39
|
-
this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForFormConfigComponentDefinition(componentDefinition, index));
|
|
40
|
-
}
|
|
39
|
+
await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForFormConfigComponentDefinition(componentDefinition, index));
|
|
40
|
+
}
|
|
41
41
|
}
|
|
42
42
|
/* SimpleInput */
|
|
43
|
-
visitSimpleInputFieldComponentDefinition(_item) { }
|
|
44
|
-
visitSimpleInputFieldModelDefinition(
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
async visitSimpleInputFieldComponentDefinition(_item) { }
|
|
44
|
+
async visitSimpleInputFieldModelDefinition(item) {
|
|
45
|
+
await this.extractValidators(item.config?.validators);
|
|
46
|
+
}
|
|
47
|
+
async visitSimpleInputFormComponentDefinition(item) {
|
|
48
|
+
await this.acceptFormComponentDefinition(item);
|
|
47
49
|
}
|
|
48
50
|
/* Content */
|
|
49
|
-
visitContentFieldComponentDefinition(item) {
|
|
51
|
+
async visitContentFieldComponentDefinition(item) {
|
|
50
52
|
const template = (item.config?.template ?? '').trim();
|
|
51
53
|
if (template) {
|
|
52
54
|
this.templates?.push({
|
|
@@ -56,97 +58,101 @@ class TemplateFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
56
58
|
});
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
|
-
visitContentFormComponentDefinition(item) {
|
|
60
|
-
this.acceptFormComponentDefinition(item);
|
|
61
|
+
async visitContentFormComponentDefinition(item) {
|
|
62
|
+
await this.acceptFormComponentDefinition(item);
|
|
61
63
|
}
|
|
62
64
|
/* Repeatable */
|
|
63
|
-
visitRepeatableFieldComponentDefinition(item) {
|
|
65
|
+
async visitRepeatableFieldComponentDefinition(item) {
|
|
64
66
|
const componentDefinition = item.config?.elementTemplate;
|
|
65
67
|
if (componentDefinition) {
|
|
66
|
-
this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForRepeatableFieldComponentDefinition(componentDefinition));
|
|
68
|
+
await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForRepeatableFieldComponentDefinition(componentDefinition));
|
|
67
69
|
}
|
|
68
70
|
}
|
|
69
|
-
visitRepeatableFieldModelDefinition(
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
async visitRepeatableFieldModelDefinition(item) {
|
|
72
|
+
await this.extractValidators(item.config?.validators);
|
|
73
|
+
}
|
|
74
|
+
async visitRepeatableElementFieldLayoutDefinition(_item) { }
|
|
75
|
+
async visitRepeatableFormComponentDefinition(item) {
|
|
76
|
+
await this.acceptFormComponentDefinition(item);
|
|
73
77
|
}
|
|
74
78
|
/* Validation Summary */
|
|
75
|
-
visitValidationSummaryFieldComponentDefinition(_item) { }
|
|
76
|
-
visitValidationSummaryFormComponentDefinition(item) {
|
|
77
|
-
this.acceptFormComponentDefinition(item);
|
|
79
|
+
async visitValidationSummaryFieldComponentDefinition(_item) { }
|
|
80
|
+
async visitValidationSummaryFormComponentDefinition(item) {
|
|
81
|
+
await this.acceptFormComponentDefinition(item);
|
|
78
82
|
}
|
|
79
|
-
visitSuggestedValidationSummaryFieldComponentDefinition(_item) { }
|
|
80
|
-
visitSuggestedValidationSummaryFormComponentDefinition(item) {
|
|
81
|
-
this.acceptFormComponentDefinition(item);
|
|
83
|
+
async visitSuggestedValidationSummaryFieldComponentDefinition(_item) { }
|
|
84
|
+
async visitSuggestedValidationSummaryFormComponentDefinition(item) {
|
|
85
|
+
await this.acceptFormComponentDefinition(item);
|
|
82
86
|
}
|
|
83
|
-
visitSaveStatusFieldComponentDefinition(_item) { }
|
|
84
|
-
visitSaveStatusFormComponentDefinition(item) {
|
|
85
|
-
this.acceptFormComponentDefinition(item);
|
|
87
|
+
async visitSaveStatusFieldComponentDefinition(_item) { }
|
|
88
|
+
async visitSaveStatusFormComponentDefinition(item) {
|
|
89
|
+
await this.acceptFormComponentDefinition(item);
|
|
86
90
|
}
|
|
87
91
|
/* Group */
|
|
88
|
-
visitGroupFieldComponentDefinition(item) {
|
|
89
|
-
(item.config?.componentDefinitions ?? []).
|
|
92
|
+
async visitGroupFieldComponentDefinition(item) {
|
|
93
|
+
for (const [index, componentDefinition] of (item.config?.componentDefinitions ?? []).entries()) {
|
|
90
94
|
// Visit children
|
|
91
|
-
this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForGroupFieldComponentDefinition(componentDefinition, index));
|
|
92
|
-
}
|
|
95
|
+
await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForGroupFieldComponentDefinition(componentDefinition, index));
|
|
96
|
+
}
|
|
93
97
|
}
|
|
94
|
-
visitGroupFieldModelDefinition(
|
|
95
|
-
|
|
96
|
-
|
|
98
|
+
async visitGroupFieldModelDefinition(item) {
|
|
99
|
+
await this.extractValidators(item.config?.validators);
|
|
100
|
+
}
|
|
101
|
+
async visitGroupFormComponentDefinition(item) {
|
|
102
|
+
await this.acceptFormComponentDefinition(item);
|
|
97
103
|
}
|
|
98
104
|
/* Tab */
|
|
99
|
-
visitTabFieldComponentDefinition(item) {
|
|
100
|
-
(item.config?.tabs ?? []).
|
|
105
|
+
async visitTabFieldComponentDefinition(item) {
|
|
106
|
+
for (const [index, componentDefinition] of (item.config?.tabs ?? []).entries()) {
|
|
101
107
|
// Visit children
|
|
102
|
-
this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForTabFieldComponentDefinition(componentDefinition, index));
|
|
103
|
-
}
|
|
108
|
+
await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForTabFieldComponentDefinition(componentDefinition, index));
|
|
109
|
+
}
|
|
104
110
|
}
|
|
105
|
-
visitTabFieldLayoutDefinition(_item) { }
|
|
106
|
-
visitTabFormComponentDefinition(item) {
|
|
107
|
-
this.acceptFormComponentDefinition(item);
|
|
111
|
+
async visitTabFieldLayoutDefinition(_item) { }
|
|
112
|
+
async visitTabFormComponentDefinition(item) {
|
|
113
|
+
await this.acceptFormComponentDefinition(item);
|
|
108
114
|
}
|
|
109
115
|
/* Accordion */
|
|
110
|
-
visitAccordionFieldComponentDefinition(item) {
|
|
111
|
-
(item.config?.panels ?? []).
|
|
112
|
-
this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForAccordionFieldComponentDefinition(componentDefinition, index));
|
|
113
|
-
}
|
|
116
|
+
async visitAccordionFieldComponentDefinition(item) {
|
|
117
|
+
for (const [index, componentDefinition] of (item.config?.panels ?? []).entries()) {
|
|
118
|
+
await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForAccordionFieldComponentDefinition(componentDefinition, index));
|
|
119
|
+
}
|
|
114
120
|
}
|
|
115
|
-
visitAccordionFieldLayoutDefinition(_item) { }
|
|
116
|
-
visitAccordionFormComponentDefinition(item) {
|
|
117
|
-
this.acceptFormComponentDefinition(item);
|
|
121
|
+
async visitAccordionFieldLayoutDefinition(_item) { }
|
|
122
|
+
async visitAccordionFormComponentDefinition(item) {
|
|
123
|
+
await this.acceptFormComponentDefinition(item);
|
|
118
124
|
}
|
|
119
|
-
visitAccordionPanelFieldComponentDefinition(item) {
|
|
120
|
-
(item.config?.componentDefinitions ?? []).
|
|
121
|
-
this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForAccordionPanelFieldComponentDefinition(componentDefinition, index));
|
|
122
|
-
}
|
|
125
|
+
async visitAccordionPanelFieldComponentDefinition(item) {
|
|
126
|
+
for (const [index, componentDefinition] of (item.config?.componentDefinitions ?? []).entries()) {
|
|
127
|
+
await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForAccordionPanelFieldComponentDefinition(componentDefinition, index));
|
|
128
|
+
}
|
|
123
129
|
}
|
|
124
|
-
visitAccordionPanelFieldLayoutDefinition(_item) { }
|
|
125
|
-
visitAccordionPanelFormComponentDefinition(item) {
|
|
126
|
-
this.acceptFormComponentDefinition(item);
|
|
130
|
+
async visitAccordionPanelFieldLayoutDefinition(_item) { }
|
|
131
|
+
async visitAccordionPanelFormComponentDefinition(item) {
|
|
132
|
+
await this.acceptFormComponentDefinition(item);
|
|
127
133
|
}
|
|
128
134
|
/* Tab Content */
|
|
129
|
-
visitTabContentFieldComponentDefinition(item) {
|
|
130
|
-
(item.config?.componentDefinitions ?? []).
|
|
135
|
+
async visitTabContentFieldComponentDefinition(item) {
|
|
136
|
+
for (const [index, componentDefinition] of (item.config?.componentDefinitions ?? []).entries()) {
|
|
131
137
|
// Visit children
|
|
132
|
-
this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForTabContentFieldComponentDefinition(componentDefinition, index));
|
|
133
|
-
}
|
|
138
|
+
await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForTabContentFieldComponentDefinition(componentDefinition, index));
|
|
139
|
+
}
|
|
134
140
|
}
|
|
135
|
-
visitTabContentFieldLayoutDefinition(_item) { }
|
|
136
|
-
visitTabContentFormComponentDefinition(item) {
|
|
137
|
-
this.acceptFormComponentDefinition(item);
|
|
141
|
+
async visitTabContentFieldLayoutDefinition(_item) { }
|
|
142
|
+
async visitTabContentFormComponentDefinition(item) {
|
|
143
|
+
await this.acceptFormComponentDefinition(item);
|
|
138
144
|
}
|
|
139
145
|
/* Save Button */
|
|
140
|
-
visitSaveButtonFieldComponentDefinition(_item) { }
|
|
141
|
-
visitSaveButtonFormComponentDefinition(item) {
|
|
142
|
-
this.acceptFormComponentDefinition(item);
|
|
146
|
+
async visitSaveButtonFieldComponentDefinition(_item) { }
|
|
147
|
+
async visitSaveButtonFormComponentDefinition(item) {
|
|
148
|
+
await this.acceptFormComponentDefinition(item);
|
|
143
149
|
}
|
|
144
150
|
/* Cancel Button */
|
|
145
|
-
visitCancelButtonFieldComponentDefinition(_item) { }
|
|
146
|
-
visitCancelButtonFormComponentDefinition(item) {
|
|
147
|
-
this.acceptFormComponentDefinition(item);
|
|
151
|
+
async visitCancelButtonFieldComponentDefinition(_item) { }
|
|
152
|
+
async visitCancelButtonFormComponentDefinition(item) {
|
|
153
|
+
await this.acceptFormComponentDefinition(item);
|
|
148
154
|
}
|
|
149
|
-
visitDeleteButtonFieldComponentDefinition(item) {
|
|
155
|
+
async visitDeleteButtonFieldComponentDefinition(item) {
|
|
150
156
|
const redirectLocation = (item.config?.redirectLocation ?? '').trim();
|
|
151
157
|
if (redirectLocation) {
|
|
152
158
|
this.templates?.push({
|
|
@@ -156,30 +162,34 @@ class TemplateFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
156
162
|
});
|
|
157
163
|
}
|
|
158
164
|
}
|
|
159
|
-
visitDeleteButtonFormComponentDefinition(item) {
|
|
160
|
-
this.acceptFormComponentDefinition(item);
|
|
165
|
+
async visitDeleteButtonFormComponentDefinition(item) {
|
|
166
|
+
await this.acceptFormComponentDefinition(item);
|
|
161
167
|
}
|
|
162
168
|
/* Tab Nav Button */
|
|
163
|
-
visitTabNavButtonFieldComponentDefinition(_item) { }
|
|
164
|
-
visitTabNavButtonFormComponentDefinition(item) {
|
|
165
|
-
this.acceptFormComponentDefinition(item);
|
|
169
|
+
async visitTabNavButtonFieldComponentDefinition(_item) { }
|
|
170
|
+
async visitTabNavButtonFormComponentDefinition(item) {
|
|
171
|
+
await this.acceptFormComponentDefinition(item);
|
|
166
172
|
}
|
|
167
173
|
/* Text Area */
|
|
168
|
-
visitTextAreaFieldComponentDefinition(_item) { }
|
|
169
|
-
visitTextAreaFieldModelDefinition(
|
|
170
|
-
|
|
171
|
-
|
|
174
|
+
async visitTextAreaFieldComponentDefinition(_item) { }
|
|
175
|
+
async visitTextAreaFieldModelDefinition(item) {
|
|
176
|
+
await this.extractValidators(item.config?.validators);
|
|
177
|
+
}
|
|
178
|
+
async visitTextAreaFormComponentDefinition(item) {
|
|
179
|
+
await this.acceptFormComponentDefinition(item);
|
|
172
180
|
}
|
|
173
181
|
/* Default Layout */
|
|
174
|
-
visitDefaultFieldLayoutDefinition(_item) { }
|
|
182
|
+
async visitDefaultFieldLayoutDefinition(_item) { }
|
|
175
183
|
/* Checkbox Input */
|
|
176
|
-
visitCheckboxInputFieldComponentDefinition(_item) { }
|
|
177
|
-
visitCheckboxInputFieldModelDefinition(
|
|
178
|
-
|
|
179
|
-
|
|
184
|
+
async visitCheckboxInputFieldComponentDefinition(_item) { }
|
|
185
|
+
async visitCheckboxInputFieldModelDefinition(item) {
|
|
186
|
+
await this.extractValidators(item.config?.validators);
|
|
187
|
+
}
|
|
188
|
+
async visitCheckboxInputFormComponentDefinition(item) {
|
|
189
|
+
await this.acceptFormComponentDefinition(item);
|
|
180
190
|
}
|
|
181
191
|
/* Checkbox Tree */
|
|
182
|
-
visitCheckboxTreeFieldComponentDefinition(item) {
|
|
192
|
+
async visitCheckboxTreeFieldComponentDefinition(item) {
|
|
183
193
|
const labelTemplate = (item.config?.labelTemplate ?? '').trim();
|
|
184
194
|
if (labelTemplate) {
|
|
185
195
|
this.templates?.push({
|
|
@@ -189,24 +199,30 @@ class TemplateFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
189
199
|
});
|
|
190
200
|
}
|
|
191
201
|
}
|
|
192
|
-
visitCheckboxTreeFieldModelDefinition(
|
|
193
|
-
|
|
194
|
-
|
|
202
|
+
async visitCheckboxTreeFieldModelDefinition(item) {
|
|
203
|
+
await this.extractValidators(item.config?.validators);
|
|
204
|
+
}
|
|
205
|
+
async visitCheckboxTreeFormComponentDefinition(item) {
|
|
206
|
+
await this.acceptFormComponentDefinition(item);
|
|
195
207
|
}
|
|
196
208
|
/* Record Selector */
|
|
197
|
-
visitRecordSelectorFieldComponentDefinition(_item) { }
|
|
198
|
-
visitRecordSelectorFieldModelDefinition(
|
|
199
|
-
|
|
200
|
-
|
|
209
|
+
async visitRecordSelectorFieldComponentDefinition(_item) { }
|
|
210
|
+
async visitRecordSelectorFieldModelDefinition(item) {
|
|
211
|
+
await this.extractValidators(item.config?.validators);
|
|
212
|
+
}
|
|
213
|
+
async visitRecordSelectorFormComponentDefinition(item) {
|
|
214
|
+
await this.acceptFormComponentDefinition(item);
|
|
201
215
|
}
|
|
202
216
|
/* Dropdown Input */
|
|
203
|
-
visitDropdownInputFieldComponentDefinition(_item) { }
|
|
204
|
-
visitDropdownInputFieldModelDefinition(
|
|
205
|
-
|
|
206
|
-
|
|
217
|
+
async visitDropdownInputFieldComponentDefinition(_item) { }
|
|
218
|
+
async visitDropdownInputFieldModelDefinition(item) {
|
|
219
|
+
await this.extractValidators(item.config?.validators);
|
|
220
|
+
}
|
|
221
|
+
async visitDropdownInputFormComponentDefinition(item) {
|
|
222
|
+
await this.acceptFormComponentDefinition(item);
|
|
207
223
|
}
|
|
208
224
|
/* Typeahead Input */
|
|
209
|
-
visitTypeaheadInputFieldComponentDefinition(item) {
|
|
225
|
+
async visitTypeaheadInputFieldComponentDefinition(item) {
|
|
210
226
|
const labelTemplate = (item.config?.labelTemplate ?? '').trim();
|
|
211
227
|
if (labelTemplate) {
|
|
212
228
|
this.templates?.push({
|
|
@@ -216,29 +232,37 @@ class TemplateFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
216
232
|
});
|
|
217
233
|
}
|
|
218
234
|
}
|
|
219
|
-
visitTypeaheadInputFieldModelDefinition(
|
|
220
|
-
|
|
221
|
-
|
|
235
|
+
async visitTypeaheadInputFieldModelDefinition(item) {
|
|
236
|
+
await this.extractValidators(item.config?.validators);
|
|
237
|
+
}
|
|
238
|
+
async visitTypeaheadInputFormComponentDefinition(item) {
|
|
239
|
+
await this.acceptFormComponentDefinition(item);
|
|
222
240
|
}
|
|
223
241
|
/* Rich Text Editor */
|
|
224
|
-
visitRichTextEditorFieldComponentDefinition(_item) { }
|
|
225
|
-
visitRichTextEditorFieldModelDefinition(
|
|
226
|
-
|
|
227
|
-
|
|
242
|
+
async visitRichTextEditorFieldComponentDefinition(_item) { }
|
|
243
|
+
async visitRichTextEditorFieldModelDefinition(item) {
|
|
244
|
+
await this.extractValidators(item.config?.validators);
|
|
245
|
+
}
|
|
246
|
+
async visitRichTextEditorFormComponentDefinition(item) {
|
|
247
|
+
await this.acceptFormComponentDefinition(item);
|
|
228
248
|
}
|
|
229
249
|
/* Map */
|
|
230
|
-
visitMapFieldComponentDefinition(_item) { }
|
|
231
|
-
visitMapFieldModelDefinition(
|
|
232
|
-
|
|
233
|
-
|
|
250
|
+
async visitMapFieldComponentDefinition(_item) { }
|
|
251
|
+
async visitMapFieldModelDefinition(item) {
|
|
252
|
+
await this.extractValidators(item.config?.validators);
|
|
253
|
+
}
|
|
254
|
+
async visitMapFormComponentDefinition(item) {
|
|
255
|
+
await this.acceptFormComponentDefinition(item);
|
|
234
256
|
}
|
|
235
257
|
/* File Upload */
|
|
236
|
-
visitFileUploadFieldComponentDefinition(_item) { }
|
|
237
|
-
visitFileUploadFieldModelDefinition(
|
|
238
|
-
|
|
239
|
-
|
|
258
|
+
async visitFileUploadFieldComponentDefinition(_item) { }
|
|
259
|
+
async visitFileUploadFieldModelDefinition(item) {
|
|
260
|
+
await this.extractValidators(item.config?.validators);
|
|
261
|
+
}
|
|
262
|
+
async visitFileUploadFormComponentDefinition(item) {
|
|
263
|
+
await this.acceptFormComponentDefinition(item);
|
|
240
264
|
}
|
|
241
|
-
visitPDFListFieldComponentDefinition(item) {
|
|
265
|
+
async visitPDFListFieldComponentDefinition(item) {
|
|
242
266
|
const fileNameTemplate = (item.config?.fileNameTemplate ?? '').trim();
|
|
243
267
|
if (fileNameTemplate) {
|
|
244
268
|
this.templates?.push({
|
|
@@ -248,59 +272,70 @@ class TemplateFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
248
272
|
});
|
|
249
273
|
}
|
|
250
274
|
}
|
|
251
|
-
visitPDFListFieldModelDefinition(
|
|
252
|
-
|
|
253
|
-
|
|
275
|
+
async visitPDFListFieldModelDefinition(item) {
|
|
276
|
+
await this.extractValidators(item.config?.validators);
|
|
277
|
+
}
|
|
278
|
+
async visitPDFListFormComponentDefinition(item) {
|
|
279
|
+
await this.acceptFormComponentDefinition(item);
|
|
254
280
|
}
|
|
255
|
-
visitRecordMetadataRetrieverFieldComponentDefinition(_item) { }
|
|
256
|
-
visitRecordMetadataRetrieverFormComponentDefinition(item) {
|
|
257
|
-
this.acceptFormComponentDefinition(item);
|
|
281
|
+
async visitRecordMetadataRetrieverFieldComponentDefinition(_item) { }
|
|
282
|
+
async visitRecordMetadataRetrieverFormComponentDefinition(item) {
|
|
283
|
+
await this.acceptFormComponentDefinition(item);
|
|
258
284
|
}
|
|
259
285
|
/* Data Location */
|
|
260
|
-
visitDataLocationFieldComponentDefinition(_item) { }
|
|
261
|
-
visitDataLocationFieldModelDefinition(
|
|
262
|
-
|
|
263
|
-
|
|
286
|
+
async visitDataLocationFieldComponentDefinition(_item) { }
|
|
287
|
+
async visitDataLocationFieldModelDefinition(item) {
|
|
288
|
+
await this.extractValidators(item.config?.validators);
|
|
289
|
+
}
|
|
290
|
+
async visitDataLocationFormComponentDefinition(item) {
|
|
291
|
+
await this.acceptFormComponentDefinition(item);
|
|
264
292
|
}
|
|
265
293
|
// The refresh trigger has no template-bearing fields of its own.
|
|
266
|
-
visitPublishDataLocationRefreshFieldComponentDefinition(_item) { }
|
|
267
|
-
visitPublishDataLocationRefreshFormComponentDefinition(item) {
|
|
268
|
-
this.acceptFormComponentDefinition(item);
|
|
294
|
+
async visitPublishDataLocationRefreshFieldComponentDefinition(_item) { }
|
|
295
|
+
async visitPublishDataLocationRefreshFormComponentDefinition(item) {
|
|
296
|
+
await this.acceptFormComponentDefinition(item);
|
|
297
|
+
}
|
|
298
|
+
async visitPublishDataLocationSelectorFieldComponentDefinition(_item) { }
|
|
299
|
+
async visitPublishDataLocationSelectorFieldModelDefinition(item) {
|
|
300
|
+
await this.extractValidators(item.config?.validators);
|
|
269
301
|
}
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
visitPublishDataLocationSelectorFormComponentDefinition(item) {
|
|
273
|
-
this.acceptFormComponentDefinition(item);
|
|
302
|
+
async visitPublishDataLocationSelectorFormComponentDefinition(item) {
|
|
303
|
+
await this.acceptFormComponentDefinition(item);
|
|
274
304
|
}
|
|
275
305
|
/* Radio Input */
|
|
276
|
-
visitRadioInputFieldComponentDefinition(_item) { }
|
|
277
|
-
visitRadioInputFieldModelDefinition(
|
|
278
|
-
|
|
279
|
-
|
|
306
|
+
async visitRadioInputFieldComponentDefinition(_item) { }
|
|
307
|
+
async visitRadioInputFieldModelDefinition(item) {
|
|
308
|
+
await this.extractValidators(item.config?.validators);
|
|
309
|
+
}
|
|
310
|
+
async visitRadioInputFormComponentDefinition(item) {
|
|
311
|
+
await this.acceptFormComponentDefinition(item);
|
|
280
312
|
}
|
|
281
313
|
/* Date Input */
|
|
282
|
-
visitDateInputFieldComponentDefinition(_item) { }
|
|
283
|
-
visitDateInputFieldModelDefinition(
|
|
284
|
-
|
|
285
|
-
|
|
314
|
+
async visitDateInputFieldComponentDefinition(_item) { }
|
|
315
|
+
async visitDateInputFieldModelDefinition(item) {
|
|
316
|
+
await this.extractValidators(item.config?.validators);
|
|
317
|
+
}
|
|
318
|
+
async visitDateInputFormComponentDefinition(item) {
|
|
319
|
+
await this.acceptFormComponentDefinition(item);
|
|
286
320
|
}
|
|
287
321
|
/* Question Tree */
|
|
288
|
-
visitQuestionTreeFieldComponentDefinition(item) {
|
|
289
|
-
(item.config?.componentDefinitions ?? []).
|
|
290
|
-
this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForQuestionTreeFieldComponentDefinition(componentDefinition, index));
|
|
291
|
-
}
|
|
322
|
+
async visitQuestionTreeFieldComponentDefinition(item) {
|
|
323
|
+
for (const [index, componentDefinition] of (item.config?.componentDefinitions ?? []).entries()) {
|
|
324
|
+
await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForQuestionTreeFieldComponentDefinition(componentDefinition, index));
|
|
325
|
+
}
|
|
292
326
|
}
|
|
293
|
-
visitQuestionTreeFieldModelDefinition(
|
|
294
|
-
|
|
295
|
-
|
|
327
|
+
async visitQuestionTreeFieldModelDefinition(item) {
|
|
328
|
+
await this.extractValidators(item.config?.validators);
|
|
329
|
+
}
|
|
330
|
+
async visitQuestionTreeFormComponentDefinition(item) {
|
|
331
|
+
await this.acceptFormComponentDefinition(item);
|
|
296
332
|
}
|
|
297
333
|
/* Shared */
|
|
298
|
-
acceptFormComponentDefinition(item) {
|
|
299
|
-
this.extractExpressions(item.expressions);
|
|
300
|
-
this.formPathHelper.acceptFormComponentDefinition(item);
|
|
334
|
+
async acceptFormComponentDefinition(item) {
|
|
335
|
+
await this.extractExpressions(item.expressions);
|
|
336
|
+
await this.formPathHelper.acceptFormComponentDefinition(item);
|
|
301
337
|
}
|
|
302
|
-
extractExpressions(expressions) {
|
|
303
|
-
const extracted = [];
|
|
338
|
+
async extractExpressions(expressions) {
|
|
304
339
|
(expressions ?? []).forEach((expression, index) => {
|
|
305
340
|
for (const prop of ['template', 'condition']) {
|
|
306
341
|
const config = expression.config;
|
|
@@ -316,13 +351,9 @@ class TemplateFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
316
351
|
value: value,
|
|
317
352
|
kind: 'jsonata',
|
|
318
353
|
});
|
|
319
|
-
extracted.push(`${index}-${expression.name}`);
|
|
320
354
|
}
|
|
321
355
|
}
|
|
322
356
|
});
|
|
323
|
-
if (extracted.length > 0) {
|
|
324
|
-
this.logger.debug(`${this.logName}: Extracted ${extracted.length} expressions ${extracted.join(', ')}.`);
|
|
325
|
-
}
|
|
326
357
|
}
|
|
327
358
|
/**
|
|
328
359
|
* Extract form-level behaviour templates for server-side compilation.
|
|
@@ -338,7 +369,7 @@ class TemplateFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
338
369
|
* - action templates cover `valueTemplate` and JSONata `fieldPath`
|
|
339
370
|
* - custom processors/actions are out of scope
|
|
340
371
|
*/
|
|
341
|
-
extractBehaviours(behaviours) {
|
|
372
|
+
async extractBehaviours(behaviours) {
|
|
342
373
|
(behaviours ?? []).forEach((behaviour, behaviourIndex) => {
|
|
343
374
|
const conditionKind = behaviour.conditionKind ?? 'jsonpointer';
|
|
344
375
|
if (behaviour.condition && conditionKind !== 'jsonpointer') {
|
|
@@ -396,6 +427,30 @@ class TemplateFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
396
427
|
});
|
|
397
428
|
});
|
|
398
429
|
}
|
|
430
|
+
async extractValidators(validators) {
|
|
431
|
+
(validators ?? []).forEach((validator, index) => {
|
|
432
|
+
if (validator.class === "jsonata-expression") {
|
|
433
|
+
const value = validator.config?.expression?.toString() ?? "";
|
|
434
|
+
if (value) {
|
|
435
|
+
const parentKey = this.normalizeValidatorTemplateParentKey(this.formPathHelper.formPath.formConfig ?? []);
|
|
436
|
+
const key = parentKey.length > 0
|
|
437
|
+
? [...parentKey, 'config', 'validators', index.toString(), 'config', 'expression']
|
|
438
|
+
: ['validators', index.toString(), 'config', 'expression'];
|
|
439
|
+
this.templates?.push({
|
|
440
|
+
key,
|
|
441
|
+
value: value,
|
|
442
|
+
kind: 'jsonata',
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
normalizeValidatorTemplateParentKey(path) {
|
|
449
|
+
if (path[0] === 'formConfig') {
|
|
450
|
+
return path.slice(1);
|
|
451
|
+
}
|
|
452
|
+
return path;
|
|
453
|
+
}
|
|
399
454
|
}
|
|
400
455
|
exports.TemplateFormConfigVisitor = TemplateFormConfigVisitor;
|
|
401
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUudmlzaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92aXNpdG9yL3RlbXBsYXRlLnZpc2l0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0VBQXFFO0FBMkpyRSxzRUFBa0U7QUFHbEU7Ozs7OztHQU1HO0FBQ0gsTUFBYSx5QkFBMEIsU0FBUSxtQ0FBaUI7SUFDM0MsT0FBTyxHQUFHLDJCQUEyQixDQUFDO0lBRWpELGNBQWMsQ0FBaUI7SUFFL0IsU0FBUyxDQUF5QjtJQUUxQyxZQUFZLE1BQWU7UUFDekIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGdDQUFjLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLE9BQW9DO1FBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFFcEIsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBdUI7UUFDckMsTUFBTSxVQUFVLEdBQUksSUFBd0UsQ0FBQyxVQUFVLENBQUM7UUFDeEcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDeEUsaUJBQWlCO1lBQ2pC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
|
|
456
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUudmlzaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92aXNpdG9yL3RlbXBsYXRlLnZpc2l0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0VBQTBGO0FBMkoxRixzRUFBa0U7QUFHbEU7Ozs7OztHQU1HO0FBQ0gsTUFBYSx5QkFBMEIsU0FBUSxtQ0FBaUI7SUFDM0MsT0FBTyxHQUFHLDJCQUEyQixDQUFDO0lBRWpELGNBQWMsQ0FBaUI7SUFFL0IsU0FBUyxDQUF5QjtJQUUxQyxZQUFZLE1BQWU7UUFDekIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGdDQUFjLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFvQztRQUM5QyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBRXBCLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLElBQXVCO1FBQzNDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRCxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxJQUFJ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
|