@researchdatabox/sails-ng-common 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 (108) hide show
  1. package/dist/src/config/component/accordion.model.d.ts +6 -6
  2. package/dist/src/config/component/accordion.model.js +13 -13
  3. package/dist/src/config/component/action-row-layout.model.d.ts +1 -1
  4. package/dist/src/config/component/action-row-layout.model.js +3 -3
  5. package/dist/src/config/component/cancel-button.model.d.ts +2 -2
  6. package/dist/src/config/component/cancel-button.model.js +5 -5
  7. package/dist/src/config/component/checkbox-input.model.d.ts +3 -3
  8. package/dist/src/config/component/checkbox-input.model.js +7 -7
  9. package/dist/src/config/component/checkbox-tree.model.d.ts +3 -3
  10. package/dist/src/config/component/checkbox-tree.model.js +7 -7
  11. package/dist/src/config/component/content.model.d.ts +2 -2
  12. package/dist/src/config/component/content.model.js +5 -5
  13. package/dist/src/config/component/data-location.model.d.ts +3 -3
  14. package/dist/src/config/component/data-location.model.js +7 -7
  15. package/dist/src/config/component/date-input.model.d.ts +3 -3
  16. package/dist/src/config/component/date-input.model.js +7 -7
  17. package/dist/src/config/component/default-layout.model.d.ts +1 -1
  18. package/dist/src/config/component/default-layout.model.js +3 -3
  19. package/dist/src/config/component/delete-button.model.d.ts +2 -2
  20. package/dist/src/config/component/delete-button.model.js +5 -5
  21. package/dist/src/config/component/dropdown-input.model.d.ts +3 -3
  22. package/dist/src/config/component/dropdown-input.model.js +7 -7
  23. package/dist/src/config/component/file-upload.model.d.ts +3 -3
  24. package/dist/src/config/component/file-upload.model.js +7 -7
  25. package/dist/src/config/component/group.model.d.ts +3 -3
  26. package/dist/src/config/component/group.model.js +7 -7
  27. package/dist/src/config/component/inline-layout.model.d.ts +1 -1
  28. package/dist/src/config/component/inline-layout.model.js +3 -3
  29. package/dist/src/config/component/map.model.d.ts +3 -3
  30. package/dist/src/config/component/map.model.js +7 -7
  31. package/dist/src/config/component/pdf-list.model.d.ts +3 -3
  32. package/dist/src/config/component/pdf-list.model.js +7 -7
  33. package/dist/src/config/component/publish-data-location-refresh.model.d.ts +3 -2
  34. package/dist/src/config/component/publish-data-location-refresh.model.js +6 -5
  35. package/dist/src/config/component/publish-data-location-refresh.outline.d.ts +5 -0
  36. package/dist/src/config/component/publish-data-location-selector.model.d.ts +9 -5
  37. package/dist/src/config/component/publish-data-location-selector.model.js +13 -9
  38. package/dist/src/config/component/publish-data-location-selector.outline.d.ts +8 -3
  39. package/dist/src/config/component/publish-data-location-selector.outline.js +1 -1
  40. package/dist/src/config/component/question-tree.model.d.ts +3 -3
  41. package/dist/src/config/component/question-tree.model.js +7 -7
  42. package/dist/src/config/component/radio-input.model.d.ts +3 -3
  43. package/dist/src/config/component/radio-input.model.js +7 -7
  44. package/dist/src/config/component/record-metadata-retriever.model.d.ts +2 -2
  45. package/dist/src/config/component/record-metadata-retriever.model.js +5 -5
  46. package/dist/src/config/component/record-selector.model.d.ts +3 -3
  47. package/dist/src/config/component/record-selector.model.js +7 -7
  48. package/dist/src/config/component/repeatable.model.d.ts +4 -4
  49. package/dist/src/config/component/repeatable.model.js +9 -9
  50. package/dist/src/config/component/reusable.model.d.ts +2 -2
  51. package/dist/src/config/component/reusable.model.js +5 -5
  52. package/dist/src/config/component/rich-text-editor.model.d.ts +3 -3
  53. package/dist/src/config/component/rich-text-editor.model.js +7 -7
  54. package/dist/src/config/component/save-button.model.d.ts +6 -2
  55. package/dist/src/config/component/save-button.model.js +9 -5
  56. package/dist/src/config/component/save-button.outline.d.ts +17 -0
  57. package/dist/src/config/component/save-status.model.d.ts +2 -2
  58. package/dist/src/config/component/save-status.model.js +5 -5
  59. package/dist/src/config/component/simple-input.model.d.ts +3 -3
  60. package/dist/src/config/component/simple-input.model.js +7 -7
  61. package/dist/src/config/component/suggested-validation-summary.model.d.ts +2 -2
  62. package/dist/src/config/component/suggested-validation-summary.model.js +5 -5
  63. package/dist/src/config/component/tab-content.model.d.ts +3 -3
  64. package/dist/src/config/component/tab-content.model.js +7 -7
  65. package/dist/src/config/component/tab-nav-button.model.d.ts +2 -2
  66. package/dist/src/config/component/tab-nav-button.model.js +5 -5
  67. package/dist/src/config/component/tab.model.d.ts +3 -3
  68. package/dist/src/config/component/tab.model.js +7 -7
  69. package/dist/src/config/component/text-area.model.d.ts +3 -3
  70. package/dist/src/config/component/text-area.model.js +7 -7
  71. package/dist/src/config/component/typeahead-input.model.d.ts +3 -3
  72. package/dist/src/config/component/typeahead-input.model.js +7 -7
  73. package/dist/src/config/component/validation-summary.model.d.ts +2 -2
  74. package/dist/src/config/component/validation-summary.model.js +5 -5
  75. package/dist/src/config/field.model.d.ts +1 -1
  76. package/dist/src/config/form-component.model.d.ts +1 -1
  77. package/dist/src/config/form-component.model.js +1 -1
  78. package/dist/src/config/form-config.model.d.ts +1 -1
  79. package/dist/src/config/form-config.model.js +3 -3
  80. package/dist/src/config/form-config.outline.d.ts +2 -4
  81. package/dist/src/config/form-override.model.js +1 -1
  82. package/dist/src/config/form-prehydrate.outline.d.ts +17 -0
  83. package/dist/src/config/form-prehydrate.outline.js +5 -0
  84. package/dist/src/config/form-types.model.js +2 -2
  85. package/dist/src/config/helpers.d.ts +8 -0
  86. package/dist/src/config/helpers.js +18 -1
  87. package/dist/src/config/names/naming-helpers.d.ts +41 -0
  88. package/dist/src/config/names/naming-helpers.js +122 -6
  89. package/dist/src/config/names/query-helpers.js +3 -8
  90. package/dist/src/config/visitor/base.model.d.ts +94 -94
  91. package/dist/src/config/visitor/base.model.js +188 -188
  92. package/dist/src/config/visitor/base.outline.d.ts +95 -95
  93. package/dist/src/config/visitor/common.model.d.ts +2 -2
  94. package/dist/src/config/visitor/common.model.js +8 -8
  95. package/dist/src/index.d.ts +2 -0
  96. package/dist/src/index.js +3 -1
  97. package/dist/src/jsonata-helpers.d.ts +25 -0
  98. package/dist/src/jsonata-helpers.js +46 -0
  99. package/dist/src/template.outline.js +3 -2
  100. package/dist/src/validation/form.model.d.ts +62 -7
  101. package/dist/src/validation/form.model.js +1 -1
  102. package/dist/src/validation/helpers.d.ts +3 -1
  103. package/dist/src/validation/helpers.js +29 -2
  104. package/dist/src/validation/validators-support.d.ts +9 -9
  105. package/dist/src/validation/validators-support.js +52 -28
  106. package/dist/src/validation/validators.d.ts +8 -10
  107. package/dist/src/validation/validators.js +94 -191
  108. package/package.json +2 -2
