@rjsf/utils 5.24.10 → 6.0.0-beta.1
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/index.js +605 -330
- package/dist/index.js.map +4 -4
- package/dist/utils.esm.js +575 -300
- package/dist/utils.esm.js.map +4 -4
- package/dist/utils.umd.js +519 -268
- package/lib/ErrorSchemaBuilder.d.ts +7 -3
- package/lib/ErrorSchemaBuilder.js +1 -0
- package/lib/ErrorSchemaBuilder.js.map +1 -1
- package/lib/allowAdditionalItems.js.map +1 -1
- package/lib/asNumber.js.map +1 -1
- package/lib/canExpand.js +1 -1
- package/lib/canExpand.js.map +1 -1
- package/lib/constants.d.ts +11 -3
- package/lib/constants.js +11 -3
- package/lib/constants.js.map +1 -1
- package/lib/createErrorHandler.js.map +1 -1
- package/lib/createSchemaUtils.js +31 -27
- package/lib/createSchemaUtils.js.map +1 -1
- package/lib/dataURItoBlob.js.map +1 -1
- package/lib/dateRangeOptions.js.map +1 -1
- package/lib/deepEquals.js.map +1 -1
- package/lib/enumOptionsDeselectValue.js.map +1 -1
- package/lib/enumOptionsIndexForValue.js.map +1 -1
- package/lib/enumOptionsIsSelected.js.map +1 -1
- package/lib/enumOptionsSelectValue.js.map +1 -1
- package/lib/enumOptionsValueForIndex.js.map +1 -1
- package/lib/enums.d.ts +2 -0
- package/lib/enums.js +2 -0
- package/lib/enums.js.map +1 -1
- package/lib/findSchemaDefinition.js.map +1 -1
- package/lib/getChangedFields.js.map +1 -1
- package/lib/getDateElementProps.js.map +1 -1
- package/lib/getDiscriminatorFieldFromSchema.js +2 -1
- package/lib/getDiscriminatorFieldFromSchema.js.map +1 -1
- package/lib/getInputProps.js.map +1 -1
- package/lib/getOptionMatchingSimpleDiscriminator.js.map +1 -1
- package/lib/getSchemaType.d.ts +1 -0
- package/lib/getSchemaType.js +2 -1
- package/lib/getSchemaType.js.map +1 -1
- package/lib/getSubmitButtonOptions.js.map +1 -1
- package/lib/getTemplate.js +9 -0
- package/lib/getTemplate.js.map +1 -1
- package/lib/getTestIds.d.ts +17 -0
- package/lib/getTestIds.js +34 -0
- package/lib/getTestIds.js.map +1 -0
- package/lib/getUiOptions.js.map +1 -1
- package/lib/getWidget.js.map +1 -1
- package/lib/guessType.d.ts +1 -1
- package/lib/guessType.js.map +1 -1
- package/lib/hasWidget.js.map +1 -1
- package/lib/hashForSchema.d.ts +22 -0
- package/lib/hashForSchema.js +24 -6
- package/lib/hashForSchema.js.map +1 -1
- package/lib/idGenerators.d.ts +7 -0
- package/lib/idGenerators.js +9 -0
- package/lib/idGenerators.js.map +1 -1
- package/lib/index.d.ts +5 -3
- package/lib/index.js +5 -3
- package/lib/index.js.map +1 -1
- package/lib/isObject.d.ts +1 -1
- package/lib/isObject.js.map +1 -1
- package/lib/lookupFromFormContext.d.ts +11 -0
- package/lib/lookupFromFormContext.js +20 -0
- package/lib/lookupFromFormContext.js.map +1 -0
- package/lib/mergeDefaultsWithFormData.js.map +1 -1
- package/lib/mergeObjects.js.map +1 -1
- package/lib/mergeSchemas.js.map +1 -1
- package/lib/optionsList.d.ts +8 -6
- package/lib/optionsList.js +29 -18
- package/lib/optionsList.js.map +1 -1
- package/lib/orderProperties.js.map +1 -1
- package/lib/pad.js.map +1 -1
- package/lib/parseDateString.js +1 -1
- package/lib/parseDateString.js.map +1 -1
- package/lib/parser/ParserValidator.js.map +1 -1
- package/lib/parser/schemaParser.js.map +1 -1
- package/lib/rangeSpec.js.map +1 -1
- package/lib/replaceStringParameters.js.map +1 -1
- package/lib/schema/findFieldInSchema.d.ts +19 -0
- package/lib/schema/findFieldInSchema.js +61 -0
- package/lib/schema/findFieldInSchema.js.map +1 -0
- package/lib/schema/findSelectedOptionInXxxOf.d.ts +16 -0
- package/lib/schema/findSelectedOptionInXxxOf.js +34 -0
- package/lib/schema/findSelectedOptionInXxxOf.js.map +1 -0
- package/lib/schema/getClosestMatchingOption.js.map +1 -1
- package/lib/schema/getDefaultFormState.js +2 -3
- package/lib/schema/getDefaultFormState.js.map +1 -1
- package/lib/schema/getDisplayLabel.js.map +1 -1
- package/lib/schema/getFirstMatchingOption.js +70 -2
- package/lib/schema/getFirstMatchingOption.js.map +1 -1
- package/lib/schema/getFromSchema.d.ts +14 -0
- package/lib/schema/getFromSchema.js +39 -0
- package/lib/schema/getFromSchema.js.map +1 -0
- package/lib/schema/index.d.ts +4 -3
- package/lib/schema/index.js +4 -3
- package/lib/schema/index.js.map +1 -1
- package/lib/schema/isFilesArray.js.map +1 -1
- package/lib/schema/isMultiSelect.js.map +1 -1
- package/lib/schema/isSelect.js.map +1 -1
- package/lib/schema/retrieveSchema.d.ts +7 -0
- package/lib/schema/retrieveSchema.js +65 -21
- package/lib/schema/retrieveSchema.js.map +1 -1
- package/lib/schema/sanitizeDataForNewSchema.js.map +1 -1
- package/lib/schema/toIdSchema.js +20 -19
- package/lib/schema/toIdSchema.js.map +1 -1
- package/lib/schema/toPathSchema.js +1 -1
- package/lib/schema/toPathSchema.js.map +1 -1
- package/lib/schemaRequiresTrueValue.js.map +1 -1
- package/lib/toConstant.js.map +1 -1
- package/lib/toErrorList.js.map +1 -1
- package/lib/toErrorSchema.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types.d.ts +127 -128
- package/lib/unwrapErrorHandler.js.map +1 -1
- package/lib/utcToLocal.js.map +1 -1
- package/lib/validationDataMerge.js.map +1 -1
- package/lib/withIdRefPrefix.js.map +1 -1
- package/package.json +35 -25
- package/src/ErrorSchemaBuilder.ts +10 -4
- package/src/canExpand.ts +2 -2
- package/src/constants.ts +12 -3
- package/src/createSchemaUtils.ts +79 -43
- package/src/dataURItoBlob.ts +1 -1
- package/src/dateRangeOptions.ts +1 -1
- package/src/enumOptionsDeselectValue.ts +1 -1
- package/src/enumOptionsIndexForValue.ts +1 -1
- package/src/enumOptionsIsSelected.ts +1 -1
- package/src/enumOptionsSelectValue.ts +1 -1
- package/src/enumOptionsValueForIndex.ts +1 -1
- package/src/enums.ts +2 -0
- package/src/findSchemaDefinition.ts +2 -2
- package/src/getDateElementProps.ts +2 -2
- package/src/getDiscriminatorFieldFromSchema.ts +2 -1
- package/src/getInputProps.ts +2 -2
- package/src/getOptionMatchingSimpleDiscriminator.ts +2 -2
- package/src/getSchemaType.ts +3 -2
- package/src/getSubmitButtonOptions.ts +1 -1
- package/src/getTemplate.ts +12 -1
- package/src/getTestIds.ts +40 -0
- package/src/getUiOptions.ts +2 -2
- package/src/getWidget.tsx +2 -2
- package/src/hasWidget.ts +1 -1
- package/src/hashForSchema.ts +26 -6
- package/src/idGenerators.ts +10 -0
- package/src/index.ts +19 -2
- package/src/isCustomWidget.ts +1 -1
- package/src/isObject.ts +1 -1
- package/src/labelValue.ts +2 -2
- package/src/lookupFromFormContext.ts +26 -0
- package/src/mergeDefaultsWithFormData.ts +3 -3
- package/src/mergeObjects.ts +24 -21
- package/src/optionsList.ts +31 -22
- package/src/parser/ParserValidator.ts +2 -2
- package/src/parser/schemaParser.ts +2 -2
- package/src/schema/findFieldInSchema.ts +138 -0
- package/src/schema/findSelectedOptionInXxxOf.ts +53 -0
- package/src/schema/getClosestMatchingOption.ts +8 -8
- package/src/schema/getDefaultFormState.ts +26 -25
- package/src/schema/getDisplayLabel.ts +2 -2
- package/src/schema/getFirstMatchingOption.ts +79 -4
- package/src/schema/getFromSchema.ts +100 -0
- package/src/schema/index.ts +6 -4
- package/src/schema/isFilesArray.ts +2 -2
- package/src/schema/isMultiSelect.ts +2 -2
- package/src/schema/isSelect.ts +1 -1
- package/src/schema/retrieveSchema.ts +135 -69
- package/src/schema/sanitizeDataForNewSchema.ts +10 -10
- package/src/schema/toIdSchema.ts +45 -44
- package/src/schema/toPathSchema.ts +10 -10
- package/src/toErrorList.ts +2 -2
- package/src/types.ts +233 -173
- package/src/validationDataMerge.ts +1 -1
- package/src/withIdRefPrefix.ts +1 -1
- package/LICENSE.md +0 -201
- package/lib/schema/getMatchingOption.d.ts +0 -14
- package/lib/schema/getMatchingOption.js +0 -85
- package/lib/schema/getMatchingOption.js.map +0 -1
- package/lib/schema/mergeValidationData.d.ts +0 -14
- package/lib/schema/mergeValidationData.js +0 -28
- package/lib/schema/mergeValidationData.js.map +0 -1
- package/src/schema/getMatchingOption.ts +0 -103
- package/src/schema/mergeValidationData.ts +0 -38
package/dist/index.js
CHANGED
|
@@ -28,8 +28,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
29
|
|
|
30
30
|
// src/index.ts
|
|
31
|
-
var
|
|
32
|
-
__export(
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
33
33
|
ADDITIONAL_PROPERTIES_KEY: () => ADDITIONAL_PROPERTIES_KEY,
|
|
34
34
|
ADDITIONAL_PROPERTY_FLAG: () => ADDITIONAL_PROPERTY_FLAG,
|
|
35
35
|
ALL_OF_KEY: () => ALL_OF_KEY,
|
|
@@ -38,20 +38,24 @@ __export(src_exports, {
|
|
|
38
38
|
DEFAULT_KEY: () => DEFAULT_KEY,
|
|
39
39
|
DEFINITIONS_KEY: () => DEFINITIONS_KEY,
|
|
40
40
|
DEPENDENCIES_KEY: () => DEPENDENCIES_KEY,
|
|
41
|
+
DISCRIMINATOR_PATH: () => DISCRIMINATOR_PATH,
|
|
41
42
|
ENUM_KEY: () => ENUM_KEY,
|
|
42
43
|
ERRORS_KEY: () => ERRORS_KEY,
|
|
43
44
|
ErrorSchemaBuilder: () => ErrorSchemaBuilder,
|
|
45
|
+
FORM_CONTEXT_NAME: () => FORM_CONTEXT_NAME,
|
|
44
46
|
ID_KEY: () => ID_KEY,
|
|
45
47
|
IF_KEY: () => IF_KEY,
|
|
46
48
|
ITEMS_KEY: () => ITEMS_KEY,
|
|
47
49
|
JUNK_OPTION_ID: () => JUNK_OPTION_ID,
|
|
50
|
+
LOOKUP_MAP_NAME: () => LOOKUP_MAP_NAME,
|
|
48
51
|
NAME_KEY: () => NAME_KEY,
|
|
49
52
|
ONE_OF_KEY: () => ONE_OF_KEY,
|
|
53
|
+
PATTERN_PROPERTIES_KEY: () => PATTERN_PROPERTIES_KEY,
|
|
50
54
|
PROPERTIES_KEY: () => PROPERTIES_KEY,
|
|
55
|
+
READONLY_KEY: () => READONLY_KEY,
|
|
51
56
|
REF_KEY: () => REF_KEY,
|
|
52
57
|
REQUIRED_KEY: () => REQUIRED_KEY,
|
|
53
58
|
RJSF_ADDITIONAL_PROPERTIES_FLAG: () => RJSF_ADDITIONAL_PROPERTIES_FLAG,
|
|
54
|
-
RJSF_ADDITONAL_PROPERTIES_FLAG: () => RJSF_ADDITONAL_PROPERTIES_FLAG,
|
|
55
59
|
ROOT_SCHEMA_PREFIX: () => ROOT_SCHEMA_PREFIX,
|
|
56
60
|
SUBMIT_BTN_OPTIONS_KEY: () => SUBMIT_BTN_OPTIONS_KEY,
|
|
57
61
|
TranslatableString: () => TranslatableString,
|
|
@@ -62,6 +66,7 @@ __export(src_exports, {
|
|
|
62
66
|
allowAdditionalItems: () => allowAdditionalItems,
|
|
63
67
|
ariaDescribedByIds: () => ariaDescribedByIds,
|
|
64
68
|
asNumber: () => asNumber,
|
|
69
|
+
buttonId: () => buttonId,
|
|
65
70
|
canExpand: () => canExpand,
|
|
66
71
|
createErrorHandler: () => createErrorHandler,
|
|
67
72
|
createSchemaUtils: () => createSchemaUtils,
|
|
@@ -77,7 +82,9 @@ __export(src_exports, {
|
|
|
77
82
|
enumOptionsValueForIndex: () => enumOptionsValueForIndex,
|
|
78
83
|
errorId: () => errorId,
|
|
79
84
|
examplesId: () => examplesId,
|
|
85
|
+
findFieldInSchema: () => findFieldInSchema,
|
|
80
86
|
findSchemaDefinition: () => findSchemaDefinition,
|
|
87
|
+
findSelectedOptionInXxxOf: () => findSelectedOptionInXxxOf,
|
|
81
88
|
getChangedFields: () => getChangedFields,
|
|
82
89
|
getClosestMatchingOption: () => getClosestMatchingOption,
|
|
83
90
|
getDateElementProps: () => getDateElementProps,
|
|
@@ -85,17 +92,20 @@ __export(src_exports, {
|
|
|
85
92
|
getDiscriminatorFieldFromSchema: () => getDiscriminatorFieldFromSchema,
|
|
86
93
|
getDisplayLabel: () => getDisplayLabel,
|
|
87
94
|
getFirstMatchingOption: () => getFirstMatchingOption,
|
|
95
|
+
getFromSchema: () => getFromSchema,
|
|
88
96
|
getInputProps: () => getInputProps,
|
|
89
|
-
getMatchingOption: () => getMatchingOption,
|
|
90
97
|
getOptionMatchingSimpleDiscriminator: () => getOptionMatchingSimpleDiscriminator,
|
|
91
98
|
getSchemaType: () => getSchemaType,
|
|
92
99
|
getSubmitButtonOptions: () => getSubmitButtonOptions,
|
|
93
100
|
getTemplate: () => getTemplate,
|
|
101
|
+
getTestIds: () => getTestIds,
|
|
94
102
|
getUiOptions: () => getUiOptions,
|
|
95
103
|
getWidget: () => getWidget,
|
|
96
104
|
guessType: () => guessType,
|
|
97
105
|
hasWidget: () => hasWidget,
|
|
98
106
|
hashForSchema: () => hashForSchema,
|
|
107
|
+
hashObject: () => hashObject,
|
|
108
|
+
hashString: () => hashString,
|
|
99
109
|
helpId: () => helpId,
|
|
100
110
|
isConstant: () => isConstant,
|
|
101
111
|
isCustomWidget: () => isCustomWidget,
|
|
@@ -106,10 +116,10 @@ __export(src_exports, {
|
|
|
106
116
|
isSelect: () => isSelect,
|
|
107
117
|
labelValue: () => labelValue,
|
|
108
118
|
localToUTC: () => localToUTC,
|
|
119
|
+
lookupFromFormContext: () => lookupFromFormContext,
|
|
109
120
|
mergeDefaultsWithFormData: () => mergeDefaultsWithFormData,
|
|
110
121
|
mergeObjects: () => mergeObjects,
|
|
111
122
|
mergeSchemas: () => mergeSchemas,
|
|
112
|
-
mergeValidationData: () => mergeValidationData,
|
|
113
123
|
optionId: () => optionId,
|
|
114
124
|
optionsList: () => optionsList,
|
|
115
125
|
orderProperties: () => orderProperties,
|
|
@@ -122,6 +132,7 @@ __export(src_exports, {
|
|
|
122
132
|
schemaParser: () => schemaParser,
|
|
123
133
|
schemaRequiresTrueValue: () => schemaRequiresTrueValue,
|
|
124
134
|
shouldRender: () => shouldRender,
|
|
135
|
+
sortedJSONStringify: () => sortedJSONStringify,
|
|
125
136
|
titleId: () => titleId,
|
|
126
137
|
toConstant: () => toConstant,
|
|
127
138
|
toDateString: () => toDateString,
|
|
@@ -134,7 +145,7 @@ __export(src_exports, {
|
|
|
134
145
|
validationDataMerge: () => validationDataMerge,
|
|
135
146
|
withIdRefPrefix: () => withIdRefPrefix
|
|
136
147
|
});
|
|
137
|
-
module.exports = __toCommonJS(
|
|
148
|
+
module.exports = __toCommonJS(index_exports);
|
|
138
149
|
|
|
139
150
|
// src/isObject.ts
|
|
140
151
|
function isObject(thing) {
|
|
@@ -197,11 +208,15 @@ var ITEMS_KEY = "items";
|
|
|
197
208
|
var JUNK_OPTION_ID = "_$junk_option_schema_id$_";
|
|
198
209
|
var NAME_KEY = "$name";
|
|
199
210
|
var ONE_OF_KEY = "oneOf";
|
|
211
|
+
var PATTERN_PROPERTIES_KEY = "patternProperties";
|
|
200
212
|
var PROPERTIES_KEY = "properties";
|
|
213
|
+
var READONLY_KEY = "readonly";
|
|
201
214
|
var REQUIRED_KEY = "required";
|
|
202
215
|
var SUBMIT_BTN_OPTIONS_KEY = "submitButtonOptions";
|
|
203
216
|
var REF_KEY = "$ref";
|
|
204
|
-
var
|
|
217
|
+
var DISCRIMINATOR_PATH = ["discriminator", "propertyName"];
|
|
218
|
+
var FORM_CONTEXT_NAME = "formContext";
|
|
219
|
+
var LOOKUP_MAP_NAME = "layoutGridLookupMap";
|
|
205
220
|
var RJSF_ADDITIONAL_PROPERTIES_FLAG = "__rjsf_additionalProperties";
|
|
206
221
|
var ROOT_SCHEMA_PREFIX = "__rjsf_rootSchema";
|
|
207
222
|
var UI_FIELD_KEY = "ui:field";
|
|
@@ -229,7 +244,7 @@ function getUiOptions(uiSchema = {}, globalOptions = {}) {
|
|
|
229
244
|
|
|
230
245
|
// src/canExpand.ts
|
|
231
246
|
function canExpand(schema, uiSchema = {}, formData) {
|
|
232
|
-
if (!schema.additionalProperties) {
|
|
247
|
+
if (!(schema.additionalProperties || schema.patternProperties)) {
|
|
233
248
|
return false;
|
|
234
249
|
}
|
|
235
250
|
const { expandable = true } = getUiOptions(uiSchema);
|
|
@@ -243,7 +258,7 @@ function canExpand(schema, uiSchema = {}, formData) {
|
|
|
243
258
|
}
|
|
244
259
|
|
|
245
260
|
// src/createErrorHandler.ts
|
|
246
|
-
var import_isPlainObject = __toESM(require("lodash/isPlainObject"));
|
|
261
|
+
var import_isPlainObject = __toESM(require("lodash/isPlainObject"), 1);
|
|
247
262
|
function createErrorHandler(formData) {
|
|
248
263
|
const handler = {
|
|
249
264
|
// We store the list of errors for this node in a property named __errors
|
|
@@ -269,7 +284,7 @@ function createErrorHandler(formData) {
|
|
|
269
284
|
}
|
|
270
285
|
|
|
271
286
|
// src/deepEquals.ts
|
|
272
|
-
var import_isEqualWith = __toESM(require("lodash/isEqualWith"));
|
|
287
|
+
var import_isEqualWith = __toESM(require("lodash/isEqualWith"), 1);
|
|
273
288
|
function deepEquals(a, b) {
|
|
274
289
|
return (0, import_isEqualWith.default)(a, b, (obj, other) => {
|
|
275
290
|
if (typeof obj === "function" && typeof other === "function") {
|
|
@@ -279,13 +294,27 @@ function deepEquals(a, b) {
|
|
|
279
294
|
});
|
|
280
295
|
}
|
|
281
296
|
|
|
282
|
-
// src/schema/
|
|
283
|
-
var import_get7 = __toESM(require("lodash/get"));
|
|
284
|
-
var
|
|
297
|
+
// src/schema/findFieldInSchema.ts
|
|
298
|
+
var import_get7 = __toESM(require("lodash/get"), 1);
|
|
299
|
+
var import_has3 = __toESM(require("lodash/has"), 1);
|
|
300
|
+
|
|
301
|
+
// src/schema/findSelectedOptionInXxxOf.ts
|
|
302
|
+
var import_get5 = __toESM(require("lodash/get"), 1);
|
|
303
|
+
var import_isEqual = __toESM(require("lodash/isEqual"), 1);
|
|
304
|
+
|
|
305
|
+
// src/schema/retrieveSchema.ts
|
|
306
|
+
var import_get4 = __toESM(require("lodash/get"), 1);
|
|
307
|
+
var import_set = __toESM(require("lodash/set"), 1);
|
|
308
|
+
var import_times = __toESM(require("lodash/times"), 1);
|
|
309
|
+
var import_transform = __toESM(require("lodash/transform"), 1);
|
|
310
|
+
var import_merge = __toESM(require("lodash/merge"), 1);
|
|
311
|
+
var import_flattenDeep = __toESM(require("lodash/flattenDeep"), 1);
|
|
312
|
+
var import_uniq = __toESM(require("lodash/uniq"), 1);
|
|
313
|
+
var import_json_schema_merge_allof = __toESM(require("json-schema-merge-allof"), 1);
|
|
285
314
|
|
|
286
315
|
// src/findSchemaDefinition.ts
|
|
287
|
-
var import_jsonpointer = __toESM(require("jsonpointer"));
|
|
288
|
-
var import_omit = __toESM(require("lodash/omit"));
|
|
316
|
+
var import_jsonpointer = __toESM(require("jsonpointer"), 1);
|
|
317
|
+
var import_omit = __toESM(require("lodash/omit"), 1);
|
|
289
318
|
function splitKeyElementFromObject(key, object) {
|
|
290
319
|
const value = object[key];
|
|
291
320
|
const remaining = (0, import_omit.default)(object, [key]);
|
|
@@ -327,113 +356,12 @@ function findSchemaDefinition($ref, rootSchema = {}) {
|
|
|
327
356
|
return findSchemaDefinitionRecursive($ref, rootSchema, recurseList);
|
|
328
357
|
}
|
|
329
358
|
|
|
330
|
-
// src/schema/getClosestMatchingOption.ts
|
|
331
|
-
var import_get5 = __toESM(require("lodash/get"));
|
|
332
|
-
var import_has2 = __toESM(require("lodash/has"));
|
|
333
|
-
var import_isNumber2 = __toESM(require("lodash/isNumber"));
|
|
334
|
-
var import_isObject5 = __toESM(require("lodash/isObject"));
|
|
335
|
-
var import_isString2 = __toESM(require("lodash/isString"));
|
|
336
|
-
var import_reduce = __toESM(require("lodash/reduce"));
|
|
337
|
-
var import_times2 = __toESM(require("lodash/times"));
|
|
338
|
-
|
|
339
|
-
// src/schema/getMatchingOption.ts
|
|
340
|
-
var import_get2 = __toESM(require("lodash/get"));
|
|
341
|
-
var import_has = __toESM(require("lodash/has"));
|
|
342
|
-
var import_isNumber = __toESM(require("lodash/isNumber"));
|
|
343
|
-
|
|
344
|
-
// src/getOptionMatchingSimpleDiscriminator.ts
|
|
345
|
-
var import_get = __toESM(require("lodash/get"));
|
|
346
|
-
function getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField) {
|
|
347
|
-
if (formData && discriminatorField) {
|
|
348
|
-
const value = (0, import_get.default)(formData, discriminatorField);
|
|
349
|
-
if (value === void 0) {
|
|
350
|
-
return;
|
|
351
|
-
}
|
|
352
|
-
for (let i = 0; i < options.length; i++) {
|
|
353
|
-
const option = options[i];
|
|
354
|
-
const discriminator = (0, import_get.default)(option, [PROPERTIES_KEY, discriminatorField], {});
|
|
355
|
-
if (discriminator.type === "object" || discriminator.type === "array") {
|
|
356
|
-
continue;
|
|
357
|
-
}
|
|
358
|
-
if (discriminator.const === value) {
|
|
359
|
-
return i;
|
|
360
|
-
}
|
|
361
|
-
if (discriminator.enum?.includes(value)) {
|
|
362
|
-
return i;
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
return;
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
// src/schema/getMatchingOption.ts
|
|
370
|
-
function getMatchingOption(validator, formData, options, rootSchema, discriminatorField) {
|
|
371
|
-
if (formData === void 0) {
|
|
372
|
-
return 0;
|
|
373
|
-
}
|
|
374
|
-
const simpleDiscriminatorMatch = getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField);
|
|
375
|
-
if ((0, import_isNumber.default)(simpleDiscriminatorMatch)) {
|
|
376
|
-
return simpleDiscriminatorMatch;
|
|
377
|
-
}
|
|
378
|
-
for (let i = 0; i < options.length; i++) {
|
|
379
|
-
const option = options[i];
|
|
380
|
-
if (discriminatorField && (0, import_has.default)(option, [PROPERTIES_KEY, discriminatorField])) {
|
|
381
|
-
const value = (0, import_get2.default)(formData, discriminatorField);
|
|
382
|
-
const discriminator = (0, import_get2.default)(option, [PROPERTIES_KEY, discriminatorField], {});
|
|
383
|
-
if (validator.isValid(discriminator, value, rootSchema)) {
|
|
384
|
-
return i;
|
|
385
|
-
}
|
|
386
|
-
} else if (option[PROPERTIES_KEY]) {
|
|
387
|
-
const requiresAnyOf = {
|
|
388
|
-
anyOf: Object.keys(option[PROPERTIES_KEY]).map((key) => ({
|
|
389
|
-
required: [key]
|
|
390
|
-
}))
|
|
391
|
-
};
|
|
392
|
-
let augmentedSchema;
|
|
393
|
-
if (option.anyOf) {
|
|
394
|
-
const { ...shallowClone } = option;
|
|
395
|
-
if (!shallowClone.allOf) {
|
|
396
|
-
shallowClone.allOf = [];
|
|
397
|
-
} else {
|
|
398
|
-
shallowClone.allOf = shallowClone.allOf.slice();
|
|
399
|
-
}
|
|
400
|
-
shallowClone.allOf.push(requiresAnyOf);
|
|
401
|
-
augmentedSchema = shallowClone;
|
|
402
|
-
} else {
|
|
403
|
-
augmentedSchema = Object.assign({}, option, requiresAnyOf);
|
|
404
|
-
}
|
|
405
|
-
delete augmentedSchema.required;
|
|
406
|
-
if (validator.isValid(augmentedSchema, formData, rootSchema)) {
|
|
407
|
-
return i;
|
|
408
|
-
}
|
|
409
|
-
} else if (validator.isValid(option, formData, rootSchema)) {
|
|
410
|
-
return i;
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
return 0;
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
// src/schema/getFirstMatchingOption.ts
|
|
417
|
-
function getFirstMatchingOption(validator, formData, options, rootSchema, discriminatorField) {
|
|
418
|
-
return getMatchingOption(validator, formData, options, rootSchema, discriminatorField);
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
// src/schema/retrieveSchema.ts
|
|
422
|
-
var import_get4 = __toESM(require("lodash/get"));
|
|
423
|
-
var import_set = __toESM(require("lodash/set"));
|
|
424
|
-
var import_times = __toESM(require("lodash/times"));
|
|
425
|
-
var import_transform = __toESM(require("lodash/transform"));
|
|
426
|
-
var import_merge = __toESM(require("lodash/merge"));
|
|
427
|
-
var import_flattenDeep = __toESM(require("lodash/flattenDeep"));
|
|
428
|
-
var import_uniq = __toESM(require("lodash/uniq"));
|
|
429
|
-
var import_json_schema_merge_allof = __toESM(require("json-schema-merge-allof"));
|
|
430
|
-
|
|
431
359
|
// src/getDiscriminatorFieldFromSchema.ts
|
|
432
|
-
var
|
|
433
|
-
var import_isString = __toESM(require("lodash/isString"));
|
|
360
|
+
var import_get = __toESM(require("lodash/get"), 1);
|
|
361
|
+
var import_isString = __toESM(require("lodash/isString"), 1);
|
|
434
362
|
function getDiscriminatorFieldFromSchema(schema) {
|
|
435
363
|
let discriminator;
|
|
436
|
-
const maybeString = (0,
|
|
364
|
+
const maybeString = (0, import_get.default)(schema, DISCRIMINATOR_PATH);
|
|
437
365
|
if ((0, import_isString.default)(maybeString)) {
|
|
438
366
|
discriminator = maybeString;
|
|
439
367
|
} else if (maybeString !== void 0) {
|
|
@@ -466,7 +394,7 @@ function guessType(value) {
|
|
|
466
394
|
}
|
|
467
395
|
|
|
468
396
|
// src/mergeSchemas.ts
|
|
469
|
-
var import_union = __toESM(require("lodash/union"));
|
|
397
|
+
var import_union = __toESM(require("lodash/union"), 1);
|
|
470
398
|
|
|
471
399
|
// src/getSchemaType.ts
|
|
472
400
|
function getSchemaType(schema) {
|
|
@@ -477,7 +405,7 @@ function getSchemaType(schema) {
|
|
|
477
405
|
if (!type && schema.enum) {
|
|
478
406
|
return "string";
|
|
479
407
|
}
|
|
480
|
-
if (!type && (schema.properties || schema.additionalProperties)) {
|
|
408
|
+
if (!type && (schema.properties || schema.additionalProperties || schema.patternProperties)) {
|
|
481
409
|
return "object";
|
|
482
410
|
}
|
|
483
411
|
if (Array.isArray(type)) {
|
|
@@ -506,7 +434,85 @@ function mergeSchemas(obj1, obj2) {
|
|
|
506
434
|
}, acc);
|
|
507
435
|
}
|
|
508
436
|
|
|
437
|
+
// src/schema/getFirstMatchingOption.ts
|
|
438
|
+
var import_get3 = __toESM(require("lodash/get"), 1);
|
|
439
|
+
var import_has = __toESM(require("lodash/has"), 1);
|
|
440
|
+
var import_isNumber = __toESM(require("lodash/isNumber"), 1);
|
|
441
|
+
|
|
442
|
+
// src/getOptionMatchingSimpleDiscriminator.ts
|
|
443
|
+
var import_get2 = __toESM(require("lodash/get"), 1);
|
|
444
|
+
function getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField) {
|
|
445
|
+
if (formData && discriminatorField) {
|
|
446
|
+
const value = (0, import_get2.default)(formData, discriminatorField);
|
|
447
|
+
if (value === void 0) {
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
450
|
+
for (let i = 0; i < options.length; i++) {
|
|
451
|
+
const option = options[i];
|
|
452
|
+
const discriminator = (0, import_get2.default)(option, [PROPERTIES_KEY, discriminatorField], {});
|
|
453
|
+
if (discriminator.type === "object" || discriminator.type === "array") {
|
|
454
|
+
continue;
|
|
455
|
+
}
|
|
456
|
+
if (discriminator.const === value) {
|
|
457
|
+
return i;
|
|
458
|
+
}
|
|
459
|
+
if (discriminator.enum?.includes(value)) {
|
|
460
|
+
return i;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
return;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
// src/schema/getFirstMatchingOption.ts
|
|
468
|
+
function getFirstMatchingOption(validator, formData, options, rootSchema, discriminatorField) {
|
|
469
|
+
if (formData === void 0) {
|
|
470
|
+
return 0;
|
|
471
|
+
}
|
|
472
|
+
const simpleDiscriminatorMatch = getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField);
|
|
473
|
+
if ((0, import_isNumber.default)(simpleDiscriminatorMatch)) {
|
|
474
|
+
return simpleDiscriminatorMatch;
|
|
475
|
+
}
|
|
476
|
+
for (let i = 0; i < options.length; i++) {
|
|
477
|
+
const option = options[i];
|
|
478
|
+
if (discriminatorField && (0, import_has.default)(option, [PROPERTIES_KEY, discriminatorField])) {
|
|
479
|
+
const value = (0, import_get3.default)(formData, discriminatorField);
|
|
480
|
+
const discriminator = (0, import_get3.default)(option, [PROPERTIES_KEY, discriminatorField], {});
|
|
481
|
+
if (validator.isValid(discriminator, value, rootSchema)) {
|
|
482
|
+
return i;
|
|
483
|
+
}
|
|
484
|
+
} else if (option[PROPERTIES_KEY]) {
|
|
485
|
+
const requiresAnyOf = {
|
|
486
|
+
anyOf: Object.keys(option[PROPERTIES_KEY]).map((key) => ({
|
|
487
|
+
required: [key]
|
|
488
|
+
}))
|
|
489
|
+
};
|
|
490
|
+
let augmentedSchema;
|
|
491
|
+
if (option.anyOf) {
|
|
492
|
+
const { ...shallowClone } = option;
|
|
493
|
+
if (!shallowClone.allOf) {
|
|
494
|
+
shallowClone.allOf = [];
|
|
495
|
+
} else {
|
|
496
|
+
shallowClone.allOf = shallowClone.allOf.slice();
|
|
497
|
+
}
|
|
498
|
+
shallowClone.allOf.push(requiresAnyOf);
|
|
499
|
+
augmentedSchema = shallowClone;
|
|
500
|
+
} else {
|
|
501
|
+
augmentedSchema = Object.assign({}, option, requiresAnyOf);
|
|
502
|
+
}
|
|
503
|
+
delete augmentedSchema.required;
|
|
504
|
+
if (validator.isValid(augmentedSchema, formData, rootSchema)) {
|
|
505
|
+
return i;
|
|
506
|
+
}
|
|
507
|
+
} else if (validator.isValid(option, formData, rootSchema)) {
|
|
508
|
+
return i;
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
return 0;
|
|
512
|
+
}
|
|
513
|
+
|
|
509
514
|
// src/schema/retrieveSchema.ts
|
|
515
|
+
var import_isEmpty = __toESM(require("lodash/isEmpty"), 1);
|
|
510
516
|
function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experimental_customMergeAllOf) {
|
|
511
517
|
return retrieveSchemaInternal(
|
|
512
518
|
validator,
|
|
@@ -595,6 +601,15 @@ function getAllPermutationsOfXxxOf(listOfLists) {
|
|
|
595
601
|
);
|
|
596
602
|
return allPermutations;
|
|
597
603
|
}
|
|
604
|
+
function getMatchingPatternProperties(schema, key) {
|
|
605
|
+
return Object.keys(schema.patternProperties).filter((pattern) => RegExp(pattern).test(key)).reduce(
|
|
606
|
+
(obj, pattern) => {
|
|
607
|
+
(0, import_set.default)(obj, [pattern], schema.patternProperties[pattern]);
|
|
608
|
+
return obj;
|
|
609
|
+
},
|
|
610
|
+
{}
|
|
611
|
+
);
|
|
612
|
+
}
|
|
598
613
|
function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
599
614
|
const updatedSchemas = resolveReference(
|
|
600
615
|
validator,
|
|
@@ -709,31 +724,50 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
709
724
|
if (key in schema.properties) {
|
|
710
725
|
return;
|
|
711
726
|
}
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
if (
|
|
715
|
-
|
|
727
|
+
if (PATTERN_PROPERTIES_KEY in schema) {
|
|
728
|
+
const matchingProperties = getMatchingPatternProperties(schema, key);
|
|
729
|
+
if (!(0, import_isEmpty.default)(matchingProperties)) {
|
|
730
|
+
schema.properties[key] = retrieveSchema(
|
|
716
731
|
validator,
|
|
717
|
-
{
|
|
732
|
+
{ allOf: Object.values(matchingProperties) },
|
|
718
733
|
rootSchema,
|
|
719
734
|
formData,
|
|
720
735
|
experimental_customMergeAllOf
|
|
721
736
|
);
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
}
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
737
|
+
(0, import_set.default)(schema.properties, [key, ADDITIONAL_PROPERTY_FLAG], true);
|
|
738
|
+
return;
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
if (ADDITIONAL_PROPERTIES_KEY in schema && schema.additionalProperties !== false) {
|
|
742
|
+
let additionalProperties = {};
|
|
743
|
+
if (typeof schema.additionalProperties !== "boolean") {
|
|
744
|
+
if (REF_KEY in schema.additionalProperties) {
|
|
745
|
+
additionalProperties = retrieveSchema(
|
|
746
|
+
validator,
|
|
747
|
+
{ $ref: (0, import_get4.default)(schema.additionalProperties, [REF_KEY]) },
|
|
748
|
+
rootSchema,
|
|
749
|
+
formData,
|
|
750
|
+
experimental_customMergeAllOf
|
|
751
|
+
);
|
|
752
|
+
} else if ("type" in schema.additionalProperties) {
|
|
753
|
+
additionalProperties = { ...schema.additionalProperties };
|
|
754
|
+
} else if (ANY_OF_KEY in schema.additionalProperties || ONE_OF_KEY in schema.additionalProperties) {
|
|
755
|
+
additionalProperties = {
|
|
756
|
+
type: "object",
|
|
757
|
+
...schema.additionalProperties
|
|
758
|
+
};
|
|
759
|
+
} else {
|
|
760
|
+
additionalProperties = { type: guessType((0, import_get4.default)(formData, [key])) };
|
|
761
|
+
}
|
|
729
762
|
} else {
|
|
730
763
|
additionalProperties = { type: guessType((0, import_get4.default)(formData, [key])) };
|
|
731
764
|
}
|
|
765
|
+
schema.properties[key] = additionalProperties;
|
|
766
|
+
(0, import_set.default)(schema.properties, [key, ADDITIONAL_PROPERTY_FLAG], true);
|
|
732
767
|
} else {
|
|
733
|
-
|
|
768
|
+
schema.properties[key] = { type: "null" };
|
|
769
|
+
(0, import_set.default)(schema.properties, [key, ADDITIONAL_PROPERTY_FLAG], true);
|
|
734
770
|
}
|
|
735
|
-
schema.properties[key] = additionalProperties;
|
|
736
|
-
(0, import_set.default)(schema.properties, [key, ADDITIONAL_PROPERTY_FLAG], true);
|
|
737
771
|
});
|
|
738
772
|
return schema;
|
|
739
773
|
}
|
|
@@ -793,7 +827,28 @@ function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expa
|
|
|
793
827
|
return resolvedSchemaWithoutAllOf;
|
|
794
828
|
}
|
|
795
829
|
}
|
|
796
|
-
|
|
830
|
+
if (PROPERTIES_KEY in resolvedSchema && PATTERN_PROPERTIES_KEY in resolvedSchema) {
|
|
831
|
+
resolvedSchema = Object.keys(resolvedSchema.properties).reduce(
|
|
832
|
+
(schema2, key) => {
|
|
833
|
+
const matchingProperties = getMatchingPatternProperties(schema2, key);
|
|
834
|
+
if (!(0, import_isEmpty.default)(matchingProperties)) {
|
|
835
|
+
schema2.properties[key] = retrieveSchema(
|
|
836
|
+
validator,
|
|
837
|
+
{ allOf: [schema2.properties[key], ...Object.values(matchingProperties)] },
|
|
838
|
+
rootSchema,
|
|
839
|
+
rawFormData,
|
|
840
|
+
experimental_customMergeAllOf
|
|
841
|
+
);
|
|
842
|
+
}
|
|
843
|
+
return schema2;
|
|
844
|
+
},
|
|
845
|
+
{
|
|
846
|
+
...resolvedSchema,
|
|
847
|
+
properties: { ...resolvedSchema.properties }
|
|
848
|
+
}
|
|
849
|
+
);
|
|
850
|
+
}
|
|
851
|
+
const hasAdditionalProperties = PATTERN_PROPERTIES_KEY in resolvedSchema || ADDITIONAL_PROPERTIES_KEY in resolvedSchema && resolvedSchema.additionalProperties !== false;
|
|
797
852
|
if (hasAdditionalProperties) {
|
|
798
853
|
return stubExistingAdditionalProperties(
|
|
799
854
|
validator,
|
|
@@ -976,7 +1031,159 @@ function withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, o
|
|
|
976
1031
|
});
|
|
977
1032
|
}
|
|
978
1033
|
|
|
1034
|
+
// src/schema/findSelectedOptionInXxxOf.ts
|
|
1035
|
+
function findSelectedOptionInXxxOf(validator, rootSchema, schema, fallbackField, xxx, formData = {}, experimental_customMergeAllOf) {
|
|
1036
|
+
if (Array.isArray(schema[xxx])) {
|
|
1037
|
+
const discriminator = getDiscriminatorFieldFromSchema(schema);
|
|
1038
|
+
const selectorField = discriminator || fallbackField;
|
|
1039
|
+
const xxxOfs = schema[xxx].map(
|
|
1040
|
+
(xxxOf) => retrieveSchema(validator, xxxOf, rootSchema, formData, experimental_customMergeAllOf)
|
|
1041
|
+
);
|
|
1042
|
+
const data = (0, import_get5.default)(formData, selectorField);
|
|
1043
|
+
if (data !== void 0) {
|
|
1044
|
+
return xxxOfs.find((xxx2) => {
|
|
1045
|
+
return (0, import_isEqual.default)(
|
|
1046
|
+
(0, import_get5.default)(xxx2, [PROPERTIES_KEY, selectorField, DEFAULT_KEY], (0, import_get5.default)(xxx2, [PROPERTIES_KEY, selectorField, CONST_KEY])),
|
|
1047
|
+
data
|
|
1048
|
+
);
|
|
1049
|
+
});
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
1052
|
+
return void 0;
|
|
1053
|
+
}
|
|
1054
|
+
|
|
1055
|
+
// src/schema/getFromSchema.ts
|
|
1056
|
+
var import_get6 = __toESM(require("lodash/get"), 1);
|
|
1057
|
+
var import_has2 = __toESM(require("lodash/has"), 1);
|
|
1058
|
+
var import_isEmpty2 = __toESM(require("lodash/isEmpty"), 1);
|
|
1059
|
+
function getFromSchemaInternal(validator, rootSchema, schema, path, experimental_customMergeAllOf) {
|
|
1060
|
+
let fieldSchema = schema;
|
|
1061
|
+
if ((0, import_has2.default)(schema, REF_KEY)) {
|
|
1062
|
+
fieldSchema = retrieveSchema(validator, schema, rootSchema, void 0, experimental_customMergeAllOf);
|
|
1063
|
+
}
|
|
1064
|
+
if ((0, import_isEmpty2.default)(path)) {
|
|
1065
|
+
return fieldSchema;
|
|
1066
|
+
}
|
|
1067
|
+
const pathList = Array.isArray(path) ? path : path.split(".");
|
|
1068
|
+
const [part, ...nestedPath] = pathList;
|
|
1069
|
+
if (part && (0, import_has2.default)(fieldSchema, part)) {
|
|
1070
|
+
fieldSchema = (0, import_get6.default)(fieldSchema, part);
|
|
1071
|
+
return getFromSchemaInternal(
|
|
1072
|
+
validator,
|
|
1073
|
+
rootSchema,
|
|
1074
|
+
fieldSchema,
|
|
1075
|
+
nestedPath,
|
|
1076
|
+
experimental_customMergeAllOf
|
|
1077
|
+
);
|
|
1078
|
+
}
|
|
1079
|
+
return void 0;
|
|
1080
|
+
}
|
|
1081
|
+
function getFromSchema(validator, rootSchema, schema, path, defaultValue, experimental_customMergeAllOf) {
|
|
1082
|
+
const result = getFromSchemaInternal(validator, rootSchema, schema, path, experimental_customMergeAllOf);
|
|
1083
|
+
if (result === void 0) {
|
|
1084
|
+
return defaultValue;
|
|
1085
|
+
}
|
|
1086
|
+
return result;
|
|
1087
|
+
}
|
|
1088
|
+
|
|
1089
|
+
// src/schema/findFieldInSchema.ts
|
|
1090
|
+
var NOT_FOUND_SCHEMA = { title: "!@#$_UNKNOWN_$#@!" };
|
|
1091
|
+
function findFieldInSchema(validator, rootSchema, schema, path, formData = {}, experimental_customMergeAllOf) {
|
|
1092
|
+
const pathList = Array.isArray(path) ? [...path] : path.split(".");
|
|
1093
|
+
let parentField = schema;
|
|
1094
|
+
const fieldName = pathList.pop();
|
|
1095
|
+
if (pathList.length) {
|
|
1096
|
+
pathList.forEach((subPath) => {
|
|
1097
|
+
parentField = getFromSchema(
|
|
1098
|
+
validator,
|
|
1099
|
+
rootSchema,
|
|
1100
|
+
parentField,
|
|
1101
|
+
[PROPERTIES_KEY, subPath],
|
|
1102
|
+
{},
|
|
1103
|
+
experimental_customMergeAllOf
|
|
1104
|
+
);
|
|
1105
|
+
if ((0, import_has3.default)(parentField, ONE_OF_KEY)) {
|
|
1106
|
+
parentField = findSelectedOptionInXxxOf(
|
|
1107
|
+
validator,
|
|
1108
|
+
rootSchema,
|
|
1109
|
+
parentField,
|
|
1110
|
+
fieldName,
|
|
1111
|
+
ONE_OF_KEY,
|
|
1112
|
+
(0, import_get7.default)(formData, subPath),
|
|
1113
|
+
experimental_customMergeAllOf
|
|
1114
|
+
);
|
|
1115
|
+
} else if ((0, import_has3.default)(parentField, ANY_OF_KEY)) {
|
|
1116
|
+
parentField = findSelectedOptionInXxxOf(
|
|
1117
|
+
validator,
|
|
1118
|
+
rootSchema,
|
|
1119
|
+
parentField,
|
|
1120
|
+
fieldName,
|
|
1121
|
+
ANY_OF_KEY,
|
|
1122
|
+
(0, import_get7.default)(formData, subPath),
|
|
1123
|
+
experimental_customMergeAllOf
|
|
1124
|
+
);
|
|
1125
|
+
}
|
|
1126
|
+
});
|
|
1127
|
+
}
|
|
1128
|
+
if ((0, import_has3.default)(parentField, ONE_OF_KEY)) {
|
|
1129
|
+
parentField = findSelectedOptionInXxxOf(
|
|
1130
|
+
validator,
|
|
1131
|
+
rootSchema,
|
|
1132
|
+
parentField,
|
|
1133
|
+
fieldName,
|
|
1134
|
+
ONE_OF_KEY,
|
|
1135
|
+
formData,
|
|
1136
|
+
experimental_customMergeAllOf
|
|
1137
|
+
);
|
|
1138
|
+
} else if ((0, import_has3.default)(parentField, ANY_OF_KEY)) {
|
|
1139
|
+
parentField = findSelectedOptionInXxxOf(
|
|
1140
|
+
validator,
|
|
1141
|
+
rootSchema,
|
|
1142
|
+
parentField,
|
|
1143
|
+
fieldName,
|
|
1144
|
+
ANY_OF_KEY,
|
|
1145
|
+
formData,
|
|
1146
|
+
experimental_customMergeAllOf
|
|
1147
|
+
);
|
|
1148
|
+
}
|
|
1149
|
+
let field = getFromSchema(
|
|
1150
|
+
validator,
|
|
1151
|
+
rootSchema,
|
|
1152
|
+
parentField,
|
|
1153
|
+
[PROPERTIES_KEY, fieldName],
|
|
1154
|
+
NOT_FOUND_SCHEMA,
|
|
1155
|
+
experimental_customMergeAllOf
|
|
1156
|
+
);
|
|
1157
|
+
if (field === NOT_FOUND_SCHEMA) {
|
|
1158
|
+
field = void 0;
|
|
1159
|
+
}
|
|
1160
|
+
const requiredArray = getFromSchema(
|
|
1161
|
+
validator,
|
|
1162
|
+
rootSchema,
|
|
1163
|
+
parentField,
|
|
1164
|
+
REQUIRED_KEY,
|
|
1165
|
+
[],
|
|
1166
|
+
experimental_customMergeAllOf
|
|
1167
|
+
);
|
|
1168
|
+
let isRequired;
|
|
1169
|
+
if (field && Array.isArray(requiredArray)) {
|
|
1170
|
+
isRequired = requiredArray.includes(fieldName);
|
|
1171
|
+
}
|
|
1172
|
+
return { field, isRequired };
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1175
|
+
// src/schema/getDefaultFormState.ts
|
|
1176
|
+
var import_get11 = __toESM(require("lodash/get"), 1);
|
|
1177
|
+
var import_isEmpty3 = __toESM(require("lodash/isEmpty"), 1);
|
|
1178
|
+
|
|
979
1179
|
// src/schema/getClosestMatchingOption.ts
|
|
1180
|
+
var import_get8 = __toESM(require("lodash/get"), 1);
|
|
1181
|
+
var import_has4 = __toESM(require("lodash/has"), 1);
|
|
1182
|
+
var import_isNumber2 = __toESM(require("lodash/isNumber"), 1);
|
|
1183
|
+
var import_isObject5 = __toESM(require("lodash/isObject"), 1);
|
|
1184
|
+
var import_isString2 = __toESM(require("lodash/isString"), 1);
|
|
1185
|
+
var import_reduce = __toESM(require("lodash/reduce"), 1);
|
|
1186
|
+
var import_times2 = __toESM(require("lodash/times"), 1);
|
|
980
1187
|
var JUNK_OPTION = {
|
|
981
1188
|
type: "object",
|
|
982
1189
|
$id: JUNK_OPTION_ID,
|
|
@@ -993,11 +1200,11 @@ function calculateIndexScore(validator, rootSchema, schema, formData, experiment
|
|
|
993
1200
|
totalScore += (0, import_reduce.default)(
|
|
994
1201
|
schema.properties,
|
|
995
1202
|
(score, value, key) => {
|
|
996
|
-
const formValue = (0,
|
|
1203
|
+
const formValue = (0, import_get8.default)(formData, key);
|
|
997
1204
|
if (typeof value === "boolean") {
|
|
998
1205
|
return score;
|
|
999
1206
|
}
|
|
1000
|
-
if ((0,
|
|
1207
|
+
if ((0, import_has4.default)(value, REF_KEY)) {
|
|
1001
1208
|
const newSchema = retrieveSchema(
|
|
1002
1209
|
validator,
|
|
1003
1210
|
value,
|
|
@@ -1013,14 +1220,14 @@ function calculateIndexScore(validator, rootSchema, schema, formData, experiment
|
|
|
1013
1220
|
experimental_customMergeAllOf
|
|
1014
1221
|
);
|
|
1015
1222
|
}
|
|
1016
|
-
if (((0,
|
|
1017
|
-
const key2 = (0,
|
|
1223
|
+
if (((0, import_has4.default)(value, ONE_OF_KEY) || (0, import_has4.default)(value, ANY_OF_KEY)) && formValue) {
|
|
1224
|
+
const key2 = (0, import_has4.default)(value, ONE_OF_KEY) ? ONE_OF_KEY : ANY_OF_KEY;
|
|
1018
1225
|
const discriminator = getDiscriminatorFieldFromSchema(value);
|
|
1019
1226
|
return score + getClosestMatchingOption(
|
|
1020
1227
|
validator,
|
|
1021
1228
|
rootSchema,
|
|
1022
1229
|
formValue,
|
|
1023
|
-
(0,
|
|
1230
|
+
(0, import_get8.default)(value, key2),
|
|
1024
1231
|
-1,
|
|
1025
1232
|
discriminator,
|
|
1026
1233
|
experimental_customMergeAllOf
|
|
@@ -1099,8 +1306,8 @@ function isFixedItems(schema) {
|
|
|
1099
1306
|
}
|
|
1100
1307
|
|
|
1101
1308
|
// src/mergeDefaultsWithFormData.ts
|
|
1102
|
-
var
|
|
1103
|
-
var import_isNil = __toESM(require("lodash/isNil"));
|
|
1309
|
+
var import_get9 = __toESM(require("lodash/get"), 1);
|
|
1310
|
+
var import_isNil = __toESM(require("lodash/isNil"), 1);
|
|
1104
1311
|
function mergeDefaultsWithFormData(defaults, formData, mergeExtraArrayDefaults = false, defaultSupercedesUndefined = false, overrideFormDataWithDefaults = false) {
|
|
1105
1312
|
if (Array.isArray(formData)) {
|
|
1106
1313
|
const defaultsArray = Array.isArray(defaults) ? defaults : [];
|
|
@@ -1126,11 +1333,11 @@ function mergeDefaultsWithFormData(defaults, formData, mergeExtraArrayDefaults =
|
|
|
1126
1333
|
if (isObject(formData)) {
|
|
1127
1334
|
const acc = Object.assign({}, defaults);
|
|
1128
1335
|
return Object.keys(formData).reduce((acc2, key) => {
|
|
1129
|
-
const keyValue = (0,
|
|
1336
|
+
const keyValue = (0, import_get9.default)(formData, key);
|
|
1130
1337
|
const keyExistsInDefaults = isObject(defaults) && key in defaults;
|
|
1131
1338
|
const keyExistsInFormData = key in formData;
|
|
1132
1339
|
acc2[key] = mergeDefaultsWithFormData(
|
|
1133
|
-
defaults ? (0,
|
|
1340
|
+
defaults ? (0, import_get9.default)(defaults, key) : {},
|
|
1134
1341
|
keyValue,
|
|
1135
1342
|
mergeExtraArrayDefaults,
|
|
1136
1343
|
defaultSupercedesUndefined,
|
|
@@ -1149,26 +1356,29 @@ function mergeDefaultsWithFormData(defaults, formData, mergeExtraArrayDefaults =
|
|
|
1149
1356
|
|
|
1150
1357
|
// src/mergeObjects.ts
|
|
1151
1358
|
function mergeObjects(obj1, obj2, concatArrays = false) {
|
|
1152
|
-
return Object.keys(obj2).reduce(
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1359
|
+
return Object.keys(obj2).reduce(
|
|
1360
|
+
(acc, key) => {
|
|
1361
|
+
const left = obj1 ? obj1[key] : {}, right = obj2[key];
|
|
1362
|
+
if (obj1 && key in obj1 && isObject(right)) {
|
|
1363
|
+
acc[key] = mergeObjects(left, right, concatArrays);
|
|
1364
|
+
} else if (concatArrays && Array.isArray(left) && Array.isArray(right)) {
|
|
1365
|
+
let toMerge = right;
|
|
1366
|
+
if (concatArrays === "preventDuplicates") {
|
|
1367
|
+
toMerge = right.reduce((result, value) => {
|
|
1368
|
+
if (!left.includes(value)) {
|
|
1369
|
+
result.push(value);
|
|
1370
|
+
}
|
|
1371
|
+
return result;
|
|
1372
|
+
}, []);
|
|
1373
|
+
}
|
|
1374
|
+
acc[key] = left.concat(toMerge);
|
|
1375
|
+
} else {
|
|
1376
|
+
acc[key] = right;
|
|
1165
1377
|
}
|
|
1166
|
-
acc
|
|
1167
|
-
}
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
return acc;
|
|
1171
|
-
}, Object.assign({}, obj1));
|
|
1378
|
+
return acc;
|
|
1379
|
+
},
|
|
1380
|
+
Object.assign({}, obj1)
|
|
1381
|
+
);
|
|
1172
1382
|
}
|
|
1173
1383
|
|
|
1174
1384
|
// src/isConstant.ts
|
|
@@ -1198,13 +1408,16 @@ function isMultiSelect(validator, schema, rootSchema, experimental_customMergeAl
|
|
|
1198
1408
|
}
|
|
1199
1409
|
|
|
1200
1410
|
// src/constIsAjvDataReference.ts
|
|
1201
|
-
var import_isString3 = __toESM(require("lodash/isString"));
|
|
1411
|
+
var import_isString3 = __toESM(require("lodash/isString"), 1);
|
|
1202
1412
|
function constIsAjvDataReference(schema) {
|
|
1203
1413
|
const schemaConst = schema[CONST_KEY];
|
|
1204
1414
|
const schemaType = getSchemaType(schema);
|
|
1205
1415
|
return isObject(schemaConst) && (0, import_isString3.default)(schemaConst?.$data) && schemaType !== "object" && schemaType !== "array";
|
|
1206
1416
|
}
|
|
1207
1417
|
|
|
1418
|
+
// src/optionsList.ts
|
|
1419
|
+
var import_get10 = __toESM(require("lodash/get"), 1);
|
|
1420
|
+
|
|
1208
1421
|
// src/toConstant.ts
|
|
1209
1422
|
function toConstant(schema) {
|
|
1210
1423
|
if (ENUM_KEY in schema && Array.isArray(schema.enum) && schema.enum.length === 1) {
|
|
@@ -1218,21 +1431,12 @@ function toConstant(schema) {
|
|
|
1218
1431
|
|
|
1219
1432
|
// src/optionsList.ts
|
|
1220
1433
|
function optionsList(schema, uiSchema) {
|
|
1221
|
-
const schemaWithEnumNames = schema;
|
|
1222
1434
|
if (schema.enum) {
|
|
1223
1435
|
let enumNames;
|
|
1224
1436
|
if (uiSchema) {
|
|
1225
1437
|
const { enumNames: uiEnumNames } = getUiOptions(uiSchema);
|
|
1226
1438
|
enumNames = uiEnumNames;
|
|
1227
1439
|
}
|
|
1228
|
-
if (!enumNames && schemaWithEnumNames.enumNames) {
|
|
1229
|
-
if (true) {
|
|
1230
|
-
console.warn(
|
|
1231
|
-
'The "enumNames" property in the schema is deprecated and will be removed in a future major release. Use the "ui:enumNames" property in the uiSchema instead.'
|
|
1232
|
-
);
|
|
1233
|
-
}
|
|
1234
|
-
enumNames = schemaWithEnumNames.enumNames;
|
|
1235
|
-
}
|
|
1236
1440
|
return schema.enum.map((value, i) => {
|
|
1237
1441
|
const label = enumNames?.[i] || String(value);
|
|
1238
1442
|
return { label, value };
|
|
@@ -1247,11 +1451,24 @@ function optionsList(schema, uiSchema) {
|
|
|
1247
1451
|
altSchemas = schema.oneOf;
|
|
1248
1452
|
altUiSchemas = uiSchema?.oneOf;
|
|
1249
1453
|
}
|
|
1454
|
+
let selectorField = getDiscriminatorFieldFromSchema(schema);
|
|
1455
|
+
if (uiSchema) {
|
|
1456
|
+
const { optionsSchemaSelector = selectorField } = getUiOptions(uiSchema);
|
|
1457
|
+
selectorField = optionsSchemaSelector;
|
|
1458
|
+
}
|
|
1250
1459
|
return altSchemas && altSchemas.map((aSchemaDef, index) => {
|
|
1251
1460
|
const { title } = getUiOptions(altUiSchemas?.[index]);
|
|
1252
1461
|
const aSchema = aSchemaDef;
|
|
1253
|
-
|
|
1254
|
-
|
|
1462
|
+
let value;
|
|
1463
|
+
let label = title;
|
|
1464
|
+
if (selectorField) {
|
|
1465
|
+
const innerSchema = (0, import_get10.default)(aSchema, [PROPERTIES_KEY, selectorField], {});
|
|
1466
|
+
value = (0, import_get10.default)(innerSchema, DEFAULT_KEY, (0, import_get10.default)(innerSchema, CONST_KEY));
|
|
1467
|
+
label = label || innerSchema?.title || aSchema.title || String(value);
|
|
1468
|
+
} else {
|
|
1469
|
+
value = toConstant(aSchema);
|
|
1470
|
+
label = label || aSchema.title || String(value);
|
|
1471
|
+
}
|
|
1255
1472
|
return {
|
|
1256
1473
|
schema: aSchema,
|
|
1257
1474
|
label,
|
|
@@ -1286,10 +1503,10 @@ function maybeAddDefaultToObject(obj, key, computedDefault, includeUndefinedValu
|
|
|
1286
1503
|
const isSelfOrParentRequired = isParentRequired === void 0 ? requiredFields.includes(key) : isParentRequired;
|
|
1287
1504
|
if (isObject(computedDefault)) {
|
|
1288
1505
|
if (emptyObjectFields === "skipEmptyDefaults") {
|
|
1289
|
-
if (!(0,
|
|
1506
|
+
if (!(0, import_isEmpty3.default)(computedDefault)) {
|
|
1290
1507
|
obj[key] = computedDefault;
|
|
1291
1508
|
}
|
|
1292
|
-
} else if ((!(0,
|
|
1509
|
+
} else if ((!(0, import_isEmpty3.default)(computedDefault) || requiredFields.includes(key)) && (isSelfOrParentRequired || emptyObjectFields !== "populateRequiredDefaults")) {
|
|
1293
1510
|
obj[key] = computedDefault;
|
|
1294
1511
|
}
|
|
1295
1512
|
} else if (
|
|
@@ -1473,7 +1690,7 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1473
1690
|
const parentConst = retrievedSchema[CONST_KEY];
|
|
1474
1691
|
const objectDefaults = Object.keys(retrievedSchema.properties || {}).reduce(
|
|
1475
1692
|
(acc, key) => {
|
|
1476
|
-
const propertySchema = (0,
|
|
1693
|
+
const propertySchema = (0, import_get11.default)(retrievedSchema, [PROPERTIES_KEY, key], {});
|
|
1477
1694
|
const hasParentConst = isObject(parentConst) && parentConst[key] !== void 0;
|
|
1478
1695
|
const hasConst = (isObject(propertySchema) && CONST_KEY in propertySchema || hasParentConst) && experimental_defaultFormStateBehavior?.constAsDefaults !== "never" && !constIsAjvDataReference(propertySchema);
|
|
1479
1696
|
const computedDefault = computeDefaults(validator, propertySchema, {
|
|
@@ -1482,8 +1699,8 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1482
1699
|
experimental_defaultFormStateBehavior,
|
|
1483
1700
|
experimental_customMergeAllOf,
|
|
1484
1701
|
includeUndefinedValues: includeUndefinedValues === true,
|
|
1485
|
-
parentDefaults: (0,
|
|
1486
|
-
rawFormData: (0,
|
|
1702
|
+
parentDefaults: (0, import_get11.default)(defaults, [key]),
|
|
1703
|
+
rawFormData: (0, import_get11.default)(formData, [key]),
|
|
1487
1704
|
required: retrievedSchema.required?.includes(key),
|
|
1488
1705
|
shouldMergeDefaultsIntoFormData
|
|
1489
1706
|
});
|
|
@@ -1519,8 +1736,8 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1519
1736
|
experimental_defaultFormStateBehavior,
|
|
1520
1737
|
experimental_customMergeAllOf,
|
|
1521
1738
|
includeUndefinedValues: includeUndefinedValues === true,
|
|
1522
|
-
parentDefaults: (0,
|
|
1523
|
-
rawFormData: (0,
|
|
1739
|
+
parentDefaults: (0, import_get11.default)(defaults, [key]),
|
|
1740
|
+
rawFormData: (0, import_get11.default)(formData, [key]),
|
|
1524
1741
|
required: retrievedSchema.required?.includes(key),
|
|
1525
1742
|
shouldMergeDefaultsIntoFormData
|
|
1526
1743
|
});
|
|
@@ -1581,7 +1798,7 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1581
1798
|
experimental_defaultFormStateBehavior,
|
|
1582
1799
|
experimental_customMergeAllOf,
|
|
1583
1800
|
rawFormData: item,
|
|
1584
|
-
parentDefaults: (0,
|
|
1801
|
+
parentDefaults: (0, import_get11.default)(defaults, [idx]),
|
|
1585
1802
|
required,
|
|
1586
1803
|
shouldMergeDefaultsIntoFormData
|
|
1587
1804
|
});
|
|
@@ -1621,6 +1838,7 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1621
1838
|
}
|
|
1622
1839
|
function getDefaultBasedOnSchemaType(validator, rawSchema, computeDefaultsProps = {}, defaults) {
|
|
1623
1840
|
switch (getSchemaType(rawSchema)) {
|
|
1841
|
+
// We need to recurse for object schema inner default values.
|
|
1624
1842
|
case "object": {
|
|
1625
1843
|
return getObjectDefaults(validator, rawSchema, computeDefaultsProps, defaults);
|
|
1626
1844
|
}
|
|
@@ -1707,45 +1925,29 @@ function getDisplayLabel(validator, schema, uiSchema = {}, rootSchema, globalOpt
|
|
|
1707
1925
|
return displayLabel;
|
|
1708
1926
|
}
|
|
1709
1927
|
|
|
1710
|
-
// src/schema/mergeValidationData.ts
|
|
1711
|
-
var import_isEmpty2 = __toESM(require("lodash/isEmpty"));
|
|
1712
|
-
function mergeValidationData(validator, validationData, additionalErrorSchema) {
|
|
1713
|
-
if (!additionalErrorSchema) {
|
|
1714
|
-
return validationData;
|
|
1715
|
-
}
|
|
1716
|
-
const { errors: oldErrors, errorSchema: oldErrorSchema } = validationData;
|
|
1717
|
-
let errors = validator.toErrorList(additionalErrorSchema);
|
|
1718
|
-
let errorSchema = additionalErrorSchema;
|
|
1719
|
-
if (!(0, import_isEmpty2.default)(oldErrorSchema)) {
|
|
1720
|
-
errorSchema = mergeObjects(oldErrorSchema, additionalErrorSchema, true);
|
|
1721
|
-
errors = [...oldErrors].concat(errors);
|
|
1722
|
-
}
|
|
1723
|
-
return { errorSchema, errors };
|
|
1724
|
-
}
|
|
1725
|
-
|
|
1726
1928
|
// src/schema/sanitizeDataForNewSchema.ts
|
|
1727
|
-
var
|
|
1728
|
-
var
|
|
1929
|
+
var import_get12 = __toESM(require("lodash/get"), 1);
|
|
1930
|
+
var import_has5 = __toESM(require("lodash/has"), 1);
|
|
1729
1931
|
var NO_VALUE = Symbol("no Value");
|
|
1730
1932
|
function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, data = {}, experimental_customMergeAllOf) {
|
|
1731
1933
|
let newFormData;
|
|
1732
|
-
if ((0,
|
|
1934
|
+
if ((0, import_has5.default)(newSchema, PROPERTIES_KEY)) {
|
|
1733
1935
|
const removeOldSchemaData = {};
|
|
1734
|
-
if ((0,
|
|
1735
|
-
const properties = (0,
|
|
1936
|
+
if ((0, import_has5.default)(oldSchema, PROPERTIES_KEY)) {
|
|
1937
|
+
const properties = (0, import_get12.default)(oldSchema, PROPERTIES_KEY, {});
|
|
1736
1938
|
Object.keys(properties).forEach((key) => {
|
|
1737
|
-
if ((0,
|
|
1939
|
+
if ((0, import_has5.default)(data, key)) {
|
|
1738
1940
|
removeOldSchemaData[key] = void 0;
|
|
1739
1941
|
}
|
|
1740
1942
|
});
|
|
1741
1943
|
}
|
|
1742
|
-
const keys2 = Object.keys((0,
|
|
1944
|
+
const keys2 = Object.keys((0, import_get12.default)(newSchema, PROPERTIES_KEY, {}));
|
|
1743
1945
|
const nestedData = {};
|
|
1744
1946
|
keys2.forEach((key) => {
|
|
1745
|
-
const formValue = (0,
|
|
1746
|
-
let oldKeyedSchema = (0,
|
|
1747
|
-
let newKeyedSchema = (0,
|
|
1748
|
-
if ((0,
|
|
1947
|
+
const formValue = (0, import_get12.default)(data, key);
|
|
1948
|
+
let oldKeyedSchema = (0, import_get12.default)(oldSchema, [PROPERTIES_KEY, key], {});
|
|
1949
|
+
let newKeyedSchema = (0, import_get12.default)(newSchema, [PROPERTIES_KEY, key], {});
|
|
1950
|
+
if ((0, import_has5.default)(oldKeyedSchema, REF_KEY)) {
|
|
1749
1951
|
oldKeyedSchema = retrieveSchema(
|
|
1750
1952
|
validator,
|
|
1751
1953
|
oldKeyedSchema,
|
|
@@ -1754,7 +1956,7 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
1754
1956
|
experimental_customMergeAllOf
|
|
1755
1957
|
);
|
|
1756
1958
|
}
|
|
1757
|
-
if ((0,
|
|
1959
|
+
if ((0, import_has5.default)(newKeyedSchema, REF_KEY)) {
|
|
1758
1960
|
newKeyedSchema = retrieveSchema(
|
|
1759
1961
|
validator,
|
|
1760
1962
|
newKeyedSchema,
|
|
@@ -1763,10 +1965,10 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
1763
1965
|
experimental_customMergeAllOf
|
|
1764
1966
|
);
|
|
1765
1967
|
}
|
|
1766
|
-
const oldSchemaTypeForKey = (0,
|
|
1767
|
-
const newSchemaTypeForKey = (0,
|
|
1968
|
+
const oldSchemaTypeForKey = (0, import_get12.default)(oldKeyedSchema, "type");
|
|
1969
|
+
const newSchemaTypeForKey = (0, import_get12.default)(newKeyedSchema, "type");
|
|
1768
1970
|
if (!oldSchemaTypeForKey || oldSchemaTypeForKey === newSchemaTypeForKey) {
|
|
1769
|
-
if ((0,
|
|
1971
|
+
if ((0, import_has5.default)(removeOldSchemaData, key)) {
|
|
1770
1972
|
delete removeOldSchemaData[key];
|
|
1771
1973
|
}
|
|
1772
1974
|
if (newSchemaTypeForKey === "object" || newSchemaTypeForKey === "array" && Array.isArray(formValue)) {
|
|
@@ -1782,17 +1984,17 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
1782
1984
|
nestedData[key] = itemData;
|
|
1783
1985
|
}
|
|
1784
1986
|
} else {
|
|
1785
|
-
const newOptionDefault = (0,
|
|
1786
|
-
const oldOptionDefault = (0,
|
|
1987
|
+
const newOptionDefault = (0, import_get12.default)(newKeyedSchema, "default", NO_VALUE);
|
|
1988
|
+
const oldOptionDefault = (0, import_get12.default)(oldKeyedSchema, "default", NO_VALUE);
|
|
1787
1989
|
if (newOptionDefault !== NO_VALUE && newOptionDefault !== formValue) {
|
|
1788
1990
|
if (oldOptionDefault === formValue) {
|
|
1789
1991
|
removeOldSchemaData[key] = newOptionDefault;
|
|
1790
|
-
} else if ((0,
|
|
1992
|
+
} else if ((0, import_get12.default)(newKeyedSchema, "readOnly") === true) {
|
|
1791
1993
|
removeOldSchemaData[key] = void 0;
|
|
1792
1994
|
}
|
|
1793
1995
|
}
|
|
1794
|
-
const newOptionConst = (0,
|
|
1795
|
-
const oldOptionConst = (0,
|
|
1996
|
+
const newOptionConst = (0, import_get12.default)(newKeyedSchema, "const", NO_VALUE);
|
|
1997
|
+
const oldOptionConst = (0, import_get12.default)(oldKeyedSchema, "const", NO_VALUE);
|
|
1796
1998
|
if (newOptionConst !== NO_VALUE && newOptionConst !== formValue) {
|
|
1797
1999
|
removeOldSchemaData[key] = oldOptionConst === formValue ? newOptionConst : void 0;
|
|
1798
2000
|
}
|
|
@@ -1804,11 +2006,11 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
1804
2006
|
...removeOldSchemaData,
|
|
1805
2007
|
...nestedData
|
|
1806
2008
|
};
|
|
1807
|
-
} else if ((0,
|
|
1808
|
-
let oldSchemaItems = (0,
|
|
1809
|
-
let newSchemaItems = (0,
|
|
2009
|
+
} else if ((0, import_get12.default)(oldSchema, "type") === "array" && (0, import_get12.default)(newSchema, "type") === "array" && Array.isArray(data)) {
|
|
2010
|
+
let oldSchemaItems = (0, import_get12.default)(oldSchema, "items");
|
|
2011
|
+
let newSchemaItems = (0, import_get12.default)(newSchema, "items");
|
|
1810
2012
|
if (typeof oldSchemaItems === "object" && typeof newSchemaItems === "object" && !Array.isArray(oldSchemaItems) && !Array.isArray(newSchemaItems)) {
|
|
1811
|
-
if ((0,
|
|
2013
|
+
if ((0, import_has5.default)(oldSchemaItems, REF_KEY)) {
|
|
1812
2014
|
oldSchemaItems = retrieveSchema(
|
|
1813
2015
|
validator,
|
|
1814
2016
|
oldSchemaItems,
|
|
@@ -1817,7 +2019,7 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
1817
2019
|
experimental_customMergeAllOf
|
|
1818
2020
|
);
|
|
1819
2021
|
}
|
|
1820
|
-
if ((0,
|
|
2022
|
+
if ((0, import_has5.default)(newSchemaItems, REF_KEY)) {
|
|
1821
2023
|
newSchemaItems = retrieveSchema(
|
|
1822
2024
|
validator,
|
|
1823
2025
|
newSchemaItems,
|
|
@@ -1826,10 +2028,10 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
1826
2028
|
experimental_customMergeAllOf
|
|
1827
2029
|
);
|
|
1828
2030
|
}
|
|
1829
|
-
const oldSchemaType = (0,
|
|
1830
|
-
const newSchemaType = (0,
|
|
2031
|
+
const oldSchemaType = (0, import_get12.default)(oldSchemaItems, "type");
|
|
2032
|
+
const newSchemaType = (0, import_get12.default)(newSchemaItems, "type");
|
|
1831
2033
|
if (!oldSchemaType || oldSchemaType === newSchemaType) {
|
|
1832
|
-
const maxItems = (0,
|
|
2034
|
+
const maxItems = (0, import_get12.default)(newSchema, "maxItems", -1);
|
|
1833
2035
|
if (newSchemaType === "object") {
|
|
1834
2036
|
newFormData = data.reduce((newValue, aValue) => {
|
|
1835
2037
|
const itemValue = sanitizeDataForNewSchema(
|
|
@@ -1857,58 +2059,60 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
1857
2059
|
}
|
|
1858
2060
|
|
|
1859
2061
|
// src/schema/toIdSchema.ts
|
|
1860
|
-
var
|
|
2062
|
+
var import_get13 = __toESM(require("lodash/get"), 1);
|
|
1861
2063
|
function toIdSchemaInternal(validator, schema, idPrefix, idSeparator, id, rootSchema, formData, _recurseList = [], experimental_customMergeAllOf) {
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
if (
|
|
2064
|
+
const $id = id || idPrefix;
|
|
2065
|
+
const idSchema = { $id };
|
|
2066
|
+
if (typeof schema === "object") {
|
|
2067
|
+
if (REF_KEY in schema || DEPENDENCIES_KEY in schema || ALL_OF_KEY in schema) {
|
|
2068
|
+
const _schema = retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf);
|
|
2069
|
+
const sameSchemaIndex = _recurseList.findIndex((item) => deepEquals(item, _schema));
|
|
2070
|
+
if (sameSchemaIndex === -1) {
|
|
2071
|
+
return toIdSchemaInternal(
|
|
2072
|
+
validator,
|
|
2073
|
+
_schema,
|
|
2074
|
+
idPrefix,
|
|
2075
|
+
idSeparator,
|
|
2076
|
+
id,
|
|
2077
|
+
rootSchema,
|
|
2078
|
+
formData,
|
|
2079
|
+
_recurseList.concat(_schema),
|
|
2080
|
+
experimental_customMergeAllOf
|
|
2081
|
+
);
|
|
2082
|
+
}
|
|
2083
|
+
}
|
|
2084
|
+
if (ITEMS_KEY in schema && !(0, import_get13.default)(schema, [ITEMS_KEY, REF_KEY])) {
|
|
1866
2085
|
return toIdSchemaInternal(
|
|
1867
2086
|
validator,
|
|
1868
|
-
|
|
2087
|
+
(0, import_get13.default)(schema, ITEMS_KEY),
|
|
1869
2088
|
idPrefix,
|
|
1870
2089
|
idSeparator,
|
|
1871
2090
|
id,
|
|
1872
2091
|
rootSchema,
|
|
1873
2092
|
formData,
|
|
1874
|
-
_recurseList.concat(_schema),
|
|
1875
|
-
experimental_customMergeAllOf
|
|
1876
|
-
);
|
|
1877
|
-
}
|
|
1878
|
-
}
|
|
1879
|
-
if (ITEMS_KEY in schema && !(0, import_get9.default)(schema, [ITEMS_KEY, REF_KEY])) {
|
|
1880
|
-
return toIdSchemaInternal(
|
|
1881
|
-
validator,
|
|
1882
|
-
(0, import_get9.default)(schema, ITEMS_KEY),
|
|
1883
|
-
idPrefix,
|
|
1884
|
-
idSeparator,
|
|
1885
|
-
id,
|
|
1886
|
-
rootSchema,
|
|
1887
|
-
formData,
|
|
1888
|
-
_recurseList,
|
|
1889
|
-
experimental_customMergeAllOf
|
|
1890
|
-
);
|
|
1891
|
-
}
|
|
1892
|
-
const $id = id || idPrefix;
|
|
1893
|
-
const idSchema = { $id };
|
|
1894
|
-
if (getSchemaType(schema) === "object" && PROPERTIES_KEY in schema) {
|
|
1895
|
-
for (const name in schema.properties) {
|
|
1896
|
-
const field = (0, import_get9.default)(schema, [PROPERTIES_KEY, name]);
|
|
1897
|
-
const fieldId = idSchema[ID_KEY] + idSeparator + name;
|
|
1898
|
-
idSchema[name] = toIdSchemaInternal(
|
|
1899
|
-
validator,
|
|
1900
|
-
isObject(field) ? field : {},
|
|
1901
|
-
idPrefix,
|
|
1902
|
-
idSeparator,
|
|
1903
|
-
fieldId,
|
|
1904
|
-
rootSchema,
|
|
1905
|
-
// It's possible that formData is not an object -- this can happen if an
|
|
1906
|
-
// array item has just been added, but not populated with data yet
|
|
1907
|
-
(0, import_get9.default)(formData, [name]),
|
|
1908
2093
|
_recurseList,
|
|
1909
2094
|
experimental_customMergeAllOf
|
|
1910
2095
|
);
|
|
1911
2096
|
}
|
|
2097
|
+
if (getSchemaType(schema) === "object" && PROPERTIES_KEY in schema) {
|
|
2098
|
+
for (const name in schema.properties) {
|
|
2099
|
+
const field = schema[PROPERTIES_KEY][name];
|
|
2100
|
+
const fieldId = idSchema[ID_KEY] + idSeparator + name;
|
|
2101
|
+
idSchema[name] = toIdSchemaInternal(
|
|
2102
|
+
validator,
|
|
2103
|
+
field,
|
|
2104
|
+
idPrefix,
|
|
2105
|
+
idSeparator,
|
|
2106
|
+
fieldId,
|
|
2107
|
+
rootSchema,
|
|
2108
|
+
// It's possible that formData is not an object -- this can happen if an
|
|
2109
|
+
// array item has just been added, but not populated with data yet
|
|
2110
|
+
(0, import_get13.default)(formData, [name]),
|
|
2111
|
+
_recurseList,
|
|
2112
|
+
experimental_customMergeAllOf
|
|
2113
|
+
);
|
|
2114
|
+
}
|
|
2115
|
+
}
|
|
1912
2116
|
}
|
|
1913
2117
|
return idSchema;
|
|
1914
2118
|
}
|
|
@@ -1927,8 +2131,8 @@ function toIdSchema(validator, schema, id, rootSchema, formData, idPrefix = "roo
|
|
|
1927
2131
|
}
|
|
1928
2132
|
|
|
1929
2133
|
// src/schema/toPathSchema.ts
|
|
1930
|
-
var
|
|
1931
|
-
var import_set2 = __toESM(require("lodash/set"));
|
|
2134
|
+
var import_get14 = __toESM(require("lodash/get"), 1);
|
|
2135
|
+
var import_set2 = __toESM(require("lodash/set"), 1);
|
|
1932
2136
|
function toPathSchemaInternal(validator, schema, name, rootSchema, formData, _recurseList = [], experimental_customMergeAllOf) {
|
|
1933
2137
|
if (REF_KEY in schema || DEPENDENCIES_KEY in schema || ALL_OF_KEY in schema) {
|
|
1934
2138
|
const _schema = retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf);
|
|
@@ -2020,7 +2224,7 @@ function toPathSchemaInternal(validator, schema, name, rootSchema, formData, _re
|
|
|
2020
2224
|
}
|
|
2021
2225
|
} else if (PROPERTIES_KEY in schema) {
|
|
2022
2226
|
for (const property in schema.properties) {
|
|
2023
|
-
const field = (0,
|
|
2227
|
+
const field = (0, import_get14.default)(schema, [PROPERTIES_KEY, property], {});
|
|
2024
2228
|
pathSchema[property] = toPathSchemaInternal(
|
|
2025
2229
|
validator,
|
|
2026
2230
|
field,
|
|
@@ -2028,7 +2232,7 @@ function toPathSchemaInternal(validator, schema, name, rootSchema, formData, _re
|
|
|
2028
2232
|
rootSchema,
|
|
2029
2233
|
// It's possible that formData is not an object -- this can happen if an
|
|
2030
2234
|
// array item has just been added, but not populated with data yet
|
|
2031
|
-
(0,
|
|
2235
|
+
(0, import_get14.default)(formData, [property]),
|
|
2032
2236
|
_recurseList,
|
|
2033
2237
|
experimental_customMergeAllOf
|
|
2034
2238
|
);
|
|
@@ -2078,6 +2282,47 @@ var SchemaUtils = class {
|
|
|
2078
2282
|
}
|
|
2079
2283
|
return this.validator !== validator || !deepEquals(this.rootSchema, rootSchema) || !deepEquals(this.experimental_defaultFormStateBehavior, experimental_defaultFormStateBehavior) || this.experimental_customMergeAllOf !== experimental_customMergeAllOf;
|
|
2080
2284
|
}
|
|
2285
|
+
/** Finds the field specified by the `path` within the root or recursed `schema`. If there is no field for the specified
|
|
2286
|
+
* `path`, then the default `{ field: undefined, isRequired: undefined }` is returned. It determines whether a leaf
|
|
2287
|
+
* field is in the `required` list for its parent and if so, it is marked as required on return.
|
|
2288
|
+
*
|
|
2289
|
+
* @param schema - The current node within the JSON schema
|
|
2290
|
+
* @param path - The remaining keys in the path to the desired field
|
|
2291
|
+
* @param [formData] - The form data that is used to determine which oneOf option
|
|
2292
|
+
* @returns - An object that contains the field and its required state. If no field can be found then
|
|
2293
|
+
* `{ field: undefined, isRequired: undefined }` is returned.
|
|
2294
|
+
*/
|
|
2295
|
+
findFieldInSchema(schema, path, formData) {
|
|
2296
|
+
return findFieldInSchema(
|
|
2297
|
+
this.validator,
|
|
2298
|
+
this.rootSchema,
|
|
2299
|
+
schema,
|
|
2300
|
+
path,
|
|
2301
|
+
formData,
|
|
2302
|
+
this.experimental_customMergeAllOf
|
|
2303
|
+
);
|
|
2304
|
+
}
|
|
2305
|
+
/** Finds the oneOf option inside the `schema['any/oneOf']` list which has the `properties[selectorField].default` that
|
|
2306
|
+
* matches the `formData[selectorField]` value. For the purposes of this function, `selectorField` is either
|
|
2307
|
+
* `schema.discriminator.propertyName` or `fallbackField`.
|
|
2308
|
+
*
|
|
2309
|
+
* @param schema - The schema element in which to search for the selected oneOf option
|
|
2310
|
+
* @param fallbackField - The field to use as a backup selector field if the schema does not have a required field
|
|
2311
|
+
* @param xxx - Either `oneOf` or `anyOf`, defines which value is being sought
|
|
2312
|
+
* @param [formData={}] - The form data that is used to determine which oneOf option
|
|
2313
|
+
* @returns - The anyOf/oneOf option that matches the selector field in the schema or undefined if nothing is selected
|
|
2314
|
+
*/
|
|
2315
|
+
findSelectedOptionInXxxOf(schema, fallbackField, xxx, formData) {
|
|
2316
|
+
return findSelectedOptionInXxxOf(
|
|
2317
|
+
this.validator,
|
|
2318
|
+
this.rootSchema,
|
|
2319
|
+
schema,
|
|
2320
|
+
fallbackField,
|
|
2321
|
+
xxx,
|
|
2322
|
+
formData,
|
|
2323
|
+
this.experimental_customMergeAllOf
|
|
2324
|
+
);
|
|
2325
|
+
}
|
|
2081
2326
|
/** Returns the superset of `formData` that includes the given set updated to include any missing fields that have
|
|
2082
2327
|
* computed to have defaults provided in the `schema`.
|
|
2083
2328
|
*
|
|
@@ -2153,18 +2398,16 @@ var SchemaUtils = class {
|
|
|
2153
2398
|
getFirstMatchingOption(formData, options, discriminatorField) {
|
|
2154
2399
|
return getFirstMatchingOption(this.validator, formData, options, this.rootSchema, discriminatorField);
|
|
2155
2400
|
}
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
getMatchingOption(formData, options, discriminatorField) {
|
|
2167
|
-
return getMatchingOption(this.validator, formData, options, this.rootSchema, discriminatorField);
|
|
2401
|
+
getFromSchema(schema, path, defaultValue) {
|
|
2402
|
+
return getFromSchema(
|
|
2403
|
+
this.validator,
|
|
2404
|
+
this.rootSchema,
|
|
2405
|
+
schema,
|
|
2406
|
+
path,
|
|
2407
|
+
// @ts-expect-error TS2769: No overload matches this call
|
|
2408
|
+
defaultValue,
|
|
2409
|
+
this.experimental_customMergeAllOf
|
|
2410
|
+
);
|
|
2168
2411
|
}
|
|
2169
2412
|
/** Checks to see if the `schema` and `uiSchema` combination represents an array of files
|
|
2170
2413
|
*
|
|
@@ -2191,20 +2434,6 @@ var SchemaUtils = class {
|
|
|
2191
2434
|
isSelect(schema) {
|
|
2192
2435
|
return isSelect(this.validator, schema, this.rootSchema, this.experimental_customMergeAllOf);
|
|
2193
2436
|
}
|
|
2194
|
-
/** Merges the errors in `additionalErrorSchema` into the existing `validationData` by combining the hierarchies in
|
|
2195
|
-
* the two `ErrorSchema`s and then appending the error list from the `additionalErrorSchema` obtained by calling
|
|
2196
|
-
* `getValidator().toErrorList()` onto the `errors` in the `validationData`. If no `additionalErrorSchema` is passed,
|
|
2197
|
-
* then `validationData` is returned.
|
|
2198
|
-
*
|
|
2199
|
-
* @param validationData - The current `ValidationData` into which to merge the additional errors
|
|
2200
|
-
* @param [additionalErrorSchema] - The additional set of errors
|
|
2201
|
-
* @returns - The `validationData` with the additional errors from `additionalErrorSchema` merged into it, if provided.
|
|
2202
|
-
* @deprecated - Use the `validationDataMerge()` function exported from `@rjsf/utils` instead. This function will be
|
|
2203
|
-
* removed in the next major release.
|
|
2204
|
-
*/
|
|
2205
|
-
mergeValidationData(validationData, additionalErrorSchema) {
|
|
2206
|
-
return mergeValidationData(this.validator, validationData, additionalErrorSchema);
|
|
2207
|
-
}
|
|
2208
2437
|
/** Retrieves an expanded schema that has had all of its conditions, additional properties, references and
|
|
2209
2438
|
* dependencies resolved and merged into the `schema` given a `rawFormData` that is used to do the potentially
|
|
2210
2439
|
* recursive resolution.
|
|
@@ -2407,7 +2636,7 @@ function enumOptionsIndexForValue(value, allEnumOptions = [], multiple = false)
|
|
|
2407
2636
|
}
|
|
2408
2637
|
|
|
2409
2638
|
// src/enumOptionsSelectValue.ts
|
|
2410
|
-
var import_isNil2 = __toESM(require("lodash/isNil"));
|
|
2639
|
+
var import_isNil2 = __toESM(require("lodash/isNil"), 1);
|
|
2411
2640
|
function enumOptionsSelectValue(valueIndex, selected, allEnumOptions = []) {
|
|
2412
2641
|
const value = enumOptionsValueForIndex(valueIndex, allEnumOptions);
|
|
2413
2642
|
if (!(0, import_isNil2.default)(value)) {
|
|
@@ -2420,10 +2649,10 @@ function enumOptionsSelectValue(valueIndex, selected, allEnumOptions = []) {
|
|
|
2420
2649
|
}
|
|
2421
2650
|
|
|
2422
2651
|
// src/ErrorSchemaBuilder.ts
|
|
2423
|
-
var import_cloneDeep = __toESM(require("lodash/cloneDeep"));
|
|
2424
|
-
var
|
|
2425
|
-
var import_set3 = __toESM(require("lodash/set"));
|
|
2426
|
-
var import_setWith = __toESM(require("lodash/setWith"));
|
|
2652
|
+
var import_cloneDeep = __toESM(require("lodash/cloneDeep"), 1);
|
|
2653
|
+
var import_get15 = __toESM(require("lodash/get"), 1);
|
|
2654
|
+
var import_set3 = __toESM(require("lodash/set"), 1);
|
|
2655
|
+
var import_setWith = __toESM(require("lodash/setWith"), 1);
|
|
2427
2656
|
var ErrorSchemaBuilder = class {
|
|
2428
2657
|
/** Construct an `ErrorSchemaBuilder` with an optional initial set of errors in an `ErrorSchema`.
|
|
2429
2658
|
*
|
|
@@ -2450,7 +2679,7 @@ var ErrorSchemaBuilder = class {
|
|
|
2450
2679
|
*/
|
|
2451
2680
|
getOrCreateErrorBlock(pathOfError) {
|
|
2452
2681
|
const hasPath = Array.isArray(pathOfError) && pathOfError.length > 0 || typeof pathOfError === "string";
|
|
2453
|
-
let errorBlock = hasPath ? (0,
|
|
2682
|
+
let errorBlock = hasPath ? (0, import_get15.default)(this.errorSchema, pathOfError) : this.errorSchema;
|
|
2454
2683
|
if (!errorBlock && pathOfError) {
|
|
2455
2684
|
errorBlock = {};
|
|
2456
2685
|
(0, import_setWith.default)(this.errorSchema, pathOfError, errorBlock, Object);
|
|
@@ -2476,7 +2705,7 @@ var ErrorSchemaBuilder = class {
|
|
|
2476
2705
|
*/
|
|
2477
2706
|
addErrors(errorOrList, pathOfError) {
|
|
2478
2707
|
const errorBlock = this.getOrCreateErrorBlock(pathOfError);
|
|
2479
|
-
let errorsList = (0,
|
|
2708
|
+
let errorsList = (0, import_get15.default)(errorBlock, ERRORS_KEY);
|
|
2480
2709
|
if (!Array.isArray(errorsList)) {
|
|
2481
2710
|
errorsList = [];
|
|
2482
2711
|
errorBlock[ERRORS_KEY] = errorsList;
|
|
@@ -2612,6 +2841,10 @@ function getTemplate(name, registry, uiOptions = {}) {
|
|
|
2612
2841
|
if (name === "ButtonTemplates") {
|
|
2613
2842
|
return templates[name];
|
|
2614
2843
|
}
|
|
2844
|
+
if (Object.hasOwn(uiOptions, name) && typeof uiOptions[name] === "string" && Object.hasOwn(templates, uiOptions[name])) {
|
|
2845
|
+
const key = uiOptions[name];
|
|
2846
|
+
return templates[key];
|
|
2847
|
+
}
|
|
2615
2848
|
return (
|
|
2616
2849
|
// Evaluating uiOptions[name] results in TS2590: Expression produces a union type that is too complex to represent
|
|
2617
2850
|
// To avoid that, we cast uiOptions to `any` before accessing the name field
|
|
@@ -2619,11 +2852,32 @@ function getTemplate(name, registry, uiOptions = {}) {
|
|
|
2619
2852
|
);
|
|
2620
2853
|
}
|
|
2621
2854
|
|
|
2855
|
+
// src/getTestIds.ts
|
|
2856
|
+
var import_nanoid = require("nanoid");
|
|
2857
|
+
var import_get16 = __toESM(require("lodash/get"), 1);
|
|
2858
|
+
function getTestIds() {
|
|
2859
|
+
if (typeof process === "undefined" || (0, import_get16.default)(process, "env.NODE_ENV") !== "test") {
|
|
2860
|
+
return {};
|
|
2861
|
+
}
|
|
2862
|
+
const ids = /* @__PURE__ */ new Map();
|
|
2863
|
+
return new Proxy(
|
|
2864
|
+
{},
|
|
2865
|
+
{
|
|
2866
|
+
get(_obj, prop) {
|
|
2867
|
+
if (!ids.has(prop)) {
|
|
2868
|
+
ids.set(prop, (0, import_nanoid.nanoid)());
|
|
2869
|
+
}
|
|
2870
|
+
return ids.get(prop);
|
|
2871
|
+
}
|
|
2872
|
+
}
|
|
2873
|
+
);
|
|
2874
|
+
}
|
|
2875
|
+
|
|
2622
2876
|
// src/getWidget.tsx
|
|
2623
2877
|
var import_react = require("react");
|
|
2624
|
-
var import_react_is = __toESM(require("react-is"));
|
|
2625
|
-
var
|
|
2626
|
-
var import_set4 = __toESM(require("lodash/set"));
|
|
2878
|
+
var import_react_is = __toESM(require("react-is"), 1);
|
|
2879
|
+
var import_get17 = __toESM(require("lodash/get"), 1);
|
|
2880
|
+
var import_set4 = __toESM(require("lodash/set"), 1);
|
|
2627
2881
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
2628
2882
|
var widgetMap = {
|
|
2629
2883
|
boolean: {
|
|
@@ -2678,7 +2932,7 @@ var widgetMap = {
|
|
|
2678
2932
|
}
|
|
2679
2933
|
};
|
|
2680
2934
|
function mergeWidgetOptions(AWidget) {
|
|
2681
|
-
let MergedWidget = (0,
|
|
2935
|
+
let MergedWidget = (0, import_get17.default)(AWidget, "MergedWidget");
|
|
2682
2936
|
if (!MergedWidget) {
|
|
2683
2937
|
const defaultOptions = AWidget.defaultProps && AWidget.defaultProps.options || {};
|
|
2684
2938
|
MergedWidget = ({ options, ...props }) => {
|
|
@@ -2722,10 +2976,16 @@ function hashString(string) {
|
|
|
2722
2976
|
}
|
|
2723
2977
|
return hash.toString(16);
|
|
2724
2978
|
}
|
|
2725
|
-
function
|
|
2979
|
+
function sortedJSONStringify(object) {
|
|
2726
2980
|
const allKeys = /* @__PURE__ */ new Set();
|
|
2727
|
-
JSON.stringify(
|
|
2728
|
-
return
|
|
2981
|
+
JSON.stringify(object, (key, value) => (allKeys.add(key), value));
|
|
2982
|
+
return JSON.stringify(object, Array.from(allKeys).sort());
|
|
2983
|
+
}
|
|
2984
|
+
function hashObject(object) {
|
|
2985
|
+
return hashString(sortedJSONStringify(object));
|
|
2986
|
+
}
|
|
2987
|
+
function hashForSchema(schema) {
|
|
2988
|
+
return hashObject(schema);
|
|
2729
2989
|
}
|
|
2730
2990
|
|
|
2731
2991
|
// src/hasWidget.ts
|
|
@@ -2743,7 +3003,7 @@ function hasWidget(schema, widget, registeredWidgets = {}) {
|
|
|
2743
3003
|
}
|
|
2744
3004
|
|
|
2745
3005
|
// src/idGenerators.ts
|
|
2746
|
-
var import_isString4 = __toESM(require("lodash/isString"));
|
|
3006
|
+
var import_isString4 = __toESM(require("lodash/isString"), 1);
|
|
2747
3007
|
function idGenerator(id, suffix) {
|
|
2748
3008
|
const theId = (0, import_isString4.default)(id) ? id : id[ID_KEY];
|
|
2749
3009
|
return `${theId}__${suffix}`;
|
|
@@ -2770,6 +3030,9 @@ function ariaDescribedByIds(id, includeExamples = false) {
|
|
|
2770
3030
|
function optionId(id, optionIndex) {
|
|
2771
3031
|
return `${id}-${optionIndex}`;
|
|
2772
3032
|
}
|
|
3033
|
+
function buttonId(id, btn) {
|
|
3034
|
+
return idGenerator(id, btn);
|
|
3035
|
+
}
|
|
2773
3036
|
|
|
2774
3037
|
// src/labelValue.ts
|
|
2775
3038
|
function labelValue(label, hideLabel, fallback) {
|
|
@@ -2781,6 +3044,17 @@ function localToUTC(dateString) {
|
|
|
2781
3044
|
return dateString ? new Date(dateString).toJSON() : void 0;
|
|
2782
3045
|
}
|
|
2783
3046
|
|
|
3047
|
+
// src/lookupFromFormContext.ts
|
|
3048
|
+
var import_get18 = __toESM(require("lodash/get"), 1);
|
|
3049
|
+
var import_has6 = __toESM(require("lodash/has"), 1);
|
|
3050
|
+
function lookupFromFormContext(regOrFc, toLookup, fallback) {
|
|
3051
|
+
const lookupPath = [LOOKUP_MAP_NAME];
|
|
3052
|
+
if ((0, import_has6.default)(regOrFc, FORM_CONTEXT_NAME)) {
|
|
3053
|
+
lookupPath.unshift(FORM_CONTEXT_NAME);
|
|
3054
|
+
}
|
|
3055
|
+
return (0, import_get18.default)(regOrFc, [...lookupPath, toLookup], fallback);
|
|
3056
|
+
}
|
|
3057
|
+
|
|
2784
3058
|
// src/orderProperties.ts
|
|
2785
3059
|
function orderProperties(properties, order) {
|
|
2786
3060
|
if (!Array.isArray(order)) {
|
|
@@ -2873,7 +3147,7 @@ function toDateString(dateObject, time = true) {
|
|
|
2873
3147
|
}
|
|
2874
3148
|
|
|
2875
3149
|
// src/toErrorList.ts
|
|
2876
|
-
var import_isPlainObject2 = __toESM(require("lodash/isPlainObject"));
|
|
3150
|
+
var import_isPlainObject2 = __toESM(require("lodash/isPlainObject"), 1);
|
|
2877
3151
|
function toErrorList(errorSchema, fieldPath = []) {
|
|
2878
3152
|
if (!errorSchema) {
|
|
2879
3153
|
return [];
|
|
@@ -2903,7 +3177,7 @@ function toErrorList(errorSchema, fieldPath = []) {
|
|
|
2903
3177
|
}
|
|
2904
3178
|
|
|
2905
3179
|
// src/toErrorSchema.ts
|
|
2906
|
-
var import_toPath = __toESM(require("lodash/toPath"));
|
|
3180
|
+
var import_toPath = __toESM(require("lodash/toPath"), 1);
|
|
2907
3181
|
function toErrorSchema(errors) {
|
|
2908
3182
|
const builder = new ErrorSchemaBuilder();
|
|
2909
3183
|
if (errors.length) {
|
|
@@ -2922,7 +3196,7 @@ function toErrorSchema(errors) {
|
|
|
2922
3196
|
}
|
|
2923
3197
|
|
|
2924
3198
|
// src/unwrapErrorHandler.ts
|
|
2925
|
-
var import_isPlainObject3 = __toESM(require("lodash/isPlainObject"));
|
|
3199
|
+
var import_isPlainObject3 = __toESM(require("lodash/isPlainObject"), 1);
|
|
2926
3200
|
function unwrapErrorHandler(errorHandler) {
|
|
2927
3201
|
return Object.keys(errorHandler).reduce((acc, key) => {
|
|
2928
3202
|
if (key === "addError") {
|
|
@@ -2957,7 +3231,7 @@ function utcToLocal(jsonDate) {
|
|
|
2957
3231
|
}
|
|
2958
3232
|
|
|
2959
3233
|
// src/validationDataMerge.ts
|
|
2960
|
-
var
|
|
3234
|
+
var import_isEmpty4 = __toESM(require("lodash/isEmpty"), 1);
|
|
2961
3235
|
function validationDataMerge(validationData, additionalErrorSchema) {
|
|
2962
3236
|
if (!additionalErrorSchema) {
|
|
2963
3237
|
return validationData;
|
|
@@ -2965,7 +3239,7 @@ function validationDataMerge(validationData, additionalErrorSchema) {
|
|
|
2965
3239
|
const { errors: oldErrors, errorSchema: oldErrorSchema } = validationData;
|
|
2966
3240
|
let errors = toErrorList(additionalErrorSchema);
|
|
2967
3241
|
let errorSchema = additionalErrorSchema;
|
|
2968
|
-
if (!(0,
|
|
3242
|
+
if (!(0, import_isEmpty4.default)(oldErrorSchema)) {
|
|
2969
3243
|
errorSchema = mergeObjects(oldErrorSchema, additionalErrorSchema, true);
|
|
2970
3244
|
errors = [...oldErrors].concat(errors);
|
|
2971
3245
|
}
|
|
@@ -2973,7 +3247,7 @@ function validationDataMerge(validationData, additionalErrorSchema) {
|
|
|
2973
3247
|
}
|
|
2974
3248
|
|
|
2975
3249
|
// src/withIdRefPrefix.ts
|
|
2976
|
-
var
|
|
3250
|
+
var import_isObject10 = __toESM(require("lodash/isObject"), 1);
|
|
2977
3251
|
function withIdRefPrefixObject(node) {
|
|
2978
3252
|
for (const key in node) {
|
|
2979
3253
|
const realObj = node;
|
|
@@ -2996,18 +3270,18 @@ function withIdRefPrefix(schemaNode) {
|
|
|
2996
3270
|
if (Array.isArray(schemaNode)) {
|
|
2997
3271
|
return withIdRefPrefixArray([...schemaNode]);
|
|
2998
3272
|
}
|
|
2999
|
-
if ((0,
|
|
3273
|
+
if ((0, import_isObject10.default)(schemaNode)) {
|
|
3000
3274
|
return withIdRefPrefixObject({ ...schemaNode });
|
|
3001
3275
|
}
|
|
3002
3276
|
return schemaNode;
|
|
3003
3277
|
}
|
|
3004
3278
|
|
|
3005
3279
|
// src/getChangedFields.ts
|
|
3006
|
-
var import_keys = __toESM(require("lodash/keys"));
|
|
3007
|
-
var import_pickBy = __toESM(require("lodash/pickBy"));
|
|
3008
|
-
var import_isPlainObject4 = __toESM(require("lodash/isPlainObject"));
|
|
3009
|
-
var
|
|
3010
|
-
var import_difference = __toESM(require("lodash/difference"));
|
|
3280
|
+
var import_keys = __toESM(require("lodash/keys"), 1);
|
|
3281
|
+
var import_pickBy = __toESM(require("lodash/pickBy"), 1);
|
|
3282
|
+
var import_isPlainObject4 = __toESM(require("lodash/isPlainObject"), 1);
|
|
3283
|
+
var import_get19 = __toESM(require("lodash/get"), 1);
|
|
3284
|
+
var import_difference = __toESM(require("lodash/difference"), 1);
|
|
3011
3285
|
function getChangedFields(a, b) {
|
|
3012
3286
|
const aIsPlainObject = (0, import_isPlainObject4.default)(a);
|
|
3013
3287
|
const bIsPlainObject = (0, import_isPlainObject4.default)(b);
|
|
@@ -3019,7 +3293,7 @@ function getChangedFields(a, b) {
|
|
|
3019
3293
|
} else if (!aIsPlainObject && bIsPlainObject) {
|
|
3020
3294
|
return (0, import_keys.default)(b);
|
|
3021
3295
|
} else {
|
|
3022
|
-
const unequalFields = (0, import_keys.default)((0, import_pickBy.default)(a, (value, key) => !deepEquals(value, (0,
|
|
3296
|
+
const unequalFields = (0, import_keys.default)((0, import_pickBy.default)(a, (value, key) => !deepEquals(value, (0, import_get19.default)(b, key))));
|
|
3023
3297
|
const diffFields = (0, import_difference.default)((0, import_keys.default)(b), (0, import_keys.default)(a));
|
|
3024
3298
|
return [...unequalFields, ...diffFields];
|
|
3025
3299
|
}
|
|
@@ -3029,6 +3303,7 @@ function getChangedFields(a, b) {
|
|
|
3029
3303
|
var TranslatableString = /* @__PURE__ */ ((TranslatableString2) => {
|
|
3030
3304
|
TranslatableString2["ArrayItemTitle"] = "Item";
|
|
3031
3305
|
TranslatableString2["MissingItems"] = "Missing items definition";
|
|
3306
|
+
TranslatableString2["EmptyArray"] = "No items yet. Use the button below to add some.";
|
|
3032
3307
|
TranslatableString2["YesLabel"] = "Yes";
|
|
3033
3308
|
TranslatableString2["NoLabel"] = "No";
|
|
3034
3309
|
TranslatableString2["CloseLabel"] = "Close";
|
|
@@ -3060,10 +3335,10 @@ var TranslatableString = /* @__PURE__ */ ((TranslatableString2) => {
|
|
|
3060
3335
|
})(TranslatableString || {});
|
|
3061
3336
|
|
|
3062
3337
|
// src/parser/schemaParser.ts
|
|
3063
|
-
var import_forEach = __toESM(require("lodash/forEach"));
|
|
3338
|
+
var import_forEach = __toESM(require("lodash/forEach"), 1);
|
|
3064
3339
|
|
|
3065
3340
|
// src/parser/ParserValidator.ts
|
|
3066
|
-
var
|
|
3341
|
+
var import_get20 = __toESM(require("lodash/get"), 1);
|
|
3067
3342
|
var ParserValidator = class {
|
|
3068
3343
|
/** Construct the ParserValidator for the given `rootSchema`. This `rootSchema` will be stashed in the `schemaMap`
|
|
3069
3344
|
* first.
|
|
@@ -3089,7 +3364,7 @@ var ParserValidator = class {
|
|
|
3089
3364
|
* @param hash - The hash value at which to map the schema
|
|
3090
3365
|
*/
|
|
3091
3366
|
addSchema(schema, hash) {
|
|
3092
|
-
const key = (0,
|
|
3367
|
+
const key = (0, import_get20.default)(schema, ID_KEY, hash);
|
|
3093
3368
|
const identifiedSchema = { ...schema, [ID_KEY]: key };
|
|
3094
3369
|
const existing = this.schemaMap[key];
|
|
3095
3370
|
if (!existing) {
|