@rjsf/utils 6.7.1 → 6.10.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/dist/index.cjs +521 -425
- package/dist/index.cjs.map +4 -4
- package/dist/utils.esm.js +520 -424
- package/dist/utils.esm.js.map +4 -4
- package/dist/utils.umd.js +579 -333
- package/lib/ErrorSchemaBuilder.d.ts +8 -7
- package/lib/ErrorSchemaBuilder.d.ts.map +1 -0
- package/lib/ErrorSchemaBuilder.js +29 -27
- package/lib/ErrorSchemaBuilder.js.map +1 -1
- package/lib/SelectedOptionDescription.d.ts +2 -1
- package/lib/SelectedOptionDescription.d.ts.map +1 -0
- package/lib/SelectedOptionDescription.js +6 -7
- package/lib/SelectedOptionDescription.js.map +1 -1
- package/lib/allowAdditionalItems.d.ts +2 -1
- package/lib/allowAdditionalItems.d.ts.map +1 -0
- package/lib/allowAdditionalItems.js +1 -1
- package/lib/allowAdditionalItems.js.map +1 -1
- package/lib/asNumber.d.ts +1 -0
- package/lib/asNumber.d.ts.map +1 -0
- package/lib/asNumber.js +1 -1
- package/lib/asNumber.js.map +1 -1
- package/lib/canExpand.d.ts +2 -1
- package/lib/canExpand.d.ts.map +1 -0
- package/lib/canExpand.js +1 -1
- package/lib/canExpand.js.map +1 -1
- package/lib/constIsAjvDataReference.d.ts +2 -1
- package/lib/constIsAjvDataReference.d.ts.map +1 -0
- package/lib/constIsAjvDataReference.js +2 -3
- package/lib/constIsAjvDataReference.js.map +1 -1
- package/lib/constants.d.ts +1 -0
- package/lib/constants.d.ts.map +1 -0
- package/lib/createErrorHandler.d.ts +2 -1
- package/lib/createErrorHandler.d.ts.map +1 -0
- package/lib/createErrorHandler.js +3 -4
- package/lib/createErrorHandler.js.map +1 -1
- package/lib/createSchemaUtils.d.ts +2 -1
- package/lib/createSchemaUtils.d.ts.map +1 -0
- package/lib/createSchemaUtils.js +10 -7
- package/lib/createSchemaUtils.js.map +1 -1
- package/lib/dataURItoBlob.d.ts +1 -0
- package/lib/dataURItoBlob.d.ts.map +1 -0
- package/lib/dataURItoBlob.js +1 -2
- package/lib/dataURItoBlob.js.map +1 -1
- package/lib/dateRangeOptions.d.ts +2 -1
- package/lib/dateRangeOptions.d.ts.map +1 -0
- package/lib/dateRangeOptions.js +1 -1
- package/lib/dateRangeOptions.js.map +1 -1
- package/lib/deepEquals.d.ts +1 -0
- package/lib/deepEquals.d.ts.map +1 -0
- package/lib/englishStringTranslator.d.ts +2 -1
- package/lib/englishStringTranslator.d.ts.map +1 -0
- package/lib/englishStringTranslator.js +1 -1
- package/lib/englishStringTranslator.js.map +1 -1
- package/lib/enumOptionSelectedValue.d.ts +2 -1
- package/lib/enumOptionSelectedValue.d.ts.map +1 -0
- package/lib/enumOptionSelectedValue.js +1 -1
- package/lib/enumOptionSelectedValue.js.map +1 -1
- package/lib/enumOptionValueDecoder.d.ts +2 -1
- package/lib/enumOptionValueDecoder.d.ts.map +1 -0
- package/lib/enumOptionValueDecoder.js +1 -1
- package/lib/enumOptionValueDecoder.js.map +1 -1
- package/lib/enumOptionValueEncoder.d.ts +2 -1
- package/lib/enumOptionValueEncoder.d.ts.map +1 -0
- package/lib/enumOptionValueEncoder.js +1 -2
- package/lib/enumOptionValueEncoder.js.map +1 -1
- package/lib/enumOptionsDeselectValue.d.ts +2 -1
- package/lib/enumOptionsDeselectValue.d.ts.map +1 -0
- package/lib/enumOptionsDeselectValue.js +2 -2
- package/lib/enumOptionsDeselectValue.js.map +1 -1
- package/lib/enumOptionsIndexForValue.d.ts +2 -1
- package/lib/enumOptionsIndexForValue.d.ts.map +1 -0
- package/lib/enumOptionsIndexForValue.js +1 -1
- package/lib/enumOptionsIndexForValue.js.map +1 -1
- package/lib/enumOptionsIsSelected.d.ts +2 -1
- package/lib/enumOptionsIsSelected.d.ts.map +1 -0
- package/lib/enumOptionsIsSelected.js +1 -1
- package/lib/enumOptionsIsSelected.js.map +1 -1
- package/lib/enumOptionsSelectValue.d.ts +2 -1
- package/lib/enumOptionsSelectValue.d.ts.map +1 -0
- package/lib/enumOptionsSelectValue.js +2 -3
- package/lib/enumOptionsSelectValue.js.map +1 -1
- package/lib/enumOptionsValueForIndex.d.ts +2 -1
- package/lib/enumOptionsValueForIndex.d.ts.map +1 -0
- package/lib/enums.d.ts +1 -0
- package/lib/enums.d.ts.map +1 -0
- package/lib/findSchemaDefinition.d.ts +2 -1
- package/lib/findSchemaDefinition.d.ts.map +1 -0
- package/lib/findSchemaDefinition.js +7 -11
- package/lib/findSchemaDefinition.js.map +1 -1
- package/lib/getChangedFields.d.ts +11 -2
- package/lib/getChangedFields.d.ts.map +1 -0
- package/lib/getChangedFields.js +57 -18
- package/lib/getChangedFields.js.map +1 -1
- package/lib/getDateElementProps.d.ts +2 -1
- package/lib/getDateElementProps.d.ts.map +1 -0
- package/lib/getDecimalSeparator.d.ts +1 -0
- package/lib/getDecimalSeparator.d.ts.map +1 -0
- package/lib/getDecimalSeparator.js +1 -2
- package/lib/getDecimalSeparator.js.map +1 -1
- package/lib/getDiscriminatorFieldFromSchema.d.ts +2 -1
- package/lib/getDiscriminatorFieldFromSchema.d.ts.map +1 -0
- package/lib/getDiscriminatorFieldFromSchema.js +4 -5
- package/lib/getDiscriminatorFieldFromSchema.js.map +1 -1
- package/lib/getInputProps.d.ts +2 -1
- package/lib/getInputProps.d.ts.map +1 -0
- package/lib/getInputProps.js +4 -1
- package/lib/getInputProps.js.map +1 -1
- package/lib/getOptionMatchingSimpleDiscriminator.d.ts +2 -1
- package/lib/getOptionMatchingSimpleDiscriminator.d.ts.map +1 -0
- package/lib/getOptionMatchingSimpleDiscriminator.js +6 -6
- package/lib/getOptionMatchingSimpleDiscriminator.js.map +1 -1
- package/lib/getOptionValueFormat.d.ts +2 -1
- package/lib/getOptionValueFormat.d.ts.map +1 -0
- package/lib/getOptionValueFormat.js +1 -2
- package/lib/getOptionValueFormat.js.map +1 -1
- package/lib/getPropertySchema.d.ts +12 -0
- package/lib/getPropertySchema.d.ts.map +1 -0
- package/lib/getPropertySchema.js +14 -0
- package/lib/getPropertySchema.js.map +1 -0
- package/lib/getSchemaType.d.ts +2 -1
- package/lib/getSchemaType.d.ts.map +1 -0
- package/lib/getSchemaType.js +1 -1
- package/lib/getSchemaType.js.map +1 -1
- package/lib/getSubmitButtonOptions.d.ts +2 -1
- package/lib/getSubmitButtonOptions.d.ts.map +1 -0
- package/lib/getSubmitButtonOptions.js +3 -3
- package/lib/getSubmitButtonOptions.js.map +1 -1
- package/lib/getTemplate.d.ts +2 -1
- package/lib/getTemplate.d.ts.map +1 -0
- package/lib/getTestIds.d.ts +2 -1
- package/lib/getTestIds.d.ts.map +1 -0
- package/lib/getTestIds.js +6 -5
- package/lib/getTestIds.js.map +1 -1
- package/lib/getUiOptions.d.ts +2 -1
- package/lib/getUiOptions.d.ts.map +1 -0
- package/lib/getUiOptions.js +2 -2
- package/lib/getUiOptions.js.map +1 -1
- package/lib/getWidget.d.ts +2 -1
- package/lib/getWidget.d.ts.map +1 -0
- package/lib/getWidget.js +6 -7
- package/lib/getWidget.js.map +1 -1
- package/lib/guessType.d.ts +2 -1
- package/lib/guessType.d.ts.map +1 -0
- package/lib/hasWidget.d.ts +2 -1
- package/lib/hasWidget.d.ts.map +1 -0
- package/lib/hasWidget.js +1 -1
- package/lib/hasWidget.js.map +1 -1
- package/lib/hashForSchema.d.ts +4 -2
- package/lib/hashForSchema.d.ts.map +1 -0
- package/lib/hashForSchema.js +17 -8
- package/lib/hashForSchema.js.map +1 -1
- package/lib/idGenerators.d.ts +2 -1
- package/lib/idGenerators.d.ts.map +1 -0
- package/lib/idGenerators.js +2 -3
- package/lib/idGenerators.js.map +1 -1
- package/lib/index.d.ts +93 -87
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +85 -81
- package/lib/index.js.map +1 -1
- package/lib/isConstant.d.ts +2 -1
- package/lib/isConstant.d.ts.map +1 -0
- package/lib/isConstant.js +1 -1
- package/lib/isConstant.js.map +1 -1
- package/lib/isCustomWidget.d.ts +2 -1
- package/lib/isCustomWidget.d.ts.map +1 -0
- package/lib/isCustomWidget.js +1 -1
- package/lib/isCustomWidget.js.map +1 -1
- package/lib/isFixedItems.d.ts +2 -1
- package/lib/isFixedItems.d.ts.map +1 -0
- package/lib/isFixedItems.js +1 -1
- package/lib/isFixedItems.js.map +1 -1
- package/lib/isFormDataAvailable.d.ts +1 -0
- package/lib/isFormDataAvailable.d.ts.map +1 -0
- package/lib/isFormDataAvailable.js +7 -4
- package/lib/isFormDataAvailable.js.map +1 -1
- package/lib/isObject.d.ts +3 -1
- package/lib/isObject.d.ts.map +1 -0
- package/lib/isObject.js +8 -2
- package/lib/isObject.js.map +1 -1
- package/lib/isPlainObject.d.ts +9 -0
- package/lib/isPlainObject.d.ts.map +1 -0
- package/lib/isPlainObject.js +15 -0
- package/lib/isPlainObject.js.map +1 -0
- package/lib/isRootSchema.d.ts +2 -1
- package/lib/isRootSchema.d.ts.map +1 -0
- package/lib/isRootSchema.js +2 -2
- package/lib/isRootSchema.js.map +1 -1
- package/lib/jsonSchemaAugmentation.d.ts +1 -0
- package/lib/jsonSchemaAugmentation.d.ts.map +1 -0
- package/lib/labelValue.d.ts +1 -0
- package/lib/labelValue.d.ts.map +1 -0
- package/lib/localToUTC.d.ts +1 -0
- package/lib/localToUTC.d.ts.map +1 -0
- package/lib/logUnsupportedDefaultForEnum.d.ts +2 -1
- package/lib/logUnsupportedDefaultForEnum.d.ts.map +1 -0
- package/lib/logUnsupportedDefaultForEnum.js +1 -1
- package/lib/logUnsupportedDefaultForEnum.js.map +1 -1
- package/lib/lookupFromFormContext.d.ts +3 -2
- package/lib/lookupFromFormContext.d.ts.map +1 -0
- package/lib/lookupFromFormContext.js +4 -5
- package/lib/lookupFromFormContext.js.map +1 -1
- package/lib/mergeDefaultsWithFormData.d.ts +1 -0
- package/lib/mergeDefaultsWithFormData.d.ts.map +1 -0
- package/lib/mergeDefaultsWithFormData.js +20 -16
- package/lib/mergeDefaultsWithFormData.js.map +1 -1
- package/lib/mergeObjects.d.ts +2 -1
- package/lib/mergeObjects.d.ts.map +1 -0
- package/lib/mergeObjects.js +1 -1
- package/lib/mergeObjects.js.map +1 -1
- package/lib/mergeSchemas.d.ts +2 -1
- package/lib/mergeSchemas.d.ts.map +1 -0
- package/lib/mergeSchemas.js +4 -5
- package/lib/mergeSchemas.js.map +1 -1
- package/lib/nameGenerators.d.ts +2 -1
- package/lib/nameGenerators.d.ts.map +1 -0
- package/lib/noop.d.ts +5 -0
- package/lib/noop.d.ts.map +1 -0
- package/lib/noop.js +5 -0
- package/lib/noop.js.map +1 -0
- package/lib/optionsList.d.ts +2 -1
- package/lib/optionsList.d.ts.map +1 -0
- package/lib/optionsList.js +15 -15
- package/lib/optionsList.js.map +1 -1
- package/lib/orderProperties.d.ts +1 -0
- package/lib/orderProperties.d.ts.map +1 -0
- package/lib/pad.d.ts +1 -0
- package/lib/pad.d.ts.map +1 -0
- package/lib/parseDateString.d.ts +2 -1
- package/lib/parseDateString.d.ts.map +1 -0
- package/lib/parser/ParserValidator.d.ts +2 -1
- package/lib/parser/ParserValidator.d.ts.map +1 -0
- package/lib/parser/ParserValidator.js +8 -7
- package/lib/parser/ParserValidator.js.map +1 -1
- package/lib/parser/index.d.ts +3 -2
- package/lib/parser/index.d.ts.map +1 -0
- package/lib/parser/index.js +1 -1
- package/lib/parser/index.js.map +1 -1
- package/lib/parser/schemaParser.d.ts +3 -2
- package/lib/parser/schemaParser.d.ts.map +1 -0
- package/lib/parser/schemaParser.js +6 -7
- package/lib/parser/schemaParser.js.map +1 -1
- package/lib/pathUtils.d.ts +77 -0
- package/lib/pathUtils.d.ts.map +1 -0
- package/lib/pathUtils.js +192 -0
- package/lib/pathUtils.js.map +1 -0
- package/lib/rangeSpec.d.ts +2 -1
- package/lib/rangeSpec.d.ts.map +1 -0
- package/lib/removeOptionalEmptyObjects.d.ts +2 -1
- package/lib/removeOptionalEmptyObjects.d.ts.map +1 -0
- package/lib/removeOptionalEmptyObjects.js +2 -2
- package/lib/removeOptionalEmptyObjects.js.map +1 -1
- package/lib/replaceStringParameters.d.ts +1 -0
- package/lib/replaceStringParameters.d.ts.map +1 -0
- package/lib/resolveUiSchema.d.ts +2 -1
- package/lib/resolveUiSchema.d.ts.map +1 -0
- package/lib/resolveUiSchema.js +6 -8
- package/lib/resolveUiSchema.js.map +1 -1
- package/lib/schema/findFieldInSchema.d.ts +2 -1
- package/lib/schema/findFieldInSchema.d.ts.map +1 -0
- package/lib/schema/findFieldInSchema.js +10 -11
- package/lib/schema/findFieldInSchema.js.map +1 -1
- package/lib/schema/findSelectedOptionInXxxOf.d.ts +2 -1
- package/lib/schema/findSelectedOptionInXxxOf.d.ts.map +1 -0
- package/lib/schema/findSelectedOptionInXxxOf.js +7 -7
- package/lib/schema/findSelectedOptionInXxxOf.js.map +1 -1
- package/lib/schema/getClosestMatchingOption.d.ts +2 -1
- package/lib/schema/getClosestMatchingOption.d.ts.map +1 -0
- package/lib/schema/getClosestMatchingOption.js +18 -23
- package/lib/schema/getClosestMatchingOption.js.map +1 -1
- package/lib/schema/getDefaultFormState.d.ts +2 -1
- package/lib/schema/getDefaultFormState.d.ts.map +1 -0
- package/lib/schema/getDefaultFormState.js +78 -56
- package/lib/schema/getDefaultFormState.js.map +1 -1
- package/lib/schema/getDisplayLabel.d.ts +2 -1
- package/lib/schema/getDisplayLabel.d.ts.map +1 -0
- package/lib/schema/getDisplayLabel.js +7 -7
- package/lib/schema/getDisplayLabel.js.map +1 -1
- package/lib/schema/getFirstMatchingOption.d.ts +2 -1
- package/lib/schema/getFirstMatchingOption.d.ts.map +1 -0
- package/lib/schema/getFirstMatchingOption.js +9 -9
- package/lib/schema/getFirstMatchingOption.js.map +1 -1
- package/lib/schema/getFromSchema.d.ts +3 -2
- package/lib/schema/getFromSchema.d.ts.map +1 -0
- package/lib/schema/getFromSchema.js +10 -11
- package/lib/schema/getFromSchema.js.map +1 -1
- package/lib/schema/index.d.ts +15 -14
- package/lib/schema/index.d.ts.map +1 -0
- package/lib/schema/index.js +14 -14
- package/lib/schema/index.js.map +1 -1
- package/lib/schema/isFilesArray.d.ts +2 -1
- package/lib/schema/isFilesArray.d.ts.map +1 -0
- package/lib/schema/isFilesArray.js +2 -2
- package/lib/schema/isFilesArray.js.map +1 -1
- package/lib/schema/isMultiSelect.d.ts +2 -1
- package/lib/schema/isMultiSelect.d.ts.map +1 -0
- package/lib/schema/isMultiSelect.js +1 -1
- package/lib/schema/isMultiSelect.js.map +1 -1
- package/lib/schema/isSelect.d.ts +2 -1
- package/lib/schema/isSelect.d.ts.map +1 -0
- package/lib/schema/isSelect.js +2 -2
- package/lib/schema/isSelect.js.map +1 -1
- package/lib/schema/omitExtraData.d.ts +2 -1
- package/lib/schema/omitExtraData.d.ts.map +1 -0
- package/lib/schema/omitExtraData.js +100 -64
- package/lib/schema/omitExtraData.js.map +1 -1
- package/lib/schema/retrieveSchema.d.ts +2 -1
- package/lib/schema/retrieveSchema.d.ts.map +1 -0
- package/lib/schema/retrieveSchema.js +32 -40
- package/lib/schema/retrieveSchema.js.map +1 -1
- package/lib/schema/sanitizeDataForNewSchema.d.ts +4 -3
- package/lib/schema/sanitizeDataForNewSchema.d.ts.map +1 -0
- package/lib/schema/sanitizeDataForNewSchema.js +41 -39
- package/lib/schema/sanitizeDataForNewSchema.js.map +1 -1
- package/lib/schema/shallowAllOfMerge.d.ts +1 -0
- package/lib/schema/shallowAllOfMerge.d.ts.map +1 -0
- package/lib/schema/toPathSchema.d.ts +2 -1
- package/lib/schema/toPathSchema.d.ts.map +1 -0
- package/lib/schema/toPathSchema.js +14 -14
- package/lib/schema/toPathSchema.js.map +1 -1
- package/lib/schemaRequiresTrueValue.d.ts +2 -1
- package/lib/schemaRequiresTrueValue.d.ts.map +1 -0
- package/lib/schemaRequiresTrueValue.js +3 -4
- package/lib/schemaRequiresTrueValue.js.map +1 -1
- package/lib/shallowEquals.d.ts +1 -0
- package/lib/shallowEquals.d.ts.map +1 -0
- package/lib/shouldRender.d.ts +2 -1
- package/lib/shouldRender.d.ts.map +1 -0
- package/lib/shouldRender.js +2 -2
- package/lib/shouldRender.js.map +1 -1
- package/lib/shouldRenderOptionalField.d.ts +2 -1
- package/lib/shouldRenderOptionalField.d.ts.map +1 -0
- package/lib/shouldRenderOptionalField.js +11 -10
- package/lib/shouldRenderOptionalField.js.map +1 -1
- package/lib/toConstant.d.ts +2 -1
- package/lib/toConstant.d.ts.map +1 -0
- package/lib/toConstant.js +1 -1
- package/lib/toConstant.js.map +1 -1
- package/lib/toDateString.d.ts +2 -1
- package/lib/toDateString.d.ts.map +1 -0
- package/lib/toErrorList.d.ts +2 -1
- package/lib/toErrorList.d.ts.map +1 -0
- package/lib/toErrorList.js +20 -21
- package/lib/toErrorList.js.map +1 -1
- package/lib/toErrorSchema.d.ts +2 -1
- package/lib/toErrorSchema.d.ts.map +1 -0
- package/lib/toErrorSchema.js +4 -9
- package/lib/toErrorSchema.js.map +1 -1
- package/lib/toFieldPathId.d.ts +2 -1
- package/lib/toFieldPathId.d.ts.map +1 -0
- package/lib/toFieldPathId.js +2 -2
- package/lib/toFieldPathId.js.map +1 -1
- package/lib/types.d.ts +15 -5
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +1 -1
- package/lib/types.js.map +1 -1
- package/lib/unwrapErrorHandler.d.ts +2 -1
- package/lib/unwrapErrorHandler.d.ts.map +1 -0
- package/lib/unwrapErrorHandler.js +13 -4
- package/lib/unwrapErrorHandler.js.map +1 -1
- package/lib/useAltDateWidgetProps.d.ts +3 -2
- package/lib/useAltDateWidgetProps.d.ts.map +1 -0
- package/lib/useAltDateWidgetProps.js +5 -5
- package/lib/useAltDateWidgetProps.js.map +1 -1
- package/lib/useDeepCompareMemo.d.ts +1 -0
- package/lib/useDeepCompareMemo.d.ts.map +1 -0
- package/lib/useDeepCompareMemo.js +1 -1
- package/lib/useDeepCompareMemo.js.map +1 -1
- package/lib/useFileWidgetProps.d.ts +1 -0
- package/lib/useFileWidgetProps.d.ts.map +1 -0
- package/lib/useFileWidgetProps.js +3 -4
- package/lib/useFileWidgetProps.js.map +1 -1
- package/lib/utcToLocal.d.ts +1 -0
- package/lib/utcToLocal.d.ts.map +1 -0
- package/lib/utcToLocal.js +1 -1
- package/lib/utcToLocal.js.map +1 -1
- package/lib/validationDataMerge.d.ts +2 -1
- package/lib/validationDataMerge.d.ts.map +1 -0
- package/lib/validationDataMerge.js +3 -4
- package/lib/validationDataMerge.js.map +1 -1
- package/lib/withIdRefPrefix.d.ts +2 -1
- package/lib/withIdRefPrefix.d.ts.map +1 -0
- package/lib/withIdRefPrefix.js +2 -2
- package/lib/withIdRefPrefix.js.map +1 -1
- package/package.json +5 -6
- package/src/ErrorSchemaBuilder.ts +25 -24
- package/src/SelectedOptionDescription.tsx +5 -5
- package/src/allowAdditionalItems.ts +2 -2
- package/src/asNumber.ts +1 -1
- package/src/canExpand.ts +2 -2
- package/src/constIsAjvDataReference.ts +5 -4
- package/src/createErrorHandler.ts +5 -7
- package/src/createSchemaUtils.ts +8 -10
- package/src/dateRangeOptions.ts +2 -2
- package/src/englishStringTranslator.ts +2 -2
- package/src/enumOptionSelectedValue.ts +2 -2
- package/src/enumOptionValueDecoder.ts +2 -2
- package/src/enumOptionValueEncoder.ts +2 -4
- package/src/enumOptionsDeselectValue.ts +3 -3
- package/src/enumOptionsIndexForValue.ts +2 -2
- package/src/enumOptionsIsSelected.ts +2 -2
- package/src/enumOptionsSelectValue.ts +3 -5
- package/src/enumOptionsValueForIndex.ts +1 -1
- package/src/findSchemaDefinition.ts +8 -12
- package/src/getChangedFields.ts +57 -18
- package/src/getDateElementProps.ts +1 -1
- package/src/getDiscriminatorFieldFromSchema.ts +5 -7
- package/src/getInputProps.ts +6 -2
- package/src/getOptionMatchingSimpleDiscriminator.ts +7 -7
- package/src/getOptionValueFormat.ts +1 -1
- package/src/getPropertySchema.ts +18 -0
- package/src/getSchemaType.ts +2 -2
- package/src/getSubmitButtonOptions.ts +3 -3
- package/src/getTemplate.ts +1 -1
- package/src/getTestIds.ts +7 -6
- package/src/getUiOptions.ts +3 -3
- package/src/getWidget.tsx +6 -6
- package/src/hasWidget.ts +2 -2
- package/src/hashForSchema.ts +20 -9
- package/src/idGenerators.ts +3 -5
- package/src/index.ts +99 -85
- package/src/isConstant.ts +2 -2
- package/src/isCustomWidget.ts +2 -2
- package/src/isFixedItems.ts +2 -2
- package/src/isFormDataAvailable.ts +7 -5
- package/src/isObject.ts +15 -3
- package/src/isPlainObject.ts +14 -0
- package/src/isRootSchema.ts +3 -3
- package/src/logUnsupportedDefaultForEnum.ts +2 -2
- package/src/lookupFromFormContext.ts +7 -8
- package/src/mergeDefaultsWithFormData.ts +22 -18
- package/src/mergeObjects.ts +2 -2
- package/src/mergeSchemas.ts +5 -7
- package/src/nameGenerators.ts +1 -1
- package/src/noop.ts +4 -0
- package/src/optionsList.ts +9 -9
- package/src/orderProperties.ts +1 -1
- package/src/parseDateString.ts +1 -1
- package/src/parser/ParserValidator.ts +5 -7
- package/src/parser/index.ts +2 -2
- package/src/parser/schemaParser.ts +8 -10
- package/src/pathUtils.ts +203 -0
- package/src/rangeSpec.ts +1 -1
- package/src/removeOptionalEmptyObjects.ts +3 -3
- package/src/resolveUiSchema.ts +5 -7
- package/src/schema/findFieldInSchema.ts +11 -13
- package/src/schema/findSelectedOptionInXxxOf.ts +9 -10
- package/src/schema/getClosestMatchingOption.ts +73 -83
- package/src/schema/getDefaultFormState.ts +62 -34
- package/src/schema/getDisplayLabel.ts +7 -7
- package/src/schema/getFirstMatchingOption.ts +10 -11
- package/src/schema/getFromSchema.ts +12 -14
- package/src/schema/index.ts +14 -14
- package/src/schema/isFilesArray.ts +3 -3
- package/src/schema/isMultiSelect.ts +2 -2
- package/src/schema/isSelect.ts +3 -3
- package/src/schema/omitExtraData.ts +104 -68
- package/src/schema/retrieveSchema.ts +47 -60
- package/src/schema/sanitizeDataForNewSchema.ts +42 -41
- package/src/schema/toPathSchema.ts +14 -14
- package/src/schemaRequiresTrueValue.ts +1 -1
- package/src/shouldRender.ts +3 -3
- package/src/shouldRenderOptionalField.ts +14 -14
- package/src/toConstant.ts +2 -2
- package/src/toDateString.ts +1 -1
- package/src/toErrorList.ts +22 -25
- package/src/toErrorSchema.ts +5 -11
- package/src/toFieldPathId.ts +2 -2
- package/src/types.ts +14 -5
- package/src/unwrapErrorHandler.ts +15 -6
- package/src/useAltDateWidgetProps.tsx +7 -7
- package/src/useDeepCompareMemo.ts +1 -1
- package/src/useFileWidgetProps.ts +1 -1
- package/src/utcToLocal.ts +1 -1
- package/src/validationDataMerge.ts +4 -6
- package/src/withIdRefPrefix.ts +3 -4
- package/lib/tsconfig.tsbuildinfo +0 -1
- package/src/tsconfig.json +0 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findFieldInSchema.js","sourceRoot":"","sources":["../../src/schema/findFieldInSchema.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"findFieldInSchema.js","sourceRoot":"","sources":["../../src/schema/findFieldInSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Experimental_CustomMergeAllOf, FormContextType, RJSFSchema, StrictRJSFSchema, ValidatorType } from '../types.
|
|
1
|
+
import type { Experimental_CustomMergeAllOf, FormContextType, RJSFSchema, StrictRJSFSchema, ValidatorType } from '../types.ts';
|
|
2
2
|
/** Finds the option inside the `schema['any/oneOf']` list which has the `properties[selectorField].default` or
|
|
3
3
|
* `properties[selectorField].const` that matches the `formData[selectorField]` value. For the purposes of this
|
|
4
4
|
* function, `selectorField` is either `schema.discriminator.propertyName` or `fallbackField`. The `LayoutGridField`
|
|
@@ -14,3 +14,4 @@ import type { Experimental_CustomMergeAllOf, FormContextType, RJSFSchema, Strict
|
|
|
14
14
|
* @returns - The anyOf/oneOf option that matches the selector field in the schema or undefined if nothing is selected
|
|
15
15
|
*/
|
|
16
16
|
export default function findSelectedOptionInXxxOf<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, rootSchema: S, schema: S, fallbackField: string, xxx: 'anyOf' | 'oneOf', formData?: T, experimental_customMergeAllOf?: Experimental_CustomMergeAllOf<S>): S | undefined;
|
|
17
|
+
//# sourceMappingURL=findSelectedOptionInXxxOf.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findSelectedOptionInXxxOf.d.ts","sourceRoot":"","sources":["../../src/schema/findSelectedOptionInXxxOf.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,6BAA6B,EAC7B,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,aAAa,EACd,MAAM,aAAa,CAAC;AAGrB;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,CAAC,GAAG,GAAG,EACP,CAAC,SAAS,gBAAgB,GAAG,UAAU,EACvC,CAAC,SAAS,eAAe,GAAG,GAAG,EAE/B,SAAS,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACjC,UAAU,EAAE,CAAC,EACb,MAAM,EAAE,CAAC,EACT,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,OAAO,GAAG,OAAO,EACtB,QAAQ,GAAE,CAAW,EACrB,6BAA6B,CAAC,EAAE,6BAA6B,CAAC,CAAC,CAAC,GAC/D,CAAC,GAAG,SAAS,CAsBf"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import retrieveSchema from
|
|
1
|
+
import { CONST_KEY, DEFAULT_KEY, PROPERTIES_KEY } from "../constants.js";
|
|
2
|
+
import deepEquals from "../deepEquals.js";
|
|
3
|
+
import getDiscriminatorFieldFromSchema from "../getDiscriminatorFieldFromSchema.js";
|
|
4
|
+
import { getByPath } from "../pathUtils.js";
|
|
5
|
+
import retrieveSchema from "./retrieveSchema.js";
|
|
6
6
|
/** Finds the option inside the `schema['any/oneOf']` list which has the `properties[selectorField].default` or
|
|
7
7
|
* `properties[selectorField].const` that matches the `formData[selectorField]` value. For the purposes of this
|
|
8
8
|
* function, `selectorField` is either `schema.discriminator.propertyName` or `fallbackField`. The `LayoutGridField`
|
|
@@ -22,9 +22,9 @@ export default function findSelectedOptionInXxxOf(validator, rootSchema, schema,
|
|
|
22
22
|
const discriminator = getDiscriminatorFieldFromSchema(schema);
|
|
23
23
|
const selectorField = discriminator || fallbackField;
|
|
24
24
|
const xxxOfs = schema[xxx].map((xxxOf) => retrieveSchema(validator, xxxOf, rootSchema, formData, experimental_customMergeAllOf));
|
|
25
|
-
const data =
|
|
25
|
+
const data = getByPath(formData, selectorField);
|
|
26
26
|
if (data !== undefined) {
|
|
27
|
-
return xxxOfs.find((xxxOfOption) => deepEquals(
|
|
27
|
+
return xxxOfs.find((xxxOfOption) => deepEquals(getByPath(xxxOfOption, [PROPERTIES_KEY, selectorField, DEFAULT_KEY], getByPath(xxxOfOption, [PROPERTIES_KEY, selectorField, CONST_KEY])), data));
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findSelectedOptionInXxxOf.js","sourceRoot":"","sources":["../../src/schema/findSelectedOptionInXxxOf.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"findSelectedOptionInXxxOf.js","sourceRoot":"","sources":["../../src/schema/findSelectedOptionInXxxOf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,+BAA+B,MAAM,uCAAuC,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAQ5C,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAK/C,SAAiC,EACjC,UAAa,EACb,MAAS,EACT,aAAqB,EACrB,GAAsB,EACtB,WAAc,EAAO,EACrB,6BAAgE;IAEhE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,+BAA+B,CAAI,MAAM,CAAC,CAAC;QACjE,MAAM,aAAa,GAAG,aAAa,IAAI,aAAa,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACvC,cAAc,CAAU,SAAS,EAAE,KAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,6BAA6B,CAAC,CACpG,CAAC;QACF,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAChD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CACjC,UAAU,CACR,SAAS,CACP,WAAW,EACX,CAAC,cAAc,EAAE,aAAa,EAAE,WAAW,CAAC,EAC5C,SAAS,CAAC,WAAW,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CACnE,EACD,IAAI,CACL,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Experimental_CustomMergeAllOf, FormContextType, RJSFSchema, StrictRJSFSchema, ValidatorType } from '../types.
|
|
1
|
+
import type { Experimental_CustomMergeAllOf, FormContextType, RJSFSchema, StrictRJSFSchema, ValidatorType } from '../types.ts';
|
|
2
2
|
/** A junk option used to determine when the getFirstMatchingOption call really matches an option rather than returning
|
|
3
3
|
* the first item
|
|
4
4
|
*/
|
|
@@ -49,3 +49,4 @@ export declare function calculateIndexScore<T = any, S extends StrictRJSFSchema
|
|
|
49
49
|
* @returns - The index of the option that is the closest match to the `formData` or the `selectedOption` if no match
|
|
50
50
|
*/
|
|
51
51
|
export default function getClosestMatchingOption<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, rootSchema: S, formData: T | undefined, options: S[], selectedOption?: number, discriminatorField?: string, experimental_customMergeAllOf?: Experimental_CustomMergeAllOf<S>): number;
|
|
52
|
+
//# sourceMappingURL=getClosestMatchingOption.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getClosestMatchingOption.d.ts","sourceRoot":"","sources":["../../src/schema/getClosestMatchingOption.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,6BAA6B,EAC7B,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,aAAa,EACd,MAAM,aAAa,CAAC;AAIrB;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,gBAQzB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,gBAAgB,GAAG,UAAU,EAAE,CAAC,SAAS,eAAe,GAAG,GAAG,EACnH,SAAS,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACjC,UAAU,EAAE,CAAC,EACb,MAAM,CAAC,EAAE,CAAC,EACV,QAAQ,CAAC,EAAE,GAAG,EACd,6BAA6B,CAAC,EAAE,6BAA6B,CAAC,CAAC,CAAC,GAC/D,MAAM,CA2ER;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAC9C,CAAC,GAAG,GAAG,EACP,CAAC,SAAS,gBAAgB,GAAG,UAAU,EACvC,CAAC,SAAS,eAAe,GAAG,GAAG,EAE/B,SAAS,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACjC,UAAU,EAAE,CAAC,EACb,QAAQ,EAAE,CAAC,GAAG,SAAS,EACvB,OAAO,EAAE,CAAC,EAAE,EACZ,cAAc,SAAK,EACnB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,6BAA6B,CAAC,EAAE,6BAA6B,CAAC,CAAC,CAAC,GAC/D,MAAM,CAqDR"}
|
|
@@ -1,16 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import getDiscriminatorFieldFromSchema from '../getDiscriminatorFieldFromSchema.js';
|
|
10
|
-
import getOptionMatchingSimpleDiscriminator from '../getOptionMatchingSimpleDiscriminator.js';
|
|
11
|
-
import guessType from '../guessType.js';
|
|
12
|
-
import getFirstMatchingOption from './getFirstMatchingOption.js';
|
|
13
|
-
import retrieveSchema, { resolveAllReferences } from './retrieveSchema.js';
|
|
1
|
+
import { ONE_OF_KEY, REF_KEY, JUNK_OPTION_ID, ANY_OF_KEY } from "../constants.js";
|
|
2
|
+
import getDiscriminatorFieldFromSchema from "../getDiscriminatorFieldFromSchema.js";
|
|
3
|
+
import getOptionMatchingSimpleDiscriminator from "../getOptionMatchingSimpleDiscriminator.js";
|
|
4
|
+
import guessType from "../guessType.js";
|
|
5
|
+
import isObject from "../isObject.js";
|
|
6
|
+
import { getByPath, hasByPath } from "../pathUtils.js";
|
|
7
|
+
import getFirstMatchingOption from "./getFirstMatchingOption.js";
|
|
8
|
+
import retrieveSchema, { resolveAllReferences } from "./retrieveSchema.js";
|
|
14
9
|
/** A junk option used to determine when the getFirstMatchingOption call really matches an option rather than returning
|
|
15
10
|
* the first item
|
|
16
11
|
*/
|
|
@@ -48,25 +43,25 @@ export function calculateIndexScore(validator, rootSchema, schema, formData, exp
|
|
|
48
43
|
let totalScore = 0;
|
|
49
44
|
if (schema) {
|
|
50
45
|
if (isObject(schema.properties)) {
|
|
51
|
-
totalScore +=
|
|
52
|
-
const formValue =
|
|
46
|
+
totalScore += Object.entries(schema.properties).reduce((score, [key, value]) => {
|
|
47
|
+
const formValue = formData?.[key];
|
|
53
48
|
if (typeof value === 'boolean') {
|
|
54
49
|
return score;
|
|
55
50
|
}
|
|
56
|
-
if (
|
|
51
|
+
if (hasByPath(value, REF_KEY)) {
|
|
57
52
|
const newSchema = retrieveSchema(validator, value, rootSchema, formValue, experimental_customMergeAllOf);
|
|
58
53
|
return (score +
|
|
59
54
|
calculateIndexScore(validator, rootSchema, newSchema, formValue || {}, experimental_customMergeAllOf));
|
|
60
55
|
}
|
|
61
|
-
if ((
|
|
62
|
-
const xxxOfKey =
|
|
56
|
+
if ((hasByPath(value, ONE_OF_KEY) || hasByPath(value, ANY_OF_KEY)) && formValue) {
|
|
57
|
+
const xxxOfKey = hasByPath(value, ONE_OF_KEY) ? ONE_OF_KEY : ANY_OF_KEY;
|
|
63
58
|
const discriminator = getDiscriminatorFieldFromSchema(value);
|
|
64
59
|
return (score +
|
|
65
|
-
getClosestMatchingOption(validator, rootSchema, formValue,
|
|
60
|
+
getClosestMatchingOption(validator, rootSchema, formValue, getByPath(value, xxxOfKey), -1, discriminator, experimental_customMergeAllOf));
|
|
66
61
|
}
|
|
67
62
|
if (value.type === 'object') {
|
|
68
63
|
// If the structure is matching then give it a little boost in score
|
|
69
|
-
const structureBoost =
|
|
64
|
+
const structureBoost = typeof formValue === 'object' && formValue !== null ? 1 : 0;
|
|
70
65
|
return (score +
|
|
71
66
|
structureBoost +
|
|
72
67
|
calculateIndexScore(validator, rootSchema, value, formValue, experimental_customMergeAllOf));
|
|
@@ -90,7 +85,7 @@ export function calculateIndexScore(validator, rootSchema, schema, formData, exp
|
|
|
90
85
|
return score;
|
|
91
86
|
}, 0);
|
|
92
87
|
}
|
|
93
|
-
else if (
|
|
88
|
+
else if (typeof schema.type === 'string' && schema.type === guessType(formData)) {
|
|
94
89
|
totalScore += 1;
|
|
95
90
|
}
|
|
96
91
|
}
|
|
@@ -123,7 +118,7 @@ export default function getClosestMatchingOption(validator, rootSchema, formData
|
|
|
123
118
|
// First resolve any refs in the options
|
|
124
119
|
const resolvedOptions = options.map((option) => resolveAllReferences(option, rootSchema, []));
|
|
125
120
|
const simpleDiscriminatorMatch = getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField);
|
|
126
|
-
if (
|
|
121
|
+
if (typeof simpleDiscriminatorMatch === 'number') {
|
|
127
122
|
return simpleDiscriminatorMatch;
|
|
128
123
|
}
|
|
129
124
|
// Reduce the array of options down to a list of the indexes that are considered matching options
|
|
@@ -142,7 +137,7 @@ export default function getClosestMatchingOption(validator, rootSchema, formData
|
|
|
142
137
|
}
|
|
143
138
|
if (!allValidIndexes.length) {
|
|
144
139
|
// No indexes were valid, so we'll score all the options, add all the indexes
|
|
145
|
-
|
|
140
|
+
allValidIndexes.push(...resolvedOptions.keys());
|
|
146
141
|
}
|
|
147
142
|
const scoreCount = new Set();
|
|
148
143
|
// Score all the options in the list of valid indexes and return the index with the best score
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getClosestMatchingOption.js","sourceRoot":"","sources":["../../src/schema/getClosestMatchingOption.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"getClosestMatchingOption.js","sourceRoot":"","sources":["../../src/schema/getClosestMatchingOption.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Experimental_CustomMergeAllOf, Experimental_DefaultFormStateBehavior, FormContextType, RJSFSchema, StrictRJSFSchema, ValidatorType } from '../types.
|
|
1
|
+
import type { Experimental_CustomMergeAllOf, Experimental_DefaultFormStateBehavior, FormContextType, RJSFSchema, StrictRJSFSchema, ValidatorType } from '../types.ts';
|
|
2
2
|
/** Enum that indicates how `schema.additionalItems` should be handled by the `getInnerSchemaForArrayItem()` function.
|
|
3
3
|
*/
|
|
4
4
|
export declare enum AdditionalItemsHandling {
|
|
@@ -125,3 +125,4 @@ export declare function getDefaultBasedOnSchemaType<T = any, S extends StrictRJS
|
|
|
125
125
|
*/
|
|
126
126
|
export default function getDefaultFormState<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, theSchema: S, formData?: T, rootSchema?: S, includeUndefinedValues?: boolean | 'excludeObjectChildren', experimental_defaultFormStateBehavior?: Experimental_DefaultFormStateBehavior, experimental_customMergeAllOf?: Experimental_CustomMergeAllOf<S>, initialDefaultsGenerated?: boolean): T | T[] | undefined;
|
|
127
127
|
export {};
|
|
128
|
+
//# sourceMappingURL=getDefaultFormState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDefaultFormState.d.ts","sourceRoot":"","sources":["../../src/schema/getDefaultFormState.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import getClosestMatchingOption from
|
|
17
|
-
import isMultiSelect from
|
|
18
|
-
import isSelect from
|
|
19
|
-
import retrieveSchema, { resolveDependencies } from
|
|
1
|
+
import { ALL_OF_KEY, ANY_OF_KEY, CONST_KEY, DEFAULT_KEY, DEPENDENCIES_KEY, IF_KEY, ONE_OF_KEY, REF_KEY, } from "../constants.js";
|
|
2
|
+
import constIsAjvDataReference from "../constIsAjvDataReference.js";
|
|
3
|
+
import deepEquals from "../deepEquals.js";
|
|
4
|
+
import findSchemaDefinition from "../findSchemaDefinition.js";
|
|
5
|
+
import getDiscriminatorFieldFromSchema from "../getDiscriminatorFieldFromSchema.js";
|
|
6
|
+
import getPropertySchema from "../getPropertySchema.js";
|
|
7
|
+
import getSchemaType from "../getSchemaType.js";
|
|
8
|
+
import isConstant from "../isConstant.js";
|
|
9
|
+
import isFixedItems from "../isFixedItems.js";
|
|
10
|
+
import isObject from "../isObject.js";
|
|
11
|
+
import mergeDefaultsWithFormData from "../mergeDefaultsWithFormData.js";
|
|
12
|
+
import mergeObjects from "../mergeObjects.js";
|
|
13
|
+
import mergeSchemas from "../mergeSchemas.js";
|
|
14
|
+
import optionsList from "../optionsList.js";
|
|
15
|
+
import { getByPath } from "../pathUtils.js";
|
|
16
|
+
import getClosestMatchingOption from "./getClosestMatchingOption.js";
|
|
17
|
+
import isMultiSelect from "./isMultiSelect.js";
|
|
18
|
+
import isSelect from "./isSelect.js";
|
|
19
|
+
import retrieveSchema, { resolveDependencies } from "./retrieveSchema.js";
|
|
20
20
|
const PRIMITIVE_TYPES = ['string', 'number', 'integer', 'boolean', 'null'];
|
|
21
21
|
/** Enum that indicates how `schema.additionalItems` should be handled by the `getInnerSchemaForArrayItem()` function.
|
|
22
22
|
*/
|
|
@@ -58,6 +58,21 @@ export function getInnerSchemaForArrayItem(schema, additionalItems = AdditionalI
|
|
|
58
58
|
}
|
|
59
59
|
return {};
|
|
60
60
|
}
|
|
61
|
+
/** Determines whether `value` holds anything: a non-empty string or array, or an object with at least one own key.
|
|
62
|
+
* Everything else — including numbers, booleans, `null` and `undefined` — has no content.
|
|
63
|
+
*
|
|
64
|
+
* @param value - The value to inspect
|
|
65
|
+
* @returns - True if the value holds content, otherwise false
|
|
66
|
+
*/
|
|
67
|
+
function hasContent(value) {
|
|
68
|
+
if (typeof value === 'string' || Array.isArray(value)) {
|
|
69
|
+
return value.length > 0;
|
|
70
|
+
}
|
|
71
|
+
if (typeof value === 'object' && value !== null) {
|
|
72
|
+
return Object.keys(value).length > 0;
|
|
73
|
+
}
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
61
76
|
/** Checks if the given `schema` contains the `null` type along with another type AND if the `default` contained within
|
|
62
77
|
* the schema is `null` AND the `computedDefault` is empty. If all of those conditions are true, then the `schema`'s
|
|
63
78
|
* default should be `null` rather than `computedDefault`.
|
|
@@ -68,7 +83,7 @@ export function getInnerSchemaForArrayItem(schema, additionalItems = AdditionalI
|
|
|
68
83
|
*/
|
|
69
84
|
export function computeDefaultBasedOnSchemaTypeAndDefaults(schema, computedDefault) {
|
|
70
85
|
const { default: schemaDefault, type } = schema;
|
|
71
|
-
const shouldReturnNullAsDefault = Array.isArray(type) && type.includes('null') &&
|
|
86
|
+
const shouldReturnNullAsDefault = Array.isArray(type) && type.includes('null') && !hasContent(computedDefault) && schemaDefault === null;
|
|
72
87
|
return shouldReturnNullAsDefault ? null : computedDefault;
|
|
73
88
|
}
|
|
74
89
|
/** Either add `computedDefault` at `key` into `obj` or not add it based on its value, the value of
|
|
@@ -102,7 +117,9 @@ function maybeAddDefaultToObject(acc, key, computedDefault, includeUndefinedValu
|
|
|
102
117
|
else if (includeUndefinedValues === 'excludeObjectChildren') {
|
|
103
118
|
// Fix for Issue #4709: When in 'excludeObjectChildren' mode, don't set primitive fields to empty objects
|
|
104
119
|
// Only add the computed default if it's not an empty object placeholder for a primitive field
|
|
105
|
-
if ((isNullType && computedDefault !== undefined) ||
|
|
120
|
+
if ((isNullType && computedDefault !== undefined) ||
|
|
121
|
+
!isObject(computedDefault) ||
|
|
122
|
+
Object.keys(computedDefault).length > 0) {
|
|
106
123
|
acc[key] = computedDefault;
|
|
107
124
|
}
|
|
108
125
|
// If computedDefault is an empty object {}, don't add it - let the field stay undefined
|
|
@@ -114,13 +131,13 @@ function maybeAddDefaultToObject(acc, key, computedDefault, includeUndefinedValu
|
|
|
114
131
|
if (isObject(computedDefault)) {
|
|
115
132
|
// If emptyObjectFields 'skipEmptyDefaults' store computedDefault if it's a non-empty object(e.g. not {})
|
|
116
133
|
if (emptyObjectFields === 'skipEmptyDefaults') {
|
|
117
|
-
if (
|
|
134
|
+
if (Object.keys(computedDefault).length > 0) {
|
|
118
135
|
acc[key] = computedDefault;
|
|
119
136
|
}
|
|
120
137
|
} // Else store computedDefault if it's a non-empty object(e.g. not {}) and satisfies certain conditions
|
|
121
138
|
// Condition 1: If computedDefault is not empty or if the key is a required field
|
|
122
139
|
// Condition 2: If the parent object is required or emptyObjectFields is not 'populateRequiredDefaults'
|
|
123
|
-
else if ((
|
|
140
|
+
else if ((Object.keys(computedDefault).length > 0 || requiredFields.includes(key)) &&
|
|
124
141
|
(isSelfOrParentRequired || emptyObjectFields !== 'populateRequiredDefaults')) {
|
|
125
142
|
acc[key] = computedDefault;
|
|
126
143
|
}
|
|
@@ -152,13 +169,13 @@ export function computeDefaults(validator, rawSchema, computeDefaultsProps = {})
|
|
|
152
169
|
const schema = isObject(rawSchema) ? rawSchema : {};
|
|
153
170
|
// Compute the defaults recursively: give highest priority to deepest nodes unless nestedDefaultsPrecedence is ancestorWins.
|
|
154
171
|
let defaults = parentDefaults;
|
|
155
|
-
const preferParentDefaults = defaults &&
|
|
172
|
+
const preferParentDefaults = defaults && experimental_defaultFormStateBehavior?.nestedDefaultsPrecedence === 'ancestorWins';
|
|
156
173
|
// If we get a new schema, then we need to recompute defaults again for the new schema found.
|
|
157
174
|
let schemaToCompute = null;
|
|
158
175
|
let experimental_dfsb_to_compute = experimental_defaultFormStateBehavior;
|
|
159
176
|
let updatedRecurseList = _recurseList;
|
|
160
177
|
if (schema[CONST_KEY] !== undefined &&
|
|
161
|
-
|
|
178
|
+
experimental_defaultFormStateBehavior?.constAsDefaults !== 'never' &&
|
|
162
179
|
!constIsAjvDataReference(schema)) {
|
|
163
180
|
defaults = schema[CONST_KEY];
|
|
164
181
|
}
|
|
@@ -199,7 +216,7 @@ export function computeDefaults(validator, rawSchema, computeDefaultsProps = {})
|
|
|
199
216
|
// Then set the defaults from the current schema for the referenced schema.
|
|
200
217
|
// Only do this if rawFormData has no meaningful data - we don't want to override user's existing values.
|
|
201
218
|
// Check for undefined OR empty object - rawFormData may be coerced to {} when not an object.
|
|
202
|
-
const hasNoExistingData = rawFormData === undefined || (isObject(rawFormData) &&
|
|
219
|
+
const hasNoExistingData = rawFormData === undefined || (isObject(rawFormData) && Object.keys(rawFormData).length === 0);
|
|
203
220
|
if (schemaToCompute && !defaults && hasNoExistingData) {
|
|
204
221
|
defaults = schema.default;
|
|
205
222
|
}
|
|
@@ -243,14 +260,14 @@ export function computeDefaults(validator, rawSchema, computeDefaultsProps = {})
|
|
|
243
260
|
const { type = 'null' } = remaining;
|
|
244
261
|
if (!Array.isArray(type) &&
|
|
245
262
|
PRIMITIVE_TYPES.includes(type) &&
|
|
246
|
-
|
|
263
|
+
experimental_dfsb_to_compute?.constAsDefaults === 'skipOneOf') {
|
|
247
264
|
// If we are in a oneOf of a primitive type, then we want to pass constAsDefaults as 'never' for the recursion
|
|
248
265
|
experimental_dfsb_to_compute = {
|
|
249
266
|
...experimental_dfsb_to_compute,
|
|
250
267
|
constAsDefaults: 'never',
|
|
251
268
|
};
|
|
252
269
|
}
|
|
253
|
-
schemaToCompute = oneOf[getClosestMatchingOption(validator, rootSchema, rawFormData
|
|
270
|
+
schemaToCompute = oneOf[getClosestMatchingOption(validator, rootSchema, rawFormData ?? schema.default, oneOf, 0, discriminator, experimental_customMergeAllOf)];
|
|
254
271
|
schemaToCompute = mergeSchemas(remaining, schemaToCompute);
|
|
255
272
|
}
|
|
256
273
|
else if (ANY_OF_KEY in schema) {
|
|
@@ -259,7 +276,7 @@ export function computeDefaults(validator, rawSchema, computeDefaultsProps = {})
|
|
|
259
276
|
return undefined;
|
|
260
277
|
}
|
|
261
278
|
const discriminator = getDiscriminatorFieldFromSchema(schema);
|
|
262
|
-
schemaToCompute = anyOf[getClosestMatchingOption(validator, rootSchema, rawFormData
|
|
279
|
+
schemaToCompute = anyOf[getClosestMatchingOption(validator, rootSchema, rawFormData ?? schema.default, anyOf, 0, discriminator, experimental_customMergeAllOf)];
|
|
263
280
|
schemaToCompute = mergeSchemas(remaining, schemaToCompute);
|
|
264
281
|
}
|
|
265
282
|
if (schemaToCompute) {
|
|
@@ -270,7 +287,7 @@ export function computeDefaults(validator, rawSchema, computeDefaultsProps = {})
|
|
|
270
287
|
experimental_defaultFormStateBehavior: experimental_dfsb_to_compute,
|
|
271
288
|
experimental_customMergeAllOf,
|
|
272
289
|
parentDefaults: defaults,
|
|
273
|
-
rawFormData: rawFormData
|
|
290
|
+
rawFormData: rawFormData ?? formData,
|
|
274
291
|
required,
|
|
275
292
|
shouldMergeDefaultsIntoFormData,
|
|
276
293
|
initialDefaultsGenerated,
|
|
@@ -281,7 +298,7 @@ export function computeDefaults(validator, rawSchema, computeDefaultsProps = {})
|
|
|
281
298
|
defaults = schema.default;
|
|
282
299
|
}
|
|
283
300
|
const defaultBasedOnSchemaType = getDefaultBasedOnSchemaType(validator, schema, computeDefaultsProps, defaults);
|
|
284
|
-
let defaultsWithFormData = defaultBasedOnSchemaType
|
|
301
|
+
let defaultsWithFormData = defaultBasedOnSchemaType ?? defaults;
|
|
285
302
|
// if shouldMergeDefaultsIntoFormData is true, then merge the defaults into the formData.
|
|
286
303
|
if (shouldMergeDefaultsIntoFormData) {
|
|
287
304
|
const { arrayMinItems = {} } = experimental_defaultFormStateBehavior || {};
|
|
@@ -307,7 +324,7 @@ export function computeDefaults(validator, rawSchema, computeDefaultsProps = {})
|
|
|
307
324
|
* @returns - valid formData that matches schema
|
|
308
325
|
*/
|
|
309
326
|
export function ensureFormDataMatchingSchema(validator, schema, rootSchema, formData, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
|
|
310
|
-
const shouldRetrieveAllOf =
|
|
327
|
+
const shouldRetrieveAllOf = experimental_defaultFormStateBehavior?.allOf === 'populateDefaults' && ALL_OF_KEY in schema;
|
|
311
328
|
const schemaToMatch = shouldRetrieveAllOf
|
|
312
329
|
? retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf)
|
|
313
330
|
: schema;
|
|
@@ -316,19 +333,19 @@ export function ensureFormDataMatchingSchema(validator, schema, rootSchema, form
|
|
|
316
333
|
let validFormData = formData;
|
|
317
334
|
if (isSelectField) {
|
|
318
335
|
const getOptionsList = optionsList(schemaToMatch);
|
|
319
|
-
const isValid = getOptionsList
|
|
336
|
+
const isValid = getOptionsList?.some((option) => deepEquals(option.value, formData));
|
|
320
337
|
validFormData = isValid ? formData : undefined;
|
|
321
338
|
}
|
|
322
339
|
// Override the formData with the const if the constAsDefaults is set to always
|
|
323
|
-
const constTakesPrecedence = schemaToMatch[CONST_KEY] &&
|
|
340
|
+
const constTakesPrecedence = schemaToMatch[CONST_KEY] && experimental_defaultFormStateBehavior?.constAsDefaults === 'always';
|
|
324
341
|
if (constTakesPrecedence) {
|
|
325
342
|
validFormData = schemaToMatch.const;
|
|
326
343
|
}
|
|
327
344
|
else if (isObject(validFormData) && isObject(schemaToMatch.properties)) {
|
|
328
345
|
validFormData = Object.keys(schemaToMatch.properties).reduce((acc, key) => {
|
|
329
|
-
const propertySchema =
|
|
346
|
+
const propertySchema = getPropertySchema(schemaToMatch, key);
|
|
330
347
|
if (key in acc && (shouldRetrieveAllOf || (isObject(propertySchema) && ALL_OF_KEY in propertySchema))) {
|
|
331
|
-
acc[key] = ensureFormDataMatchingSchema(validator, propertySchema, rootSchema,
|
|
348
|
+
acc[key] = ensureFormDataMatchingSchema(validator, propertySchema, rootSchema, acc[key], experimental_defaultFormStateBehavior, experimental_customMergeAllOf);
|
|
332
349
|
}
|
|
333
350
|
return acc;
|
|
334
351
|
}, { ...validFormData });
|
|
@@ -351,20 +368,19 @@ export function getObjectDefaults(validator, rawSchema, { rawFormData, rootSchem
|
|
|
351
368
|
// - If schema contains `allOf` AND `experimental_defaultFormStateBehavior.allOf` is set to `populateDefaults`
|
|
352
369
|
// - OR if schema contains an 'if' AND `emptyObjectFields` is not set to `skipEmptyDefaults`
|
|
353
370
|
// This ensures we compute defaults correctly for schemas with these keywords.
|
|
354
|
-
const shouldRetrieveSchema = (
|
|
355
|
-
(
|
|
371
|
+
const shouldRetrieveSchema = (experimental_defaultFormStateBehavior?.allOf === 'populateDefaults' && ALL_OF_KEY in schema) ||
|
|
372
|
+
(experimental_defaultFormStateBehavior?.emptyObjectFields !== 'skipEmptyDefaults' && IF_KEY in schema);
|
|
356
373
|
const retrievedSchema = shouldRetrieveSchema
|
|
357
374
|
? retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf)
|
|
358
375
|
: schema;
|
|
359
376
|
const parentConst = retrievedSchema[CONST_KEY];
|
|
360
377
|
const objectDefaults = Object.keys(retrievedSchema.properties || {}).reduce((acc, key) => {
|
|
361
|
-
|
|
362
|
-
const propertySchema = get(retrievedSchema, [PROPERTIES_KEY, key], {});
|
|
378
|
+
const propertySchema = getPropertySchema(retrievedSchema, key);
|
|
363
379
|
// Check if the parent schema has a const property defined AND we are supporting const as defaults, then we
|
|
364
380
|
// should always return the computedDefault since it's coming from the const.
|
|
365
381
|
const hasParentConst = isObject(parentConst) && parentConst[key] !== undefined;
|
|
366
382
|
const hasConst = ((isObject(propertySchema) && CONST_KEY in propertySchema) || hasParentConst) &&
|
|
367
|
-
|
|
383
|
+
experimental_defaultFormStateBehavior?.constAsDefaults !== 'never' &&
|
|
368
384
|
!constIsAjvDataReference(propertySchema);
|
|
369
385
|
// Compute the defaults for this node, with the parent defaults we might
|
|
370
386
|
// have from a previous run: defaults[key].
|
|
@@ -374,13 +390,13 @@ export function getObjectDefaults(validator, rawSchema, { rawFormData, rootSchem
|
|
|
374
390
|
experimental_defaultFormStateBehavior,
|
|
375
391
|
experimental_customMergeAllOf,
|
|
376
392
|
includeUndefinedValues: includeUndefinedValues === true,
|
|
377
|
-
parentDefaults:
|
|
378
|
-
rawFormData:
|
|
379
|
-
required:
|
|
393
|
+
parentDefaults: getByPath(defaults, key),
|
|
394
|
+
rawFormData: getByPath(formData, key),
|
|
395
|
+
required: retrievedSchema.required?.includes(key),
|
|
380
396
|
shouldMergeDefaultsIntoFormData,
|
|
381
397
|
initialDefaultsGenerated,
|
|
382
398
|
});
|
|
383
|
-
maybeAddDefaultToObject(acc, key, computedDefault, includeUndefinedValues, required, retrievedSchema.required, experimental_defaultFormStateBehavior, hasConst,
|
|
399
|
+
maybeAddDefaultToObject(acc, key, computedDefault, includeUndefinedValues, required, retrievedSchema.required, experimental_defaultFormStateBehavior, hasConst, propertySchema?.type === 'null');
|
|
384
400
|
return acc;
|
|
385
401
|
}, {});
|
|
386
402
|
if (retrievedSchema.additionalProperties && !initialDefaultsGenerated) {
|
|
@@ -405,16 +421,15 @@ export function getObjectDefaults(validator, rawSchema, { rawFormData, rootSchem
|
|
|
405
421
|
.forEach((key) => keys.add(key));
|
|
406
422
|
}
|
|
407
423
|
keys.forEach((key) => {
|
|
408
|
-
var _a;
|
|
409
424
|
const computedDefault = computeDefaults(validator, additionalPropertiesSchema, {
|
|
410
425
|
rootSchema,
|
|
411
426
|
_recurseList,
|
|
412
427
|
experimental_defaultFormStateBehavior,
|
|
413
428
|
experimental_customMergeAllOf,
|
|
414
429
|
includeUndefinedValues: includeUndefinedValues === true,
|
|
415
|
-
parentDefaults:
|
|
416
|
-
rawFormData:
|
|
417
|
-
required:
|
|
430
|
+
parentDefaults: getByPath(defaults, key),
|
|
431
|
+
rawFormData: getByPath(formData, key),
|
|
432
|
+
required: retrievedSchema.required?.includes(key),
|
|
418
433
|
shouldMergeDefaultsIntoFormData,
|
|
419
434
|
initialDefaultsGenerated,
|
|
420
435
|
});
|
|
@@ -434,16 +449,15 @@ export function getObjectDefaults(validator, rawSchema, { rawFormData, rootSchem
|
|
|
434
449
|
* @returns - The default value based on the schema type if they are defined for object or array schemas.
|
|
435
450
|
*/
|
|
436
451
|
export function getArrayDefaults(validator, rawSchema, { rawFormData, rootSchema = {}, _recurseList = [], experimental_defaultFormStateBehavior, experimental_customMergeAllOf, required, requiredAsRoot = false, shouldMergeDefaultsIntoFormData, initialDefaultsGenerated, } = {}, initialDefaults) {
|
|
437
|
-
var _a, _b;
|
|
438
452
|
let defaults = initialDefaults;
|
|
439
453
|
const schema = rawSchema;
|
|
440
|
-
const arrayMinItemsStateBehavior =
|
|
454
|
+
const arrayMinItemsStateBehavior = experimental_defaultFormStateBehavior?.arrayMinItems ?? {};
|
|
441
455
|
const { populate: arrayMinItemsPopulate, mergeExtraDefaults: arrayMergeExtraDefaults } = arrayMinItemsStateBehavior;
|
|
442
456
|
const neverPopulate = arrayMinItemsPopulate === 'never';
|
|
443
457
|
const ignoreMinItemsFlagSet = arrayMinItemsPopulate === 'requiredOnly';
|
|
444
458
|
const isPopulateAll = arrayMinItemsPopulate === 'all' || (!neverPopulate && !ignoreMinItemsFlagSet);
|
|
445
|
-
const computeSkipPopulate =
|
|
446
|
-
const isSkipEmptyDefaults =
|
|
459
|
+
const computeSkipPopulate = arrayMinItemsStateBehavior?.computeSkipPopulate ?? (() => false);
|
|
460
|
+
const isSkipEmptyDefaults = experimental_defaultFormStateBehavior?.emptyObjectFields === 'skipEmptyDefaults';
|
|
447
461
|
const emptyDefault = isSkipEmptyDefaults ? undefined : [];
|
|
448
462
|
// Inject defaults into existing array defaults
|
|
449
463
|
if (Array.isArray(defaults)) {
|
|
@@ -476,7 +490,7 @@ export function getArrayDefaults(validator, rawSchema, { rawFormData, rootSchema
|
|
|
476
490
|
experimental_defaultFormStateBehavior,
|
|
477
491
|
experimental_customMergeAllOf,
|
|
478
492
|
rawFormData: item,
|
|
479
|
-
parentDefaults:
|
|
493
|
+
parentDefaults: getByPath(defaults, idx),
|
|
480
494
|
required,
|
|
481
495
|
shouldMergeDefaultsIntoFormData,
|
|
482
496
|
initialDefaultsGenerated,
|
|
@@ -495,7 +509,7 @@ export function getArrayDefaults(validator, rawSchema, { rawFormData, rootSchema
|
|
|
495
509
|
// letting the validator report `minItems` violations instead of a missing-required-property error.
|
|
496
510
|
return defaults;
|
|
497
511
|
}
|
|
498
|
-
return defaults
|
|
512
|
+
return defaults ?? emptyDefault;
|
|
499
513
|
}
|
|
500
514
|
if (ignoreMinItemsFlagSet && !required) {
|
|
501
515
|
// If no form data exists or defaults are set leave the field empty/non-existent, otherwise
|
|
@@ -546,6 +560,14 @@ export function getDefaultBasedOnSchemaType(validator, rawSchema, computeDefault
|
|
|
546
560
|
case 'array': {
|
|
547
561
|
return getArrayDefaults(validator, rawSchema, computeDefaultsProps, defaults);
|
|
548
562
|
}
|
|
563
|
+
case 'boolean': {
|
|
564
|
+
// A required boolean with no explicit default gets false — it must be
|
|
565
|
+
// present in the submitted data, and false is the natural zero-value.
|
|
566
|
+
if (computeDefaultsProps.required && defaults === undefined) {
|
|
567
|
+
return false;
|
|
568
|
+
}
|
|
569
|
+
return undefined;
|
|
570
|
+
}
|
|
549
571
|
default:
|
|
550
572
|
return undefined;
|
|
551
573
|
}
|
|
@@ -594,7 +616,7 @@ export default function getDefaultFormState(validator, theSchema, formData, root
|
|
|
594
616
|
if (isObject(formData) || Array.isArray(formData)) {
|
|
595
617
|
const { mergeDefaultsIntoFormData } = experimental_defaultFormStateBehavior || {};
|
|
596
618
|
const defaultSupercedesUndefined = mergeDefaultsIntoFormData === 'useDefaultIfFormDataUndefined';
|
|
597
|
-
const matchingFormData = ensureFormDataMatchingSchema(validator, schema, rootSchema
|
|
619
|
+
const matchingFormData = ensureFormDataMatchingSchema(validator, schema, rootSchema ?? schema, formData, experimental_defaultFormStateBehavior, experimental_customMergeAllOf);
|
|
598
620
|
const result = mergeDefaultsWithFormData(defaults, matchingFormData, true, // set to true to add any additional default array entries.
|
|
599
621
|
defaultSupercedesUndefined, true);
|
|
600
622
|
return result;
|