@@ -1,6 +1,7 @@
1
- import { LineagePath, LineagePaths } from "../config/names/naming-helpers";
1
+ import { LineagePath, LineagePaths, LineagePathsPartial } from "../config/names/naming-helpers";
2
2
  /**
3
3
  * The parameters for a validator error.
4
+ * The parameters are different for each validator.
4
5
  *
5
6
  * These can be used with the translation message id to create the translated text.
6
7
  *
@@ -19,13 +20,13 @@ export type FormValidatorErrorParams = {
19
20
  *
20
21
  * This is similar to FormValidatorComponentErrors, but with the class as the key in a parent object.
21
22
  *
22
- * This is similar to the angular form ValidationErrors type.
23
+ * This is similar to the angular form ValidationErrors type (type ValidationErrors = { [key: string]: any;}).
23
24
  */
24
25
  export type FormValidatorErrors = {
25
26
  [key: string]: {
26
27
  message: string;
27
28
  params: FormValidatorErrorParams;
28
- };
29
+ } & FormValidatorTargetField;
29
30
  };
30
31
  /**
31
32
  * The map of validator config.
@@ -35,7 +36,7 @@ export type FormValidatorCreateConfig = {
35
36
  class?: string;
36
37
  message?: string;
37
38
  [key: string]: unknown;
38
- };
39
+ } & FormValidatorTargetField;
39
40
  /**
40
41
  * The interface that a form control must implement to be validated by a validator function.
41
42
  * Some form controls are a collection of controls, these must provide a way to access the controls they contain.
@@ -77,6 +78,20 @@ export declare class SimpleServerFormValidatorControl implements FormValidatorCo
77
78
  export interface FormValidatorFn {
78
79
  (control: FormValidatorControl): FormValidatorErrors | null;
79
80
  }
81
+ /**
82
+ * The asynchronous validation function.
83
+ *
84
+ * Accepts an AbstractControl and returns a promise that resolves with either validation errors or no errors (null).
85
+ *
86
+ * This is similar to the angular form AsyncValidatorFn interface.
87
+ */
88
+ export interface FormAsyncValidatorFn {
89
+ (control: FormValidatorControl): Promise<FormValidatorErrors | null>;
90
+ }
91
+ export type FormValidatorFns = {
92
+ syncDefs: FormValidatorFn[];
93
+ asyncDefs: FormAsyncValidatorFn[];
94
+ };
80
95
  /**
81
96
  * The validation function creator.
82
97
  *
@@ -86,9 +101,17 @@ export interface FormValidatorFn {
86
101
  */
