@researchdatabox/redbox-core 0.0.1-beta.9474 → 0.0.1-beta.9700

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 (133) hide show
  1. package/dist/CoreController.d.ts.map +1 -1
  2. package/dist/CoreController.js +8 -4
  3. package/dist/api-routes/groups/translation.d.ts.map +1 -1
  4. package/dist/api-routes/groups/translation.js +5 -1
  5. package/dist/config/branding.config.d.ts +2 -1
  6. package/dist/config/branding.config.d.ts.map +1 -1
  7. package/dist/config/branding.config.js +5 -95
  8. package/dist/config/custom.config.d.ts +6 -0
  9. package/dist/config/custom.config.d.ts.map +1 -1
  10. package/dist/config/custom.config.js +10 -1
  11. package/dist/config/form.config.d.ts +4 -0
  12. package/dist/config/form.config.d.ts.map +1 -1
  13. package/dist/config/form.config.js +1 -1
  14. package/dist/config/http.config.d.ts +2 -1
  15. package/dist/config/http.config.d.ts.map +1 -1
  16. package/dist/config/http.config.js +96 -6
  17. package/dist/config/reusableContributorFormDefinitions.config.d.ts.map +1 -1
  18. package/dist/config/reusableContributorFormDefinitions.config.js +75 -20
  19. package/dist/config/routes.config.d.ts.map +1 -1
  20. package/dist/config/routes.config.js +9 -4
  21. package/dist/config/validators.config.d.ts +6 -4
  22. package/dist/config/validators.config.d.ts.map +1 -1
  23. package/dist/config/validators.config.js +5 -3
  24. package/dist/config/webpack.config.d.ts.map +1 -1
  25. package/dist/config/webpack.config.js +9 -9
  26. package/dist/controllers/BrandingAppController.js +2 -2
  27. package/dist/controllers/BrandingController.d.ts +8 -0
  28. package/dist/controllers/BrandingController.d.ts.map +1 -1
  29. package/dist/controllers/BrandingController.js +88 -28
  30. package/dist/controllers/DynamicAssetController.d.ts +0 -21
  31. package/dist/controllers/DynamicAssetController.d.ts.map +1 -1
  32. package/dist/controllers/DynamicAssetController.js +1 -42
  33. package/dist/controllers/FormVocabularyController.d.ts +2 -0
  34. package/dist/controllers/FormVocabularyController.d.ts.map +1 -1
  35. package/dist/controllers/FormVocabularyController.js +58 -1
  36. package/dist/controllers/RecordController.d.ts.map +1 -1
  37. package/dist/controllers/RecordController.js +23 -7
  38. package/dist/controllers/TranslationController.js +3 -3
  39. package/dist/controllers/webservice/AdminController.js +2 -2
  40. package/dist/controllers/webservice/BrandingController.js +2 -2
  41. package/dist/controllers/webservice/TranslationController.d.ts.map +1 -1
  42. package/dist/controllers/webservice/TranslationController.js +8 -8
  43. package/dist/controllers/webservice/UserManagementController.d.ts +1 -1
  44. package/dist/controllers/webservice/UserManagementController.d.ts.map +1 -1
  45. package/dist/controllers/webservice/UserManagementController.js +3 -3
  46. package/dist/hooks/webpack.d.ts.map +1 -1
  47. package/dist/hooks/webpack.js +17 -7
  48. package/dist/middleware/redboxSession.d.ts.map +1 -1
  49. package/dist/middleware/redboxSession.js +6 -2
  50. package/dist/model/BuildResponse.d.ts +4 -0
  51. package/dist/model/BuildResponse.d.ts.map +1 -1
  52. package/dist/sails.d.ts +2 -0
  53. package/dist/sails.d.ts.map +1 -1
  54. package/dist/services/BrandingService.d.ts.map +1 -1
  55. package/dist/services/BrandingService.js +4 -32
  56. package/dist/services/BrandingThemeCssService.d.ts +21 -0
  57. package/dist/services/BrandingThemeCssService.d.ts.map +1 -0
  58. package/dist/services/BrandingThemeCssService.js +113 -0
  59. package/dist/services/BrandingThemeTokens.d.ts +16 -0
  60. package/dist/services/BrandingThemeTokens.d.ts.map +1 -0
  61. package/dist/services/BrandingThemeTokens.js +82 -0
  62. package/dist/services/CacheService.d.ts.map +1 -1
  63. package/dist/services/CacheService.js +37 -29
  64. package/dist/services/DashboardConfigService.d.ts.map +1 -1
  65. package/dist/services/DashboardConfigService.js +8 -2
  66. package/dist/services/FormPayloadPrehydrateService.d.ts +35 -0
  67. package/dist/services/FormPayloadPrehydrateService.d.ts.map +1 -0
  68. package/dist/services/FormPayloadPrehydrateService.js +200 -0
  69. package/dist/services/FormRecordConsistencyService.d.ts +3 -3
  70. package/dist/services/FormRecordConsistencyService.d.ts.map +1 -1
  71. package/dist/services/FormRecordConsistencyService.js +18 -18
  72. package/dist/services/FormsService.js +5 -5
  73. package/dist/services/I18nEntriesService.d.ts +6 -4
  74. package/dist/services/I18nEntriesService.d.ts.map +1 -1
  75. package/dist/services/I18nEntriesService.js +83 -17
  76. package/dist/services/OniService.js +2 -2
  77. package/dist/services/RecordsService.js +3 -3
  78. package/dist/services/SassCompilerService.d.ts +4 -10
  79. package/dist/services/SassCompilerService.d.ts.map +1 -1
  80. package/dist/services/SassCompilerService.js +9 -173
  81. package/dist/services/StandardDatastreamService.d.ts +5 -0
  82. package/dist/services/StandardDatastreamService.d.ts.map +1 -1
  83. package/dist/services/StandardDatastreamService.js +51 -6
  84. package/dist/services/StorageManagerService.d.ts +1 -0
  85. package/dist/services/StorageManagerService.d.ts.map +1 -1
  86. package/dist/services/StorageManagerService.js +30 -12
  87. package/dist/services/TemplateService.d.ts +1 -17
  88. package/dist/services/TemplateService.d.ts.map +1 -1
  89. package/dist/services/TemplateService.js +5 -50
  90. package/dist/services/VocabularyService.d.ts +12 -0
  91. package/dist/services/VocabularyService.d.ts.map +1 -1
  92. package/dist/services/VocabularyService.js +201 -14
  93. package/dist/services/doi-v2/bindings.d.ts.map +1 -1
  94. package/dist/services/doi-v2/bindings.js +2 -8
  95. package/dist/services/figshare-v2/bindings.d.ts.map +1 -1
  96. package/dist/services/figshare-v2/bindings.js +2 -5
  97. package/dist/services/index.d.ts +6 -0
  98. package/dist/services/index.d.ts.map +1 -1
  99. package/dist/services/index.js +12 -2
  100. package/dist/visitor/attachment-fields.visitor.d.ts +17 -17
  101. package/dist/visitor/attachment-fields.visitor.d.ts.map +1 -1
  102. package/dist/visitor/attachment-fields.visitor.js +44 -34
  103. package/dist/visitor/client.visitor.d.ts +93 -92
  104. package/dist/visitor/client.visitor.d.ts.map +1 -1
  105. package/dist/visitor/client.visitor.js +169 -159
  106. package/dist/visitor/construct.visitor.d.ts +95 -95
  107. package/dist/visitor/construct.visitor.d.ts.map +1 -1
  108. package/dist/visitor/construct.visitor.js +169 -156
  109. package/dist/visitor/context-variables.visitor.d.ts +35 -35
  110. package/dist/visitor/context-variables.visitor.d.ts.map +1 -1
  111. package/dist/visitor/context-variables.visitor.js +85 -75
  112. package/dist/visitor/data-value.visitor.d.ts +95 -95
  113. package/dist/visitor/data-value.visitor.d.ts.map +1 -1
  114. package/dist/visitor/data-value.visitor.js +151 -151
  115. package/dist/visitor/json-type-def.visitor.d.ts +92 -92
  116. package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
  117. package/dist/visitor/json-type-def.visitor.js +152 -152
  118. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +96 -96
  119. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
  120. package/dist/visitor/migrate-config-v4-v5.visitor.js +195 -186
  121. package/dist/visitor/template.visitor.d.ts +96 -94
  122. package/dist/visitor/template.visitor.d.ts.map +1 -1
  123. package/dist/visitor/template.visitor.js +220 -159
  124. package/dist/visitor/validator.visitor.d.ts +92 -92
  125. package/dist/visitor/validator.visitor.d.ts.map +1 -1
  126. package/dist/visitor/validator.visitor.js +165 -152
  127. package/dist/visitor/visitor-helpers.js +9 -9
  128. package/dist/visitor/vocab-inline.visitor.d.ts +18 -18
  129. package/dist/visitor/vocab-inline.visitor.d.ts.map +1 -1
  130. package/dist/visitor/vocab-inline.visitor.js +67 -53
  131. package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
  132. package/dist/waterline-models/BrandingConfig.js +5 -4
  133. package/package.json +20 -17
