@rjsf/utils 5.21.2 → 5.22.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/utils.esm.js CHANGED
@@ -367,10 +367,18 @@ function mergeSchemas(obj1, obj2) {
367
367
  }
368
368
 
369
369
  // src/schema/retrieveSchema.ts
370
- function retrieveSchema(validator, schema, rootSchema = {}, rawFormData) {
371
- return retrieveSchemaInternal(validator, schema, rootSchema, rawFormData)[0];
370
+ function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experimental_customMergeAllOf) {
371
+ return retrieveSchemaInternal(
372
+ validator,
373
+ schema,
374
+ rootSchema,
375
+ rawFormData,
376
+ void 0,
377
+ void 0,
378
+ experimental_customMergeAllOf
379
+ )[0];
372
380
  }
373
- function resolveCondition(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
381
+ function resolveCondition(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
374
382
  const { if: expression, then, else: otherwise, ...resolvedSchemaLessConditional } = schema;
375
383
  const conditionValue = validator.isValid(expression, formData || {}, rootSchema);
376
384
  let resolvedSchemas = [resolvedSchemaLessConditional];
@@ -378,12 +386,28 @@ function resolveCondition(validator, schema, rootSchema, expandAllBranches, recu
378
386
  if (expandAllBranches) {
379
387
  if (then && typeof then !== "boolean") {
380
388
  schemas = schemas.concat(
381
- retrieveSchemaInternal(validator, then, rootSchema, formData, expandAllBranches, recurseList)
389
+ retrieveSchemaInternal(
390
+ validator,
391
+ then,
392
+ rootSchema,
393
+ formData,
394
+ expandAllBranches,
395
+ recurseList,
396
+ experimental_customMergeAllOf
397
+ )
382
398
  );
383
399
  }
384
400
  if (otherwise && typeof otherwise !== "boolean") {
385
401
  schemas = schemas.concat(
386
- retrieveSchemaInternal(validator, otherwise, rootSchema, formData, expandAllBranches, recurseList)
402
+ retrieveSchemaInternal(
403
+ validator,
404
+ otherwise,
405
+ rootSchema,
406
+ formData,
407
+ expandAllBranches,
408
+ recurseList,
409
+ experimental_customMergeAllOf
410
+ )
387
411
  );
388
412
  }
389
413
  } else {
@@ -396,7 +420,8 @@ function resolveCondition(validator, schema, rootSchema, expandAllBranches, recu
396
420
  rootSchema,
397
421
  formData,
398
422
  expandAllBranches,
399
- recurseList
423
+ recurseList,
424
+ experimental_customMergeAllOf
400
425
  )
401
426
  );
402
427
  }
@@ -405,7 +430,15 @@ function resolveCondition(validator, schema, rootSchema, expandAllBranches, recu
405
430
  resolvedSchemas = schemas.map((s) => mergeSchemas(resolvedSchemaLessConditional, s));
406
431
  }
407
432
  return resolvedSchemas.flatMap(
408
- (s) => retrieveSchemaInternal(validator, s, rootSchema, formData, expandAllBranches, recurseList)
433
+ (s) => retrieveSchemaInternal(
434
+ validator,
435
+ s,
436
+ rootSchema,
437
+ formData,
438
+ expandAllBranches,
439
+ recurseList,
440
+ experimental_customMergeAllOf
441
+ )
409
442
  );
410
443
  }
411
444
  function getAllPermutationsOfXxxOf(listOfLists) {
@@ -422,7 +455,7 @@ function getAllPermutationsOfXxxOf(listOfLists) {
422
455
  );
423
456
  return allPermutations;
424
457
  }
425
- function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
458
+ function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
426
459
  const updatedSchemas = resolveReference(
427
460
  validator,
428
461
  schema,
@@ -444,7 +477,15 @@ function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurse
444
477
  formData
445
478
  );
446
479
  return resolvedSchemas.flatMap((s) => {
447
- return retrieveSchemaInternal(validator, s, rootSchema, formData, expandAllBranches, recurseList);
480
+ return retrieveSchemaInternal(
481
+ validator,
482
+ s,
483
+ rootSchema,
484
+ formData,
485
+ expandAllBranches,
486
+ recurseList,
487
+ experimental_customMergeAllOf
488
+ );
448
489
  });
449
490
  }
