@rjsf/utils 6.6.1 → 6.7.0
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/LICENSE.md +201 -0
- package/dist/index.cjs +534 -376
- package/dist/index.cjs.map +4 -4
- package/dist/utils.esm.js +534 -376
- package/dist/utils.esm.js.map +4 -4
- package/dist/utils.umd.js +561 -400
- package/lib/ErrorSchemaBuilder.d.ts +1 -1
- package/lib/SelectedOptionDescription.d.ts +4 -0
- package/lib/SelectedOptionDescription.js +24 -0
- package/lib/SelectedOptionDescription.js.map +1 -0
- package/lib/allowAdditionalItems.d.ts +1 -1
- package/lib/allowAdditionalItems.js +1 -0
- package/lib/allowAdditionalItems.js.map +1 -1
- package/lib/asNumber.js +2 -0
- package/lib/asNumber.js.map +1 -1
- package/lib/canExpand.d.ts +1 -1
- package/lib/constIsAjvDataReference.d.ts +1 -1
- package/lib/constants.d.ts +8 -5
- package/lib/constants.js +10 -7
- package/lib/constants.js.map +1 -1
- package/lib/createErrorHandler.d.ts +1 -1
- package/lib/createErrorHandler.js +2 -6
- package/lib/createErrorHandler.js.map +1 -1
- package/lib/createSchemaUtils.d.ts +1 -1
- package/lib/createSchemaUtils.js +3 -1
- package/lib/createSchemaUtils.js.map +1 -1
- package/lib/dataURItoBlob.js +3 -3
- package/lib/dataURItoBlob.js.map +1 -1
- package/lib/dateRangeOptions.d.ts +1 -1
- package/lib/dateRangeOptions.js +8 -7
- package/lib/dateRangeOptions.js.map +1 -1
- package/lib/englishStringTranslator.d.ts +1 -1
- package/lib/enumOptionSelectedValue.d.ts +1 -1
- package/lib/enumOptionValueDecoder.d.ts +1 -1
- package/lib/enumOptionValueDecoder.js +1 -1
- package/lib/enumOptionValueDecoder.js.map +1 -1
- package/lib/enumOptionValueEncoder.d.ts +1 -1
- package/lib/enumOptionsDeselectValue.d.ts +1 -1
- package/lib/enumOptionsIndexForValue.d.ts +1 -1
- package/lib/enumOptionsIndexForValue.js.map +1 -1
- package/lib/enumOptionsIsSelected.d.ts +1 -1
- package/lib/enumOptionsSelectValue.d.ts +1 -1
- package/lib/enumOptionsValueForIndex.d.ts +2 -2
- package/lib/enumOptionsValueForIndex.js.map +1 -1
- package/lib/enums.d.ts +4 -0
- package/lib/enums.js +4 -0
- package/lib/enums.js.map +1 -1
- package/lib/findSchemaDefinition.d.ts +1 -1
- package/lib/findSchemaDefinition.js +15 -15
- package/lib/findSchemaDefinition.js.map +1 -1
- package/lib/getChangedFields.js +4 -6
- package/lib/getChangedFields.js.map +1 -1
- package/lib/getDateElementProps.d.ts +3 -3
- package/lib/getDiscriminatorFieldFromSchema.d.ts +1 -1
- package/lib/getDiscriminatorFieldFromSchema.js +1 -0
- package/lib/getDiscriminatorFieldFromSchema.js.map +1 -1
- package/lib/getInputProps.d.ts +1 -1
- package/lib/getOptionMatchingSimpleDiscriminator.d.ts +1 -1
- package/lib/getOptionMatchingSimpleDiscriminator.js +10 -11
- package/lib/getOptionMatchingSimpleDiscriminator.js.map +1 -1
- package/lib/getOptionValueFormat.d.ts +1 -1
- package/lib/getSchemaType.d.ts +1 -1
- package/lib/getSchemaType.js +2 -1
- package/lib/getSchemaType.js.map +1 -1
- package/lib/getSubmitButtonOptions.d.ts +1 -1
- package/lib/getSubmitButtonOptions.js +1 -1
- package/lib/getSubmitButtonOptions.js.map +1 -1
- package/lib/getTemplate.d.ts +1 -1
- package/lib/getTestIds.d.ts +1 -1
- package/lib/getUiOptions.d.ts +1 -1
- package/lib/getUiOptions.js +2 -1
- package/lib/getUiOptions.js.map +1 -1
- package/lib/getWidget.d.ts +1 -1
- package/lib/getWidget.js +4 -4
- package/lib/getWidget.js.map +1 -1
- package/lib/guessType.js +1 -1
- package/lib/guessType.js.map +1 -1
- package/lib/hasWidget.d.ts +1 -1
- package/lib/hashForSchema.d.ts +3 -1
- package/lib/hashForSchema.js +11 -4
- package/lib/hashForSchema.js.map +1 -1
- package/lib/idGenerators.d.ts +1 -1
- package/lib/index.d.ts +14 -7
- package/lib/index.js +5 -2
- package/lib/index.js.map +1 -1
- package/lib/isConstant.d.ts +1 -1
- package/lib/isCustomWidget.d.ts +1 -1
- package/lib/isCustomWidget.js +1 -1
- package/lib/isCustomWidget.js.map +1 -1
- package/lib/isFixedItems.d.ts +3 -3
- package/lib/isFixedItems.js +3 -3
- package/lib/isFixedItems.js.map +1 -1
- package/lib/isRootSchema.d.ts +1 -1
- package/lib/isRootSchema.js +2 -3
- package/lib/isRootSchema.js.map +1 -1
- package/lib/labelValue.d.ts +1 -1
- package/lib/logUnsupportedDefaultForEnum.d.ts +9 -0
- package/lib/logUnsupportedDefaultForEnum.js +18 -0
- package/lib/logUnsupportedDefaultForEnum.js.map +1 -0
- package/lib/lookupFromFormContext.d.ts +1 -1
- package/lib/mergeDefaultsWithFormData.js +6 -5
- package/lib/mergeDefaultsWithFormData.js.map +1 -1
- package/lib/mergeObjects.d.ts +4 -2
- package/lib/mergeObjects.js +1 -1
- package/lib/mergeObjects.js.map +1 -1
- package/lib/mergeSchemas.d.ts +4 -2
- package/lib/mergeSchemas.js +13 -6
- package/lib/mergeSchemas.js.map +1 -1
- package/lib/nameGenerators.d.ts +1 -1
- package/lib/optionsList.d.ts +1 -1
- package/lib/optionsList.js +22 -21
- package/lib/optionsList.js.map +1 -1
- package/lib/orderProperties.js +3 -3
- package/lib/orderProperties.js.map +1 -1
- package/lib/pad.js +1 -1
- package/lib/pad.js.map +1 -1
- package/lib/parseDateString.d.ts +1 -1
- package/lib/parseDateString.js +1 -1
- package/lib/parseDateString.js.map +1 -1
- package/lib/parser/ParserValidator.d.ts +2 -4
- package/lib/parser/ParserValidator.js +2 -0
- package/lib/parser/ParserValidator.js.map +1 -1
- package/lib/parser/index.d.ts +1 -1
- package/lib/parser/schemaParser.d.ts +2 -2
- package/lib/parser/schemaParser.js +7 -7
- package/lib/parser/schemaParser.js.map +1 -1
- package/lib/rangeSpec.d.ts +1 -2
- package/lib/rangeSpec.js.map +1 -1
- package/lib/removeOptionalEmptyObjects.d.ts +1 -1
- package/lib/removeOptionalEmptyObjects.js +6 -8
- package/lib/removeOptionalEmptyObjects.js.map +1 -1
- package/lib/resolveUiSchema.d.ts +1 -1
- package/lib/resolveUiSchema.js +16 -16
- package/lib/resolveUiSchema.js.map +1 -1
- package/lib/schema/findFieldInSchema.d.ts +1 -1
- package/lib/schema/findSelectedOptionInXxxOf.d.ts +1 -1
- package/lib/schema/findSelectedOptionInXxxOf.js +1 -3
- package/lib/schema/findSelectedOptionInXxxOf.js.map +1 -1
- package/lib/schema/getClosestMatchingOption.d.ts +1 -1
- package/lib/schema/getClosestMatchingOption.js +6 -9
- package/lib/schema/getClosestMatchingOption.js.map +1 -1
- package/lib/schema/getDefaultFormState.d.ts +4 -4
- package/lib/schema/getDefaultFormState.js +81 -43
- package/lib/schema/getDefaultFormState.js.map +1 -1
- package/lib/schema/getDisplayLabel.d.ts +1 -1
- package/lib/schema/getDisplayLabel.js +2 -3
- package/lib/schema/getDisplayLabel.js.map +1 -1
- package/lib/schema/getFirstMatchingOption.d.ts +1 -1
- package/lib/schema/getFirstMatchingOption.js +2 -2
- package/lib/schema/getFirstMatchingOption.js.map +1 -1
- package/lib/schema/getFromSchema.d.ts +1 -1
- package/lib/schema/index.js +9 -3
- package/lib/schema/index.js.map +1 -1
- package/lib/schema/isFilesArray.d.ts +1 -1
- package/lib/schema/isMultiSelect.d.ts +1 -1
- package/lib/schema/isMultiSelect.js.map +1 -1
- package/lib/schema/isSelect.d.ts +1 -1
- package/lib/schema/isSelect.js +1 -1
- package/lib/schema/isSelect.js.map +1 -1
- package/lib/schema/omitExtraData.d.ts +1 -1
- package/lib/schema/omitExtraData.js +66 -52
- package/lib/schema/omitExtraData.js.map +1 -1
- package/lib/schema/retrieveSchema.d.ts +7 -3
- package/lib/schema/retrieveSchema.js +83 -56
- package/lib/schema/retrieveSchema.js.map +1 -1
- package/lib/schema/sanitizeDataForNewSchema.d.ts +1 -1
- package/lib/schema/sanitizeDataForNewSchema.js +48 -7
- package/lib/schema/sanitizeDataForNewSchema.js.map +1 -1
- package/lib/schema/toPathSchema.d.ts +1 -1
- package/lib/schema/toPathSchema.js +9 -5
- package/lib/schema/toPathSchema.js.map +1 -1
- package/lib/schemaRequiresTrueValue.d.ts +1 -1
- package/lib/schemaRequiresTrueValue.js +4 -3
- package/lib/schemaRequiresTrueValue.js.map +1 -1
- package/lib/shallowEquals.js +2 -2
- package/lib/shallowEquals.js.map +1 -1
- package/lib/shouldRenderOptionalField.d.ts +1 -1
- package/lib/toConstant.d.ts +1 -1
- package/lib/toDateString.d.ts +1 -1
- package/lib/toErrorList.d.ts +1 -1
- package/lib/toErrorList.js +3 -3
- package/lib/toErrorList.js.map +1 -1
- package/lib/toErrorSchema.d.ts +1 -1
- package/lib/toFieldPathId.d.ts +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types.d.ts +63 -57
- package/lib/unwrapErrorHandler.d.ts +1 -1
- package/lib/unwrapErrorHandler.js +7 -9
- package/lib/unwrapErrorHandler.js.map +1 -1
- package/lib/useAltDateWidgetProps.d.ts +6 -6
- package/lib/useAltDateWidgetProps.js +3 -3
- package/lib/useAltDateWidgetProps.js.map +1 -1
- package/lib/useFileWidgetProps.d.ts +2 -2
- package/lib/useFileWidgetProps.js +3 -3
- package/lib/useFileWidgetProps.js.map +1 -1
- package/lib/validationDataMerge.d.ts +1 -1
- package/lib/withIdRefPrefix.d.ts +1 -1
- package/lib/withIdRefPrefix.js +12 -12
- package/lib/withIdRefPrefix.js.map +1 -1
- package/package.json +19 -19
- package/src/ErrorSchemaBuilder.ts +1 -1
- package/src/SelectedOptionDescription.tsx +48 -0
- package/src/allowAdditionalItems.ts +2 -1
- package/src/asNumber.ts +2 -0
- package/src/canExpand.ts +1 -1
- package/src/constIsAjvDataReference.ts +2 -2
- package/src/constants.ts +10 -7
- package/src/createErrorHandler.ts +6 -7
- package/src/createSchemaUtils.ts +4 -2
- package/src/dataURItoBlob.ts +3 -3
- package/src/dateRangeOptions.ts +9 -7
- package/src/englishStringTranslator.ts +1 -1
- package/src/enumOptionSelectedValue.ts +1 -1
- package/src/enumOptionValueDecoder.ts +2 -2
- package/src/enumOptionValueEncoder.ts +1 -1
- package/src/enumOptionsDeselectValue.ts +1 -1
- package/src/enumOptionsIndexForValue.ts +2 -2
- package/src/enumOptionsIsSelected.ts +1 -1
- package/src/enumOptionsSelectValue.ts +1 -1
- package/src/enumOptionsValueForIndex.ts +2 -2
- package/src/enums.ts +4 -0
- package/src/findSchemaDefinition.ts +18 -17
- package/src/getChangedFields.ts +5 -5
- package/src/getDateElementProps.ts +3 -3
- package/src/getDiscriminatorFieldFromSchema.ts +2 -1
- package/src/getInputProps.ts +1 -1
- package/src/getOptionMatchingSimpleDiscriminator.ts +11 -15
- package/src/getOptionValueFormat.ts +1 -1
- package/src/getSchemaType.ts +3 -2
- package/src/getSubmitButtonOptions.ts +3 -3
- package/src/getTemplate.ts +1 -1
- package/src/getTestIds.ts +1 -1
- package/src/getUiOptions.ts +10 -2
- package/src/getWidget.tsx +5 -6
- package/src/guessType.ts +1 -1
- package/src/hasWidget.ts +1 -1
- package/src/hashForSchema.ts +12 -5
- package/src/idGenerators.ts +1 -1
- package/src/index.ts +16 -5
- package/src/isConstant.ts +1 -1
- package/src/isCustomWidget.ts +2 -2
- package/src/isFixedItems.ts +4 -4
- package/src/isRootSchema.ts +3 -5
- package/src/labelValue.ts +1 -1
- package/src/logUnsupportedDefaultForEnum.ts +28 -0
- package/src/lookupFromFormContext.ts +1 -1
- package/src/mergeDefaultsWithFormData.ts +8 -7
- package/src/mergeObjects.ts +2 -2
- package/src/mergeSchemas.ts +14 -7
- package/src/nameGenerators.ts +1 -1
- package/src/optionsList.ts +21 -23
- package/src/orderProperties.ts +4 -4
- package/src/pad.ts +1 -1
- package/src/parseDateString.ts +2 -2
- package/src/parser/ParserValidator.ts +4 -4
- package/src/parser/index.ts +1 -1
- package/src/parser/schemaParser.ts +10 -9
- package/src/rangeSpec.ts +1 -2
- package/src/removeOptionalEmptyObjects.ts +8 -11
- package/src/resolveUiSchema.ts +32 -25
- package/src/schema/findFieldInSchema.ts +1 -1
- package/src/schema/findSelectedOptionInXxxOf.ts +17 -7
- package/src/schema/getClosestMatchingOption.ts +17 -11
- package/src/schema/getDefaultFormState.ts +104 -43
- package/src/schema/getDisplayLabel.ts +4 -5
- package/src/schema/getFirstMatchingOption.ts +3 -3
- package/src/schema/getFromSchema.ts +1 -1
- package/src/schema/index.ts +3 -0
- package/src/schema/isFilesArray.ts +1 -1
- package/src/schema/isMultiSelect.ts +7 -1
- package/src/schema/isSelect.ts +8 -2
- package/src/schema/omitExtraData.ts +73 -60
- package/src/schema/retrieveSchema.ts +131 -83
- package/src/schema/sanitizeDataForNewSchema.ts +57 -8
- package/src/schema/toPathSchema.ts +11 -7
- package/src/schemaRequiresTrueValue.ts +4 -4
- package/src/shallowEquals.ts +2 -2
- package/src/shouldRenderOptionalField.ts +1 -1
- package/src/toConstant.ts +1 -1
- package/src/toDateString.ts +1 -1
- package/src/toErrorList.ts +4 -4
- package/src/toErrorSchema.ts +1 -1
- package/src/toFieldPathId.ts +1 -1
- package/src/types.ts +92 -63
- package/src/unwrapErrorHandler.ts +11 -12
- package/src/useAltDateWidgetProps.tsx +10 -8
- package/src/useFileWidgetProps.ts +7 -7
- package/src/validationDataMerge.ts +1 -1
- package/src/withIdRefPrefix.ts +12 -12
package/dist/utils.umd.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
2
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('lodash/isPlainObject'), require('lodash/get'), require('fast-equals'), require('fast-uri'), require('jsonpointer'), require('lodash/isEmpty'), require('lodash/isObject'), require('lodash/omit'), require('lodash/has'), require('lodash/isString'), require('lodash/flattenDeep'), require('lodash/merge'), require('lodash/set'), require('lodash/times'), require('lodash/transform'), require('lodash/uniq'), require('lodash/union'), require('lodash/isNumber'), require('@x0k/json-schema-merge'), require('@x0k/json-schema-merge/lib/array'), require('lodash/reduce'), require('lodash/isNil'), require('lodash/pick'), require('lodash/cloneDeep'), require('lodash/setWith'), require('lodash/difference'), require('lodash/keys'), require('lodash/pickBy'), require('lodash/uniqueId'), require('react'), require('react-is'), require('react/jsx-runtime'), require('lodash/toPath'), require('lodash/forEach')) :
|
|
3
3
|
typeof define === 'function' && define.amd ? define(['exports', 'lodash/isPlainObject', 'lodash/get', 'fast-equals', 'fast-uri', 'jsonpointer', 'lodash/isEmpty', 'lodash/isObject', 'lodash/omit', 'lodash/has', 'lodash/isString', 'lodash/flattenDeep', 'lodash/merge', 'lodash/set', 'lodash/times', 'lodash/transform', 'lodash/uniq', 'lodash/union', 'lodash/isNumber', '@x0k/json-schema-merge', '@x0k/json-schema-merge/lib/array', 'lodash/reduce', 'lodash/isNil', 'lodash/pick', 'lodash/cloneDeep', 'lodash/setWith', 'lodash/difference', 'lodash/keys', 'lodash/pickBy', 'lodash/uniqueId', 'react', 'react-is', 'react/jsx-runtime', 'lodash/toPath', 'lodash/forEach'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["@rjsf/utils"] = {}, global.isPlainObject2, global.
|
|
5
|
-
})(this, (function (exports, isPlainObject2,
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["@rjsf/utils"] = {}, global.isPlainObject2, global.get14, global.fastEquals, global.UriResolver, global.jsonpointer, global.isEmpty4, global.isObject2, global.omit, global.has5, global.isString, global.flattenDeep, global.merge, global.set3, global.times, global.transform, global.uniq, global.union, global.isNumber, global.jsonSchemaMerge, global.array, global.reduce, global.isNil, global.pick, global.cloneDeep, global.setWith, global.difference, global.keys, global.pickBy, global.uniqueId, global.react, global.ReactIs, global.jsxRuntime, global.toPath, global.forEach));
|
|
5
|
+
})(this, (function (exports, isPlainObject2, get14, fastEquals, UriResolver, jsonpointer, isEmpty4, isObject2, omit, has5, isString, flattenDeep, merge, set3, times, transform, uniq, union, isNumber, jsonSchemaMerge, array, reduce, isNil, pick, cloneDeep, setWith, difference, keys, pickBy, uniqueId, react, ReactIs, jsxRuntime, toPath, forEach) { 'use strict';
|
|
6
6
|
|
|
7
7
|
// src/isObject.ts
|
|
8
8
|
function isObject(thing) {
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
// src/constants.ts
|
|
52
|
-
var ADDITIONAL_PROPERTY_FLAG = "__additional_property";
|
|
52
|
+
var ADDITIONAL_PROPERTY_FLAG = /* @__PURE__ */ Symbol("__additional_property");
|
|
53
53
|
var ADDITIONAL_PROPERTIES_KEY = "additionalProperties";
|
|
54
54
|
var ALL_OF_KEY = "allOf";
|
|
55
55
|
var ANY_OF_KEY = "anyOf";
|
|
@@ -71,15 +71,17 @@
|
|
|
71
71
|
var REQUIRED_KEY = "required";
|
|
72
72
|
var SUBMIT_BTN_OPTIONS_KEY = "submitButtonOptions";
|
|
73
73
|
var REF_KEY = "$ref";
|
|
74
|
-
var RJSF_REF_KEY = "__rjsf_ref";
|
|
74
|
+
var RJSF_REF_KEY = /* @__PURE__ */ Symbol("__rjsf_ref");
|
|
75
|
+
var RJSF_REF_CYCLE_KEY = /* @__PURE__ */ Symbol("__rjsf_ref_cycle");
|
|
75
76
|
var SCHEMA_KEY = "$schema";
|
|
76
77
|
var DEFAULT_ID_PREFIX = "root";
|
|
77
78
|
var DEFAULT_ID_SEPARATOR = "_";
|
|
78
79
|
var DISCRIMINATOR_PATH = ["discriminator", "propertyName"];
|
|
79
80
|
var FORM_CONTEXT_NAME = "formContext";
|
|
80
81
|
var LOOKUP_MAP_NAME = "layoutGridLookupMap";
|
|
81
|
-
var
|
|
82
|
-
var
|
|
82
|
+
var RJSF_PREFIX_KEY = "__rjsf";
|
|
83
|
+
var RJSF_ADDITIONAL_PROPERTIES_FLAG = `${RJSF_PREFIX_KEY}_additionalProperties`;
|
|
84
|
+
var ROOT_SCHEMA_PREFIX = `${RJSF_PREFIX_KEY}_rootSchema`;
|
|
83
85
|
var UI_FIELD_KEY = "ui:field";
|
|
84
86
|
var UI_WIDGET_KEY = "ui:widget";
|
|
85
87
|
var UI_OPTIONS_KEY = "ui:options";
|
|
@@ -93,7 +95,7 @@
|
|
|
93
95
|
if (!uiSchema) {
|
|
94
96
|
return { ...globalOptions };
|
|
95
97
|
}
|
|
96
|
-
return Object.keys(uiSchema).filter((key) => key.
|
|
98
|
+
return Object.keys(uiSchema).filter((key) => key.startsWith("ui:")).reduce(
|
|
97
99
|
(options, key) => {
|
|
98
100
|
const value = uiSchema[key];
|
|
99
101
|
if (key === UI_WIDGET_KEY && isObject(value)) {
|
|
@@ -134,15 +136,14 @@
|
|
|
134
136
|
}
|
|
135
137
|
};
|
|
136
138
|
if (Array.isArray(formData)) {
|
|
137
|
-
return formData.reduce((acc, value, key) => {
|
|
138
|
-
return { ...acc, [key]: createErrorHandler(value) };
|
|
139
|
-
}, handler);
|
|
139
|
+
return formData.reduce((acc, value, key) => ({ ...acc, [key]: createErrorHandler(value) }), handler);
|
|
140
140
|
}
|
|
141
141
|
if (isPlainObject2(formData)) {
|
|
142
142
|
const formObject = formData;
|
|
143
|
-
return Object.keys(formObject).reduce(
|
|
144
|
-
|
|
145
|
-
|
|
143
|
+
return Object.keys(formObject).reduce(
|
|
144
|
+
(acc, key) => ({ ...acc, [key]: createErrorHandler(formObject[key]) }),
|
|
145
|
+
handler
|
|
146
|
+
);
|
|
146
147
|
}
|
|
147
148
|
return handler;
|
|
148
149
|
}
|
|
@@ -179,46 +180,48 @@
|
|
|
179
180
|
return void 0;
|
|
180
181
|
}
|
|
181
182
|
function makeAllReferencesAbsolute(schema, baseURI) {
|
|
182
|
-
const currentURI =
|
|
183
|
-
|
|
184
|
-
|
|
183
|
+
const currentURI = get14(schema, ID_KEY, baseURI);
|
|
184
|
+
let result = schema;
|
|
185
|
+
if (REF_KEY in result) {
|
|
186
|
+
result = { ...result, [REF_KEY]: UriResolver.resolve(currentURI, result[REF_KEY]) };
|
|
185
187
|
}
|
|
186
|
-
for (const [key, subSchema] of Object.entries(
|
|
188
|
+
for (const [key, subSchema] of Object.entries(result)) {
|
|
187
189
|
if (Array.isArray(subSchema)) {
|
|
188
|
-
|
|
189
|
-
...
|
|
190
|
+
result = {
|
|
191
|
+
...result,
|
|
190
192
|
[key]: subSchema.map((item) => isObject2(item) ? makeAllReferencesAbsolute(item, currentURI) : item)
|
|
191
193
|
};
|
|
192
194
|
} else if (isObject2(subSchema)) {
|
|
193
|
-
|
|
195
|
+
result = { ...result, [key]: makeAllReferencesAbsolute(subSchema, currentURI) };
|
|
194
196
|
}
|
|
195
197
|
}
|
|
196
|
-
return
|
|
198
|
+
return result;
|
|
197
199
|
}
|
|
198
200
|
function splitKeyElementFromObject(key, object) {
|
|
199
201
|
const value = object[key];
|
|
200
202
|
const remaining = omit(object, [key]);
|
|
201
203
|
return [remaining, value];
|
|
202
204
|
}
|
|
203
|
-
function findSchemaDefinitionRecursive($ref, rootSchema = {}, recurseList = [], baseURI =
|
|
205
|
+
function findSchemaDefinitionRecursive($ref, rootSchema = {}, recurseList = [], baseURI = get14(rootSchema, [ID_KEY])) {
|
|
204
206
|
const ref = $ref || "";
|
|
205
207
|
let current = void 0;
|
|
208
|
+
let currentBaseURI = baseURI;
|
|
206
209
|
if (ref.startsWith("#")) {
|
|
207
210
|
const decodedRef = decodeURIComponent(ref.substring(1));
|
|
208
|
-
if (
|
|
211
|
+
if (currentBaseURI === void 0 || ID_KEY in rootSchema && rootSchema[ID_KEY] === currentBaseURI) {
|
|
209
212
|
current = jsonpointer.get(rootSchema, decodedRef);
|
|
210
213
|
} else if (rootSchema[SCHEMA_KEY] === JSON_SCHEMA_DRAFT_2020_12) {
|
|
211
|
-
current = findEmbeddedSchemaRecursive(rootSchema,
|
|
214
|
+
current = findEmbeddedSchemaRecursive(rootSchema, currentBaseURI.replace(/\/$/, ""));
|
|
212
215
|
if (current !== void 0) {
|
|
213
216
|
current = jsonpointer.get(current, decodedRef);
|
|
214
217
|
}
|
|
215
218
|
}
|
|
216
219
|
} else if (rootSchema[SCHEMA_KEY] === JSON_SCHEMA_DRAFT_2020_12) {
|
|
217
|
-
const resolvedRef =
|
|
220
|
+
const resolvedRef = currentBaseURI ? UriResolver.resolve(currentBaseURI, ref) : ref;
|
|
218
221
|
const [refId, ...refAnchor] = resolvedRef.replace(/#\/?$/, "").split("#");
|
|
219
222
|
current = findEmbeddedSchemaRecursive(rootSchema, refId.replace(/\/$/, ""));
|
|
220
223
|
if (current !== void 0) {
|
|
221
|
-
|
|
224
|
+
currentBaseURI = current[ID_KEY];
|
|
222
225
|
if (!isEmpty4(refAnchor)) {
|
|
223
226
|
current = jsonpointer.get(current, decodeURIComponent(refAnchor.join("#")));
|
|
224
227
|
}
|
|
@@ -238,25 +241,24 @@
|
|
|
238
241
|
throw new Error(`Definition for ${firstRef} contains a circular reference through ${circularPath}`);
|
|
239
242
|
}
|
|
240
243
|
const [remaining, theRef] = splitKeyElementFromObject(REF_KEY, current);
|
|
241
|
-
const subSchema = findSchemaDefinitionRecursive(theRef, rootSchema, [...recurseList, ref],
|
|
244
|
+
const subSchema = findSchemaDefinitionRecursive(theRef, rootSchema, [...recurseList, ref], currentBaseURI);
|
|
242
245
|
if (Object.keys(remaining).length > 0) {
|
|
243
246
|
if (rootSchema[SCHEMA_KEY] === JSON_SCHEMA_DRAFT_2019_09 || rootSchema[SCHEMA_KEY] === JSON_SCHEMA_DRAFT_2020_12) {
|
|
244
247
|
return { [ALL_OF_KEY]: [remaining, subSchema] };
|
|
245
|
-
} else {
|
|
246
|
-
return { ...remaining, ...subSchema };
|
|
247
248
|
}
|
|
249
|
+
return { ...remaining, ...subSchema };
|
|
248
250
|
}
|
|
249
251
|
return subSchema;
|
|
250
252
|
}
|
|
251
253
|
return current;
|
|
252
254
|
}
|
|
253
|
-
function findSchemaDefinition($ref, rootSchema = {}, baseURI =
|
|
255
|
+
function findSchemaDefinition($ref, rootSchema = {}, baseURI = get14(rootSchema, [ID_KEY])) {
|
|
254
256
|
const recurseList = [];
|
|
255
257
|
return findSchemaDefinitionRecursive($ref, rootSchema, recurseList, baseURI);
|
|
256
258
|
}
|
|
257
259
|
function getDiscriminatorFieldFromSchema(schema) {
|
|
258
260
|
let discriminator;
|
|
259
|
-
const maybeString =
|
|
261
|
+
const maybeString = get14(schema, DISCRIMINATOR_PATH);
|
|
260
262
|
if (isString(maybeString)) {
|
|
261
263
|
discriminator = maybeString;
|
|
262
264
|
} else if (maybeString !== void 0) {
|
|
@@ -279,7 +281,7 @@
|
|
|
279
281
|
if (typeof value === "boolean") {
|
|
280
282
|
return "boolean";
|
|
281
283
|
}
|
|
282
|
-
if (!isNaN(value)) {
|
|
284
|
+
if (typeof value === "number" && !Number.isNaN(value)) {
|
|
283
285
|
return "number";
|
|
284
286
|
}
|
|
285
287
|
if (typeof value === "object") {
|
|
@@ -302,7 +304,7 @@
|
|
|
302
304
|
}
|
|
303
305
|
if (Array.isArray(type)) {
|
|
304
306
|
if (type.length === 2 && type.includes("null")) {
|
|
305
|
-
type = type.find((
|
|
307
|
+
type = type.find((t) => t !== "null");
|
|
306
308
|
} else {
|
|
307
309
|
type = type[0];
|
|
308
310
|
}
|
|
@@ -312,40 +314,43 @@
|
|
|
312
314
|
|
|
313
315
|
// src/mergeSchemas.ts
|
|
314
316
|
function mergeSchemas(obj1, obj2) {
|
|
315
|
-
const acc =
|
|
316
|
-
|
|
317
|
+
const acc = { ...obj1 };
|
|
318
|
+
const result = Object.keys(obj2).reduce((accumulator, key) => {
|
|
317
319
|
const left = obj1 ? obj1[key] : {}, right = obj2[key];
|
|
318
320
|
if (obj1 && key in obj1 && isObject(right)) {
|
|
319
|
-
|
|
321
|
+
accumulator[key] = mergeSchemas(left, right);
|
|
320
322
|
} else if (obj1 && obj2 && (getSchemaType(obj1) === "object" || getSchemaType(obj2) === "object") && key === REQUIRED_KEY && Array.isArray(left) && Array.isArray(right)) {
|
|
321
|
-
|
|
323
|
+
accumulator[key] = union(left, right);
|
|
322
324
|
} else {
|
|
323
|
-
|
|
325
|
+
accumulator[key] = right;
|
|
324
326
|
}
|
|
325
|
-
return
|
|
327
|
+
return accumulator;
|
|
326
328
|
}, acc);
|
|
329
|
+
for (const sym of Object.getOwnPropertySymbols(obj2)) {
|
|
330
|
+
result[sym] = obj2[sym];
|
|
331
|
+
}
|
|
332
|
+
return result;
|
|
327
333
|
}
|
|
328
334
|
function getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField) {
|
|
329
335
|
if (formData && discriminatorField) {
|
|
330
|
-
const value =
|
|
336
|
+
const value = get14(formData, discriminatorField);
|
|
331
337
|
if (value === void 0) {
|
|
332
|
-
return;
|
|
338
|
+
return void 0;
|
|
333
339
|
}
|
|
334
|
-
for (let i = 0; i < options.length; i
|
|
340
|
+
for (let i = 0; i < options.length; i += 1) {
|
|
335
341
|
const option = options[i];
|
|
336
|
-
const discriminator =
|
|
337
|
-
if (discriminator.type
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
return i;
|
|
342
|
+
const discriminator = get14(option, [PROPERTIES_KEY, discriminatorField], {});
|
|
343
|
+
if (discriminator.type !== "object" && discriminator.type !== "array") {
|
|
344
|
+
if (discriminator.const === value) {
|
|
345
|
+
return i;
|
|
346
|
+
}
|
|
347
|
+
if (discriminator.enum?.includes(value)) {
|
|
348
|
+
return i;
|
|
349
|
+
}
|
|
345
350
|
}
|
|
346
351
|
}
|
|
347
352
|
}
|
|
348
|
-
return;
|
|
353
|
+
return void 0;
|
|
349
354
|
}
|
|
350
355
|
|
|
351
356
|
// src/schema/getFirstMatchingOption.ts
|
|
@@ -357,11 +362,11 @@
|
|
|
357
362
|
if (isNumber(simpleDiscriminatorMatch)) {
|
|
358
363
|
return simpleDiscriminatorMatch;
|
|
359
364
|
}
|
|
360
|
-
for (let i = 0; i < options.length; i
|
|
365
|
+
for (let i = 0; i < options.length; i += 1) {
|
|
361
366
|
const option = options[i];
|
|
362
367
|
if (discriminatorField && has5(option, [PROPERTIES_KEY, discriminatorField])) {
|
|
363
|
-
const value =
|
|
364
|
-
const discriminator =
|
|
368
|
+
const value = get14(formData, discriminatorField);
|
|
369
|
+
const discriminator = get14(option, [PROPERTIES_KEY, discriminatorField], {});
|
|
365
370
|
if (validator.isValid(discriminator, value, rootSchema)) {
|
|
366
371
|
return i;
|
|
367
372
|
}
|
|
@@ -382,7 +387,7 @@
|
|
|
382
387
|
shallowClone.allOf.push(requiresAnyOf);
|
|
383
388
|
augmentedSchema = shallowClone;
|
|
384
389
|
} else {
|
|
385
|
-
augmentedSchema =
|
|
390
|
+
augmentedSchema = { ...option, ...requiresAnyOf };
|
|
386
391
|
}
|
|
387
392
|
delete augmentedSchema.required;
|
|
388
393
|
if (validator.isValid(augmentedSchema, formData, rootSchema)) {
|
|
@@ -414,6 +419,12 @@
|
|
|
414
419
|
resolveAnyOfOrOneOfRefs
|
|
415
420
|
)[0];
|
|
416
421
|
}
|
|
422
|
+
function normalizeBooleanSchema(schema) {
|
|
423
|
+
if (typeof schema !== "boolean") {
|
|
424
|
+
return schema;
|
|
425
|
+
}
|
|
426
|
+
return schema ? {} : { not: {} };
|
|
427
|
+
}
|
|
417
428
|
function resolveCondition(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
418
429
|
const { if: expression, then, else: otherwise, ...resolvedSchemaLessConditional } = schema;
|
|
419
430
|
const conditionValue = validator.isValid(expression, formData || {}, rootSchema);
|
|
@@ -421,10 +432,11 @@
|
|
|
421
432
|
let schemas = [];
|
|
422
433
|
if (expandAllBranches) {
|
|
423
434
|
if (then && typeof then !== "boolean") {
|
|
435
|
+
const thenSchema = then;
|
|
424
436
|
schemas = schemas.concat(
|
|
425
437
|
retrieveSchemaInternal(
|
|
426
438
|
validator,
|
|
427
|
-
|
|
439
|
+
thenSchema,
|
|
428
440
|
rootSchema,
|
|
429
441
|
formData,
|
|
430
442
|
expandAllBranches,
|
|
@@ -434,10 +446,11 @@
|
|
|
434
446
|
);
|
|
435
447
|
}
|
|
436
448
|
if (otherwise && typeof otherwise !== "boolean") {
|
|
449
|
+
const otherwiseSchema = otherwise;
|
|
437
450
|
schemas = schemas.concat(
|
|
438
451
|
retrieveSchemaInternal(
|
|
439
452
|
validator,
|
|
440
|
-
|
|
453
|
+
otherwiseSchema,
|
|
441
454
|
rootSchema,
|
|
442
455
|
formData,
|
|
443
456
|
expandAllBranches,
|
|
@@ -447,8 +460,9 @@
|
|
|
447
460
|
);
|
|
448
461
|
}
|
|
449
462
|
} else {
|
|
450
|
-
const
|
|
451
|
-
if (
|
|
463
|
+
const conditionalBranch = conditionValue ? then : otherwise;
|
|
464
|
+
if (conditionalBranch !== void 0) {
|
|
465
|
+
const conditionalSchema = normalizeBooleanSchema(conditionalBranch);
|
|
452
466
|
schemas = schemas.concat(
|
|
453
467
|
retrieveSchemaInternal(
|
|
454
468
|
validator,
|
|
@@ -494,7 +508,7 @@
|
|
|
494
508
|
function getMatchingPatternProperties(schema, key) {
|
|
495
509
|
return Object.keys(schema.patternProperties).filter((pattern) => RegExp(pattern).test(key)).reduce(
|
|
496
510
|
(obj, pattern) => {
|
|
497
|
-
|
|
511
|
+
set3(obj, [pattern], schema.patternProperties[pattern]);
|
|
498
512
|
return obj;
|
|
499
513
|
},
|
|
500
514
|
{}
|
|
@@ -524,8 +538,8 @@
|
|
|
524
538
|
formData,
|
|
525
539
|
experimental_customMergeAllOf
|
|
526
540
|
);
|
|
527
|
-
return resolvedSchemas.flatMap(
|
|
528
|
-
|
|
541
|
+
return resolvedSchemas.flatMap(
|
|
542
|
+
(s) => retrieveSchemaInternal(
|
|
529
543
|
validator,
|
|
530
544
|
s,
|
|
531
545
|
rootSchema,
|
|
@@ -533,8 +547,8 @@
|
|
|
533
547
|
expandAllBranches,
|
|
534
548
|
recurseList,
|
|
535
549
|
experimental_customMergeAllOf
|
|
536
|
-
)
|
|
537
|
-
|
|
550
|
+
)
|
|
551
|
+
);
|
|
538
552
|
}
|
|
539
553
|
if (ALL_OF_KEY in schema && Array.isArray(schema[ALL_OF_KEY])) {
|
|
540
554
|
const allOfSchemaElements = schema.allOf.map(
|
|
@@ -572,30 +586,38 @@
|
|
|
572
586
|
}
|
|
573
587
|
return [schema];
|
|
574
588
|
}
|
|
575
|
-
function resolveAllReferences(schema, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs) {
|
|
589
|
+
function resolveAllReferences(schema, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs, markCycleOnDetection = false) {
|
|
576
590
|
if (!isObject(schema)) {
|
|
577
591
|
return schema;
|
|
578
592
|
}
|
|
579
593
|
let resolvedSchema = schema;
|
|
594
|
+
let currentBaseURI = baseURI;
|
|
580
595
|
if (REF_KEY in resolvedSchema) {
|
|
581
596
|
const { $ref, ...localSchema } = resolvedSchema;
|
|
582
597
|
if (recurseList.includes($ref)) {
|
|
583
|
-
return resolvedSchema;
|
|
598
|
+
return markCycleOnDetection ? { ...resolvedSchema, [RJSF_REF_CYCLE_KEY]: true } : resolvedSchema;
|
|
584
599
|
}
|
|
585
600
|
recurseList.push($ref);
|
|
586
|
-
const refSchema = findSchemaDefinition($ref, rootSchema,
|
|
601
|
+
const refSchema = findSchemaDefinition($ref, rootSchema, currentBaseURI);
|
|
587
602
|
resolvedSchema = { ...refSchema, ...localSchema, [RJSF_REF_KEY]: $ref };
|
|
588
603
|
if (ID_KEY in resolvedSchema) {
|
|
589
|
-
|
|
604
|
+
currentBaseURI = resolvedSchema[ID_KEY];
|
|
590
605
|
}
|
|
591
606
|
}
|
|
592
607
|
if (PROPERTIES_KEY in resolvedSchema) {
|
|
593
608
|
const childrenLists = [];
|
|
594
609
|
const updatedProps = transform(
|
|
595
610
|
resolvedSchema[PROPERTIES_KEY],
|
|
596
|
-
(
|
|
611
|
+
(acc, value, key) => {
|
|
597
612
|
const childList = [...recurseList];
|
|
598
|
-
|
|
613
|
+
acc[key] = resolveAllReferences(
|
|
614
|
+
value,
|
|
615
|
+
rootSchema,
|
|
616
|
+
childList,
|
|
617
|
+
currentBaseURI,
|
|
618
|
+
resolveAnyOfOrOneOfRefs,
|
|
619
|
+
!resolveAnyOfOrOneOfRefs
|
|
620
|
+
);
|
|
599
621
|
childrenLists.push(childList);
|
|
600
622
|
},
|
|
601
623
|
{}
|
|
@@ -606,7 +628,14 @@
|
|
|
606
628
|
if (ITEMS_KEY in resolvedSchema && !Array.isArray(resolvedSchema.items) && typeof resolvedSchema.items !== "boolean") {
|
|
607
629
|
resolvedSchema = {
|
|
608
630
|
...resolvedSchema,
|
|
609
|
-
|
|
631
|
+
// Array items are only rendered when data exists, so a $ref cycle here does NOT cause an infinite render.
|
|
632
|
+
items: resolveAllReferences(
|
|
633
|
+
resolvedSchema.items,
|
|
634
|
+
rootSchema,
|
|
635
|
+
recurseList,
|
|
636
|
+
currentBaseURI,
|
|
637
|
+
resolveAnyOfOrOneOfRefs
|
|
638
|
+
)
|
|
610
639
|
};
|
|
611
640
|
}
|
|
612
641
|
if (resolveAnyOfOrOneOfRefs) {
|
|
@@ -623,7 +652,7 @@
|
|
|
623
652
|
resolvedSchema = {
|
|
624
653
|
...resolvedSchema,
|
|
625
654
|
[key]: schemas.map(
|
|
626
|
-
(s) => resolveAllReferences(s, rootSchema, recurseList,
|
|
655
|
+
(s) => resolveAllReferences(s, rootSchema, recurseList, currentBaseURI, resolveAnyOfOrOneOfRefs)
|
|
627
656
|
)
|
|
628
657
|
};
|
|
629
658
|
}
|
|
@@ -647,10 +676,10 @@
|
|
|
647
676
|
validator,
|
|
648
677
|
{ [ALL_OF_KEY]: Object.values(matchingProperties) },
|
|
649
678
|
rootSchema,
|
|
650
|
-
|
|
679
|
+
get14(formData, [key]),
|
|
651
680
|
experimental_customMergeAllOf
|
|
652
681
|
);
|
|
653
|
-
|
|
682
|
+
schema.properties[key][ADDITIONAL_PROPERTY_FLAG] = true;
|
|
654
683
|
return;
|
|
655
684
|
}
|
|
656
685
|
}
|
|
@@ -660,9 +689,9 @@
|
|
|
660
689
|
if (REF_KEY in schema.additionalProperties) {
|
|
661
690
|
additionalProperties = retrieveSchema(
|
|
662
691
|
validator,
|
|
663
|
-
{ [REF_KEY]:
|
|
692
|
+
{ [REF_KEY]: get14(schema.additionalProperties, [REF_KEY]) },
|
|
664
693
|
rootSchema,
|
|
665
|
-
formData,
|
|
694
|
+
get14(formData, [key]),
|
|
666
695
|
experimental_customMergeAllOf
|
|
667
696
|
);
|
|
668
697
|
} else if ("type" in schema.additionalProperties) {
|
|
@@ -673,16 +702,16 @@
|
|
|
673
702
|
...schema.additionalProperties
|
|
674
703
|
};
|
|
675
704
|
} else {
|
|
676
|
-
additionalProperties = { type: guessType(
|
|
705
|
+
additionalProperties = { type: guessType(get14(formData, [key])) };
|
|
677
706
|
}
|
|
678
707
|
} else {
|
|
679
|
-
additionalProperties = { type: guessType(
|
|
708
|
+
additionalProperties = { type: guessType(get14(formData, [key])) };
|
|
680
709
|
}
|
|
681
710
|
schema.properties[key] = additionalProperties;
|
|
682
|
-
|
|
711
|
+
schema.properties[key][ADDITIONAL_PROPERTY_FLAG] = true;
|
|
683
712
|
} else {
|
|
684
713
|
schema.properties[key] = { type: "null" };
|
|
685
|
-
|
|
714
|
+
schema.properties[key][ADDITIONAL_PROPERTY_FLAG] = true;
|
|
686
715
|
}
|
|
687
716
|
});
|
|
688
717
|
return schema;
|
|
@@ -725,17 +754,26 @@
|
|
|
725
754
|
try {
|
|
726
755
|
const withContainsSchemas = [];
|
|
727
756
|
const withoutContainsSchemas = [];
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
757
|
+
const allOfSymbols = {};
|
|
758
|
+
resolvedSchema.allOf?.forEach((allOfItem) => {
|
|
759
|
+
if (typeof allOfItem === "object" && allOfItem.contains) {
|
|
760
|
+
withContainsSchemas.push(allOfItem);
|
|
731
761
|
} else {
|
|
732
|
-
withoutContainsSchemas.push(
|
|
762
|
+
withoutContainsSchemas.push(allOfItem);
|
|
763
|
+
for (const sym of Object.getOwnPropertySymbols(allOfItem)) {
|
|
764
|
+
if (!(sym in allOfSymbols)) {
|
|
765
|
+
allOfSymbols[sym] = allOfItem[sym];
|
|
766
|
+
}
|
|
767
|
+
}
|
|
733
768
|
}
|
|
734
769
|
});
|
|
735
770
|
if (withContainsSchemas.length) {
|
|
736
771
|
resolvedSchema = { ...resolvedSchema, allOf: withoutContainsSchemas };
|
|
737
772
|
}
|
|
738
773
|
resolvedSchema = experimental_customMergeAllOf ? experimental_customMergeAllOf(resolvedSchema) : mergeAllOf(resolvedSchema);
|
|
774
|
+
for (const sym of Object.getOwnPropertySymbols(allOfSymbols)) {
|
|
775
|
+
resolvedSchema[sym] = allOfSymbols[sym];
|
|
776
|
+
}
|
|
739
777
|
if (withContainsSchemas.length) {
|
|
740
778
|
resolvedSchema.allOf = withContainsSchemas;
|
|
741
779
|
}
|
|
@@ -747,18 +785,18 @@
|
|
|
747
785
|
}
|
|
748
786
|
if (PROPERTIES_KEY in resolvedSchema && PATTERN_PROPERTIES_KEY in resolvedSchema) {
|
|
749
787
|
resolvedSchema = Object.keys(resolvedSchema.properties).reduce(
|
|
750
|
-
(
|
|
751
|
-
const matchingProperties = getMatchingPatternProperties(
|
|
788
|
+
(acc, key) => {
|
|
789
|
+
const matchingProperties = getMatchingPatternProperties(acc, key);
|
|
752
790
|
if (!isEmpty4(matchingProperties)) {
|
|
753
|
-
|
|
791
|
+
acc.properties[key] = retrieveSchema(
|
|
754
792
|
validator,
|
|
755
|
-
{ allOf: [
|
|
793
|
+
{ allOf: [acc.properties[key], ...Object.values(matchingProperties)] },
|
|
756
794
|
rootSchema,
|
|
757
|
-
|
|
795
|
+
get14(rawFormData, [key]),
|
|
758
796
|
experimental_customMergeAllOf
|
|
759
797
|
);
|
|
760
798
|
}
|
|
761
|
-
return
|
|
799
|
+
return acc;
|
|
762
800
|
},
|
|
763
801
|
{
|
|
764
802
|
...resolvedSchema,
|
|
@@ -790,23 +828,21 @@
|
|
|
790
828
|
if (anyOrOneOf) {
|
|
791
829
|
const formData = rawFormData === void 0 && expandAllBranches ? {} : rawFormData;
|
|
792
830
|
const discriminator = getDiscriminatorFieldFromSchema(schema);
|
|
793
|
-
anyOrOneOf = anyOrOneOf.map((s) =>
|
|
794
|
-
return resolveAllReferences(s, rootSchema, []);
|
|
795
|
-
});
|
|
831
|
+
anyOrOneOf = anyOrOneOf.map((s) => resolveAllReferences(s, rootSchema, []));
|
|
796
832
|
const option = getFirstMatchingOption(validator, formData, anyOrOneOf, rootSchema, discriminator);
|
|
797
833
|
if (expandAllBranches) {
|
|
798
834
|
const relaxed = relaxOptionsForScoring(anyOrOneOf, false, rootSchema);
|
|
799
835
|
getFirstMatchingOption(validator, formData, relaxed, rootSchema, discriminator);
|
|
800
836
|
return anyOrOneOf.map((item) => mergeSchemas(remaining, item));
|
|
801
837
|
}
|
|
802
|
-
|
|
838
|
+
return [mergeSchemas(remaining, anyOrOneOf[option])];
|
|
803
839
|
}
|
|
804
840
|
return [schema];
|
|
805
841
|
}
|
|
806
842
|
function relaxOptionsForScoring(options, resolveRefs = false, rootSchema) {
|
|
807
843
|
return options.map((d) => {
|
|
808
844
|
if (!isObject(d)) {
|
|
809
|
-
return d
|
|
845
|
+
return normalizeBooleanSchema(d);
|
|
810
846
|
}
|
|
811
847
|
const schema = resolveRefs && rootSchema ? resolveAllReferences(d, rootSchema, []) : d;
|
|
812
848
|
return schema.additionalProperties === false ? { ...schema, additionalProperties: true } : schema;
|
|
@@ -837,43 +873,39 @@
|
|
|
837
873
|
function processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
838
874
|
let schemas = [resolvedSchema];
|
|
839
875
|
for (const dependencyKey in dependencies) {
|
|
840
|
-
if (
|
|
841
|
-
|
|
842
|
-
}
|
|
843
|
-
if (resolvedSchema.properties && !(dependencyKey in resolvedSchema.properties)) {
|
|
844
|
-
continue;
|
|
845
|
-
}
|
|
846
|
-
const [remainingDependencies, dependencyValue] = splitKeyElementFromObject(
|
|
847
|
-
dependencyKey,
|
|
848
|
-
dependencies
|
|
849
|
-
);
|
|
850
|
-
if (Array.isArray(dependencyValue)) {
|
|
851
|
-
schemas[0] = withDependentProperties(resolvedSchema, dependencyValue);
|
|
852
|
-
} else if (isObject(dependencyValue)) {
|
|
853
|
-
schemas = withDependentSchema(
|
|
854
|
-
validator,
|
|
855
|
-
resolvedSchema,
|
|
856
|
-
rootSchema,
|
|
876
|
+
if ((expandAllBranches || get14(formData, [dependencyKey]) !== void 0) && (!resolvedSchema.properties || dependencyKey in resolvedSchema.properties)) {
|
|
877
|
+
const [remainingDependencies, dependencyValue] = splitKeyElementFromObject(
|
|
857
878
|
dependencyKey,
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
879
|
+
dependencies
|
|
880
|
+
);
|
|
881
|
+
if (Array.isArray(dependencyValue)) {
|
|
882
|
+
schemas[0] = withDependentProperties(resolvedSchema, dependencyValue);
|
|
883
|
+
} else if (isObject(dependencyValue)) {
|
|
884
|
+
schemas = withDependentSchema(
|
|
885
|
+
validator,
|
|
886
|
+
resolvedSchema,
|
|
887
|
+
rootSchema,
|
|
888
|
+
dependencyKey,
|
|
889
|
+
dependencyValue,
|
|
890
|
+
expandAllBranches,
|
|
891
|
+
recurseList,
|
|
892
|
+
formData,
|
|
893
|
+
experimental_customMergeAllOf
|
|
894
|
+
);
|
|
895
|
+
}
|
|
896
|
+
return schemas.flatMap(
|
|
897
|
+
(schema) => processDependencies(
|
|
898
|
+
validator,
|
|
899
|
+
remainingDependencies,
|
|
900
|
+
schema,
|
|
901
|
+
rootSchema,
|
|
902
|
+
expandAllBranches,
|
|
903
|
+
recurseList,
|
|
904
|
+
formData,
|
|
905
|
+
experimental_customMergeAllOf
|
|
906
|
+
)
|
|
863
907
|
);
|
|
864
908
|
}
|
|
865
|
-
return schemas.flatMap(
|
|
866
|
-
(schema) => processDependencies(
|
|
867
|
-
validator,
|
|
868
|
-
remainingDependencies,
|
|
869
|
-
schema,
|
|
870
|
-
rootSchema,
|
|
871
|
-
expandAllBranches,
|
|
872
|
-
recurseList,
|
|
873
|
-
formData,
|
|
874
|
-
experimental_customMergeAllOf
|
|
875
|
-
)
|
|
876
|
-
);
|
|
877
909
|
}
|
|
878
910
|
return schemas;
|
|
879
911
|
}
|
|
@@ -896,9 +928,9 @@
|
|
|
896
928
|
);
|
|
897
929
|
return dependentSchemas.flatMap((dependent) => {
|
|
898
930
|
const { oneOf, ...dependentSchema } = dependent;
|
|
899
|
-
|
|
931
|
+
const mergedSchema = mergeSchemas(schema, dependentSchema);
|
|
900
932
|
if (oneOf === void 0) {
|
|
901
|
-
return
|
|
933
|
+
return mergedSchema;
|
|
902
934
|
}
|
|
903
935
|
const resolvedOneOfs = oneOf.map((subschema) => {
|
|
904
936
|
if (typeof subschema === "boolean" || !(REF_KEY in subschema)) {
|
|
@@ -910,7 +942,7 @@
|
|
|
910
942
|
return allPermutations.flatMap(
|
|
911
943
|
(resolvedOneOf) => withExactlyOneSubschema(
|
|
912
944
|
validator,
|
|
913
|
-
|
|
945
|
+
mergedSchema,
|
|
914
946
|
rootSchema,
|
|
915
947
|
dependencyKey,
|
|
916
948
|
resolvedOneOf,
|
|
@@ -924,7 +956,7 @@
|
|
|
924
956
|
}
|
|
925
957
|
function withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, oneOf, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
926
958
|
const validSubschemas = oneOf.filter((subschema) => {
|
|
927
|
-
if (typeof subschema === "boolean" || !subschema
|
|
959
|
+
if (typeof subschema === "boolean" || !subschema?.properties) {
|
|
928
960
|
return false;
|
|
929
961
|
}
|
|
930
962
|
const { [dependencyKey]: conditionPropertySchema } = subschema.properties;
|
|
@@ -956,7 +988,7 @@
|
|
|
956
988
|
recurseList,
|
|
957
989
|
experimental_customMergeAllOf
|
|
958
990
|
);
|
|
959
|
-
return schemas.map((
|
|
991
|
+
return schemas.map((resolvedSubschema) => mergeSchemas(schema, resolvedSubschema));
|
|
960
992
|
});
|
|
961
993
|
}
|
|
962
994
|
|
|
@@ -968,14 +1000,18 @@
|
|
|
968
1000
|
const xxxOfs = schema[xxx].map(
|
|
969
1001
|
(xxxOf) => retrieveSchema(validator, xxxOf, rootSchema, formData, experimental_customMergeAllOf)
|
|
970
1002
|
);
|
|
971
|
-
const data =
|
|
1003
|
+
const data = get14(formData, selectorField);
|
|
972
1004
|
if (data !== void 0) {
|
|
973
|
-
return xxxOfs.find(
|
|
974
|
-
|
|
975
|
-
|
|
1005
|
+
return xxxOfs.find(
|
|
1006
|
+
(xxxOfOption) => deepEquals_default(
|
|
1007
|
+
get14(
|
|
1008
|
+
xxxOfOption,
|
|
1009
|
+
[PROPERTIES_KEY, selectorField, DEFAULT_KEY],
|
|
1010
|
+
get14(xxxOfOption, [PROPERTIES_KEY, selectorField, CONST_KEY])
|
|
1011
|
+
),
|
|
976
1012
|
data
|
|
977
|
-
)
|
|
978
|
-
|
|
1013
|
+
)
|
|
1014
|
+
);
|
|
979
1015
|
}
|
|
980
1016
|
}
|
|
981
1017
|
return void 0;
|
|
@@ -991,7 +1027,7 @@
|
|
|
991
1027
|
const pathList = Array.isArray(path) ? [...path] : path.split(".");
|
|
992
1028
|
const [part, ...nestedPath] = pathList;
|
|
993
1029
|
if (part !== void 0 && part !== "" && has5(fieldSchema, part)) {
|
|
994
|
-
fieldSchema =
|
|
1030
|
+
fieldSchema = get14(fieldSchema, part);
|
|
995
1031
|
return getFromSchemaInternal(
|
|
996
1032
|
validator,
|
|
997
1033
|
rootSchema,
|
|
@@ -1034,7 +1070,7 @@
|
|
|
1034
1070
|
parentField,
|
|
1035
1071
|
fieldNameKey,
|
|
1036
1072
|
ONE_OF_KEY,
|
|
1037
|
-
|
|
1073
|
+
get14(formData, subPath),
|
|
1038
1074
|
experimental_customMergeAllOf
|
|
1039
1075
|
);
|
|
1040
1076
|
} else if (has5(parentField, ANY_OF_KEY)) {
|
|
@@ -1044,7 +1080,7 @@
|
|
|
1044
1080
|
parentField,
|
|
1045
1081
|
fieldNameKey,
|
|
1046
1082
|
ANY_OF_KEY,
|
|
1047
|
-
|
|
1083
|
+
get14(formData, subPath),
|
|
1048
1084
|
experimental_customMergeAllOf
|
|
1049
1085
|
);
|
|
1050
1086
|
}
|
|
@@ -1112,7 +1148,7 @@
|
|
|
1112
1148
|
totalScore += reduce(
|
|
1113
1149
|
schema.properties,
|
|
1114
1150
|
(score, value, key) => {
|
|
1115
|
-
const formValue =
|
|
1151
|
+
const formValue = get14(formData, key);
|
|
1116
1152
|
if (typeof value === "boolean") {
|
|
1117
1153
|
return score;
|
|
1118
1154
|
}
|
|
@@ -1133,23 +1169,21 @@
|
|
|
1133
1169
|
);
|
|
1134
1170
|
}
|
|
1135
1171
|
if ((has5(value, ONE_OF_KEY) || has5(value, ANY_OF_KEY)) && formValue) {
|
|
1136
|
-
const
|
|
1172
|
+
const xxxOfKey = has5(value, ONE_OF_KEY) ? ONE_OF_KEY : ANY_OF_KEY;
|
|
1137
1173
|
const discriminator = getDiscriminatorFieldFromSchema(value);
|
|
1138
1174
|
return score + getClosestMatchingOption(
|
|
1139
1175
|
validator,
|
|
1140
1176
|
rootSchema,
|
|
1141
1177
|
formValue,
|
|
1142
|
-
|
|
1178
|
+
get14(value, xxxOfKey),
|
|
1143
1179
|
-1,
|
|
1144
1180
|
discriminator,
|
|
1145
1181
|
experimental_customMergeAllOf
|
|
1146
1182
|
);
|
|
1147
1183
|
}
|
|
1148
1184
|
if (value.type === "object") {
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
}
|
|
1152
|
-
return score + calculateIndexScore(validator, rootSchema, value, formValue, experimental_customMergeAllOf);
|
|
1185
|
+
const structureBoost = isObject2(formValue) ? 1 : 0;
|
|
1186
|
+
return score + structureBoost + calculateIndexScore(validator, rootSchema, value, formValue, experimental_customMergeAllOf);
|
|
1153
1187
|
}
|
|
1154
1188
|
if (value.type === guessType(formValue)) {
|
|
1155
1189
|
let newScore = score + 1;
|
|
@@ -1171,9 +1205,7 @@
|
|
|
1171
1205
|
return totalScore;
|
|
1172
1206
|
}
|
|
1173
1207
|
function getClosestMatchingOption(validator, rootSchema, formData, options, selectedOption = -1, discriminatorField, experimental_customMergeAllOf) {
|
|
1174
|
-
const resolvedOptions = options.map((option) =>
|
|
1175
|
-
return resolveAllReferences(option, rootSchema, []);
|
|
1176
|
-
});
|
|
1208
|
+
const resolvedOptions = options.map((option) => resolveAllReferences(option, rootSchema, []));
|
|
1177
1209
|
const simpleDiscriminatorMatch = getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField);
|
|
1178
1210
|
if (isNumber(simpleDiscriminatorMatch)) {
|
|
1179
1211
|
return simpleDiscriminatorMatch;
|
|
@@ -1224,7 +1256,7 @@
|
|
|
1224
1256
|
|
|
1225
1257
|
// src/isFixedItems.ts
|
|
1226
1258
|
function isFixedItems(schema) {
|
|
1227
|
-
return Array.isArray(schema.items) && schema.items.
|
|
1259
|
+
return Array.isArray(schema.items) && schema.items.every((item) => isObject(item));
|
|
1228
1260
|
}
|
|
1229
1261
|
function mergeDefaultsWithFormData(defaults, formData, mergeExtraArrayDefaults = false, defaultSupercedesUndefined = false, overrideFormDataWithDefaults = false) {
|
|
1230
1262
|
if (Array.isArray(formData)) {
|
|
@@ -1250,23 +1282,23 @@
|
|
|
1250
1282
|
}
|
|
1251
1283
|
if (isObject(formData)) {
|
|
1252
1284
|
const acc = Object.assign({}, defaults);
|
|
1253
|
-
return Object.keys(formData).reduce((
|
|
1254
|
-
const keyValue =
|
|
1285
|
+
return Object.keys(formData).reduce((accumulator, key) => {
|
|
1286
|
+
const keyValue = get14(formData, key);
|
|
1255
1287
|
const keyExistsInDefaults = isObject(defaults) && key in defaults;
|
|
1256
1288
|
const keyExistsInFormData = key in formData;
|
|
1257
|
-
const keyDefault =
|
|
1289
|
+
const keyDefault = get14(defaults, key) ?? {};
|
|
1258
1290
|
const defaultValueIsNestedObject = keyExistsInDefaults && isObject(keyDefault) && Object.values(keyDefault).some((v) => isObject(v));
|
|
1259
|
-
const keyDefaultIsObject = keyExistsInDefaults && isObject(
|
|
1291
|
+
const keyDefaultIsObject = keyExistsInDefaults && isObject(get14(defaults, key));
|
|
1260
1292
|
const keyHasFormDataObject = keyExistsInFormData && isObject(keyValue);
|
|
1261
1293
|
if (keyDefaultIsObject && keyHasFormDataObject && !defaultValueIsNestedObject) {
|
|
1262
|
-
|
|
1263
|
-
...
|
|
1294
|
+
accumulator[key] = {
|
|
1295
|
+
...get14(defaults, key),
|
|
1264
1296
|
...keyValue
|
|
1265
1297
|
};
|
|
1266
|
-
return
|
|
1298
|
+
return accumulator;
|
|
1267
1299
|
}
|
|
1268
|
-
|
|
1269
|
-
|
|
1300
|
+
accumulator[key] = mergeDefaultsWithFormData(
|
|
1301
|
+
get14(defaults, key),
|
|
1270
1302
|
keyValue,
|
|
1271
1303
|
mergeExtraArrayDefaults,
|
|
1272
1304
|
defaultSupercedesUndefined,
|
|
@@ -1274,10 +1306,10 @@
|
|
|
1274
1306
|
// Or if the key value doesn't exist in formData
|
|
1275
1307
|
overrideFormDataWithDefaults && (keyExistsInDefaults || !keyExistsInFormData)
|
|
1276
1308
|
);
|
|
1277
|
-
return
|
|
1309
|
+
return acc;
|
|
1278
1310
|
}, acc);
|
|
1279
1311
|
}
|
|
1280
|
-
if (defaultSupercedesUndefined && (!(defaults === void 0) && isNil(formData) || typeof formData === "number" && isNaN(formData)) || overrideFormDataWithDefaults && !isNil(formData)) {
|
|
1312
|
+
if (defaultSupercedesUndefined && (!(defaults === void 0) && isNil(formData) || typeof formData === "number" && Number.isNaN(formData)) || overrideFormDataWithDefaults && !isNil(formData)) {
|
|
1281
1313
|
return defaults;
|
|
1282
1314
|
}
|
|
1283
1315
|
return formData;
|
|
@@ -1306,7 +1338,7 @@
|
|
|
1306
1338
|
}
|
|
1307
1339
|
return acc;
|
|
1308
1340
|
},
|
|
1309
|
-
|
|
1341
|
+
{ ...obj1 }
|
|
1310
1342
|
);
|
|
1311
1343
|
}
|
|
1312
1344
|
|
|
@@ -1366,18 +1398,18 @@
|
|
|
1366
1398
|
const { optionsSchemaSelector = selectorField } = getUiOptions(uiSchema);
|
|
1367
1399
|
selectorField = optionsSchemaSelector;
|
|
1368
1400
|
}
|
|
1369
|
-
return altSchemas
|
|
1401
|
+
return altSchemas?.map((aSchemaDef, index) => {
|
|
1370
1402
|
const { title } = getUiOptions(altUiSchemas?.[index]);
|
|
1371
1403
|
const aSchema = aSchemaDef;
|
|
1372
1404
|
let value;
|
|
1373
1405
|
let label = title;
|
|
1374
1406
|
if (selectorField) {
|
|
1375
|
-
const innerSchema =
|
|
1376
|
-
value =
|
|
1377
|
-
label = label
|
|
1407
|
+
const innerSchema = get14(aSchema, [PROPERTIES_KEY, selectorField], {});
|
|
1408
|
+
value = get14(innerSchema, DEFAULT_KEY, get14(innerSchema, CONST_KEY));
|
|
1409
|
+
label = label ?? innerSchema?.title ?? aSchema.title ?? String(value);
|
|
1378
1410
|
} else {
|
|
1379
1411
|
value = toConstant(aSchema);
|
|
1380
|
-
label = label
|
|
1412
|
+
label = label ?? aSchema.title ?? String(value);
|
|
1381
1413
|
}
|
|
1382
1414
|
return {
|
|
1383
1415
|
schema: aSchema,
|
|
@@ -1395,7 +1427,7 @@
|
|
|
1395
1427
|
return true;
|
|
1396
1428
|
}
|
|
1397
1429
|
if (Array.isArray(altSchemas)) {
|
|
1398
|
-
return altSchemas.every((
|
|
1430
|
+
return altSchemas.every((altSchema) => typeof altSchema !== "boolean" && isConstant(altSchema));
|
|
1399
1431
|
}
|
|
1400
1432
|
return false;
|
|
1401
1433
|
}
|
|
@@ -1431,23 +1463,23 @@
|
|
|
1431
1463
|
const shouldReturnNullAsDefault = Array.isArray(type) && type.includes("null") && isEmpty4(computedDefault) && schemaDefault === null;
|
|
1432
1464
|
return shouldReturnNullAsDefault ? null : computedDefault;
|
|
1433
1465
|
}
|
|
1434
|
-
function maybeAddDefaultToObject(
|
|
1466
|
+
function maybeAddDefaultToObject(acc, key, computedDefault, includeUndefinedValues, isParentRequired, requiredFields = [], experimental_defaultFormStateBehavior = {}, isConst = false, isNullType = false) {
|
|
1435
1467
|
const { emptyObjectFields = "populateAllDefaults" } = experimental_defaultFormStateBehavior;
|
|
1436
1468
|
if (includeUndefinedValues === true || isConst) {
|
|
1437
|
-
|
|
1469
|
+
acc[key] = computedDefault;
|
|
1438
1470
|
} else if (includeUndefinedValues === "excludeObjectChildren") {
|
|
1439
1471
|
if (isNullType && computedDefault !== void 0 || !isObject(computedDefault) || !isEmpty4(computedDefault)) {
|
|
1440
|
-
|
|
1472
|
+
acc[key] = computedDefault;
|
|
1441
1473
|
}
|
|
1442
1474
|
} else if (emptyObjectFields !== "skipDefaults") {
|
|
1443
1475
|
const isSelfOrParentRequired = isParentRequired === void 0 ? requiredFields.includes(key) : isParentRequired;
|
|
1444
1476
|
if (isObject(computedDefault)) {
|
|
1445
1477
|
if (emptyObjectFields === "skipEmptyDefaults") {
|
|
1446
1478
|
if (!isEmpty4(computedDefault)) {
|
|
1447
|
-
|
|
1479
|
+
acc[key] = computedDefault;
|
|
1448
1480
|
}
|
|
1449
1481
|
} else if ((!isEmpty4(computedDefault) || requiredFields.includes(key)) && (isSelfOrParentRequired || emptyObjectFields !== "populateRequiredDefaults")) {
|
|
1450
|
-
|
|
1482
|
+
acc[key] = computedDefault;
|
|
1451
1483
|
}
|
|
1452
1484
|
} else if (
|
|
1453
1485
|
// Store computedDefault if it's a defined primitive (e.g., true) and satisfies certain conditions
|
|
@@ -1456,7 +1488,7 @@
|
|
|
1456
1488
|
// Or if isSelfOrParentRequired is 'true' and the key is a required field
|
|
1457
1489
|
computedDefault !== void 0 && (emptyObjectFields === "populateAllDefaults" || emptyObjectFields === "skipEmptyDefaults" || isSelfOrParentRequired && requiredFields.includes(key))
|
|
1458
1490
|
) {
|
|
1459
|
-
|
|
1491
|
+
acc[key] = computedDefault;
|
|
1460
1492
|
}
|
|
1461
1493
|
}
|
|
1462
1494
|
}
|
|
@@ -1467,8 +1499,8 @@
|
|
|
1467
1499
|
rootSchema = {},
|
|
1468
1500
|
includeUndefinedValues = false,
|
|
1469
1501
|
_recurseList = [],
|
|
1470
|
-
experimental_defaultFormStateBehavior
|
|
1471
|
-
experimental_customMergeAllOf
|
|
1502
|
+
experimental_defaultFormStateBehavior,
|
|
1503
|
+
experimental_customMergeAllOf,
|
|
1472
1504
|
required,
|
|
1473
1505
|
shouldMergeDefaultsIntoFormData = false,
|
|
1474
1506
|
initialDefaultsGenerated
|
|
@@ -1476,14 +1508,19 @@
|
|
|
1476
1508
|
let formData = isObject(rawFormData) ? rawFormData : {};
|
|
1477
1509
|
const schema = isObject(rawSchema) ? rawSchema : {};
|
|
1478
1510
|
let defaults = parentDefaults;
|
|
1511
|
+
const preferParentDefaults = defaults && experimental_defaultFormStateBehavior?.nestedDefaultsPrecedence === "ancestorWins";
|
|
1479
1512
|
let schemaToCompute = null;
|
|
1480
1513
|
let experimental_dfsb_to_compute = experimental_defaultFormStateBehavior;
|
|
1481
1514
|
let updatedRecurseList = _recurseList;
|
|
1482
1515
|
if (schema[CONST_KEY] !== void 0 && experimental_defaultFormStateBehavior?.constAsDefaults !== "never" && !constIsAjvDataReference(schema)) {
|
|
1483
1516
|
defaults = schema[CONST_KEY];
|
|
1484
1517
|
} else if (isObject(defaults) && isObject(schema.default) && !schema[ANY_OF_KEY] && !schema[ONE_OF_KEY] && !schema[REF_KEY]) {
|
|
1485
|
-
|
|
1486
|
-
|
|
1518
|
+
if (preferParentDefaults) {
|
|
1519
|
+
defaults = mergeObjects(schema.default, defaults);
|
|
1520
|
+
} else {
|
|
1521
|
+
defaults = mergeObjects(defaults, schema.default);
|
|
1522
|
+
}
|
|
1523
|
+
} else if (DEFAULT_KEY in schema && !preferParentDefaults && !schema[ANY_OF_KEY] && !schema[ONE_OF_KEY] && !schema[REF_KEY]) {
|
|
1487
1524
|
defaults = schema.default;
|
|
1488
1525
|
} else if (REF_KEY in schema) {
|
|
1489
1526
|
const refName = schema[REF_KEY];
|
|
@@ -1512,8 +1549,8 @@
|
|
|
1512
1549
|
defaultFormData,
|
|
1513
1550
|
experimental_customMergeAllOf
|
|
1514
1551
|
);
|
|
1515
|
-
schemaToCompute = resolvedSchema
|
|
1516
|
-
} else if (isFixedItems(schema)) {
|
|
1552
|
+
[schemaToCompute] = resolvedSchema;
|
|
1553
|
+
} else if (isFixedItems(schema) && !preferParentDefaults) {
|
|
1517
1554
|
defaults = schema.items.map(
|
|
1518
1555
|
(itemSchema, idx) => computeDefaults(validator, itemSchema, {
|
|
1519
1556
|
rootSchema,
|
|
@@ -1609,16 +1646,36 @@
|
|
|
1609
1646
|
return defaultsWithFormData;
|
|
1610
1647
|
}
|
|
1611
1648
|
function ensureFormDataMatchingSchema(validator, schema, rootSchema, formData, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
|
|
1612
|
-
const
|
|
1649
|
+
const shouldRetrieveAllOf = experimental_defaultFormStateBehavior?.allOf === "populateDefaults" && ALL_OF_KEY in schema;
|
|
1650
|
+
const schemaToMatch = shouldRetrieveAllOf ? retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf) : schema;
|
|
1651
|
+
const isSelectField = !isConstant(schemaToMatch) && isSelect(validator, schemaToMatch, rootSchema, experimental_customMergeAllOf);
|
|
1613
1652
|
let validFormData = formData;
|
|
1614
1653
|
if (isSelectField) {
|
|
1615
|
-
const getOptionsList = optionsList(
|
|
1654
|
+
const getOptionsList = optionsList(schemaToMatch);
|
|
1616
1655
|
const isValid = getOptionsList?.some((option) => deepEquals_default(option.value, formData));
|
|
1617
1656
|
validFormData = isValid ? formData : void 0;
|
|
1618
1657
|
}
|
|
1619
|
-
const constTakesPrecedence =
|
|
1658
|
+
const constTakesPrecedence = schemaToMatch[CONST_KEY] && experimental_defaultFormStateBehavior?.constAsDefaults === "always";
|
|
1620
1659
|
if (constTakesPrecedence) {
|
|
1621
|
-
validFormData =
|
|
1660
|
+
validFormData = schemaToMatch.const;
|
|
1661
|
+
} else if (isObject(validFormData) && isObject(schemaToMatch.properties)) {
|
|
1662
|
+
validFormData = Object.keys(schemaToMatch.properties).reduce(
|
|
1663
|
+
(acc, key) => {
|
|
1664
|
+
const propertySchema = get14(schemaToMatch, [PROPERTIES_KEY, key], {});
|
|
1665
|
+
if (key in acc && (shouldRetrieveAllOf || isObject(propertySchema) && ALL_OF_KEY in propertySchema)) {
|
|
1666
|
+
acc[key] = ensureFormDataMatchingSchema(
|
|
1667
|
+
validator,
|
|
1668
|
+
propertySchema,
|
|
1669
|
+
rootSchema,
|
|
1670
|
+
get14(acc, key),
|
|
1671
|
+
experimental_defaultFormStateBehavior,
|
|
1672
|
+
experimental_customMergeAllOf
|
|
1673
|
+
);
|
|
1674
|
+
}
|
|
1675
|
+
return acc;
|
|
1676
|
+
},
|
|
1677
|
+
{ ...validFormData }
|
|
1678
|
+
);
|
|
1622
1679
|
}
|
|
1623
1680
|
return validFormData;
|
|
1624
1681
|
}
|
|
@@ -1627,8 +1684,8 @@
|
|
|
1627
1684
|
rootSchema = {},
|
|
1628
1685
|
includeUndefinedValues = false,
|
|
1629
1686
|
_recurseList = [],
|
|
1630
|
-
experimental_defaultFormStateBehavior
|
|
1631
|
-
experimental_customMergeAllOf
|
|
1687
|
+
experimental_defaultFormStateBehavior,
|
|
1688
|
+
experimental_customMergeAllOf,
|
|
1632
1689
|
required,
|
|
1633
1690
|
shouldMergeDefaultsIntoFormData,
|
|
1634
1691
|
initialDefaultsGenerated
|
|
@@ -1641,7 +1698,7 @@
|
|
|
1641
1698
|
const parentConst = retrievedSchema[CONST_KEY];
|
|
1642
1699
|
const objectDefaults = Object.keys(retrievedSchema.properties || {}).reduce(
|
|
1643
1700
|
(acc, key) => {
|
|
1644
|
-
const propertySchema =
|
|
1701
|
+
const propertySchema = get14(retrievedSchema, [PROPERTIES_KEY, key], {});
|
|
1645
1702
|
const hasParentConst = isObject(parentConst) && parentConst[key] !== void 0;
|
|
1646
1703
|
const hasConst = (isObject(propertySchema) && CONST_KEY in propertySchema || hasParentConst) && experimental_defaultFormStateBehavior?.constAsDefaults !== "never" && !constIsAjvDataReference(propertySchema);
|
|
1647
1704
|
const computedDefault = computeDefaults(validator, propertySchema, {
|
|
@@ -1650,8 +1707,8 @@
|
|
|
1650
1707
|
experimental_defaultFormStateBehavior,
|
|
1651
1708
|
experimental_customMergeAllOf,
|
|
1652
1709
|
includeUndefinedValues: includeUndefinedValues === true,
|
|
1653
|
-
parentDefaults:
|
|
1654
|
-
rawFormData:
|
|
1710
|
+
parentDefaults: get14(defaults, [key]),
|
|
1711
|
+
rawFormData: get14(formData, [key]),
|
|
1655
1712
|
required: retrievedSchema.required?.includes(key),
|
|
1656
1713
|
shouldMergeDefaultsIntoFormData,
|
|
1657
1714
|
initialDefaultsGenerated
|
|
@@ -1689,8 +1746,8 @@
|
|
|
1689
1746
|
experimental_defaultFormStateBehavior,
|
|
1690
1747
|
experimental_customMergeAllOf,
|
|
1691
1748
|
includeUndefinedValues: includeUndefinedValues === true,
|
|
1692
|
-
parentDefaults:
|
|
1693
|
-
rawFormData:
|
|
1749
|
+
parentDefaults: get14(defaults, [key]),
|
|
1750
|
+
rawFormData: get14(formData, [key]),
|
|
1694
1751
|
required: retrievedSchema.required?.includes(key),
|
|
1695
1752
|
shouldMergeDefaultsIntoFormData,
|
|
1696
1753
|
initialDefaultsGenerated
|
|
@@ -1712,13 +1769,14 @@
|
|
|
1712
1769
|
rawFormData,
|
|
1713
1770
|
rootSchema = {},
|
|
1714
1771
|
_recurseList = [],
|
|
1715
|
-
experimental_defaultFormStateBehavior
|
|
1716
|
-
experimental_customMergeAllOf
|
|
1772
|
+
experimental_defaultFormStateBehavior,
|
|
1773
|
+
experimental_customMergeAllOf,
|
|
1717
1774
|
required,
|
|
1718
1775
|
requiredAsRoot = false,
|
|
1719
1776
|
shouldMergeDefaultsIntoFormData,
|
|
1720
1777
|
initialDefaultsGenerated
|
|
1721
|
-
} = {},
|
|
1778
|
+
} = {}, initialDefaults) {
|
|
1779
|
+
let defaults = initialDefaults;
|
|
1722
1780
|
const schema = rawSchema;
|
|
1723
1781
|
const arrayMinItemsStateBehavior = experimental_defaultFormStateBehavior?.arrayMinItems ?? {};
|
|
1724
1782
|
const { populate: arrayMinItemsPopulate, mergeExtraDefaults: arrayMergeExtraDefaults } = arrayMinItemsStateBehavior;
|
|
@@ -1750,31 +1808,38 @@
|
|
|
1750
1808
|
if (neverPopulate) {
|
|
1751
1809
|
defaults = rawFormData;
|
|
1752
1810
|
} else {
|
|
1753
|
-
const itemDefaults = rawFormData.map(
|
|
1754
|
-
|
|
1811
|
+
const itemDefaults = rawFormData.map(
|
|
1812
|
+
(item, idx) => computeDefaults(validator, schemaItem, {
|
|
1755
1813
|
rootSchema,
|
|
1756
1814
|
_recurseList,
|
|
1757
1815
|
experimental_defaultFormStateBehavior,
|
|
1758
1816
|
experimental_customMergeAllOf,
|
|
1759
1817
|
rawFormData: item,
|
|
1760
|
-
parentDefaults:
|
|
1818
|
+
parentDefaults: get14(defaults, [idx]),
|
|
1761
1819
|
required,
|
|
1762
1820
|
shouldMergeDefaultsIntoFormData,
|
|
1763
1821
|
initialDefaultsGenerated
|
|
1764
|
-
})
|
|
1765
|
-
|
|
1822
|
+
})
|
|
1823
|
+
);
|
|
1766
1824
|
const mergeExtraDefaults = (ignoreMinItemsFlagSet && required || isPopulateAll) && arrayMergeExtraDefaults;
|
|
1767
1825
|
defaults = mergeDefaultsWithFormData(defaults, itemDefaults, mergeExtraDefaults);
|
|
1768
1826
|
}
|
|
1769
1827
|
}
|
|
1828
|
+
const defaultsLength = Array.isArray(defaults) ? defaults.length : 0;
|
|
1770
1829
|
if (neverPopulate) {
|
|
1830
|
+
if (shouldMergeDefaultsIntoFormData) {
|
|
1831
|
+
if (schema.minItems && schema.minItems > defaultsLength) {
|
|
1832
|
+
const fillerEntries = Array.from({ length: schema.minItems - defaultsLength }, () => null);
|
|
1833
|
+
return (defaults ?? []).concat(fillerEntries);
|
|
1834
|
+
}
|
|
1835
|
+
return defaults;
|
|
1836
|
+
}
|
|
1771
1837
|
return defaults ?? emptyDefault;
|
|
1772
1838
|
}
|
|
1773
1839
|
if (ignoreMinItemsFlagSet && !required) {
|
|
1774
|
-
return defaults
|
|
1840
|
+
return defaults || void 0;
|
|
1775
1841
|
}
|
|
1776
1842
|
let arrayDefault;
|
|
1777
|
-
const defaultsLength = Array.isArray(defaults) ? defaults.length : 0;
|
|
1778
1843
|
if (!schema.minItems || isMultiSelect(validator, schema, rootSchema, experimental_customMergeAllOf) || computeSkipPopulate(validator, schema, rootSchema) || schema.minItems <= defaultsLength) {
|
|
1779
1844
|
arrayDefault = defaults || !required && !requiredAsRoot ? defaults : emptyDefault;
|
|
1780
1845
|
} else {
|
|
@@ -1806,11 +1871,13 @@
|
|
|
1806
1871
|
case "array": {
|
|
1807
1872
|
return getArrayDefaults(validator, rawSchema, computeDefaultsProps, defaults);
|
|
1808
1873
|
}
|
|
1874
|
+
default:
|
|
1875
|
+
return void 0;
|
|
1809
1876
|
}
|
|
1810
1877
|
}
|
|
1811
1878
|
function getDefaultFormState(validator, theSchema, formData, rootSchema, includeUndefinedValues = false, experimental_defaultFormStateBehavior, experimental_customMergeAllOf, initialDefaultsGenerated) {
|
|
1812
1879
|
if (!isObject(theSchema)) {
|
|
1813
|
-
throw new Error(
|
|
1880
|
+
throw new Error(`Invalid schema: ${theSchema}`);
|
|
1814
1881
|
}
|
|
1815
1882
|
const schema = retrieveSchema(validator, theSchema, rootSchema, formData, experimental_customMergeAllOf);
|
|
1816
1883
|
const defaults = computeDefaults(validator, schema, {
|
|
@@ -1832,9 +1899,17 @@
|
|
|
1832
1899
|
if (isObject(formData) || Array.isArray(formData)) {
|
|
1833
1900
|
const { mergeDefaultsIntoFormData } = experimental_defaultFormStateBehavior || {};
|
|
1834
1901
|
const defaultSupercedesUndefined = mergeDefaultsIntoFormData === "useDefaultIfFormDataUndefined";
|
|
1902
|
+
const matchingFormData = ensureFormDataMatchingSchema(
|
|
1903
|
+
validator,
|
|
1904
|
+
schema,
|
|
1905
|
+
rootSchema ?? schema,
|
|
1906
|
+
formData,
|
|
1907
|
+
experimental_defaultFormStateBehavior,
|
|
1908
|
+
experimental_customMergeAllOf
|
|
1909
|
+
);
|
|
1835
1910
|
const result = mergeDefaultsWithFormData(
|
|
1836
1911
|
defaults,
|
|
1837
|
-
|
|
1912
|
+
matchingFormData,
|
|
1838
1913
|
true,
|
|
1839
1914
|
// set to true to add any additional default array entries.
|
|
1840
1915
|
defaultSupercedesUndefined,
|
|
@@ -1851,7 +1926,7 @@
|
|
|
1851
1926
|
return (
|
|
1852
1927
|
// TODO: Remove the `&& uiSchema['ui:widget'] !== 'hidden'` once we support hidden widgets for arrays.
|
|
1853
1928
|
// https://rjsf-team.github.io/react-jsonschema-form/docs/usage/widgets/#hidden-widgets
|
|
1854
|
-
"widget" in getUiOptions(uiSchema) && getUiOptions(uiSchema)
|
|
1929
|
+
"widget" in getUiOptions(uiSchema) && getUiOptions(uiSchema).widget !== "hidden"
|
|
1855
1930
|
);
|
|
1856
1931
|
}
|
|
1857
1932
|
|
|
@@ -1880,7 +1955,7 @@
|
|
|
1880
1955
|
let displayLabel = Boolean(label);
|
|
1881
1956
|
if (displayLabel) {
|
|
1882
1957
|
const schemaType = getSchemaType(schema);
|
|
1883
|
-
const addedByAdditionalProperty =
|
|
1958
|
+
const addedByAdditionalProperty = Boolean(schema[ADDITIONAL_PROPERTY_FLAG]);
|
|
1884
1959
|
if (schemaType === "array") {
|
|
1885
1960
|
displayLabel = addedByAdditionalProperty || isMultiSelect(validator, schema, rootSchema, experimental_customMergeAllOf) || isFilesArray(validator, schema, uiSchema, rootSchema, experimental_customMergeAllOf) || isCustomWidget(uiSchema);
|
|
1886
1961
|
}
|
|
@@ -1890,7 +1965,7 @@
|
|
|
1890
1965
|
if (schemaType === "boolean" && uiSchema && !uiSchema[UI_WIDGET_KEY]) {
|
|
1891
1966
|
displayLabel = false;
|
|
1892
1967
|
}
|
|
1893
|
-
if (uiSchema
|
|
1968
|
+
if (uiSchema?.[UI_FIELD_KEY]) {
|
|
1894
1969
|
displayLabel = false;
|
|
1895
1970
|
}
|
|
1896
1971
|
}
|
|
@@ -1921,7 +1996,7 @@
|
|
|
1921
1996
|
}
|
|
1922
1997
|
} else if (key === NAME_KEY && data !== "") {
|
|
1923
1998
|
paths.forEach((path) => {
|
|
1924
|
-
const formValue =
|
|
1999
|
+
const formValue = get14(formData, path);
|
|
1925
2000
|
const isLeaf = objKeys.length === 1;
|
|
1926
2001
|
if (formValueHasData(formValue, isLeaf) || Array.isArray(formValue) && formValue.every((val) => formValueHasData(val, isLeaf))) {
|
|
1927
2002
|
acc.push(path);
|
|
@@ -1955,11 +2030,11 @@
|
|
|
1955
2030
|
function isSchemaObj(schemaDef) {
|
|
1956
2031
|
return isObject(schemaDef);
|
|
1957
2032
|
}
|
|
1958
|
-
function handleObject(
|
|
1959
|
-
const { properties, additionalProperties, patternProperties, propertyNames } =
|
|
1960
|
-
const requiredSet = new Set(
|
|
2033
|
+
function handleObject(childSchema, source, target) {
|
|
2034
|
+
const { properties, additionalProperties, patternProperties, propertyNames } = childSchema;
|
|
2035
|
+
const requiredSet = new Set(childSchema.required ?? []);
|
|
1961
2036
|
function setProperty(key, schemaDef, value, required = false) {
|
|
1962
|
-
const v =
|
|
2037
|
+
const v = omit2(schemaDef, value, target[key]);
|
|
1963
2038
|
if (!required && isObject(v)) {
|
|
1964
2039
|
let sd = isSchemaObj(schemaDef) ? schemaDef : {};
|
|
1965
2040
|
if (sd.$ref !== void 0) {
|
|
@@ -1991,15 +2066,14 @@
|
|
|
1991
2066
|
]);
|
|
1992
2067
|
const knownProperties = new Set(Object.keys(properties ?? {}));
|
|
1993
2068
|
for (const [key, value] of Object.entries(source)) {
|
|
1994
|
-
if (knownProperties.has(key)) {
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2069
|
+
if (!knownProperties.has(key)) {
|
|
2070
|
+
const matched = patterns.find(([re]) => re.test(key));
|
|
2071
|
+
if (matched === void 0) {
|
|
2072
|
+
patternPropertiesRest.push(key);
|
|
2073
|
+
} else {
|
|
2074
|
+
setProperty(key, matched[1], value);
|
|
2075
|
+
}
|
|
2001
2076
|
}
|
|
2002
|
-
setProperty(key, matched[1], value);
|
|
2003
2077
|
}
|
|
2004
2078
|
}
|
|
2005
2079
|
if (additionalProperties !== void 0 && additionalProperties !== false) {
|
|
@@ -2011,10 +2085,9 @@
|
|
|
2011
2085
|
} else {
|
|
2012
2086
|
const knownProperties = new Set(Object.keys(properties ?? {}));
|
|
2013
2087
|
for (const [key, value] of Object.entries(source)) {
|
|
2014
|
-
if (knownProperties.has(key)) {
|
|
2015
|
-
|
|
2088
|
+
if (!knownProperties.has(key)) {
|
|
2089
|
+
setProperty(key, addlSchema, value);
|
|
2016
2090
|
}
|
|
2017
|
-
setProperty(key, addlSchema, value);
|
|
2018
2091
|
}
|
|
2019
2092
|
}
|
|
2020
2093
|
}
|
|
@@ -2025,37 +2098,37 @@
|
|
|
2025
2098
|
}
|
|
2026
2099
|
return target;
|
|
2027
2100
|
}
|
|
2028
|
-
function handleArray(
|
|
2029
|
-
const { items, additionalItems } =
|
|
2101
|
+
function handleArray(childSchema, source, target) {
|
|
2102
|
+
const { items, additionalItems } = childSchema;
|
|
2030
2103
|
if (items !== void 0) {
|
|
2031
2104
|
if (Array.isArray(items)) {
|
|
2032
|
-
for (let i = 0; i < items.length; i
|
|
2033
|
-
target.push(
|
|
2105
|
+
for (let i = 0; i < items.length; i += 1) {
|
|
2106
|
+
target.push(omit2(items[i], source[i]));
|
|
2034
2107
|
}
|
|
2035
2108
|
} else {
|
|
2036
|
-
for (let i = 0; i < source.length; i
|
|
2037
|
-
target.push(
|
|
2109
|
+
for (let i = 0; i < source.length; i += 1) {
|
|
2110
|
+
target.push(omit2(items, source[i]));
|
|
2038
2111
|
}
|
|
2039
2112
|
}
|
|
2040
2113
|
}
|
|
2041
2114
|
if (additionalItems) {
|
|
2042
|
-
for (let i = target.length; i < source.length; i
|
|
2043
|
-
target.push(
|
|
2115
|
+
for (let i = target.length; i < source.length; i += 1) {
|
|
2116
|
+
target.push(omit2(additionalItems, source[i]));
|
|
2044
2117
|
}
|
|
2045
2118
|
}
|
|
2046
2119
|
return target;
|
|
2047
2120
|
}
|
|
2048
|
-
function handleConditions(
|
|
2049
|
-
const { if: condition, then, else: otherwise } =
|
|
2121
|
+
function handleConditions(childSchema, source, target) {
|
|
2122
|
+
const { if: condition, then, else: otherwise } = childSchema;
|
|
2050
2123
|
if (condition === void 0) {
|
|
2051
2124
|
return target;
|
|
2052
2125
|
}
|
|
2053
2126
|
const isThenBranch = isSchemaObj(condition) ? validator.isValid(condition, source, rootSchema) : condition;
|
|
2054
2127
|
const branch = isThenBranch ? then : otherwise;
|
|
2055
|
-
return branch === void 0 ? target :
|
|
2128
|
+
return branch === void 0 ? target : omit2(branch, source, target);
|
|
2056
2129
|
}
|
|
2057
|
-
function handleOneOf(oneOf,
|
|
2058
|
-
if (!Array.isArray(oneOf) || isSelect(validator,
|
|
2130
|
+
function handleOneOf(oneOf, childSchema, source, target) {
|
|
2131
|
+
if (!Array.isArray(oneOf) || isSelect(validator, childSchema, rootSchema, experimental_customMergeAllOf)) {
|
|
2059
2132
|
return target;
|
|
2060
2133
|
}
|
|
2061
2134
|
const scoringOptions = relaxOptionsForScoring(oneOf, true, rootSchema);
|
|
@@ -2065,92 +2138,126 @@
|
|
|
2065
2138
|
source,
|
|
2066
2139
|
scoringOptions,
|
|
2067
2140
|
0,
|
|
2068
|
-
getDiscriminatorFieldFromSchema(
|
|
2141
|
+
getDiscriminatorFieldFromSchema(childSchema),
|
|
2069
2142
|
experimental_customMergeAllOf
|
|
2070
2143
|
);
|
|
2071
2144
|
const winning = oneOf[bestIndex];
|
|
2072
2145
|
const resolved = isObject(winning) ? resolveAllReferences(winning, rootSchema, []) : scoringOptions[bestIndex];
|
|
2073
|
-
return
|
|
2146
|
+
return omit2(resolved, source, target);
|
|
2074
2147
|
}
|
|
2075
|
-
function handleAnyOf(
|
|
2076
|
-
const { anyOf } =
|
|
2148
|
+
function handleAnyOf(childSchema, source, target) {
|
|
2149
|
+
const { anyOf } = childSchema;
|
|
2077
2150
|
if (!Array.isArray(anyOf)) {
|
|
2078
2151
|
return target;
|
|
2079
2152
|
}
|
|
2080
2153
|
if (source === void 0 || Array.isArray(source) && source.length === 0 || isObject(source) && Object.keys(source).length === 0) {
|
|
2154
|
+
let result = target;
|
|
2081
2155
|
for (const branch of anyOf) {
|
|
2082
|
-
|
|
2156
|
+
result = omit2(branch, source, result);
|
|
2083
2157
|
}
|
|
2084
|
-
return
|
|
2158
|
+
return result;
|
|
2085
2159
|
}
|
|
2086
|
-
return handleOneOf(anyOf,
|
|
2160
|
+
return handleOneOf(anyOf, childSchema, source, target);
|
|
2087
2161
|
}
|
|
2088
|
-
function handleDependencies(
|
|
2089
|
-
const { dependencies } =
|
|
2162
|
+
function handleDependencies(childSchema, source, target) {
|
|
2163
|
+
const { dependencies } = childSchema;
|
|
2090
2164
|
if (dependencies === void 0 || !isObjectValue(source)) {
|
|
2091
2165
|
return target;
|
|
2092
2166
|
}
|
|
2167
|
+
let result = target;
|
|
2093
2168
|
for (const [key, deps] of Object.entries(dependencies)) {
|
|
2094
|
-
if (
|
|
2095
|
-
|
|
2169
|
+
if (key in source && !Array.isArray(deps)) {
|
|
2170
|
+
result = omit2(deps, source, result);
|
|
2096
2171
|
}
|
|
2097
|
-
target = omit3(deps, source, target);
|
|
2098
2172
|
}
|
|
2099
|
-
return
|
|
2173
|
+
return result;
|
|
2100
2174
|
}
|
|
2101
|
-
function
|
|
2175
|
+
function omit2(schemaDef, source, target) {
|
|
2102
2176
|
if (source === void 0 || schemaDef === false) {
|
|
2103
2177
|
return void 0;
|
|
2104
2178
|
}
|
|
2105
2179
|
if (schemaDef === true || isEmpty4(schemaDef)) {
|
|
2106
2180
|
return source;
|
|
2107
2181
|
}
|
|
2108
|
-
let
|
|
2109
|
-
const { $ref: ref, allOf } =
|
|
2182
|
+
let localSchema = schemaDef;
|
|
2183
|
+
const { $ref: ref, allOf } = localSchema;
|
|
2110
2184
|
if (ref !== void 0) {
|
|
2111
|
-
return
|
|
2185
|
+
return omit2(findSchemaDefinition(ref, rootSchema), source, target);
|
|
2112
2186
|
}
|
|
2113
2187
|
if (allOf) {
|
|
2114
|
-
|
|
2188
|
+
localSchema = doMergeAllOf(localSchema, experimental_customMergeAllOf);
|
|
2189
|
+
const remainingAllOf = localSchema.allOf;
|
|
2190
|
+
if (remainingAllOf) {
|
|
2191
|
+
for (let i = 0; i < remainingAllOf.length; i++) {
|
|
2192
|
+
target = omit2(remainingAllOf[i], source, target);
|
|
2193
|
+
}
|
|
2194
|
+
}
|
|
2115
2195
|
}
|
|
2116
|
-
|
|
2117
|
-
const type = getSchemaType(
|
|
2196
|
+
let filtered = handleAnyOf(localSchema, source, handleOneOf(localSchema.oneOf, localSchema, source, target));
|
|
2197
|
+
const type = getSchemaType(localSchema);
|
|
2118
2198
|
if (type === "object") {
|
|
2119
2199
|
if (!isObjectValue(source)) {
|
|
2120
2200
|
return void 0;
|
|
2121
2201
|
}
|
|
2122
|
-
|
|
2202
|
+
filtered = handleObject(localSchema, source, isObjectValue(filtered) ? filtered : {});
|
|
2123
2203
|
} else if (type === "array") {
|
|
2124
2204
|
if (!Array.isArray(source)) {
|
|
2125
2205
|
return void 0;
|
|
2126
2206
|
}
|
|
2127
|
-
|
|
2128
|
-
} else if (
|
|
2129
|
-
|
|
2207
|
+
filtered = handleArray(localSchema, source, Array.isArray(filtered) ? filtered : []);
|
|
2208
|
+
} else if (filtered === void 0) {
|
|
2209
|
+
filtered = source;
|
|
2130
2210
|
}
|
|
2131
|
-
return handleDependencies(
|
|
2211
|
+
return handleDependencies(localSchema, source, handleConditions(localSchema, source, filtered));
|
|
2132
2212
|
}
|
|
2133
|
-
return
|
|
2213
|
+
return omit2(schema, formData);
|
|
2134
2214
|
}
|
|
2135
2215
|
var NO_VALUE = /* @__PURE__ */ Symbol("no Value");
|
|
2216
|
+
function enumValuesForSchema(schema) {
|
|
2217
|
+
if (Array.isArray(schema.enum)) {
|
|
2218
|
+
return schema.enum;
|
|
2219
|
+
}
|
|
2220
|
+
const options = schema.oneOf || schema.anyOf;
|
|
2221
|
+
if (!Array.isArray(options)) {
|
|
2222
|
+
return void 0;
|
|
2223
|
+
}
|
|
2224
|
+
const values = options.map((option) => {
|
|
2225
|
+
if (CONST_KEY in option) {
|
|
2226
|
+
return option[CONST_KEY];
|
|
2227
|
+
}
|
|
2228
|
+
return Array.isArray(option.enum) && option.enum.length === 1 ? option.enum[0] : NO_VALUE;
|
|
2229
|
+
}).filter((value) => value !== NO_VALUE);
|
|
2230
|
+
return values.length > 0 ? values : void 0;
|
|
2231
|
+
}
|
|
2232
|
+
function replacementForInvalidEnumValue(schema, formValue) {
|
|
2233
|
+
const enumValues = enumValuesForSchema(schema);
|
|
2234
|
+
if (!enumValues || enumValues.some((value) => deepEquals_default(value, formValue))) {
|
|
2235
|
+
return NO_VALUE;
|
|
2236
|
+
}
|
|
2237
|
+
const defaultValue = get14(schema, DEFAULT_KEY, NO_VALUE);
|
|
2238
|
+
if (defaultValue !== NO_VALUE && enumValues.some((value) => deepEquals_default(value, defaultValue))) {
|
|
2239
|
+
return defaultValue;
|
|
2240
|
+
}
|
|
2241
|
+
return enumValues.length === 1 ? enumValues[0] : void 0;
|
|
2242
|
+
}
|
|
2136
2243
|
function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, data = {}, experimental_customMergeAllOf) {
|
|
2137
2244
|
let newFormData;
|
|
2138
2245
|
if (has5(newSchema, PROPERTIES_KEY)) {
|
|
2139
2246
|
const removeOldSchemaData = {};
|
|
2140
2247
|
if (has5(oldSchema, PROPERTIES_KEY)) {
|
|
2141
|
-
const properties =
|
|
2248
|
+
const properties = get14(oldSchema, PROPERTIES_KEY, {});
|
|
2142
2249
|
Object.keys(properties).forEach((key) => {
|
|
2143
2250
|
if (has5(data, key)) {
|
|
2144
2251
|
removeOldSchemaData[key] = void 0;
|
|
2145
2252
|
}
|
|
2146
2253
|
});
|
|
2147
2254
|
}
|
|
2148
|
-
const keys2 = Object.keys(
|
|
2255
|
+
const keys2 = Object.keys(get14(newSchema, PROPERTIES_KEY, {}));
|
|
2149
2256
|
const nestedData = {};
|
|
2150
2257
|
keys2.forEach((key) => {
|
|
2151
|
-
const formValue =
|
|
2152
|
-
let oldKeyedSchema =
|
|
2153
|
-
let newKeyedSchema =
|
|
2258
|
+
const formValue = get14(data, key);
|
|
2259
|
+
let oldKeyedSchema = get14(oldSchema, [PROPERTIES_KEY, key], {});
|
|
2260
|
+
let newKeyedSchema = get14(newSchema, [PROPERTIES_KEY, key], {});
|
|
2154
2261
|
if (has5(oldKeyedSchema, REF_KEY)) {
|
|
2155
2262
|
oldKeyedSchema = retrieveSchema(
|
|
2156
2263
|
validator,
|
|
@@ -2169,8 +2276,8 @@
|
|
|
2169
2276
|
experimental_customMergeAllOf
|
|
2170
2277
|
);
|
|
2171
2278
|
}
|
|
2172
|
-
const oldSchemaTypeForKey =
|
|
2173
|
-
const newSchemaTypeForKey =
|
|
2279
|
+
const oldSchemaTypeForKey = get14(oldKeyedSchema, "type");
|
|
2280
|
+
const newSchemaTypeForKey = get14(newKeyedSchema, "type");
|
|
2174
2281
|
if (!oldSchemaTypeForKey || oldSchemaTypeForKey === newSchemaTypeForKey) {
|
|
2175
2282
|
if (has5(removeOldSchemaData, key)) {
|
|
2176
2283
|
delete removeOldSchemaData[key];
|
|
@@ -2188,31 +2295,37 @@
|
|
|
2188
2295
|
nestedData[key] = itemData;
|
|
2189
2296
|
}
|
|
2190
2297
|
} else {
|
|
2191
|
-
const newOptionDefault =
|
|
2192
|
-
const oldOptionDefault =
|
|
2298
|
+
const newOptionDefault = get14(newKeyedSchema, DEFAULT_KEY, NO_VALUE);
|
|
2299
|
+
const oldOptionDefault = get14(oldKeyedSchema, DEFAULT_KEY, NO_VALUE);
|
|
2193
2300
|
if (newOptionDefault !== NO_VALUE && newOptionDefault !== formValue) {
|
|
2194
2301
|
if (oldOptionDefault === formValue) {
|
|
2195
2302
|
removeOldSchemaData[key] = newOptionDefault;
|
|
2196
|
-
} else if (
|
|
2303
|
+
} else if (get14(newKeyedSchema, "readOnly") === true) {
|
|
2197
2304
|
removeOldSchemaData[key] = void 0;
|
|
2198
2305
|
}
|
|
2199
2306
|
}
|
|
2200
|
-
const newOptionConst =
|
|
2201
|
-
const oldOptionConst =
|
|
2307
|
+
const newOptionConst = get14(newKeyedSchema, CONST_KEY, NO_VALUE);
|
|
2308
|
+
const oldOptionConst = get14(oldKeyedSchema, CONST_KEY, NO_VALUE);
|
|
2202
2309
|
if (newOptionConst !== NO_VALUE && newOptionConst !== formValue) {
|
|
2203
2310
|
removeOldSchemaData[key] = oldOptionConst === formValue ? newOptionConst : void 0;
|
|
2204
2311
|
}
|
|
2312
|
+
if (has5(data, key)) {
|
|
2313
|
+
const enumReplacement = replacementForInvalidEnumValue(newKeyedSchema, formValue);
|
|
2314
|
+
if (enumReplacement !== NO_VALUE) {
|
|
2315
|
+
removeOldSchemaData[key] = enumReplacement;
|
|
2316
|
+
}
|
|
2317
|
+
}
|
|
2205
2318
|
}
|
|
2206
2319
|
}
|
|
2207
2320
|
});
|
|
2208
2321
|
newFormData = {
|
|
2209
|
-
...typeof data
|
|
2322
|
+
...typeof data === "string" || Array.isArray(data) ? void 0 : data,
|
|
2210
2323
|
...removeOldSchemaData,
|
|
2211
2324
|
...nestedData
|
|
2212
2325
|
};
|
|
2213
|
-
} else if (
|
|
2214
|
-
let oldSchemaItems =
|
|
2215
|
-
let newSchemaItems =
|
|
2326
|
+
} else if (get14(oldSchema, "type") === "array" && get14(newSchema, "type") === "array" && Array.isArray(data)) {
|
|
2327
|
+
let oldSchemaItems = get14(oldSchema, "items");
|
|
2328
|
+
let newSchemaItems = get14(newSchema, "items");
|
|
2216
2329
|
if (typeof oldSchemaItems === "object" && typeof newSchemaItems === "object" && !Array.isArray(oldSchemaItems) && !Array.isArray(newSchemaItems)) {
|
|
2217
2330
|
if (has5(oldSchemaItems, REF_KEY)) {
|
|
2218
2331
|
oldSchemaItems = retrieveSchema(
|
|
@@ -2232,10 +2345,10 @@
|
|
|
2232
2345
|
experimental_customMergeAllOf
|
|
2233
2346
|
);
|
|
2234
2347
|
}
|
|
2235
|
-
const oldSchemaType =
|
|
2236
|
-
const newSchemaType =
|
|
2348
|
+
const oldSchemaType = get14(oldSchemaItems, "type");
|
|
2349
|
+
const newSchemaType = get14(newSchemaItems, "type");
|
|
2237
2350
|
if (!oldSchemaType || oldSchemaType === newSchemaType) {
|
|
2238
|
-
const maxItems =
|
|
2351
|
+
const maxItems = get14(newSchema, "maxItems", -1);
|
|
2239
2352
|
if (newSchemaType === "object") {
|
|
2240
2353
|
newFormData = data.reduce((newValue, aValue) => {
|
|
2241
2354
|
const itemValue = sanitizeDataForNewSchema(
|
|
@@ -2252,7 +2365,9 @@
|
|
|
2252
2365
|
return newValue;
|
|
2253
2366
|
}, []);
|
|
2254
2367
|
} else {
|
|
2255
|
-
|
|
2368
|
+
const newItemEnumValues = enumValuesForSchema(newSchemaItems);
|
|
2369
|
+
const filteredData = newItemEnumValues ? data.filter((item) => newItemEnumValues.some((v) => deepEquals_default(v, item))) : data;
|
|
2370
|
+
newFormData = maxItems > 0 && filteredData.length > maxItems ? filteredData.slice(0, maxItems) : filteredData;
|
|
2256
2371
|
}
|
|
2257
2372
|
}
|
|
2258
2373
|
} else if (typeof oldSchemaItems === "boolean" && typeof newSchemaItems === "boolean" && oldSchemaItems === newSchemaItems) {
|
|
@@ -2263,16 +2378,16 @@
|
|
|
2263
2378
|
}
|
|
2264
2379
|
function toPathSchemaInternal(validator, schema, name, rootSchema, formData, _recurseList = [], experimental_customMergeAllOf) {
|
|
2265
2380
|
if (REF_KEY in schema || DEPENDENCIES_KEY in schema || ALL_OF_KEY in schema || IF_KEY in schema) {
|
|
2266
|
-
const
|
|
2267
|
-
const sameSchemaIndex = _recurseList.findIndex((item) => deepEquals_default(item,
|
|
2381
|
+
const innerSchema = retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf);
|
|
2382
|
+
const sameSchemaIndex = _recurseList.findIndex((item) => deepEquals_default(item, innerSchema));
|
|
2268
2383
|
if (sameSchemaIndex === -1) {
|
|
2269
2384
|
return toPathSchemaInternal(
|
|
2270
2385
|
validator,
|
|
2271
|
-
|
|
2386
|
+
innerSchema,
|
|
2272
2387
|
name,
|
|
2273
2388
|
rootSchema,
|
|
2274
2389
|
formData,
|
|
2275
|
-
_recurseList.concat(
|
|
2390
|
+
_recurseList.concat(innerSchema),
|
|
2276
2391
|
experimental_customMergeAllOf
|
|
2277
2392
|
);
|
|
2278
2393
|
}
|
|
@@ -2292,12 +2407,12 @@
|
|
|
2292
2407
|
discriminator,
|
|
2293
2408
|
experimental_customMergeAllOf
|
|
2294
2409
|
);
|
|
2295
|
-
const
|
|
2410
|
+
const innerSchema = xxxOf[index];
|
|
2296
2411
|
pathSchema = {
|
|
2297
2412
|
...pathSchema,
|
|
2298
2413
|
...toPathSchemaInternal(
|
|
2299
2414
|
validator,
|
|
2300
|
-
|
|
2415
|
+
innerSchema,
|
|
2301
2416
|
name,
|
|
2302
2417
|
rootSchema,
|
|
2303
2418
|
formData,
|
|
@@ -2307,9 +2422,9 @@
|
|
|
2307
2422
|
};
|
|
2308
2423
|
}
|
|
2309
2424
|
if (ADDITIONAL_PROPERTIES_KEY in schema && schema[ADDITIONAL_PROPERTIES_KEY] !== false) {
|
|
2310
|
-
|
|
2425
|
+
set3(pathSchema, RJSF_ADDITIONAL_PROPERTIES_FLAG, true);
|
|
2311
2426
|
const additionalSchema = isObject2(schema[ADDITIONAL_PROPERTIES_KEY]) ? schema[ADDITIONAL_PROPERTIES_KEY] : {};
|
|
2312
|
-
const definedProperties =
|
|
2427
|
+
const definedProperties = get14(schema, PROPERTIES_KEY, {});
|
|
2313
2428
|
for (const key of Object.keys(formData ?? {})) {
|
|
2314
2429
|
if (!(key in definedProperties)) {
|
|
2315
2430
|
pathSchema[key] = toPathSchemaInternal(
|
|
@@ -2317,7 +2432,7 @@
|
|
|
2317
2432
|
additionalSchema,
|
|
2318
2433
|
`${name}.${key}`,
|
|
2319
2434
|
rootSchema,
|
|
2320
|
-
|
|
2435
|
+
get14(formData, [key]),
|
|
2321
2436
|
_recurseList,
|
|
2322
2437
|
experimental_customMergeAllOf
|
|
2323
2438
|
);
|
|
@@ -2367,7 +2482,7 @@
|
|
|
2367
2482
|
}
|
|
2368
2483
|
} else if (PROPERTIES_KEY in schema) {
|
|
2369
2484
|
for (const property in schema.properties) {
|
|
2370
|
-
const field =
|
|
2485
|
+
const field = get14(schema, [PROPERTIES_KEY, property], {});
|
|
2371
2486
|
pathSchema[property] = toPathSchemaInternal(
|
|
2372
2487
|
validator,
|
|
2373
2488
|
field,
|
|
@@ -2375,7 +2490,7 @@
|
|
|
2375
2490
|
rootSchema,
|
|
2376
2491
|
// It's possible that formData is not an object -- this can happen if an
|
|
2377
2492
|
// array item has just been added, but not populated with data yet
|
|
2378
|
-
|
|
2493
|
+
get14(formData, [property]),
|
|
2379
2494
|
_recurseList,
|
|
2380
2495
|
experimental_customMergeAllOf
|
|
2381
2496
|
);
|
|
@@ -2397,8 +2512,8 @@
|
|
|
2397
2512
|
* @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
|
|
2398
2513
|
*/
|
|
2399
2514
|
constructor(validator, rootSchema, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
|
|
2400
|
-
if (rootSchema
|
|
2401
|
-
this.rootSchema = makeAllReferencesAbsolute(rootSchema,
|
|
2515
|
+
if (rootSchema?.[SCHEMA_KEY] === JSON_SCHEMA_DRAFT_2020_12) {
|
|
2516
|
+
this.rootSchema = makeAllReferencesAbsolute(rootSchema, get14(rootSchema, ID_KEY, "#"));
|
|
2402
2517
|
} else {
|
|
2403
2518
|
this.rootSchema = rootSchema;
|
|
2404
2519
|
}
|
|
@@ -2649,6 +2764,7 @@
|
|
|
2649
2764
|
* @param [formData] - The current formData, if any, onto which to provide any missing defaults
|
|
2650
2765
|
* @returns - The `PathSchema` object for the `schema`
|
|
2651
2766
|
*/
|
|
2767
|
+
// oxlint-disable-next-line typescript/no-deprecated
|
|
2652
2768
|
toPathSchema(schema, name, formData) {
|
|
2653
2769
|
return toPathSchema(
|
|
2654
2770
|
this.validator,
|
|
@@ -2671,7 +2787,7 @@
|
|
|
2671
2787
|
|
|
2672
2788
|
// src/dataURItoBlob.ts
|
|
2673
2789
|
function dataURItoBlob(dataURILike) {
|
|
2674
|
-
if (dataURILike.
|
|
2790
|
+
if (!dataURILike.includes("data:")) {
|
|
2675
2791
|
throw new Error("File is invalid: URI must be a dataURI");
|
|
2676
2792
|
}
|
|
2677
2793
|
const dataURI = dataURILike.slice(5);
|
|
@@ -2690,13 +2806,13 @@
|
|
|
2690
2806
|
try {
|
|
2691
2807
|
const binary = atob(base64);
|
|
2692
2808
|
const array = new Array(binary.length);
|
|
2693
|
-
for (let i = 0; i < binary.length; i
|
|
2809
|
+
for (let i = 0; i < binary.length; i += 1) {
|
|
2694
2810
|
array[i] = binary.charCodeAt(i);
|
|
2695
2811
|
}
|
|
2696
2812
|
const blob = new window.Blob([new Uint8Array(array)], { type });
|
|
2697
2813
|
return { blob, name };
|
|
2698
2814
|
} catch (error) {
|
|
2699
|
-
throw new Error(
|
|
2815
|
+
throw new Error(`File is invalid: ${error.message}`);
|
|
2700
2816
|
}
|
|
2701
2817
|
}
|
|
2702
2818
|
|
|
@@ -2704,24 +2820,26 @@
|
|
|
2704
2820
|
function pad(num, width) {
|
|
2705
2821
|
let s = String(num);
|
|
2706
2822
|
while (s.length < width) {
|
|
2707
|
-
s =
|
|
2823
|
+
s = `0${s}`;
|
|
2708
2824
|
}
|
|
2709
2825
|
return s;
|
|
2710
2826
|
}
|
|
2711
2827
|
|
|
2712
2828
|
// src/dateRangeOptions.ts
|
|
2713
2829
|
function dateRangeOptions(start, stop) {
|
|
2714
|
-
|
|
2715
|
-
|
|
2716
|
-
|
|
2717
|
-
} else if (start < 0 || stop < 0) {
|
|
2830
|
+
const bothRelative = start <= 0 && stop <= 0;
|
|
2831
|
+
const eitherNegative = start < 0 || stop < 0;
|
|
2832
|
+
if (!bothRelative && eitherNegative) {
|
|
2718
2833
|
throw new Error(`Both start (${start}) and stop (${stop}) must both be <= 0 or > 0, got one of each`);
|
|
2719
2834
|
}
|
|
2720
|
-
|
|
2835
|
+
const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
|
|
2836
|
+
const resolvedStart = bothRelative ? currentYear + start : start;
|
|
2837
|
+
const resolvedStop = bothRelative ? currentYear + stop : stop;
|
|
2838
|
+
if (resolvedStart > resolvedStop) {
|
|
2721
2839
|
return dateRangeOptions(stop, start).reverse();
|
|
2722
2840
|
}
|
|
2723
2841
|
const options = [];
|
|
2724
|
-
for (let i =
|
|
2842
|
+
for (let i = resolvedStart; i <= resolvedStop; i += 1) {
|
|
2725
2843
|
options.push({ value: i, label: pad(i, 2) });
|
|
2726
2844
|
}
|
|
2727
2845
|
return options;
|
|
@@ -2817,7 +2935,7 @@
|
|
|
2817
2935
|
return match.value;
|
|
2818
2936
|
}
|
|
2819
2937
|
const index = Number(value);
|
|
2820
|
-
if (!isNaN(index) && index >= 0 && index < enumOptions.length) {
|
|
2938
|
+
if (!Number.isNaN(index) && index >= 0 && index < enumOptions.length) {
|
|
2821
2939
|
return enumOptions[index].value;
|
|
2822
2940
|
}
|
|
2823
2941
|
return emptyValue;
|
|
@@ -2869,7 +2987,7 @@
|
|
|
2869
2987
|
*/
|
|
2870
2988
|
getOrCreateErrorBlock(pathOfError) {
|
|
2871
2989
|
const hasPath = Array.isArray(pathOfError) && pathOfError.length > 0 || typeof pathOfError === "string";
|
|
2872
|
-
let errorBlock = hasPath ?
|
|
2990
|
+
let errorBlock = hasPath ? get14(this.errorSchema, pathOfError) : this.errorSchema;
|
|
2873
2991
|
if (!errorBlock && pathOfError) {
|
|
2874
2992
|
errorBlock = {};
|
|
2875
2993
|
setWith(this.errorSchema, pathOfError, errorBlock, Object);
|
|
@@ -2895,15 +3013,15 @@
|
|
|
2895
3013
|
*/
|
|
2896
3014
|
addErrors(errorOrList, pathOfError) {
|
|
2897
3015
|
const errorBlock = this.getOrCreateErrorBlock(pathOfError);
|
|
2898
|
-
let errorsList =
|
|
3016
|
+
let errorsList = get14(errorBlock, ERRORS_KEY);
|
|
2899
3017
|
if (!Array.isArray(errorsList)) {
|
|
2900
3018
|
errorsList = [];
|
|
2901
3019
|
errorBlock[ERRORS_KEY] = errorsList;
|
|
2902
3020
|
}
|
|
2903
3021
|
if (Array.isArray(errorOrList)) {
|
|
2904
|
-
|
|
3022
|
+
set3(errorBlock, ERRORS_KEY, [.../* @__PURE__ */ new Set([...errorsList, ...errorOrList])]);
|
|
2905
3023
|
} else {
|
|
2906
|
-
|
|
3024
|
+
set3(errorBlock, ERRORS_KEY, [.../* @__PURE__ */ new Set([...errorsList, errorOrList])]);
|
|
2907
3025
|
}
|
|
2908
3026
|
return this;
|
|
2909
3027
|
}
|
|
@@ -2918,7 +3036,7 @@
|
|
|
2918
3036
|
setErrors(errorOrList, pathOfError) {
|
|
2919
3037
|
const errorBlock = this.getOrCreateErrorBlock(pathOfError);
|
|
2920
3038
|
const listToAdd = Array.isArray(errorOrList) ? [.../* @__PURE__ */ new Set([...errorOrList])] : [errorOrList];
|
|
2921
|
-
|
|
3039
|
+
set3(errorBlock, ERRORS_KEY, listToAdd);
|
|
2922
3040
|
return this;
|
|
2923
3041
|
}
|
|
2924
3042
|
/** Clears the error(s) in the `ErrorSchema` at either the root level or the location within the schema described by
|
|
@@ -2930,7 +3048,7 @@
|
|
|
2930
3048
|
*/
|
|
2931
3049
|
clearErrors(pathOfError) {
|
|
2932
3050
|
const errorBlock = this.getOrCreateErrorBlock(pathOfError);
|
|
2933
|
-
|
|
3051
|
+
set3(errorBlock, ERRORS_KEY, []);
|
|
2934
3052
|
return this;
|
|
2935
3053
|
}
|
|
2936
3054
|
};
|
|
@@ -2942,13 +3060,13 @@
|
|
|
2942
3060
|
}
|
|
2943
3061
|
if (aIsPlainObject && !bIsPlainObject) {
|
|
2944
3062
|
return keys(a);
|
|
2945
|
-
}
|
|
3063
|
+
}
|
|
3064
|
+
if (!aIsPlainObject && bIsPlainObject) {
|
|
2946
3065
|
return keys(b);
|
|
2947
|
-
} else {
|
|
2948
|
-
const unequalFields = keys(pickBy(a, (value, key) => !deepEquals_default(value, get15(b, key))));
|
|
2949
|
-
const diffFields = difference(keys(b), keys(a));
|
|
2950
|
-
return [...unequalFields, ...diffFields];
|
|
2951
3066
|
}
|
|
3067
|
+
const unequalFields = keys(pickBy(a, (value, key) => !deepEquals_default(value, get14(b, key))));
|
|
3068
|
+
const diffFields = difference(keys(b), keys(a));
|
|
3069
|
+
return [...unequalFields, ...diffFields];
|
|
2952
3070
|
}
|
|
2953
3071
|
|
|
2954
3072
|
// src/getDateElementProps.ts
|
|
@@ -3047,7 +3165,7 @@
|
|
|
3047
3165
|
};
|
|
3048
3166
|
function getSubmitButtonOptions(uiSchema = {}) {
|
|
3049
3167
|
const uiOptions = getUiOptions(uiSchema);
|
|
3050
|
-
if (uiOptions
|
|
3168
|
+
if (uiOptions?.[SUBMIT_BTN_OPTIONS_KEY]) {
|
|
3051
3169
|
const options = uiOptions[SUBMIT_BTN_OPTIONS_KEY];
|
|
3052
3170
|
return { ...DEFAULT_OPTIONS, ...options };
|
|
3053
3171
|
}
|
|
@@ -3071,7 +3189,7 @@
|
|
|
3071
3189
|
);
|
|
3072
3190
|
}
|
|
3073
3191
|
function getTestIds() {
|
|
3074
|
-
if (
|
|
3192
|
+
if (get14(globalThis, "process.env.NODE_ENV") !== "test") {
|
|
3075
3193
|
return {};
|
|
3076
3194
|
}
|
|
3077
3195
|
const ids = /* @__PURE__ */ new Map();
|
|
@@ -3140,13 +3258,11 @@
|
|
|
3140
3258
|
}
|
|
3141
3259
|
};
|
|
3142
3260
|
function mergeWidgetOptions(AWidget) {
|
|
3143
|
-
let MergedWidget =
|
|
3261
|
+
let MergedWidget = get14(AWidget, "MergedWidget");
|
|
3144
3262
|
if (!MergedWidget) {
|
|
3145
|
-
const defaultOptions = AWidget.defaultProps
|
|
3146
|
-
MergedWidget = ({ options, ...props }) => {
|
|
3147
|
-
|
|
3148
|
-
};
|
|
3149
|
-
set(AWidget, "MergedWidget", MergedWidget);
|
|
3263
|
+
const defaultOptions = AWidget.defaultProps?.options || {};
|
|
3264
|
+
MergedWidget = ({ options, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(AWidget, { options: { ...defaultOptions, ...options }, ...props });
|
|
3265
|
+
set3(AWidget, "MergedWidget", MergedWidget);
|
|
3150
3266
|
}
|
|
3151
3267
|
return MergedWidget;
|
|
3152
3268
|
}
|
|
@@ -3177,23 +3293,26 @@
|
|
|
3177
3293
|
// src/hashForSchema.ts
|
|
3178
3294
|
function hashString(string) {
|
|
3179
3295
|
let hash = 0;
|
|
3180
|
-
for (let i = 0; i < string.length; i
|
|
3296
|
+
for (let i = 0; i < string.length; i++) {
|
|
3181
3297
|
const chr = string.charCodeAt(i);
|
|
3182
3298
|
hash = (hash << 5) - hash + chr;
|
|
3183
|
-
hash
|
|
3299
|
+
hash &= hash;
|
|
3184
3300
|
}
|
|
3185
3301
|
return hash.toString(16);
|
|
3186
3302
|
}
|
|
3187
3303
|
function sortedJSONStringify(object) {
|
|
3188
3304
|
const allKeys = /* @__PURE__ */ new Set();
|
|
3189
|
-
JSON.stringify(object, (key, value) =>
|
|
3305
|
+
JSON.stringify(object, (key, value) => {
|
|
3306
|
+
allKeys.add(key);
|
|
3307
|
+
return value;
|
|
3308
|
+
});
|
|
3190
3309
|
return JSON.stringify(object, Array.from(allKeys).sort());
|
|
3191
3310
|
}
|
|
3192
3311
|
function hashObject(object) {
|
|
3193
3312
|
return hashString(sortedJSONStringify(object));
|
|
3194
3313
|
}
|
|
3195
3314
|
function hashForSchema(schema) {
|
|
3196
|
-
return
|
|
3315
|
+
return hashString(sortedJSONStringify(schema));
|
|
3197
3316
|
}
|
|
3198
3317
|
|
|
3199
3318
|
// src/hasWidget.ts
|
|
@@ -3244,6 +3363,8 @@
|
|
|
3244
3363
|
function isFormDataAvailable(formData) {
|
|
3245
3364
|
return !isNil(formData) && (!isObject2(formData) || Array.isArray(formData) || !isEmpty4(formData));
|
|
3246
3365
|
}
|
|
3366
|
+
|
|
3367
|
+
// src/isRootSchema.ts
|
|
3247
3368
|
function isRootSchema(registry, schemaToCompare) {
|
|
3248
3369
|
const { rootSchema, schemaUtils } = registry;
|
|
3249
3370
|
if (deepEquals_default(schemaToCompare, rootSchema)) {
|
|
@@ -3251,7 +3372,7 @@
|
|
|
3251
3372
|
}
|
|
3252
3373
|
if (REF_KEY in rootSchema) {
|
|
3253
3374
|
const resolvedSchema = schemaUtils.retrieveSchema(rootSchema);
|
|
3254
|
-
return deepEquals_default(schemaToCompare,
|
|
3375
|
+
return deepEquals_default(schemaToCompare, resolvedSchema);
|
|
3255
3376
|
}
|
|
3256
3377
|
return false;
|
|
3257
3378
|
}
|
|
@@ -3265,12 +3386,21 @@
|
|
|
3265
3386
|
function localToUTC(dateString) {
|
|
3266
3387
|
return dateString ? new Date(dateString).toJSON() : void 0;
|
|
3267
3388
|
}
|
|
3389
|
+
|
|
3390
|
+
// src/logUnsupportedDefaultForEnum.ts
|
|
3391
|
+
function logUnsupportedDefaultForEnum(id, schema, enumOptions, multiple = false) {
|
|
3392
|
+
if (!multiple && Array.isArray(enumOptions) && schema.default !== void 0 && enumOptionsIndexForValue(schema.default, enumOptions, multiple) === void 0) {
|
|
3393
|
+
console.error(
|
|
3394
|
+
`The schema default value "${schema.default}" is not one of the values in the enum options for "${id}"`
|
|
3395
|
+
);
|
|
3396
|
+
}
|
|
3397
|
+
}
|
|
3268
3398
|
function lookupFromFormContext(regOrFc, toLookup, fallback) {
|
|
3269
3399
|
const lookupPath = [LOOKUP_MAP_NAME];
|
|
3270
3400
|
if (has5(regOrFc, FORM_CONTEXT_NAME)) {
|
|
3271
3401
|
lookupPath.unshift(FORM_CONTEXT_NAME);
|
|
3272
3402
|
}
|
|
3273
|
-
return
|
|
3403
|
+
return get14(regOrFc, [...lookupPath, toLookup], fallback);
|
|
3274
3404
|
}
|
|
3275
3405
|
|
|
3276
3406
|
// src/nameGenerators.ts
|
|
@@ -3298,9 +3428,9 @@
|
|
|
3298
3428
|
if (!Array.isArray(order)) {
|
|
3299
3429
|
return properties;
|
|
3300
3430
|
}
|
|
3301
|
-
const arrayToHash = (arr) => arr.reduce((
|
|
3302
|
-
|
|
3303
|
-
return
|
|
3431
|
+
const arrayToHash = (arr) => arr.reduce((acc, curr) => {
|
|
3432
|
+
acc[curr] = true;
|
|
3433
|
+
return acc;
|
|
3304
3434
|
}, {});
|
|
3305
3435
|
const errorPropList = (arr) => arr.length > 1 ? `properties '${arr.join("', '")}'` : `property '${arr[0]}'`;
|
|
3306
3436
|
const propertyHash = arrayToHash(properties);
|
|
@@ -3336,7 +3466,7 @@
|
|
|
3336
3466
|
}
|
|
3337
3467
|
const date = new Date(dateString);
|
|
3338
3468
|
if (Number.isNaN(date.getTime())) {
|
|
3339
|
-
throw new Error(
|
|
3469
|
+
throw new Error(`Unable to parse date ${dateString}`);
|
|
3340
3470
|
}
|
|
3341
3471
|
return {
|
|
3342
3472
|
year: date.getUTCFullYear(),
|
|
@@ -3389,11 +3519,10 @@
|
|
|
3389
3519
|
const isArr = Array.isArray(value);
|
|
3390
3520
|
if ((isObj || isArr) && properties[key]) {
|
|
3391
3521
|
const cleaned = removeOptionalEmptyObjects(validator, propertySchema, rootSchema, value);
|
|
3392
|
-
if (
|
|
3393
|
-
|
|
3522
|
+
if (isRequired || !isValueEmpty(cleaned)) {
|
|
3523
|
+
result[key] = cleaned;
|
|
3524
|
+
hasAnyValue = true;
|
|
3394
3525
|
}
|
|
3395
|
-
result[key] = cleaned;
|
|
3396
|
-
hasAnyValue = true;
|
|
3397
3526
|
} else if (isRequired || !isValueEmpty(value) || !properties[key]) {
|
|
3398
3527
|
result[key] = value;
|
|
3399
3528
|
if (!isValueEmpty(value)) {
|
|
@@ -3430,23 +3559,22 @@
|
|
|
3430
3559
|
}
|
|
3431
3560
|
for (const keyword of [ONE_OF_KEY, ANY_OF_KEY]) {
|
|
3432
3561
|
const schemaOptions = resolvedSchema[keyword];
|
|
3433
|
-
if (
|
|
3434
|
-
|
|
3435
|
-
|
|
3436
|
-
|
|
3437
|
-
|
|
3438
|
-
|
|
3439
|
-
|
|
3440
|
-
|
|
3441
|
-
|
|
3442
|
-
|
|
3443
|
-
|
|
3444
|
-
|
|
3445
|
-
|
|
3562
|
+
if (Array.isArray(schemaOptions) && schemaOptions.length > 0) {
|
|
3563
|
+
const currentUiSchemaArray = result[keyword];
|
|
3564
|
+
const uiSchemaArray = Array.isArray(currentUiSchemaArray) ? [...currentUiSchemaArray] : [];
|
|
3565
|
+
let hasExpanded = false;
|
|
3566
|
+
for (let i = 0; i < schemaOptions.length; i++) {
|
|
3567
|
+
const option = schemaOptions[i];
|
|
3568
|
+
const optionRef = option?.[RJSF_REF_KEY] ?? option?.[REF_KEY];
|
|
3569
|
+
if (optionRef && optionRef in definitions) {
|
|
3570
|
+
const optionUiSchema = uiSchemaArray[i] || {};
|
|
3571
|
+
uiSchemaArray[i] = mergeObjects(definitions[optionRef], optionUiSchema);
|
|
3572
|
+
hasExpanded = true;
|
|
3573
|
+
}
|
|
3574
|
+
}
|
|
3575
|
+
if (hasExpanded) {
|
|
3576
|
+
result[keyword] = uiSchemaArray;
|
|
3446
3577
|
}
|
|
3447
|
-
}
|
|
3448
|
-
if (hasExpanded) {
|
|
3449
|
-
result[keyword] = uiSchemaArray;
|
|
3450
3578
|
}
|
|
3451
3579
|
}
|
|
3452
3580
|
}
|
|
@@ -3458,13 +3586,13 @@
|
|
|
3458
3586
|
if (schema.const) {
|
|
3459
3587
|
return true;
|
|
3460
3588
|
}
|
|
3461
|
-
if (schema.enum
|
|
3589
|
+
if (schema.enum?.length === 1 && schema.enum[0] === true) {
|
|
3462
3590
|
return true;
|
|
3463
3591
|
}
|
|
3464
|
-
if (schema.anyOf
|
|
3592
|
+
if (schema.anyOf?.length === 1) {
|
|
3465
3593
|
return schemaRequiresTrueValue(schema.anyOf[0]);
|
|
3466
3594
|
}
|
|
3467
|
-
if (schema.oneOf
|
|
3595
|
+
if (schema.oneOf?.length === 1) {
|
|
3468
3596
|
return schemaRequiresTrueValue(schema.oneOf[0]);
|
|
3469
3597
|
}
|
|
3470
3598
|
if (schema.allOf) {
|
|
@@ -3473,6 +3601,35 @@
|
|
|
3473
3601
|
}
|
|
3474
3602
|
return false;
|
|
3475
3603
|
}
|
|
3604
|
+
function SelectedOptionDescription({ hideLabel, id, multiple, options, registry, uiSchema, value }) {
|
|
3605
|
+
if (multiple || hideLabel) {
|
|
3606
|
+
return null;
|
|
3607
|
+
}
|
|
3608
|
+
const { label = true } = getUiOptions(uiSchema, registry.globalUiOptions);
|
|
3609
|
+
if (!label) {
|
|
3610
|
+
return null;
|
|
3611
|
+
}
|
|
3612
|
+
const option = options.enumOptions?.find(({ value: enumValue }) => enumOptionsIsSelected(enumValue, value));
|
|
3613
|
+
const description = option?.schema?.description;
|
|
3614
|
+
if (!description) {
|
|
3615
|
+
return null;
|
|
3616
|
+
}
|
|
3617
|
+
const DescriptionFieldTemplate = getTemplate(
|
|
3618
|
+
"DescriptionFieldTemplate",
|
|
3619
|
+
registry,
|
|
3620
|
+
options
|
|
3621
|
+
);
|
|
3622
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3623
|
+
DescriptionFieldTemplate,
|
|
3624
|
+
{
|
|
3625
|
+
id: descriptionId(id),
|
|
3626
|
+
description,
|
|
3627
|
+
schema: option.schema,
|
|
3628
|
+
uiSchema,
|
|
3629
|
+
registry
|
|
3630
|
+
}
|
|
3631
|
+
);
|
|
3632
|
+
}
|
|
3476
3633
|
|
|
3477
3634
|
// src/shallowEquals.ts
|
|
3478
3635
|
function shallowEquals(a, b) {
|
|
@@ -3490,9 +3647,9 @@
|
|
|
3490
3647
|
if (keysA.length !== keysB.length) {
|
|
3491
3648
|
return false;
|
|
3492
3649
|
}
|
|
3493
|
-
for (let i = 0; i < keysA.length; i
|
|
3650
|
+
for (let i = 0; i < keysA.length; i += 1) {
|
|
3494
3651
|
const key = keysA[i];
|
|
3495
|
-
if (!Object.
|
|
3652
|
+
if (!Object.hasOwn(b, key) || !Object.is(a[key], b[key])) {
|
|
3496
3653
|
return false;
|
|
3497
3654
|
}
|
|
3498
3655
|
}
|
|
@@ -3554,14 +3711,14 @@
|
|
|
3554
3711
|
})
|
|
3555
3712
|
);
|
|
3556
3713
|
}
|
|
3557
|
-
return Object.keys(errorSchema).reduce((
|
|
3714
|
+
return Object.keys(errorSchema).reduce((currentList, key) => {
|
|
3558
3715
|
if (key !== ERRORS_KEY) {
|
|
3559
3716
|
const childSchema = errorSchema[key];
|
|
3560
3717
|
if (isPlainObject2(childSchema)) {
|
|
3561
|
-
|
|
3718
|
+
return currentList.concat(toErrorList(childSchema, [...fieldPath, key]));
|
|
3562
3719
|
}
|
|
3563
3720
|
}
|
|
3564
|
-
return
|
|
3721
|
+
return currentList;
|
|
3565
3722
|
}, errorList);
|
|
3566
3723
|
}
|
|
3567
3724
|
function toErrorSchema(errors) {
|
|
@@ -3597,16 +3754,15 @@
|
|
|
3597
3754
|
return Object.keys(errorHandler).reduce((acc, key) => {
|
|
3598
3755
|
if (key === "addError") {
|
|
3599
3756
|
return acc;
|
|
3600
|
-
} else {
|
|
3601
|
-
const childSchema = errorHandler[key];
|
|
3602
|
-
if (isPlainObject2(childSchema)) {
|
|
3603
|
-
return {
|
|
3604
|
-
...acc,
|
|
3605
|
-
[key]: unwrapErrorHandler(childSchema)
|
|
3606
|
-
};
|
|
3607
|
-
}
|
|
3608
|
-
return { ...acc, [key]: childSchema };
|
|
3609
3757
|
}
|
|
3758
|
+
const childSchema = errorHandler[key];
|
|
3759
|
+
if (isPlainObject2(childSchema)) {
|
|
3760
|
+
return {
|
|
3761
|
+
...acc,
|
|
3762
|
+
[key]: unwrapErrorHandler(childSchema)
|
|
3763
|
+
};
|
|
3764
|
+
}
|
|
3765
|
+
return { ...acc, [key]: childSchema };
|
|
3610
3766
|
}, {});
|
|
3611
3767
|
}
|
|
3612
3768
|
function readyForChange(state) {
|
|
@@ -3630,7 +3786,7 @@
|
|
|
3630
3786
|
} = props;
|
|
3631
3787
|
const id = `${rootId}_${type}`;
|
|
3632
3788
|
const { SelectWidget } = registry.widgets;
|
|
3633
|
-
const onChange = react.useCallback((
|
|
3789
|
+
const onChange = react.useCallback((newValue) => select(type, newValue), [select, type]);
|
|
3634
3790
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3635
3791
|
SelectWidget,
|
|
3636
3792
|
{
|
|
@@ -3660,10 +3816,10 @@
|
|
|
3660
3816
|
setState(parseDateString(value, time));
|
|
3661
3817
|
}, [time, value]);
|
|
3662
3818
|
const handleChange = react.useCallback(
|
|
3663
|
-
(property,
|
|
3819
|
+
(property, newValue) => {
|
|
3664
3820
|
const nextState = {
|
|
3665
3821
|
...state,
|
|
3666
|
-
[property]: typeof
|
|
3822
|
+
[property]: typeof newValue === "undefined" ? -1 : newValue
|
|
3667
3823
|
};
|
|
3668
3824
|
if (readyForChange(nextState)) {
|
|
3669
3825
|
onChange(toDateString(nextState, time));
|
|
@@ -3715,7 +3871,7 @@
|
|
|
3715
3871
|
function addNameToDataURL(dataURL, name) {
|
|
3716
3872
|
return dataURL.replace(";base64", `;name=${encodeURIComponent(name)};base64`);
|
|
3717
3873
|
}
|
|
3718
|
-
function processFile(file) {
|
|
3874
|
+
async function processFile(file) {
|
|
3719
3875
|
const { name, size, type } = file;
|
|
3720
3876
|
return new Promise((resolve, reject) => {
|
|
3721
3877
|
const reader = new window.FileReader();
|
|
@@ -3740,7 +3896,7 @@
|
|
|
3740
3896
|
reader.readAsDataURL(file);
|
|
3741
3897
|
});
|
|
3742
3898
|
}
|
|
3743
|
-
function processFiles(files) {
|
|
3899
|
+
async function processFiles(files) {
|
|
3744
3900
|
return Promise.all(Array.from(files).map(processFile));
|
|
3745
3901
|
}
|
|
3746
3902
|
function extractFileInfo(dataURLs) {
|
|
@@ -3834,22 +3990,21 @@
|
|
|
3834
3990
|
return { errorSchema, errors };
|
|
3835
3991
|
}
|
|
3836
3992
|
function withIdRefPrefixObject(node) {
|
|
3837
|
-
|
|
3838
|
-
|
|
3839
|
-
|
|
3840
|
-
|
|
3841
|
-
|
|
3842
|
-
|
|
3843
|
-
|
|
3993
|
+
const realObj = node;
|
|
3994
|
+
for (const key in realObj) {
|
|
3995
|
+
if (Object.hasOwn(realObj, key)) {
|
|
3996
|
+
const value = realObj[key];
|
|
3997
|
+
if (key === REF_KEY && typeof value === "string" && value.startsWith("#")) {
|
|
3998
|
+
realObj[key] = ROOT_SCHEMA_PREFIX + value;
|
|
3999
|
+
} else {
|
|
4000
|
+
realObj[key] = withIdRefPrefix(value);
|
|
4001
|
+
}
|
|
3844
4002
|
}
|
|
3845
4003
|
}
|
|
3846
4004
|
return node;
|
|
3847
4005
|
}
|
|
3848
4006
|
function withIdRefPrefixArray(node) {
|
|
3849
|
-
|
|
3850
|
-
node[i] = withIdRefPrefix(node[i]);
|
|
3851
|
-
}
|
|
3852
|
-
return node;
|
|
4007
|
+
return node.map((item) => withIdRefPrefix(item));
|
|
3853
4008
|
}
|
|
3854
4009
|
function withIdRefPrefix(schemaNode) {
|
|
3855
4010
|
if (Array.isArray(schemaNode)) {
|
|
@@ -3874,6 +4029,7 @@
|
|
|
3874
4029
|
TranslatableString2["AddButton"] = "Add";
|
|
3875
4030
|
TranslatableString2["AddItemButton"] = "Add Item";
|
|
3876
4031
|
TranslatableString2["CopyButton"] = "Copy";
|
|
4032
|
+
TranslatableString2["ExpandButton"] = "Expand Cycle";
|
|
3877
4033
|
TranslatableString2["MoveDownButton"] = "Move down";
|
|
3878
4034
|
TranslatableString2["MoveUpButton"] = "Move up";
|
|
3879
4035
|
TranslatableString2["RemoveButton"] = "Remove";
|
|
@@ -3894,6 +4050,7 @@
|
|
|
3894
4050
|
TranslatableString2["TitleOptionPrefix"] = "%1 option %2";
|
|
3895
4051
|
TranslatableString2["KeyLabel"] = "%1 Key";
|
|
3896
4052
|
TranslatableString2["DeprecatedLabel"] = "%1 (deprecated)";
|
|
4053
|
+
TranslatableString2["CycleDetected"] = 'Circular reference ($ref cycle) detected for field "%1". You may choose to expand to the next cycle break';
|
|
3897
4054
|
TranslatableString2["InvalidObjectField"] = 'Invalid "%1" object field configuration: _%2_.';
|
|
3898
4055
|
TranslatableString2["UnsupportedField"] = "Unsupported field schema.";
|
|
3899
4056
|
TranslatableString2["UnsupportedFieldWithId"] = "Unsupported field schema for field `%1`.";
|
|
@@ -3927,7 +4084,7 @@
|
|
|
3927
4084
|
* @param hash - The hash value at which to map the schema
|
|
3928
4085
|
*/
|
|
3929
4086
|
addSchema(schema, hash) {
|
|
3930
|
-
const key =
|
|
4087
|
+
const key = get14(schema, ID_KEY, hash);
|
|
3931
4088
|
const identifiedSchema = { ...schema, [ID_KEY]: key };
|
|
3932
4089
|
const existing = this.schemaMap[key];
|
|
3933
4090
|
if (!existing) {
|
|
@@ -3993,20 +4150,20 @@
|
|
|
3993
4150
|
// src/parser/schemaParser.ts
|
|
3994
4151
|
function parseSchema(validator, recurseList, rootSchema, schema) {
|
|
3995
4152
|
const schemas = retrieveSchemaInternal(validator, schema, rootSchema, void 0, true);
|
|
3996
|
-
schemas.forEach((
|
|
3997
|
-
const sameSchemaIndex = recurseList.findIndex((item) => deepEquals_default(item,
|
|
4153
|
+
schemas.forEach((localSchema) => {
|
|
4154
|
+
const sameSchemaIndex = recurseList.findIndex((item) => deepEquals_default(item, localSchema));
|
|
3998
4155
|
if (sameSchemaIndex === -1) {
|
|
3999
|
-
recurseList.push(
|
|
4000
|
-
const allOptions = resolveAnyOrOneOfSchemas(validator,
|
|
4156
|
+
recurseList.push(localSchema);
|
|
4157
|
+
const allOptions = resolveAnyOrOneOfSchemas(validator, localSchema, rootSchema, true);
|
|
4001
4158
|
allOptions.forEach((s) => {
|
|
4002
4159
|
if (PROPERTIES_KEY in s && s[PROPERTIES_KEY]) {
|
|
4003
|
-
forEach(
|
|
4160
|
+
forEach(localSchema[PROPERTIES_KEY], (value) => {
|
|
4004
4161
|
parseSchema(validator, recurseList, rootSchema, value);
|
|
4005
4162
|
});
|
|
4006
4163
|
}
|
|
4007
4164
|
});
|
|
4008
|
-
if (ITEMS_KEY in
|
|
4009
|
-
parseSchema(validator, recurseList, rootSchema,
|
|
4165
|
+
if (ITEMS_KEY in localSchema && !Array.isArray(localSchema.items) && typeof localSchema.items !== "boolean") {
|
|
4166
|
+
parseSchema(validator, recurseList, rootSchema, localSchema.items);
|
|
4010
4167
|
}
|
|
4011
4168
|
}
|
|
4012
4169
|
});
|
|
@@ -4049,10 +4206,13 @@
|
|
|
4049
4206
|
exports.REF_KEY = REF_KEY;
|
|
4050
4207
|
exports.REQUIRED_KEY = REQUIRED_KEY;
|
|
4051
4208
|
exports.RJSF_ADDITIONAL_PROPERTIES_FLAG = RJSF_ADDITIONAL_PROPERTIES_FLAG;
|
|
4209
|
+
exports.RJSF_PREFIX_KEY = RJSF_PREFIX_KEY;
|
|
4210
|
+
exports.RJSF_REF_CYCLE_KEY = RJSF_REF_CYCLE_KEY;
|
|
4052
4211
|
exports.RJSF_REF_KEY = RJSF_REF_KEY;
|
|
4053
4212
|
exports.ROOT_SCHEMA_PREFIX = ROOT_SCHEMA_PREFIX;
|
|
4054
4213
|
exports.SCHEMA_KEY = SCHEMA_KEY;
|
|
4055
4214
|
exports.SUBMIT_BTN_OPTIONS_KEY = SUBMIT_BTN_OPTIONS_KEY;
|
|
4215
|
+
exports.SelectedOptionDescription = SelectedOptionDescription;
|
|
4056
4216
|
exports.TranslatableString = TranslatableString;
|
|
4057
4217
|
exports.UI_DEFINITIONS_KEY = UI_DEFINITIONS_KEY;
|
|
4058
4218
|
exports.UI_FIELD_KEY = UI_FIELD_KEY;
|
|
@@ -4123,6 +4283,7 @@
|
|
|
4123
4283
|
exports.isValueEmpty = isValueEmpty;
|
|
4124
4284
|
exports.labelValue = labelValue;
|
|
4125
4285
|
exports.localToUTC = localToUTC;
|
|
4286
|
+
exports.logUnsupportedDefaultForEnum = logUnsupportedDefaultForEnum;
|
|
4126
4287
|
exports.lookupFromFormContext = lookupFromFormContext;
|
|
4127
4288
|
exports.mergeDefaultsWithFormData = mergeDefaultsWithFormData;
|
|
4128
4289
|
exports.mergeObjects = mergeObjects;
|