@@ -35,204 +35,204 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
35
35
  * @param options.enabledValidationGroups The validation groups to enable.
36
36
  * @param options.validatorDefinitions The validation definitions to make available.
37
37
  */
38
- start(options) {
38
+ async start(options) {
39
39
  this.formPathHelper.reset();
40
40
  this.form = options.form;
41
41
  // use the first non-null, non-undefined value - empty array is a valid value
42
42
  this.enabledValidationGroups = options.enabledValidationGroups ?? this.form.enabledValidationGroups ?? ['all'];
43
43
  this.validatorDefinitionsMap = this.validatorSupport.createValidatorDefinitionMapping(options.validatorDefinitions || []);
44
44
  this.validationErrors = [];
45
- this.form.accept(this);
45
+ await this.form.accept(this);
46
46
  return this.validationErrors;
47
47
  }
48
48
  /* Form Config */
49
- visitFormConfig(item) {
50
- (item?.componentDefinitions ?? []).forEach((componentDefinition, index) => {
49
+ async visitFormConfig(item) {
50
+ for (const [index, componentDefinition] of (item?.componentDefinitions ?? []).entries()) {
51
51
  // Visit children
52
- this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForFormConfigComponentDefinition(componentDefinition, index));
53
- });
52
+ await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForFormConfigComponentDefinition(componentDefinition, index));
53
+ }
54
54
  // Run form-level validators using the full form data model.
55
55
  // There are various reasons a validator is at form level, e.g. they involve more than one field.
56
56
  const dataValueVisitor = new data_value_visitor_1.DataValueFormConfigVisitor(this.logger);
57
- const value = dataValueVisitor.start({ form: item });
57
+ const value = await dataValueVisitor.start({ form: item });
58
58
  const itemName = item?.name ?? "";
59
- this.validationErrors.push(...this.validateFormComponent(itemName, value, item?.validators));
59
+ this.validationErrors.push(...await this.validateFormComponent(itemName, value, item?.validators));
60
60
  }