450
491
  if (ALL_OF_KEY in schema && Array.isArray(schema.allOf)) {
@@ -455,7 +496,8 @@ function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurse
455
496
  rootSchema,
456
497
  formData,
457
498
  expandAllBranches,
458
- recurseList
499
+ recurseList,
500
+ experimental_customMergeAllOf
459
501
  )
460
502
  );
461
503
  const allPermutations = getAllPermutationsOfXxxOf(allOfSchemaElements);
@@ -463,7 +505,7 @@ function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurse
463
505
  }
464
506
  return [schema];
465
507
  }
466
- function resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
508
+ function resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
467
509
  const updatedSchema = resolveAllReferences(schema, rootSchema, recurseList);
468
510
  if (updatedSchema !== schema) {
469
511
  return retrieveSchemaInternal(
@@ -472,7 +514,8 @@ function resolveReference(validator, schema, rootSchema, expandAllBranches, recu
472
514
  rootSchema,
473
515
  formData,
474
516
  expandAllBranches,
475
- recurseList
517
+ recurseList,
518
+ experimental_customMergeAllOf
476
519
  );
477
520
  }
478
521
  return [schema];
@@ -550,7 +593,7 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
550
593
  });
551
594
  return schema;
552
595
  }
553
- function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = []) {
596
+ function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = [], experimental_customMergeAllOf) {
554
597
  if (!isObject(schema)) {
555
598
  return [{}];
556
599
  }
@@ -571,7 +614,8 @@ function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expa
571
614
  rootSchema,
572
615
  expandAllBranches,
573
616
  recurseList,
574
- rawFormData
617
+ rawFormData,
618
+ experimental_customMergeAllOf
575
619
  );
576
620
  }