87
102
  export type FormValidatorCreateFn = (config: FormValidatorCreateConfig | null | undefined) => FormValidatorFn;
88
103
  /**
89
- * The definition of a validator for a form or a form control.
104
+ * The asynchronous validation function creator.
105
+ *
106
+ * Takes one config argument, which contains config for the specific validator.
107
+ *
108
+ * Returns a form async validator function.
109
+ */
110
+ export type FormAsyncValidatorCreateFn = (config: FormValidatorCreateConfig | null | undefined) => FormAsyncValidatorFn;
111
+ /**
112
+ * The definition of a validator for a form or a form control, with no create function.
90
113
  */
91
- export interface FormValidatorDefinition {
114
+ export interface FormBaseValidatorDefinition {
92
115
  /**
93
116
  * The unique name of the form validator.
94
117
  */
@@ -97,11 +120,29 @@ export interface FormValidatorDefinition {
97
120
  * The message id to display when the validator fails.
98
121
  */
99
122
  message: string;
123
+ }
124
+ /**
125
+ * The definition of a validator for a form or a form control.
126
+ */
127
+ export interface FormSyncValidatorDefinition extends FormBaseValidatorDefinition {
100
128
  /**
101
129
  * The validation function creator.
102
130
  */
103
131
  create: FormValidatorCreateFn;
104
132
  }
133
+ /**
134
+ * The definition of an async validator for a form or a form control.
135
+ */
136
+ export interface FormAsyncValidatorDefinition extends FormBaseValidatorDefinition {
137
+ /**
138
+ * The async validation function creator.
139
+ */
140
+ createAsync: FormAsyncValidatorCreateFn;
141
+ }
142
+ /**
143
+ * The definition of a validator for a form or a form control.
144
+ */
145
+ export type FormValidatorDefinition = FormSyncValidatorDefinition | FormAsyncValidatorDefinition;
105
146
  /**
106
147
  * The configuration block for a validator for a form or a form control.
107
148
  */
@@ -132,10 +173,24 @@ export interface FormValidatorConfig {
132
173
  */
133
174
  groups?: FormFieldValidationGroup;
134
175
  }
176
+ /**
177
+ * Allows specifying a field to 'own' any validation failures.
178
+ */
179
+ export interface FormValidatorTargetField {
180
+ /**
181
+ * Lineage paths to a target field that will 'own' any validation failures.
182
+ */
183
+ targetField?: LineagePathsPartial;
184
+ }
185
+ /**
186
+ * Form-level validator config that allows specifying a field to 'own' any validation failures.
187
+ */
188
+ export interface FormValidatorTargetFieldConfig extends FormValidatorConfig, FormValidatorTargetField {
189
+ }
135
190
  /**
136
191
  * One validator error.
137
192
  */
138
- export interface FormValidatorComponentErrors {
193
+ export interface FormValidatorComponentErrors extends FormValidatorTargetField {
139
194
  /**
140
195
  * The message id for the validator.
141
196
  */
@@ -28,4 +28,4 @@ exports.SimpleServerFormValidatorControl = SimpleServerFormValidatorControl;
28
28
  * - 'none': An empty array / no validators.
29
29
  */
30
30
  exports.formValidationGroupMembership = ["all", "none"];
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92YWxpZGF0aW9uL2Zvcm0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQXFDO0FBOERyQzs7OztHQUlHO0FBQ0gsTUFBYSxnQ0FBZ0M7SUFDekMsS0FBSyxDQUFVO0lBRWYsWUFBWSxLQUFjO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxHQUFHLENBQWlDLElBQU87UUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBQSxZQUFJLEVBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUM7UUFFOUMsaUJBQWlCO1FBQ2pCLHFLQUFxSztRQUVySyxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0NBQ0o7QUFmRCw0RUFlQztBQTJKRDs7Ozs7O0dBTUc7QUFDVSxRQUFBLDZCQUE2QixHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBVSxDQUFDIn0=
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92YWxpZGF0aW9uL2Zvcm0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQXFDO0FBa0VyQzs7OztHQUlHO0FBQ0gsTUFBYSxnQ0FBZ0M7SUFDekMsS0FBSyxDQUFVO0lBRWYsWUFBWSxLQUFjO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxHQUFHLENBQWlDLElBQU87UUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBQSxZQUFJLEVBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUM7UUFFOUMsaUJBQWlCO1FBQ2pCLHFLQUFxSztRQUVySyxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0NBQ0o7QUFmRCw0RUFlQztBQXNORDs7Ozs7O0dBTUc7QUFDVSxRQUFBLDZCQUE2QixHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBVSxDQUFDIn0=
@@ -1,4 +1,4 @@
1
- import { FormValidatorCreateConfig } from "./form.model";
1
+ import { FormValidatorCreateConfig, FormValidatorErrorParams, FormValidatorErrors } from "./form.model";
2
2
  /**
3
3
  * Extract the length property in case it's an array or a string.
4
4
  * Extract the size property in case it's a set.
@@ -12,3 +12,5 @@ export declare function formValidatorGetDefinitionNumber(config: FormValidatorCr
12
12
  export declare function formValidatorGetDefinitionBoolean(config: FormValidatorCreateConfig | null | undefined, key: string, defaultValue?: boolean | undefined): boolean;
13
13
  export declare function formValidatorGetDefinitionRegexp(config: FormValidatorCreateConfig | null | undefined, key: string, defaultValue?: RegExp | undefined): RegExp;
14
14
  export declare function formValidatorGetDefinitionArray(config: FormValidatorCreateConfig | null | undefined, key: string, defaultValue?: unknown[] | undefined): unknown[];
15
+ export declare function formValidatorGetDefinitionObject(config: FormValidatorCreateConfig | null | undefined, key: string, defaultValue?: Record<string, unknown> | undefined): Record<string, unknown>;
16
+ export declare function formValidatorBuildError(config: FormValidatorCreateConfig | null | undefined, params?: FormValidatorErrorParams): FormValidatorErrors;
@@ -7,6 +7,8 @@ exports.formValidatorGetDefinitionNumber = formValidatorGetDefinitionNumber;
7
7
  exports.formValidatorGetDefinitionBoolean = formValidatorGetDefinitionBoolean;
8
8
  exports.formValidatorGetDefinitionRegexp = formValidatorGetDefinitionRegexp;
9
9
  exports.formValidatorGetDefinitionArray = formValidatorGetDefinitionArray;
10
+ exports.formValidatorGetDefinitionObject = formValidatorGetDefinitionObject;
11
+ exports.formValidatorBuildError = formValidatorBuildError;
10
12
  const lodash_1 = require("lodash");
11
13
  const helpers_1 = require("../config/helpers");
12
14
  /**
@@ -42,7 +44,7 @@ function formValidatorGetDefinitionNumber(config, key, defaultValue = undefined)
42
44
  const value = formValidatorGetDefinitionItem(config, key, defaultValue);
43
45
  const valueString = value?.toString() ?? "";
44
46
  const valueNumber = parseFloat(valueString);
45
- if (isNaN(valueNumber)) {
47
+ if (!Number.isFinite(valueNumber)) {
46
48
  throw new Error(`Invalid numeric value '${value}' for key '${key}' in validator config.`);
47
49
  }
48
50
  return valueNumber;
@@ -65,4 +67,29 @@ function formValidatorGetDefinitionArray(config, key, defaultValue = undefined)
65
67
  }
66
68
  throw new Error(`Invalid array value '${value}' for key '${key}' in validator config.`);
67
69
  }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92YWxpZGF0aW9uL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFXQSw4REFVQztBQUVELHdFQVVDO0FBRUQsNEVBT0M7QUFFRCw0RUFZQztBQUVELDhFQU9DO0FBRUQsNEVBVUM7QUFFRCwwRUFVQztBQXpGRCxtQ0FBbUM7QUFFbkMsK0NBQTRDO0FBRzVDOzs7OztHQUtHO0FBQ0gsU0FBZ0IseUJBQXlCLENBQUMsS0FBeUQ7SUFDakcsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDN0QsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLENBQUM7U0FBTSxJQUFJLEtBQUssWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUNoQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELFNBQWdCLDhCQUE4QixDQUM1QyxNQUFvRCxFQUNwRCxHQUFXLEVBQ1gsZUFBd0IsU0FBUztJQUVqQyxNQUFNLEtBQUssR0FBRyxJQUFBLFlBQUksRUFBQyxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNwRCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixHQUFHLHdCQUF3QixDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQWdCLGdDQUFnQyxDQUM5QyxNQUFvRCxFQUNwRCxHQUFXLEVBQ1gsZUFBbUMsU0FBUztJQUU1QyxNQUFNLEtBQUssR0FBRyw4QkFBOEIsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3hFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUNqQyxDQUFDO0FBRUQsU0FBZ0IsZ0NBQWdDLENBQzlDLE1BQW9ELEVBQ3BELEdBQVcsRUFDWCxlQUFtQyxTQUFTO0lBRTVDLE1BQU0sS0FBSyxHQUFHLDhCQUE4QixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDeEUsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM1QyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDNUMsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixLQUFLLGNBQWMsR0FBRyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFDRCxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDO0FBRUQsU0FBZ0IsaUNBQWlDLENBQy9DLE1BQW9ELEVBQ3BELEdBQVcsRUFDWCxlQUFvQyxTQUFTO0lBRTdDLE1BQU0sS0FBSyxHQUFHLDhCQUE4QixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDeEUsT0FBTyxJQUFBLG1CQUFTLEVBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVELFNBQWdCLGdDQUFnQyxDQUM5QyxNQUFvRCxFQUNwRCxHQUFXLEVBQ1gsZUFBbUMsU0FBUztJQUU1QyxNQUFNLEtBQUssR0FBRyw4QkFBOEIsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3hFLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRSxDQUFDO1FBQzVCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRCxTQUFnQiwrQkFBK0IsQ0FDN0MsTUFBb0QsRUFDcEQsR0FBVyxFQUNYLGVBQXNDLFNBQVM7SUFFL0MsTUFBTSxLQUFLLEdBQUcsOEJBQThCLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN4RSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixLQUFLLGNBQWMsR0FBRyx3QkFBd0IsQ0FBQyxDQUFDO0FBQzFGLENBQUMifQ==
70
+ function formValidatorGetDefinitionObject(config, key, defaultValue = undefined) {
71
+ const value = formValidatorGetDefinitionItem(config, key, defaultValue);
72
+ if ((0, helpers_1.guessType)(value) === "object") {
73
+ return value;
74
+ }
75
+ throw new Error(`Invalid object value '${value}' for key '${key}' in validator config.`);
76
+ }
77
+ function formValidatorBuildError(config, params) {
78
+ const optionNameKey = "class";
79
+ const optionNameValue = formValidatorGetDefinitionString(config, optionNameKey);
80
+ const optionMessageKey = "message";
81
+ const optionMessageValue = formValidatorGetDefinitionString(config, optionMessageKey);
82
+ const optionTargetFieldKey = "targetField";
83
+ const optionTargetFieldValue = formValidatorGetDefinitionObject(config, optionTargetFieldKey, {});
84
+ const result = {
85
+ [optionNameValue]: {
86
+ [optionMessageKey]: optionMessageValue,
87
+ params: { ...params },
88
+ }
89
+ };
90
+ if (Object.keys(optionTargetFieldValue).length > 0) {
91
+ result[optionNameValue][optionTargetFieldKey] = optionTargetFieldValue;
92
+ }
93
+ return result;
94
+ }
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92YWxpZGF0aW9uL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFXQSw4REFVQztBQUVELHdFQVVDO0FBRUQsNEVBT0M7QUFFRCw0RUFZQztBQUVELDhFQU9DO0FBRUQsNEVBVUM7QUFFRCwwRUFVQztBQUVELDRFQVVDO0FBRUQsMERBb0JDO0FBM0hELG1DQUFtQztBQUVuQywrQ0FBdUQ7QUFHdkQ7Ozs7O0dBS0c7QUFDSCxTQUFnQix5QkFBeUIsQ0FBQyxLQUF5RDtJQUNqRyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM3RCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDdEIsQ0FBQztTQUFNLElBQUksS0FBSyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBZ0IsOEJBQThCLENBQzVDLE1BQW9ELEVBQ3BELEdBQVcsRUFDWCxlQUF3QixTQUFTO0lBRWpDLE1BQU0sS0FBSyxHQUFHLElBQUEsWUFBSSxFQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3BELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsd0JBQXdCLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBZ0IsZ0NBQWdDLENBQzlDLE1B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
@@ -1,4 +1,4 @@
1
- import { FormValidationGroups, FormValidatorComponentErrors, FormValidatorConfig, FormValidatorDefinition, FormValidatorErrors, FormValidatorFn } from "./form.model";
1
+ import { FormValidationGroups, FormValidatorComponentErrors, FormValidatorConfig, FormValidatorDefinition, FormValidatorErrors, FormValidatorFns, FormValidatorTargetFieldConfig } from "./form.model";
2
2
  export declare class ValidatorsSupport {
3
3
  /**
4
4
  * Create validator definition mapping from the validator definitions.
@@ -10,14 +10,7 @@ export declare class ValidatorsSupport {
10
10
  * @param defMap The validator definition mapping.
11
11
  * @param config The form validator config blocks.
12
12
  */
13
- createFormValidatorInstancesFromMapping(defMap: Map<string, FormValidatorDefinition>, config: FormValidatorConfig[] | null | undefined): FormValidatorFn[];
14
- /**
15
- * Create instances of the given form validators.
16
- *
17
- * @param definition The form validator definitions.
18
- * @param config The form validator config blocks.
19
- */
20
- createFormValidatorInstances(definition: FormValidatorDefinition[] | null | undefined, config: FormValidatorConfig[] | null | undefined): FormValidatorFn[];
13
+ createFormValidatorInstancesFromMapping(defMap: Map<string, FormValidatorDefinition>, config: (FormValidatorConfig | FormValidatorTargetFieldConfig)[] | null | undefined): FormValidatorFns;
21
14
  /**
22
15
  * Get the form validator errors for a component's control.
23
16
  * @param errors The control's errors.
@@ -31,6 +24,13 @@ export declare class ValidatorsSupport {
31
24
  * @param validator The validator config for a component's model.
32
25
  */
33
26
  isValidatorEnabled(availableGroups: FormValidationGroups, enabledGroupNames: string[], validator: FormValidatorConfig): boolean;
27
+ /**
28
+ * Assign the jsonata evaluator to each 'jsonata-expression' validator.
29
+ * This must be done before filtering the validators on the client, as the compiled templates are referenced by index.
30
+ * @param validators The validator configurations from the model config.
31
+ * @param callback The callback for each validator config with the index.
32
+ */
33
+ assignJsonataEvaluators(validators: FormValidatorConfig[], callback: (validator: FormValidatorConfig, index: number) => unknown): void;
34
34
  /**
35
35
  * Get the enabled validators.
36
36
  * @param availableGroups All available validation groups in this form.
@@ -30,7 +30,7 @@ class ValidatorsSupport {
30
30
  * @param config The form validator config blocks.
31
31
  */
32
32
  createFormValidatorInstancesFromMapping(defMap, config) {
33
- const result = [];
33
+ const result = { syncDefs: [], asyncDefs: [] };
34
34
  for (const validatorConfigItem of (config ?? [])) {
35
35
  const validatorClass = validatorConfigItem?.class;
36
36
  const def = defMap.get(validatorClass);
@@ -39,40 +39,44 @@ class ValidatorsSupport {
39
39
  + `the available validators are: '${Array.from(defMap.keys()).sort().join(", ")}'.`);
40
40
  }
41
41
  const message = validatorConfigItem?.message ?? def.message;
42
- const item = def.create({ class: validatorClass, message: message, ...(validatorConfigItem?.config ?? {}) });
43
- // for debugging:
44
- // const getter = function (path: string | LineagePath) {
45
- // return path as any
46
- // };
47
- // const examples = {
48
- // 'empty': item({value: null, get: getter}),
49
- // 'filled': item({value: "some-value", get: getter})
50
- // };
51
- // console.log(`createFormValidatorInstancesFromMapping validatorClass ${validatorClass} validatorConfigItem ${JSON.stringify(validatorConfigItem)} examples ${JSON.stringify(examples)}`);
52
- result.push(item);
42
+ const createConfig = {
43
+ ...validatorConfigItem?.config ?? {},
44
+ class: validatorClass,
45
+ message: message,
46
+ };
47
+ if ('targetField' in validatorConfigItem && validatorConfigItem.targetField !== undefined) {
48
+ createConfig.targetField = validatorConfigItem.targetField;
49
+ }
50
+ if ('create' in def) {
51
+ result.syncDefs.push(def.create(createConfig));
52
+ }
53
+ else if ('createAsync' in def) {
54
+ result.asyncDefs.push(def.createAsync(createConfig));
55
+ }
56
+ else {
57
+ throw new Error(`Invalid validator definition: must specify 'create' or 'createAsync' function. Definition is ${JSON.stringify(validatorConfigItem)}.`);
58
+ }
53
59
  }
54
60
  return result;
55
61
  }
56
- /**
57
- * Create instances of the given form validators.
58
- *
59
- * @param definition The form validator definitions.
60
- * @param config The form validator config blocks.
61
- */
62
- createFormValidatorInstances(definition, config) {
63
- const defMap = this.createValidatorDefinitionMapping(definition);
64
- return this.createFormValidatorInstancesFromMapping(defMap, config);
65
- }
66
62
  /**
67
63
  * Get the form validator errors for a component's control.
68
64
  * @param errors The control's errors.
69
65
  */
70
66
  getFormValidatorComponentErrors(errors) {
71
- return Object.entries(errors ?? {}).map(([key, item]) => ({
72
- class: key,
73
- message: item.message ?? null,
74
- params: { ...item.params },
75
- })) ?? [];
67
+ const result = [];
68
+ for (const [key, value] of Object.entries(errors ?? {})) {
69
+ const item = {
70
+ class: key,
71
+ message: value.message ?? null,
72
+ params: { ...value.params },
73
+ };
74
+ if (value.targetField !== undefined) {
75
+ item.targetField = value.targetField;
76
+ }
77
+ result.push(item);
78
+ }
79
+ return result;
76
80
  }
77
81
  checkValidationGroups(availableGroups, enabledGroupNames) {
78
82
  const availableGroupNames = Object.keys(availableGroups);
@@ -127,6 +131,26 @@ class ValidatorsSupport {
127
131
  // Validator was not included in any group, so it is disabled.
128
132
  return false;
129
133
  }
134
+ /**
135
+ * Assign the jsonata evaluator to each 'jsonata-expression' validator.
136
+ * This must be done before filtering the validators on the client, as the compiled templates are referenced by index.
137
+ * @param validators The validator configurations from the model config.
138
+ * @param callback The callback for each validator config with the index.
139
+ */
140
+ assignJsonataEvaluators(validators, callback) {
141
+ validators.forEach((validator, index) => {
142
+ if (validator.class === "jsonata-expression") {
143
+ if (!validator.config) {
144
+ validator.config = {};
145
+ }
146
+ const expr = validator?.config?.['expression']?.toString() ?? "";
147
+ const evaluator = validator.config?.['evaluator'];
148
+ if (validator.config && expr && !evaluator) {
149
+ validator.config['evaluator'] = callback(validator, index);
150
+ }
151
+ }
152
+ });
153
+ }
130
154
  /**
131
155
  * Get the enabled validators.
132
156
  * @param availableGroups All available validation groups in this form.
@@ -138,4 +162,4 @@ class ValidatorsSupport {
138
162
  }
139
163
  }
140
164
  exports.ValidatorsSupport = ValidatorsSupport;
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy1zdXBwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3ZhbGlkYXRpb24vdmFsaWRhdG9ycy1zdXBwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1BLGlFQUF5RTtBQUV6RSxNQUFhLGlCQUFpQjtJQUMxQjs7O09BR0c7SUFDSSxnQ0FBZ0MsQ0FDbkMsVUFBd0Q7UUFFeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQW1DLENBQUM7UUFDMUQsS0FBSyxNQUFNLGNBQWMsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxJQUFBLGdEQUE2QixFQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELE1BQU0sSUFBSSxLQUFLLENBQUMseUZBQXlGLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9JLENBQUM7WUFDRCxNQUFNLGNBQWMsR0FBRyxjQUFjLEVBQUUsS0FBSyxDQUFDO1lBQzdDLE1BQU0sT0FBTyxHQUFHLGNBQWMsRUFBRSxPQUFPLENBQUM7WUFDeEMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ2hFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLGNBQWMsNENBQTRDO3NCQUNsRywrRUFBK0UsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEgsQ0FBQztZQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7T0FJRztJ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
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy1zdXBwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3ZhbGlkYXRpb24vdmFsaWRhdG9ycy1zdXBwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1BLGlFQUEyRTtBQUczRSxNQUFhLGlCQUFpQjtJQUM1Qjs7O09BR0c7SUFDSSxnQ0FBZ0MsQ0FDckMsVUFBd0Q7UUFFeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQW1DLENBQUM7UUFDMUQsS0FBSyxNQUFNLGNBQWMsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxJQUFBLGdEQUE2QixFQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7Z0JBQ25ELE1BQU0sSUFBSSxLQUFLLENBQUMseUZBQXlGLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdJLENBQUM7WUFDRCxNQUFNLGNBQWMsR0FBRyxjQUFjLEVBQUUsS0FBSyxDQUFDO1lBQzdDLE1BQU0sT0FBTyxHQUFHLGNBQWMsRUFBRSxPQUFPLENBQUM7WUFDeEMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ2hFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLGNBQWMsNENBQTRDO3NCQUNwRywrRUFBK0UsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUcsQ0FBQztZQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJ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
@@ -6,18 +6,16 @@ import { FormValidatorDefinition } from "./form.model";
6
6
  */
7
7
  export declare const FORM_VALIDATOR_EMAIL_REGEXP: RegExp;
8
8
  /**
9
- * Definitions of shared form validators.
9
+ * Definitions of form validators.
10
10
  *
11
- * These can be used on both server-side and client-side. The server provides them to the client.
12
- * These are the shared / common definitions.
13
- * ReDBox implementations can modify these validation definitions or add more.
11
+ * These can be used on both server-side and client-side.
12
+ * The server provides them to the client.
14
13
  *
15
- * The validators are based on:
16
- * angular built-in validators: https://github.com/angular/angular/blob/5105fd6f05f01f04873ab1c87d64079fd8519ad4/packages/forms/src/validators.ts
17
- * formly schema: https://github.com/ngx-formly/ngx-formly/blob/a2f7901b6c0895aee63b4b5fe748fc5ec0ad5475/src/core/src/lib/models/fieldconfig.ts
14
+ * Sails hooks can use these validators functions, but cannot extend or override them.
15
+ * Use the 'jsonata-expression' validator to create custom validator functions.
18
16
  *
19
- * These validation definitions need to be on the server-side, and provided to the client-side from the server.
20
- * There are two sets of validator definitions - 1) shared / common definitions in the core; 2) definitions specific to a client.
21
- * These two set of definitions need to be merged and provided by the server to the client.
17
+ * The validators are based on:
18
+ * - angular built-in validators: https://github.com/angular/angular/blob/5105fd6f05f01f04873ab1c87d64079fd8519ad4/packages/forms/src/validators.ts
19
+ * - formly schema: https://github.com/ngx-formly/ngx-formly/blob/a2f7901b6c0895aee63b4b5fe748fc5ec0ad5475/src/core/src/lib/models/fieldconfig.ts
22
20
  */
23
21
  export declare const formValidatorsSharedDefinitions: FormValidatorDefinition[];