61
61
  /* SimpleInput */
62
- visitSimpleInputFieldComponentDefinition(_item) {
62
+ async visitSimpleInputFieldComponentDefinition(_item) {
63
63
  }
64
- visitSimpleInputFieldModelDefinition(_item) {
64
+ async visitSimpleInputFieldModelDefinition(_item) {
65
65
  }
66
- visitSimpleInputFormComponentDefinition(item) {
67
- this.acceptFormComponentDefinition(item);
66
+ async visitSimpleInputFormComponentDefinition(item) {
67
+ await this.acceptFormComponentDefinition(item);
68
68
  }
69
69
  /* Content */
70
- visitContentFieldComponentDefinition(_item) {
70
+ async visitContentFieldComponentDefinition(_item) {
71
71
  }
72
- visitContentFormComponentDefinition(item) {
73
- this.acceptFormComponentDefinition(item);
72
+ async visitContentFormComponentDefinition(item) {
73
+ await this.acceptFormComponentDefinition(item);
74
74
  }
75
75
  /* Repeatable */
76
- visitRepeatableFieldComponentDefinition(_item) {
76
+ async visitRepeatableFieldComponentDefinition(_item) {
77
77
  }
78
- visitRepeatableFieldModelDefinition(_item) {
78
+ async visitRepeatableFieldModelDefinition(_item) {
79
79
  }
80
- visitRepeatableElementFieldLayoutDefinition(_item) {
80
+ async visitRepeatableElementFieldLayoutDefinition(_item) {
81
81
  }
82
- visitRepeatableFormComponentDefinition(item) {
83
- this.acceptFormComponentDefinition(item);
82
+ async visitRepeatableFormComponentDefinition(item) {
83
+ await this.acceptFormComponentDefinition(item);
84
84
  }
85
85
  /* Validation Summary */
86
- visitValidationSummaryFieldComponentDefinition(_item) {
86
+ async visitValidationSummaryFieldComponentDefinition(_item) {
87
87
  }
88
- visitValidationSummaryFormComponentDefinition(item) {
89
- this.acceptFormComponentDefinition(item);
88
+ async visitValidationSummaryFormComponentDefinition(item) {
89
+ await this.acceptFormComponentDefinition(item);
90
90
  }
91
- visitSuggestedValidationSummaryFieldComponentDefinition(_item) {
91
+ async visitSuggestedValidationSummaryFieldComponentDefinition(_item) {
92
92
  }
93
- visitSuggestedValidationSummaryFormComponentDefinition(item) {
94
- this.acceptFormComponentDefinition(item);
93
+ async visitSuggestedValidationSummaryFormComponentDefinition(item) {
94
+ await this.acceptFormComponentDefinition(item);
95
95
  }
96
- visitSaveStatusFieldComponentDefinition(_item) {
96
+ async visitSaveStatusFieldComponentDefinition(_item) {
97
97
  }
98
- visitSaveStatusFormComponentDefinition(item) {
99
- this.acceptFormComponentDefinition(item);
98
+ async visitSaveStatusFormComponentDefinition(item) {
99
+ await this.acceptFormComponentDefinition(item);
100
100
  }
101
101
  /* Group */
102
- visitGroupFieldComponentDefinition(item) {
103
- (item.config?.componentDefinitions ?? []).forEach((componentDefinition, index) => {
102
+ async visitGroupFieldComponentDefinition(item) {
103
+ for (const [index, componentDefinition] of (item.config?.componentDefinitions ?? []).entries()) {
104
104
  // Visit children
105
- this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForGroupFieldComponentDefinition(componentDefinition, index));
106
- });
105
+ await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForGroupFieldComponentDefinition(componentDefinition, index));
106
+ }
107
107
  }
108
- visitGroupFieldModelDefinition(_item) {
108
+ async visitGroupFieldModelDefinition(_item) {
109
109
  }
110
- visitGroupFormComponentDefinition(item) {
111
- this.acceptFormComponentDefinition(item);
110
+ async visitGroupFormComponentDefinition(item) {
111
+ await this.acceptFormComponentDefinition(item);
112
112
  }
113
113
  /* Tab */
114
- visitTabFieldComponentDefinition(item) {
115
- (item.config?.tabs ?? []).forEach((componentDefinition, index) => {
114
+ async visitTabFieldComponentDefinition(item) {
115
+ for (const [index, componentDefinition] of (item.config?.tabs ?? []).entries()) {
116
116
  // Visit children
117
- this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForTabFieldComponentDefinition(componentDefinition, index));
118
- });
117
+ await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForTabFieldComponentDefinition(componentDefinition, index));
118
+ }
119
119
  }
120
- visitTabFieldLayoutDefinition(_item) {
120
+ async visitTabFieldLayoutDefinition(_item) {
121
121
  }
122
- visitTabFormComponentDefinition(item) {
123
- this.acceptFormComponentDefinition(item);
122
+ async visitTabFormComponentDefinition(item) {
123
+ await this.acceptFormComponentDefinition(item);
124
124
  }
125
125
  /* Accordion */
126
- visitAccordionFieldComponentDefinition(item) {
127
- (item.config?.panels ?? []).forEach((componentDefinition, index) => {
128
- this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForAccordionFieldComponentDefinition(componentDefinition, index));
129
- });
126
+ async visitAccordionFieldComponentDefinition(item) {
127
+ for (const [index, componentDefinition] of (item.config?.panels ?? []).entries()) {
128
+ await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForAccordionFieldComponentDefinition(componentDefinition, index));
129
+ }
130
130
  }
131
- visitAccordionFieldLayoutDefinition(_item) {
131
+ async visitAccordionFieldLayoutDefinition(_item) {
132
132
  }
133
- visitAccordionFormComponentDefinition(item) {
134
- this.acceptFormComponentDefinition(item);
133
+ async visitAccordionFormComponentDefinition(item) {
134
+ await this.acceptFormComponentDefinition(item);
135
135
  }
136
- visitAccordionPanelFieldComponentDefinition(item) {
137
- (item.config?.componentDefinitions ?? []).forEach((componentDefinition, index) => {
138
- this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForAccordionPanelFieldComponentDefinition(componentDefinition, index));
139
- });
136
+ async visitAccordionPanelFieldComponentDefinition(item) {
137
+ for (const [index, componentDefinition] of (item.config?.componentDefinitions ?? []).entries()) {
138
+ await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForAccordionPanelFieldComponentDefinition(componentDefinition, index));
139
+ }
140
140
  }
141
- visitAccordionPanelFieldLayoutDefinition(_item) {
141
+ async visitAccordionPanelFieldLayoutDefinition(_item) {
142
142
  }
143
- visitAccordionPanelFormComponentDefinition(item) {
144
- this.acceptFormComponentDefinition(item);
143
+ async visitAccordionPanelFormComponentDefinition(item) {
144
+ await this.acceptFormComponentDefinition(item);
145
145
  }
146
146
  /* Tab Content */
147
- visitTabContentFieldComponentDefinition(item) {
148
- (item.config?.componentDefinitions ?? []).forEach((componentDefinition, index) => {
147
+ async visitTabContentFieldComponentDefinition(item) {
148
+ for (const [index, componentDefinition] of (item.config?.componentDefinitions ?? []).entries()) {
149
149
  // Visit children
150
- this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForTabContentFieldComponentDefinition(componentDefinition, index));
151
- });
150
+ await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForTabContentFieldComponentDefinition(componentDefinition, index));
151
+ }
152
152
  }
153
- visitTabContentFieldLayoutDefinition(_item) {
153
+ async visitTabContentFieldLayoutDefinition(_item) {
154
154
  }
155
- visitTabContentFormComponentDefinition(item) {
156
- this.acceptFormComponentDefinition(item);
155
+ async visitTabContentFormComponentDefinition(item) {
156
+ await this.acceptFormComponentDefinition(item);
157
157
  }
158
158
  /* Save Button */
159
- visitSaveButtonFieldComponentDefinition(_item) {
159
+ async visitSaveButtonFieldComponentDefinition(_item) {
160
160
  }
161
- visitSaveButtonFormComponentDefinition(item) {
162
- this.acceptFormComponentDefinition(item);
161
+ async visitSaveButtonFormComponentDefinition(item) {
162
+ await this.acceptFormComponentDefinition(item);
163
163
  }
164
164
  /* Cancel Button */
165
- visitCancelButtonFieldComponentDefinition(_item) {
165
+ async visitCancelButtonFieldComponentDefinition(_item) {
166
166
  }
167
- visitCancelButtonFormComponentDefinition(item) {
168
- this.acceptFormComponentDefinition(item);
167
+ async visitCancelButtonFormComponentDefinition(item) {
168
+ await this.acceptFormComponentDefinition(item);
169
169
  }
170
- visitDeleteButtonFieldComponentDefinition(_item) {
170
+ async visitDeleteButtonFieldComponentDefinition(_item) {
171
171
  }
172
- visitDeleteButtonFormComponentDefinition(item) {
173
- this.acceptFormComponentDefinition(item);
172
+ async visitDeleteButtonFormComponentDefinition(item) {
173
+ await this.acceptFormComponentDefinition(item);
174
174
  }
175
175
  /* Tab Nav Button */
176
- visitTabNavButtonFieldComponentDefinition(_item) {
176
+ async visitTabNavButtonFieldComponentDefinition(_item) {
177
177
  }
178
- visitTabNavButtonFormComponentDefinition(item) {
179
- this.acceptFormComponentDefinition(item);
178
+ async visitTabNavButtonFormComponentDefinition(item) {
179
+ await this.acceptFormComponentDefinition(item);
180
180
  }
181
181
  /* Text Area */
182
- visitTextAreaFieldComponentDefinition(_item) {
182
+ async visitTextAreaFieldComponentDefinition(_item) {
183
183
  }
184
- visitTextAreaFieldModelDefinition(_item) {
184
+ async visitTextAreaFieldModelDefinition(_item) {
185
185
  }
186
- visitTextAreaFormComponentDefinition(item) {
187
- this.acceptFormComponentDefinition(item);
186
+ async visitTextAreaFormComponentDefinition(item) {
187
+ await this.acceptFormComponentDefinition(item);
188
188
  }
189
189
  /* Default Layout */
190
- visitDefaultFieldLayoutDefinition(_item) {
190
+ async visitDefaultFieldLayoutDefinition(_item) {
191
191
  }
192
192
  /* Checkbox Input */
193
- visitCheckboxInputFieldComponentDefinition(_item) {
193
+ async visitCheckboxInputFieldComponentDefinition(_item) {
194
194
  }
195
- visitCheckboxInputFieldModelDefinition(_item) {
195
+ async visitCheckboxInputFieldModelDefinition(_item) {
196
196
  }
197
- visitCheckboxInputFormComponentDefinition(item) {
198
- this.acceptFormComponentDefinition(item);
197
+ async visitCheckboxInputFormComponentDefinition(item) {
198
+ await this.acceptFormComponentDefinition(item);
199
199
  }
200
200
  /* Question Tree */
201
- visitQuestionTreeFieldComponentDefinition(item) {
202
- (item.config?.componentDefinitions ?? []).forEach((componentDefinition, index) => {
203
- this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForQuestionTreeFieldComponentDefinition(componentDefinition, index));
204
- });
201
+ async visitQuestionTreeFieldComponentDefinition(item) {
202
+ for (const [index, componentDefinition] of (item.config?.componentDefinitions ?? []).entries()) {
203
+ await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForQuestionTreeFieldComponentDefinition(componentDefinition, index));
204
+ }
205
205
  }
206
- visitQuestionTreeFieldModelDefinition(_item) {
206
+ async visitQuestionTreeFieldModelDefinition(_item) {
207
207
  }
208
- visitQuestionTreeFormComponentDefinition(item) {
209
- this.acceptFormComponentDefinition(item);
208
+ async visitQuestionTreeFormComponentDefinition(item) {
209
+ await this.acceptFormComponentDefinition(item);
210
210
  }
211
211
  /* Checkbox Tree */
212
- visitCheckboxTreeFieldComponentDefinition(_item) {
212
+ async visitCheckboxTreeFieldComponentDefinition(_item) {
213
213
  }
214
- visitCheckboxTreeFieldModelDefinition(_item) {
214
+ async visitCheckboxTreeFieldModelDefinition(_item) {
215
215
  }
216
- visitCheckboxTreeFormComponentDefinition(item) {
217
- this.acceptFormComponentDefinition(item);
216
+ async visitCheckboxTreeFormComponentDefinition(item) {
217
+ await this.acceptFormComponentDefinition(item);
218
218
  }
219
- visitRecordSelectorFieldComponentDefinition(_item) {
219
+ async visitRecordSelectorFieldComponentDefinition(_item) {
220
220
  }
221
- visitRecordSelectorFieldModelDefinition(_item) {
221
+ async visitRecordSelectorFieldModelDefinition(_item) {
222
222
  }
223
- visitRecordSelectorFormComponentDefinition(item) {
224
- this.acceptFormComponentDefinition(item);
223
+ async visitRecordSelectorFormComponentDefinition(item) {
224
+ await this.acceptFormComponentDefinition(item);
225
225
  }
226
226
  /* Dropdown Input */
227
- visitDropdownInputFieldComponentDefinition(_item) {
227
+ async visitDropdownInputFieldComponentDefinition(_item) {
228
228
  }
229
- visitDropdownInputFieldModelDefinition(_item) {
229
+ async visitDropdownInputFieldModelDefinition(_item) {
230
230
  }
231
- visitDropdownInputFormComponentDefinition(item) {
232
- this.acceptFormComponentDefinition(item);
231
+ async visitDropdownInputFormComponentDefinition(item) {
232
+ await this.acceptFormComponentDefinition(item);
233
233
  }
234
234
  /* Typeahead Input */
235
- visitTypeaheadInputFieldComponentDefinition(item) {
235
+ async visitTypeaheadInputFieldComponentDefinition(item) {
236
236
  const configErrors = [];
237
237
  const config = item.config;
238
238
  const sourceType = String(config?.sourceType ?? "");
@@ -295,15 +295,15 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
295
295
  });
296
296
  }
297
297
  }
298
- visitTypeaheadInputFieldModelDefinition(_item) {
298
+ async visitTypeaheadInputFieldModelDefinition(_item) {
299
299
  }
300
- visitTypeaheadInputFormComponentDefinition(item) {
301
- this.acceptFormComponentDefinition(item);
300
+ async visitTypeaheadInputFormComponentDefinition(item) {
301
+ await this.acceptFormComponentDefinition(item);
302
302
  }
303
303
  /* Rich Text Editor */
304
- visitRichTextEditorFieldComponentDefinition(_item) {
304
+ async visitRichTextEditorFieldComponentDefinition(_item) {
305
305
  }
306
- visitRichTextEditorFieldModelDefinition(item) {
306
+ async visitRichTextEditorFieldModelDefinition(item) {
307
307
  const value = item?.config?.value;
308
308
  if (typeof value !== 'string' || !value) {
309
309
  return;
@@ -348,11 +348,11 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
348
348
  });
349
349
  }
350
350
  }
351
- visitRichTextEditorFormComponentDefinition(item) {
352
- this.acceptFormComponentDefinition(item);
351
+ async visitRichTextEditorFormComponentDefinition(item) {
352
+ await this.acceptFormComponentDefinition(item);
353
353
  }
354
354
  /* Map */
355
- visitMapFieldComponentDefinition(item) {
355
+ async visitMapFieldComponentDefinition(item) {
356
356
  const configErrors = [];
357
357
  const enabledModes = Array.isArray(item.config?.enabledModes) ? item.config?.enabledModes : [];
358
358
  const validModes = ['point', 'polygon', 'linestring', 'rectangle', 'select'];
@@ -373,68 +373,68 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
373
373
  });
374
374
  }
375
375
  }
376
- visitMapFieldModelDefinition(_item) {
376
+ async visitMapFieldModelDefinition(_item) {
377
377
  }
378
- visitMapFormComponentDefinition(item) {
379
- this.acceptFormComponentDefinition(item);
378
+ async visitMapFormComponentDefinition(item) {
379
+ await this.acceptFormComponentDefinition(item);
380
380
  }
381
381
  /* File Upload */
382
- visitFileUploadFieldComponentDefinition(_item) {
382
+ async visitFileUploadFieldComponentDefinition(_item) {
383
383
  }
384
- visitFileUploadFieldModelDefinition(_item) {
384
+ async visitFileUploadFieldModelDefinition(_item) {
385
385
  }
386
- visitFileUploadFormComponentDefinition(item) {
387
- this.acceptFormComponentDefinition(item);
386
+ async visitFileUploadFormComponentDefinition(item) {
387
+ await this.acceptFormComponentDefinition(item);
388
388
  }
389
- visitPDFListFieldComponentDefinition(_item) {
389
+ async visitPDFListFieldComponentDefinition(_item) {
390
390
  }
391
- visitPDFListFieldModelDefinition(_item) {
391
+ async visitPDFListFieldModelDefinition(_item) {
392
392
  }
393
- visitPDFListFormComponentDefinition(item) {
394
- this.acceptFormComponentDefinition(item);
393
+ async visitPDFListFormComponentDefinition(item) {
394
+ await this.acceptFormComponentDefinition(item);
395
395
  }
396
- visitRecordMetadataRetrieverFieldComponentDefinition(_item) {
396
+ async visitRecordMetadataRetrieverFieldComponentDefinition(_item) {
397
397
  }
398
- visitRecordMetadataRetrieverFormComponentDefinition(item) {
399
- this.acceptFormComponentDefinition(item);
398
+ async visitRecordMetadataRetrieverFormComponentDefinition(item) {
399
+ await this.acceptFormComponentDefinition(item);
400
400
  }
401
401
  /* Data Location */
402
- visitDataLocationFieldComponentDefinition(_item) {
402
+ async visitDataLocationFieldComponentDefinition(_item) {
403
403
  }
404
- visitDataLocationFieldModelDefinition(_item) {
404
+ async visitDataLocationFieldModelDefinition(_item) {
405
405
  }
406
- visitDataLocationFormComponentDefinition(item) {
407
- this.acceptFormComponentDefinition(item);
406
+ async visitDataLocationFormComponentDefinition(item) {
407
+ await this.acceptFormComponentDefinition(item);
408
408
  }
409
409
  // Validation is intentionally empty because there is no persisted refresh
410
410
  // value to validate.
411
- visitPublishDataLocationRefreshFieldComponentDefinition(_item) {
411
+ async visitPublishDataLocationRefreshFieldComponentDefinition(_item) {
412
412
  }
413
- visitPublishDataLocationRefreshFormComponentDefinition(item) {
414
- this.acceptFormComponentDefinition(item);
413
+ async visitPublishDataLocationRefreshFormComponentDefinition(item) {
414
+ await this.acceptFormComponentDefinition(item);
415
415
  }
416
- visitPublishDataLocationSelectorFieldComponentDefinition(_item) {
416
+ async visitPublishDataLocationSelectorFieldComponentDefinition(_item) {
417
417
  }
418
- visitPublishDataLocationSelectorFieldModelDefinition(_item) {
418
+ async visitPublishDataLocationSelectorFieldModelDefinition(_item) {
419
419
  }
420
- visitPublishDataLocationSelectorFormComponentDefinition(item) {
421
- this.acceptFormComponentDefinition(item);
420
+ async visitPublishDataLocationSelectorFormComponentDefinition(item) {
421
+ await this.acceptFormComponentDefinition(item);
422
422
  }
423
423
  /* Radio Input */
424
- visitRadioInputFieldComponentDefinition(_item) {
424
+ async visitRadioInputFieldComponentDefinition(_item) {
425
425
  }
426
- visitRadioInputFieldModelDefinition(_item) {
426
+ async visitRadioInputFieldModelDefinition(_item) {
427
427
  }
428
- visitRadioInputFormComponentDefinition(item) {
429
- this.acceptFormComponentDefinition(item);
428
+ async visitRadioInputFormComponentDefinition(item) {
429
+ await this.acceptFormComponentDefinition(item);
430
430
  }
431
431
  /* Date Input */
432
- visitDateInputFieldComponentDefinition(_item) {
432
+ async visitDateInputFieldComponentDefinition(_item) {
433
433
  }
434
- visitDateInputFieldModelDefinition(_item) {
434
+ async visitDateInputFieldModelDefinition(_item) {
435
435
  }
436
- visitDateInputFormComponentDefinition(item) {
437
- this.acceptFormComponentDefinition(item);
436
+ async visitDateInputFormComponentDefinition(item) {
437
+ await this.acceptFormComponentDefinition(item);
438
438
  }
439
439
  /* Shared */
440
440
  createFormControlFromRecordValue(recordValue) {
@@ -452,16 +452,21 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
452
452
  }
453
453
  return result;
454
454
  }
455
- acceptFormComponentDefinition(item) {
456
- const validationErrors = this.validateFormComponent(item?.name, item?.model?.config?.value, item?.model?.config?.validators, item?.layout?.config?.label);
455
+ async acceptFormComponentDefinition(item) {
456
+ const validationErrors = await this.validateFormComponent(item?.name, item?.model?.config?.value, item?.model?.config?.validators, item?.layout?.config?.label);
457
457
  this.validationErrors.push(...validationErrors);
458
- this.formPathHelper.acceptFormComponentDefinition(item);
458
+ await this.formPathHelper.acceptFormComponentDefinition(item);
459
459
  }
460
- validateFormComponent(itemName, value, validators, message) {
460
+ async validateFormComponent(itemName, value, validators, message) {
461
461
  const createFormValidatorFns = this.validatorSupport.createFormValidatorInstancesFromMapping;
462
462
  const availableValidatorGroups = this.form?.validationGroups ?? {};
463
463
  const result = [];
464
464
  if (Array.isArray(validators) && validators.length > 0) {
465
+ // ensure jsonata-expression validators can be evaluated
466
+ this.validatorSupport.assignJsonataEvaluators(validators, function (validator, index) {
467
+ const expr = validator?.config?.['expression']?.toString() ?? "";
468
+ return (0, sails_ng_common_1.jsonataEvaluateFunc)(expr);
469
+ });
465
470
  const filteredValidators = this.validatorSupport.enabledValidators(availableValidatorGroups, this.enabledValidationGroups, validators);
466
471
  const formValidatorFns = createFormValidatorFns(this.validatorDefinitionsMap, filteredValidators);
467
472
  const recordFormControl = this.createFormControlFromRecordValue(value);
@@ -471,11 +476,19 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
471
476
  errors: [],
472
477
  lineagePaths: (0, sails_ng_common_1.buildLineagePaths)(this.formPathHelper.formPath)
473
478
  };
474
- for (const formValidatorFn of formValidatorFns) {
479
+ // async
480
+ for (const formValidatorFn of formValidatorFns.asyncDefs) {
481
+ const funcResult = await formValidatorFn(recordFormControl);
482
+ const compErrors = this.validatorSupport.getFormValidatorComponentErrors(funcResult);
483
+ summaryErrors.errors.push(...compErrors);
484
+ }
485
+ // sync
486
+ for (const formValidatorFn of formValidatorFns.syncDefs) {
475
487
  const funcResult = formValidatorFn(recordFormControl);
476
488
  const compErrors = this.validatorSupport.getFormValidatorComponentErrors(funcResult);
477
489
  summaryErrors.errors.push(...compErrors);
478
490
  }
491
+ // add the summary only if there are errors
479
492
  if (summaryErrors.errors.length > 0) {
480
493
  result.push(summaryErrors);
481
494
  }
@@ -490,4 +503,4 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
490
503
  }
491
504
  }
492
505
  exports.ValidatorFormConfigVisitor = ValidatorFormConfigVisitor;
493
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLnZpc2l0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmlzaXRvci92YWxpZGF0b3IudmlzaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzRUF3RzBDO0FBRTFDLDZEQUFrRTtBQWlCbEU7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFhLDBCQUEyQixTQUFRLG1DQUFpQjtJQUNyRCxnQkFBZ0IsQ0FBb0I7SUFFcEMsSUFBSSxDQUFvQjtJQUN4Qix1QkFBdUIsQ0FBVztJQUNsQyx1QkFBdUIsQ0FBdUM7SUFFOUQsZ0JBQWdCLENBQStCO0lBRS9DLGNBQWMsQ0FBaUI7SUFFdkMsWUFBWSxNQUFlO1FBQ3ZCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVkLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLG1DQUFpQixFQUFFLENBQUM7UUFFaEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLDRCQUFVLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztRQUUxRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBRTNCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxnQ0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLE9BSUw7UUFFRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTVCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUV6Qiw2RUFBNkU7UUFDN0UsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixJQUFJLENBQUMsS0FBSyxDQUFDLENB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
506
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLnZpc2l0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmlzaXRvci92YWxpZGF0b3IudmlzaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzRUF5RzBDO0FBQzFDLDZEQUFrRTtBQWlCbEU7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFhLDBCQUEyQixTQUFRLG1DQUFpQjtJQUNyRCxnQkFBZ0IsQ0FBb0I7SUFFcEMsSUFBSSxDQUFvQjtJQUN4Qix1QkFBdUIsQ0FBVztJQUNsQyx1QkFBdUIsQ0FBdUM7SUFFOUQsZ0JBQWdCLENBQStCO0lBRS9DLGNBQWMsQ0FBaUI7SUFFdkMsWUFBWSxNQUFlO1FBQ3ZCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVkLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLG1DQUFpQixFQUFFLENBQUM7UUFFaEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLDRCQUFVLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztRQUUxRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBRTNCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxnQ0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUlYO1FBRUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUU1QixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFFekIsNkVBQTZFO1FBQzdFLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxPQUFPLENBQUMsdUJBQXVCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsSUFBSSxDQUFDLEtB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