577
621
  if (ALL_OF_KEY in resolvedSchema) {
@@ -592,7 +636,7 @@ function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expa
592
636
  if (withContainsSchemas.length) {
593
637
  resolvedSchema = { ...resolvedSchema, allOf: withoutContainsSchemas };
594
638
  }
595
- resolvedSchema = mergeAllOf(resolvedSchema, {
639
+ resolvedSchema = experimental_customMergeAllOf ? experimental_customMergeAllOf(resolvedSchema) : mergeAllOf(resolvedSchema, {
596
640
  deep: false
597
641
  });
598
642
  if (withContainsSchemas.length) {
@@ -633,7 +677,7 @@ function resolveAnyOrOneOfSchemas(validator, schema, rootSchema, expandAllBranch
633
677
  }
634
678
  return [schema];
635
679
  }
636
- function resolveDependencies(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
680
+ function resolveDependencies(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
637
681
  const { dependencies, ...remainingSchema } = schema;
638
682
  const resolvedSchemas = resolveAnyOrOneOfSchemas(
639
683
  validator,
@@ -650,11 +694,12 @@ function resolveDependencies(validator, schema, rootSchema, expandAllBranches, r
650
694
  rootSchema,
651
695
  expandAllBranches,
652
696
  recurseList,
653
- formData
697
+ formData,
698
+ experimental_customMergeAllOf
654
699
  )
655
700
  );
656
701
  }
657
- function processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData) {
702
+ function processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
658
703
  let schemas = [resolvedSchema];
659
704
  for (const dependencyKey in dependencies) {
660
705
  if (!expandAllBranches && get4(formData, [dependencyKey]) === void 0) {
@@ -678,7 +723,8 @@ function processDependencies(validator, dependencies, resolvedSchema, rootSchema
678
723
  dependencyValue,
679
724
  expandAllBranches,
680
725
  recurseList,
681
- formData
726
+ formData,
727
+ experimental_customMergeAllOf
682
728
  );
683
729
  }
684
730
  return schemas.flatMap(
@@ -689,7 +735,8 @@ function processDependencies(validator, dependencies, resolvedSchema, rootSchema
689
735
  rootSchema,
690
736
  expandAllBranches,
691
737
  recurseList,
692
- formData
738
+ formData,
739
+ experimental_customMergeAllOf
693
740
  )
694
741
  );
695
742
  }
@@ -702,14 +749,15 @@ function withDependentProperties(schema, additionallyRequired) {
702
749
  const required = Array.isArray(schema.required) ? Array.from(/* @__PURE__ */ new Set([...schema.required, ...additionallyRequired])) : additionallyRequired;
703
750
  return { ...schema, required };
704
751
  }
705
- function withDependentSchema(validator, schema, rootSchema, dependencyKey, dependencyValue, expandAllBranches, recurseList, formData) {
752
+ function withDependentSchema(validator, schema, rootSchema, dependencyKey, dependencyValue, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
706
753
  const dependentSchemas = retrieveSchemaInternal(
707
754
  validator,
708
755
  dependencyValue,
709
756
  rootSchema,
710
757
  formData,
711
758
  expandAllBranches,
712
- recurseList
759
+ recurseList,
760
+ experimental_customMergeAllOf
713
761
  );
714
762
  return dependentSchemas.flatMap((dependent) => {
715
763
  const { oneOf, ...dependentSchema } = dependent;
@@ -733,12 +781,13 @@ function withDependentSchema(validator, schema, rootSchema, dependencyKey, depen
733
781
  resolvedOneOf,
734
782
  expandAllBranches,
735
783
  recurseList,
736
- formData
784
+ formData,
785
+ experimental_customMergeAllOf
737
786
  )
738
787
  );
739
788
  });
740
789
  }
741
- function withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, oneOf, expandAllBranches, recurseList, formData) {
790
+ function withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, oneOf, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
742
791
  const validSubschemas = oneOf.filter((subschema) => {
743
792
  if (typeof subschema === "boolean" || !subschema || !subschema.properties) {
744
793
  return false;
@@ -769,7 +818,8 @@ function withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, o
769
818
  rootSchema,
770
819
  formData,
771
820
  expandAllBranches,
772
- recurseList
821
+ recurseList,
822
+ experimental_customMergeAllOf
773
823
  );
774
824
  return schemas.map((s2) => mergeSchemas(schema, s2));
775
825
  });
@@ -785,7 +835,7 @@ var JUNK_OPTION = {
785
835
  }
786
836
  }
787
837
  };
788
- function calculateIndexScore(validator, rootSchema, schema, formData = {}) {
838
+ function calculateIndexScore(validator, rootSchema, schema, formData) {
789
839
  let totalScore = 0;
790
840
  if (schema) {
791
841
  if (isObject2(schema.properties)) {
@@ -813,7 +863,10 @@ function calculateIndexScore(validator, rootSchema, schema, formData = {}) {
813
863
  );
814
864
  }
815
865
  if (value.type === "object") {
816
- return score + calculateIndexScore(validator, rootSchema, value, formValue || {});
866
+ if (isObject2(formValue)) {
867
+ score += 1;
868
+ }
869
+ return score + calculateIndexScore(validator, rootSchema, value, formValue);
817
870
  }
818
871
  if (value.type === guessType(formValue)) {
819
872
  let newScore = score + 1;
@@ -883,12 +936,17 @@ function isFixedItems(schema) {
883
936
 
884
937
  // src/mergeDefaultsWithFormData.ts
885
938
  import get6 from "lodash/get";
886
- function mergeDefaultsWithFormData(defaults, formData, mergeExtraArrayDefaults = false) {
939
+ function mergeDefaultsWithFormData(defaults, formData, mergeExtraArrayDefaults = false, defaultSupercedesUndefined = false) {
887
940
  if (Array.isArray(formData)) {
888
941
  const defaultsArray = Array.isArray(defaults) ? defaults : [];
889
942
  const mapped = formData.map((value, idx) => {
890
943
  if (defaultsArray[idx]) {
891
- return mergeDefaultsWithFormData(defaultsArray[idx], value, mergeExtraArrayDefaults);
944
+ return mergeDefaultsWithFormData(
945
+ defaultsArray[idx],
946
+ value,
947
+ mergeExtraArrayDefaults,
948
+ defaultSupercedesUndefined
949
+ );
892
950
  }
893
951
  return value;
894
952
  });
@@ -903,11 +961,15 @@ function mergeDefaultsWithFormData(defaults, formData, mergeExtraArrayDefaults =
903
961
  acc2[key] = mergeDefaultsWithFormData(
904
962
  defaults ? get6(defaults, key) : {},
905
963
  get6(formData, key),
906
- mergeExtraArrayDefaults
964
+ mergeExtraArrayDefaults,
965
+ defaultSupercedesUndefined
907
966
  );
908
967
  return acc2;
909
968
  }, acc);
910
969
  }
970
+ if (defaultSupercedesUndefined && formData === void 0) {
971
+ return defaults;
972
+ }
911
973
  return formData;
912
974
  }
913
975
 
@@ -978,9 +1040,9 @@ function getInnerSchemaForArrayItem(schema, additionalItems = 0 /* Ignore */, id
978
1040
  }
979
1041
  return {};
980
1042
  }
981
- function maybeAddDefaultToObject(obj, key, computedDefault, includeUndefinedValues, isParentRequired, requiredFields = [], experimental_defaultFormStateBehavior = {}) {
1043
+ function maybeAddDefaultToObject(obj, key, computedDefault, includeUndefinedValues, isParentRequired, requiredFields = [], experimental_defaultFormStateBehavior = {}, isConst = false) {
982
1044
  const { emptyObjectFields = "populateAllDefaults" } = experimental_defaultFormStateBehavior;
983
- if (includeUndefinedValues) {
1045
+ if (includeUndefinedValues || isConst) {
984
1046
  obj[key] = computedDefault;
985
1047
  } else if (emptyObjectFields !== "skipDefaults") {
986
1048
  if (isObject(computedDefault)) {
@@ -1010,6 +1072,7 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
1010
1072
  includeUndefinedValues = false,
1011
1073
  _recurseList = [],
1012
1074
  experimental_defaultFormStateBehavior = void 0,
1075
+ experimental_customMergeAllOf = void 0,
1013
1076
  required
1014
1077
  } = computeDefaultsProps;
1015
1078
  const formData = isObject(rawFormData) ? rawFormData : {};
@@ -1017,7 +1080,9 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
1017
1080
  let defaults = parentDefaults;
1018
1081
  let schemaToCompute = null;
1019
1082
  let updatedRecurseList = _recurseList;
1020
- if (isObject(defaults) && isObject(schema.default)) {
1083
+ if (isConstant(schema)) {
1084
+ defaults = schema.const;
1085
+ } else if (isObject(defaults) && isObject(schema.default)) {
1021
1086
  defaults = mergeObjects(defaults, schema.default);
1022
1087
  } else if (DEFAULT_KEY in schema) {
1023
1088
  defaults = schema.default;
@@ -1032,7 +1097,15 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
1032
1097
  ...formData,
1033
1098
  ...getDefaultBasedOnSchemaType(validator, schema, computeDefaultsProps, defaults)
1034
1099
  };
1035
- const resolvedSchema = resolveDependencies(validator, schema, rootSchema, false, [], defaultFormData);
1100
+ const resolvedSchema = resolveDependencies(
1101
+ validator,
1102
+ schema,
1103
+ rootSchema,
1104
+ false,
1105
+ [],
1106
+ defaultFormData,
1107
+ experimental_customMergeAllOf
1108
+ );
1036
1109
  schemaToCompute = resolvedSchema[0];
1037
1110
  } else if (isFixedItems(schema)) {
1038
1111
  defaults = schema.items.map(
@@ -1100,18 +1173,24 @@ function getObjectDefaults(validator, rawSchema, {
1100
1173
  includeUndefinedValues = false,
1101
1174
  _recurseList = [],
1102
1175
  experimental_defaultFormStateBehavior = void 0,
1176
+ experimental_customMergeAllOf = void 0,
1103
1177
  required
1104
1178
  } = {}, defaults) {
1105
1179
  {
1106
1180
  const formData = isObject(rawFormData) ? rawFormData : {};
1107
1181
  const schema = rawSchema;
1108
- const retrievedSchema = experimental_defaultFormStateBehavior?.allOf === "populateDefaults" && ALL_OF_KEY in schema ? retrieveSchema(validator, schema, rootSchema, formData) : schema;
1182
+ const retrievedSchema = experimental_defaultFormStateBehavior?.allOf === "populateDefaults" && ALL_OF_KEY in schema ? retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf) : schema;
1183
+ const parentConst = retrievedSchema[CONST_KEY];
1109
1184
  const objectDefaults = Object.keys(retrievedSchema.properties || {}).reduce(
1110
1185
  (acc, key) => {
1111
- const computedDefault = computeDefaults(validator, get7(retrievedSchema, [PROPERTIES_KEY, key]), {
1186
+ const propertySchema = get7(retrievedSchema, [PROPERTIES_KEY, key]);
1187
+ const hasParentConst = isObject(parentConst) && parentConst[key] !== void 0;
1188
+ const hasConst = isObject(propertySchema) && CONST_KEY in propertySchema || hasParentConst;
1189
+ const computedDefault = computeDefaults(validator, propertySchema, {
1112
1190
  rootSchema,
1113
1191
  _recurseList,
1114
1192
  experimental_defaultFormStateBehavior,
1193
+ experimental_customMergeAllOf,
1115
1194
  includeUndefinedValues: includeUndefinedValues === true,
1116
1195
  parentDefaults: get7(defaults, [key]),
1117
1196
  rawFormData: get7(formData, [key]),
@@ -1124,7 +1203,8 @@ function getObjectDefaults(validator, rawSchema, {
1124
1203
  includeUndefinedValues,
1125
1204
  required,
1126
1205
  retrievedSchema.required,
1127
- experimental_defaultFormStateBehavior
1206
+ experimental_defaultFormStateBehavior,
1207
+ hasConst
1128
1208
  );
1129
1209
  return acc;
1130
1210
  },
@@ -1206,11 +1286,14 @@ function getArrayDefaults(validator, rawSchema, {
1206
1286
  });
1207
1287
  }
1208
1288
  }
1209
- if (neverPopulate) {
1210
- return defaults ?? emptyDefault;
1211
- }
1212
- if (ignoreMinItemsFlagSet && !required) {
1213
- return defaults ? defaults : void 0;
1289
+ const hasConst = isObject(schema) && CONST_KEY in schema;
1290
+ if (hasConst === false) {
1291
+ if (neverPopulate) {
1292
+ return defaults ?? emptyDefault;
1293
+ }
1294
+ if (ignoreMinItemsFlagSet && !required) {
1295
+ return defaults ? defaults : void 0;
1296
+ }
1214
1297
  }
1215
1298
  const defaultsLength = Array.isArray(defaults) ? defaults.length : 0;
1216
1299
  if (!schema.minItems || isMultiSelect(validator, schema, rootSchema) || computeSkipPopulate(validator, schema, rootSchema) || schema.minItems <= defaultsLength) {
@@ -1240,26 +1323,29 @@ function getDefaultBasedOnSchemaType(validator, rawSchema, computeDefaultsProps
1240
1323
  }
1241
1324
  }
1242
1325
  }
1243
- function getDefaultFormState(validator, theSchema, formData, rootSchema, includeUndefinedValues = false, experimental_defaultFormStateBehavior) {
1326
+ function getDefaultFormState(validator, theSchema, formData, rootSchema, includeUndefinedValues = false, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
1244
1327
  if (!isObject(theSchema)) {
1245
1328
  throw new Error("Invalid schema: " + theSchema);
1246
1329
  }
1247
- const schema = retrieveSchema(validator, theSchema, rootSchema, formData);
1330
+ const schema = retrieveSchema(validator, theSchema, rootSchema, formData, experimental_customMergeAllOf);
1248
1331
  const defaults = computeDefaults(validator, schema, {
1249
1332
  rootSchema,
1250
1333
  includeUndefinedValues,
1251
1334
  experimental_defaultFormStateBehavior,
1335
+ experimental_customMergeAllOf,
1252
1336
  rawFormData: formData
1253
1337
  });
1254
1338
  if (formData === void 0 || formData === null || typeof formData === "number" && isNaN(formData)) {
1255
1339
  return defaults;
1256
1340
  }
1257
- const { mergeExtraDefaults } = experimental_defaultFormStateBehavior?.arrayMinItems || {};
1341
+ const { mergeDefaultsIntoFormData, arrayMinItems = {} } = experimental_defaultFormStateBehavior || {};
1342
+ const { mergeExtraDefaults } = arrayMinItems;
1343
+ const defaultSupercedesUndefined = mergeDefaultsIntoFormData === "useDefaultIfFormDataUndefined";
1258
1344
  if (isObject(formData)) {
1259
- return mergeDefaultsWithFormData(defaults, formData, mergeExtraDefaults);
1345
+ return mergeDefaultsWithFormData(defaults, formData, mergeExtraDefaults, defaultSupercedesUndefined);
1260
1346
  }
1261
1347
  if (Array.isArray(formData)) {
1262
- return mergeDefaultsWithFormData(defaults, formData, mergeExtraDefaults);
1348
+ return mergeDefaultsWithFormData(defaults, formData, mergeExtraDefaults, defaultSupercedesUndefined);
1263
1349
  }
1264
1350
  return formData;
1265
1351
  }
@@ -1432,7 +1518,7 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
1432
1518
  // src/schema/toIdSchema.ts
1433
1519
  import get9 from "lodash/get";
1434
1520
  import isEqual2 from "lodash/isEqual";
1435
- function toIdSchemaInternal(validator, schema, idPrefix, idSeparator, id, rootSchema, formData, _recurseList = []) {
1521
+ function toIdSchemaInternal(validator, schema, idPrefix, idSeparator, id, rootSchema, formData, _recurseList = [], experimental_customMergeAllOf) {
1436
1522
  if (REF_KEY in schema || DEPENDENCIES_KEY in schema || ALL_OF_KEY in schema) {
1437
1523
  const _schema = retrieveSchema(validator, schema, rootSchema, formData);
1438
1524
  const sameSchemaIndex = _recurseList.findIndex((item) => isEqual2(item, _schema));
@@ -1445,7 +1531,8 @@ function toIdSchemaInternal(validator, schema, idPrefix, idSeparator, id, rootSc
1445
1531
  id,
1446
1532
  rootSchema,
1447
1533
  formData,
1448
- _recurseList.concat(_schema)
1534
+ _recurseList.concat(_schema),
1535
+ experimental_customMergeAllOf
1449
1536
  );
1450
1537
  }
1451
1538
  }
@@ -1458,7 +1545,8 @@ function toIdSchemaInternal(validator, schema, idPrefix, idSeparator, id, rootSc
1458
1545
  id,
1459
1546
  rootSchema,
1460
1547
  formData,
1461
- _recurseList
1548
+ _recurseList,
1549
+ experimental_customMergeAllOf
1462
1550
  );
1463
1551
  }
1464
1552
  const $id = id || idPrefix;
@@ -1477,14 +1565,25 @@ function toIdSchemaInternal(validator, schema, idPrefix, idSeparator, id, rootSc
1477
1565
  // It's possible that formData is not an object -- this can happen if an
1478
1566
  // array item has just been added, but not populated with data yet
1479
1567
  get9(formData, [name]),
1480
- _recurseList
1568
+ _recurseList,
1569
+ experimental_customMergeAllOf
1481
1570
  );
1482
1571
  }
1483
1572
  }
1484
1573
  return idSchema;
1485
1574
  }
1486
- function toIdSchema(validator, schema, id, rootSchema, formData, idPrefix = "root", idSeparator = "_") {
1487
- return toIdSchemaInternal(validator, schema, idPrefix, idSeparator, id, rootSchema, formData);
1575
+ function toIdSchema(validator, schema, id, rootSchema, formData, idPrefix = "root", idSeparator = "_", experimental_customMergeAllOf) {
1576
+ return toIdSchemaInternal(
1577
+ validator,
1578
+ schema,
1579
+ idPrefix,
1580
+ idSeparator,
1581
+ id,
1582
+ rootSchema,
1583
+ formData,
1584
+ void 0,
1585
+ experimental_customMergeAllOf
1586
+ );
1488
1587
  }
1489
1588
 
1490
1589
  // src/schema/toPathSchema.ts
@@ -1588,11 +1687,13 @@ var SchemaUtils = class {
1588
1687
  * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs
1589
1688
  * @param rootSchema - The root schema that will be forwarded to all the APIs
1590
1689
  * @param experimental_defaultFormStateBehavior - Configuration flags to allow users to override default form state behavior
1690
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
1591
1691
  */
1592
- constructor(validator, rootSchema, experimental_defaultFormStateBehavior) {
1692
+ constructor(validator, rootSchema, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
1593
1693
  this.rootSchema = rootSchema;
1594
1694
  this.validator = validator;
1595
1695
  this.experimental_defaultFormStateBehavior = experimental_defaultFormStateBehavior;
1696
+ this.experimental_customMergeAllOf = experimental_customMergeAllOf;
1596
1697
  }
1597
1698
  /** Returns the `ValidatorType` in the `SchemaUtilsType`
1598
1699
  *
@@ -1608,13 +1709,14 @@ var SchemaUtils = class {
1608
1709
  * @param validator - An implementation of the `ValidatorType` interface that will be compared against the current one
1609
1710
  * @param rootSchema - The root schema that will be compared against the current one
1610
1711
  * @param [experimental_defaultFormStateBehavior] Optional configuration object, if provided, allows users to override default form state behavior
1712
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
1611
1713
  * @returns - True if the `SchemaUtilsType` differs from the given `validator` or `rootSchema`
1612
1714
  */
1613
- doesSchemaUtilsDiffer(validator, rootSchema, experimental_defaultFormStateBehavior = {}) {
1715
+ doesSchemaUtilsDiffer(validator, rootSchema, experimental_defaultFormStateBehavior = {}, experimental_customMergeAllOf) {
1614
1716
  if (!validator || !rootSchema) {
1615
1717
  return false;
1616
1718
  }
1617
- return this.validator !== validator || !deepEquals(this.rootSchema, rootSchema) || !deepEquals(this.experimental_defaultFormStateBehavior, experimental_defaultFormStateBehavior);
1719
+ return this.validator !== validator || !deepEquals(this.rootSchema, rootSchema) || !deepEquals(this.experimental_defaultFormStateBehavior, experimental_defaultFormStateBehavior) || this.experimental_customMergeAllOf !== experimental_customMergeAllOf;
1618
1720
  }
1619
1721
  /** Returns the superset of `formData` that includes the given set updated to include any missing fields that have
1620
1722
  * computed to have defaults provided in the `schema`.
@@ -1633,7 +1735,8 @@ var SchemaUtils = class {
1633
1735
  formData,
1634
1736
  this.rootSchema,
1635
1737
  includeUndefinedValues,
1636
- this.experimental_defaultFormStateBehavior
1738
+ this.experimental_defaultFormStateBehavior,
1739
+ this.experimental_customMergeAllOf
1637
1740
  );
1638
1741
  }
1639
1742
  /** Determines whether the combination of `schema` and `uiSchema` properties indicates that the label for the `schema`
@@ -1743,7 +1846,13 @@ var SchemaUtils = class {
1743
1846
  * @returns - The schema having its conditions, additional properties, references and dependencies resolved
1744
1847
  */
1745
1848
  retrieveSchema(schema, rawFormData) {
1746
- return retrieveSchema(this.validator, schema, this.rootSchema, rawFormData);
1849
+ return retrieveSchema(
1850
+ this.validator,
1851
+ schema,
1852
+ this.rootSchema,
1853
+ rawFormData,
1854
+ this.experimental_customMergeAllOf
1855
+ );
1747
1856
  }
1748
1857
  /** Sanitize the `data` associated with the `oldSchema` so it is considered appropriate for the `newSchema`. If the
1749
1858
  * new schema does not contain any properties, then `undefined` is returned to clear all the form data. Due to the
@@ -1769,7 +1878,16 @@ var SchemaUtils = class {
1769
1878
  * @returns - The `IdSchema` object for the `schema`
1770
1879
  */
1771
1880
  toIdSchema(schema, id, formData, idPrefix = "root", idSeparator = "_") {
1772
- return toIdSchema(this.validator, schema, id, this.rootSchema, formData, idPrefix, idSeparator);
1881
+ return toIdSchema(
1882
+ this.validator,
1883
+ schema,
1884
+ id,
1885
+ this.rootSchema,
1886
+ formData,
1887
+ idPrefix,
1888
+ idSeparator,
1889
+ this.experimental_customMergeAllOf
1890
+ );
1773
1891
  }
1774
1892
  /** Generates an `PathSchema` object for the `schema`, recursively
1775
1893
  *
@@ -1782,8 +1900,13 @@ var SchemaUtils = class {
1782
1900
  return toPathSchema(this.validator, schema, name, this.rootSchema, formData);
1783
1901
  }
1784
1902
  };
1785
- function createSchemaUtils(validator, rootSchema, experimental_defaultFormStateBehavior = {}) {
1786
- return new SchemaUtils(validator, rootSchema, experimental_defaultFormStateBehavior);
1903
+ function createSchemaUtils(validator, rootSchema, experimental_defaultFormStateBehavior = {}, experimental_customMergeAllOf) {
1904
+ return new SchemaUtils(
1905
+ validator,
1906
+ rootSchema,
1907
+ experimental_defaultFormStateBehavior,
1908
+ experimental_customMergeAllOf
1909
+ );
1787
1910
  }
1788
1911
 
1789
1912
  // src/dataURItoBlob.ts