@rjsf/utils 6.0.0-alpha.0 → 6.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/dist/index.js +1281 -625
  2. package/dist/index.js.map +4 -4
  3. package/dist/utils.esm.js +1254 -598
  4. package/dist/utils.esm.js.map +4 -4
  5. package/dist/utils.umd.js +1201 -570
  6. package/lib/ErrorSchemaBuilder.d.ts +8 -4
  7. package/lib/ErrorSchemaBuilder.js +10 -8
  8. package/lib/ErrorSchemaBuilder.js.map +1 -1
  9. package/lib/allowAdditionalItems.d.ts +1 -1
  10. package/lib/allowAdditionalItems.js +1 -1
  11. package/lib/allowAdditionalItems.js.map +1 -1
  12. package/lib/asNumber.js.map +1 -1
  13. package/lib/canExpand.d.ts +1 -1
  14. package/lib/canExpand.js +2 -2
  15. package/lib/canExpand.js.map +1 -1
  16. package/lib/constIsAjvDataReference.d.ts +9 -0
  17. package/lib/constIsAjvDataReference.js +15 -0
  18. package/lib/constIsAjvDataReference.js.map +1 -0
  19. package/lib/constants.d.ts +11 -3
  20. package/lib/constants.js +11 -3
  21. package/lib/constants.js.map +1 -1
  22. package/lib/createErrorHandler.d.ts +1 -1
  23. package/lib/createErrorHandler.js +2 -2
  24. package/lib/createErrorHandler.js.map +1 -1
  25. package/lib/createSchemaUtils.d.ts +3 -2
  26. package/lib/createSchemaUtils.js +56 -46
  27. package/lib/createSchemaUtils.js.map +1 -1
  28. package/lib/dataURItoBlob.js.map +1 -1
  29. package/lib/dateRangeOptions.d.ts +1 -1
  30. package/lib/dateRangeOptions.js +1 -1
  31. package/lib/dateRangeOptions.js.map +1 -1
  32. package/lib/deepEquals.js +1 -1
  33. package/lib/deepEquals.js.map +1 -1
  34. package/lib/englishStringTranslator.d.ts +1 -1
  35. package/lib/englishStringTranslator.js +1 -1
  36. package/lib/enumOptionsDeselectValue.d.ts +1 -1
  37. package/lib/enumOptionsDeselectValue.js +4 -4
  38. package/lib/enumOptionsDeselectValue.js.map +1 -1
  39. package/lib/enumOptionsIndexForValue.d.ts +1 -1
  40. package/lib/enumOptionsIndexForValue.js +1 -1
  41. package/lib/enumOptionsIndexForValue.js.map +1 -1
  42. package/lib/enumOptionsIsSelected.d.ts +1 -1
  43. package/lib/enumOptionsIsSelected.js +3 -3
  44. package/lib/enumOptionsIsSelected.js.map +1 -1
  45. package/lib/enumOptionsSelectValue.d.ts +1 -1
  46. package/lib/enumOptionsSelectValue.js +2 -2
  47. package/lib/enumOptionsSelectValue.js.map +1 -1
  48. package/lib/enumOptionsValueForIndex.d.ts +1 -1
  49. package/lib/enumOptionsValueForIndex.js.map +1 -1
  50. package/lib/enums.d.ts +2 -0
  51. package/lib/enums.js +2 -0
  52. package/lib/enums.js.map +1 -1
  53. package/lib/findSchemaDefinition.d.ts +1 -1
  54. package/lib/findSchemaDefinition.js +2 -2
  55. package/lib/findSchemaDefinition.js.map +1 -1
  56. package/lib/getChangedFields.d.ts +17 -0
  57. package/lib/getChangedFields.js +42 -0
  58. package/lib/getChangedFields.js.map +1 -0
  59. package/lib/getDateElementProps.d.ts +1 -1
  60. package/lib/getDateElementProps.js.map +1 -1
  61. package/lib/getDiscriminatorFieldFromSchema.d.ts +1 -1
  62. package/lib/getDiscriminatorFieldFromSchema.js +4 -3
  63. package/lib/getDiscriminatorFieldFromSchema.js.map +1 -1
  64. package/lib/getInputProps.d.ts +1 -1
  65. package/lib/getInputProps.js +4 -1
  66. package/lib/getInputProps.js.map +1 -1
  67. package/lib/getOptionMatchingSimpleDiscriminator.d.ts +1 -1
  68. package/lib/getOptionMatchingSimpleDiscriminator.js +2 -2
  69. package/lib/getOptionMatchingSimpleDiscriminator.js.map +1 -1
  70. package/lib/getSchemaType.d.ts +2 -1
  71. package/lib/getSchemaType.js +3 -2
  72. package/lib/getSchemaType.js.map +1 -1
  73. package/lib/getSubmitButtonOptions.d.ts +1 -1
  74. package/lib/getSubmitButtonOptions.js +2 -2
  75. package/lib/getSubmitButtonOptions.js.map +1 -1
  76. package/lib/getTemplate.d.ts +1 -1
  77. package/lib/getTemplate.js +9 -0
  78. package/lib/getTemplate.js.map +1 -1
  79. package/lib/getTestIds.d.ts +17 -0
  80. package/lib/getTestIds.js +34 -0
  81. package/lib/getTestIds.js.map +1 -0
  82. package/lib/getUiOptions.d.ts +1 -1
  83. package/lib/getUiOptions.js +2 -2
  84. package/lib/getUiOptions.js.map +1 -1
  85. package/lib/getWidget.d.ts +1 -1
  86. package/lib/getWidget.js +3 -3
  87. package/lib/getWidget.js.map +1 -1
  88. package/lib/guessType.d.ts +1 -1
  89. package/lib/guessType.js.map +1 -1
  90. package/lib/hasWidget.d.ts +1 -1
  91. package/lib/hasWidget.js +1 -1
  92. package/lib/hasWidget.js.map +1 -1
  93. package/lib/hashForSchema.d.ts +23 -1
  94. package/lib/hashForSchema.js +24 -6
  95. package/lib/hashForSchema.js.map +1 -1
  96. package/lib/idGenerators.d.ts +8 -1
  97. package/lib/idGenerators.js +11 -2
  98. package/lib/idGenerators.js.map +1 -1
  99. package/lib/index.d.ts +63 -60
  100. package/lib/index.js +63 -60
  101. package/lib/index.js.map +1 -1
  102. package/lib/isConstant.d.ts +1 -1
  103. package/lib/isConstant.js +1 -1
  104. package/lib/isCustomWidget.d.ts +1 -1
  105. package/lib/isCustomWidget.js +1 -1
  106. package/lib/isFixedItems.d.ts +1 -1
  107. package/lib/isFixedItems.js +1 -1
  108. package/lib/isObject.d.ts +2 -2
  109. package/lib/isObject.js +11 -4
  110. package/lib/isObject.js.map +1 -1
  111. package/lib/lookupFromFormContext.d.ts +11 -0
  112. package/lib/lookupFromFormContext.js +20 -0
  113. package/lib/lookupFromFormContext.js.map +1 -0
  114. package/lib/mergeDefaultsWithFormData.d.ts +8 -2
  115. package/lib/mergeDefaultsWithFormData.js +39 -10
  116. package/lib/mergeDefaultsWithFormData.js.map +1 -1
  117. package/lib/mergeObjects.d.ts +1 -1
  118. package/lib/mergeObjects.js +1 -1
  119. package/lib/mergeObjects.js.map +1 -1
  120. package/lib/mergeSchemas.d.ts +1 -1
  121. package/lib/mergeSchemas.js +4 -4
  122. package/lib/mergeSchemas.js.map +1 -1
  123. package/lib/optionsList.d.ts +9 -7
  124. package/lib/optionsList.js +30 -19
  125. package/lib/optionsList.js.map +1 -1
  126. package/lib/orderProperties.js.map +1 -1
  127. package/lib/pad.js.map +1 -1
  128. package/lib/parseDateString.d.ts +1 -1
  129. package/lib/parseDateString.js +1 -1
  130. package/lib/parseDateString.js.map +1 -1
  131. package/lib/parser/ParserValidator.d.ts +1 -1
  132. package/lib/parser/ParserValidator.js +6 -6
  133. package/lib/parser/ParserValidator.js.map +1 -1
  134. package/lib/parser/index.d.ts +2 -2
  135. package/lib/parser/index.js +1 -1
  136. package/lib/parser/schemaParser.d.ts +2 -2
  137. package/lib/parser/schemaParser.js +6 -6
  138. package/lib/parser/schemaParser.js.map +1 -1
  139. package/lib/rangeSpec.d.ts +2 -2
  140. package/lib/rangeSpec.js.map +1 -1
  141. package/lib/replaceStringParameters.js.map +1 -1
  142. package/lib/schema/findFieldInSchema.d.ts +19 -0
  143. package/lib/schema/findFieldInSchema.js +61 -0
  144. package/lib/schema/findFieldInSchema.js.map +1 -0
  145. package/lib/schema/findSelectedOptionInXxxOf.d.ts +16 -0
  146. package/lib/schema/findSelectedOptionInXxxOf.js +34 -0
  147. package/lib/schema/findSelectedOptionInXxxOf.js.map +1 -0
  148. package/lib/schema/getClosestMatchingOption.d.ts +5 -3
  149. package/lib/schema/getClosestMatchingOption.js +28 -20
  150. package/lib/schema/getClosestMatchingOption.js.map +1 -1
  151. package/lib/schema/getDefaultFormState.d.ts +60 -13
  152. package/lib/schema/getDefaultFormState.js +304 -166
  153. package/lib/schema/getDefaultFormState.js.map +1 -1
  154. package/lib/schema/getDisplayLabel.d.ts +3 -2
  155. package/lib/schema/getDisplayLabel.js +10 -9
  156. package/lib/schema/getDisplayLabel.js.map +1 -1
  157. package/lib/schema/getFirstMatchingOption.d.ts +1 -1
  158. package/lib/schema/getFirstMatchingOption.js +70 -2
  159. package/lib/schema/getFirstMatchingOption.js.map +1 -1
  160. package/lib/schema/getFromSchema.d.ts +14 -0
  161. package/lib/schema/getFromSchema.js +39 -0
  162. package/lib/schema/getFromSchema.js.map +1 -0
  163. package/lib/schema/index.d.ts +15 -14
  164. package/lib/schema/index.js +15 -14
  165. package/lib/schema/index.js.map +1 -1
  166. package/lib/schema/isFilesArray.d.ts +3 -2
  167. package/lib/schema/isFilesArray.js +5 -4
  168. package/lib/schema/isFilesArray.js.map +1 -1
  169. package/lib/schema/isMultiSelect.d.ts +3 -2
  170. package/lib/schema/isMultiSelect.js +4 -3
  171. package/lib/schema/isMultiSelect.js.map +1 -1
  172. package/lib/schema/isSelect.d.ts +3 -2
  173. package/lib/schema/isSelect.js +5 -4
  174. package/lib/schema/isSelect.js.map +1 -1
  175. package/lib/schema/retrieveSchema.d.ts +28 -11
  176. package/lib/schema/retrieveSchema.js +142 -66
  177. package/lib/schema/retrieveSchema.js.map +1 -1
  178. package/lib/schema/sanitizeDataForNewSchema.d.ts +3 -2
  179. package/lib/schema/sanitizeDataForNewSchema.js +12 -11
  180. package/lib/schema/sanitizeDataForNewSchema.js.map +1 -1
  181. package/lib/schema/toIdSchema.d.ts +3 -2
  182. package/lib/schema/toIdSchema.js +30 -27
  183. package/lib/schema/toIdSchema.js.map +1 -1
  184. package/lib/schema/toPathSchema.d.ts +3 -2
  185. package/lib/schema/toPathSchema.js +22 -20
  186. package/lib/schema/toPathSchema.js.map +1 -1
  187. package/lib/schemaRequiresTrueValue.d.ts +1 -1
  188. package/lib/schemaRequiresTrueValue.js.map +1 -1
  189. package/lib/shouldRender.js +1 -1
  190. package/lib/toConstant.d.ts +1 -1
  191. package/lib/toConstant.js +1 -1
  192. package/lib/toConstant.js.map +1 -1
  193. package/lib/toDateString.d.ts +1 -1
  194. package/lib/toErrorList.d.ts +1 -1
  195. package/lib/toErrorList.js +2 -2
  196. package/lib/toErrorList.js.map +1 -1
  197. package/lib/toErrorSchema.d.ts +1 -1
  198. package/lib/toErrorSchema.js +2 -2
  199. package/lib/toErrorSchema.js.map +1 -1
  200. package/lib/tsconfig.tsbuildinfo +1 -1
  201. package/lib/types.d.ts +160 -131
  202. package/lib/unwrapErrorHandler.d.ts +1 -1
  203. package/lib/unwrapErrorHandler.js +1 -1
  204. package/lib/unwrapErrorHandler.js.map +1 -1
  205. package/lib/utcToLocal.js +1 -1
  206. package/lib/utcToLocal.js.map +1 -1
  207. package/lib/validationDataMerge.d.ts +1 -1
  208. package/lib/validationDataMerge.js +3 -3
  209. package/lib/validationDataMerge.js.map +1 -1
  210. package/lib/withIdRefPrefix.d.ts +1 -1
  211. package/lib/withIdRefPrefix.js +2 -2
  212. package/lib/withIdRefPrefix.js.map +1 -1
  213. package/package.json +36 -26
  214. package/src/ErrorSchemaBuilder.ts +15 -8
  215. package/src/canExpand.ts +2 -2
  216. package/src/constIsAjvDataReference.ts +17 -0
  217. package/src/constants.ts +12 -3
  218. package/src/createSchemaUtils.ts +140 -50
  219. package/src/dataURItoBlob.ts +1 -1
  220. package/src/dateRangeOptions.ts +1 -1
  221. package/src/enumOptionsDeselectValue.ts +4 -5
  222. package/src/enumOptionsIndexForValue.ts +1 -1
  223. package/src/enumOptionsIsSelected.ts +4 -5
  224. package/src/enumOptionsSelectValue.ts +1 -1
  225. package/src/enumOptionsValueForIndex.ts +1 -1
  226. package/src/enums.ts +2 -0
  227. package/src/findSchemaDefinition.ts +2 -2
  228. package/src/getChangedFields.ts +40 -0
  229. package/src/getDateElementProps.ts +2 -2
  230. package/src/getDiscriminatorFieldFromSchema.ts +2 -1
  231. package/src/getInputProps.ts +6 -2
  232. package/src/getOptionMatchingSimpleDiscriminator.ts +2 -2
  233. package/src/getSchemaType.ts +3 -2
  234. package/src/getSubmitButtonOptions.ts +1 -1
  235. package/src/getTemplate.ts +12 -1
  236. package/src/getTestIds.ts +40 -0
  237. package/src/getUiOptions.ts +2 -2
  238. package/src/getWidget.tsx +2 -2
  239. package/src/hasWidget.ts +1 -1
  240. package/src/hashForSchema.ts +26 -6
  241. package/src/idGenerators.ts +10 -0
  242. package/src/index.ts +21 -2
  243. package/src/isCustomWidget.ts +1 -1
  244. package/src/isObject.ts +12 -5
  245. package/src/labelValue.ts +2 -2
  246. package/src/lookupFromFormContext.ts +26 -0
  247. package/src/mergeDefaultsWithFormData.ts +54 -9
  248. package/src/mergeObjects.ts +24 -21
  249. package/src/optionsList.ts +31 -22
  250. package/src/parser/ParserValidator.ts +5 -5
  251. package/src/parser/schemaParser.ts +6 -6
  252. package/src/schema/findFieldInSchema.ts +138 -0
  253. package/src/schema/findSelectedOptionInXxxOf.ts +53 -0
  254. package/src/schema/getClosestMatchingOption.ts +38 -11
  255. package/src/schema/getDefaultFormState.ts +447 -191
  256. package/src/schema/getDisplayLabel.ts +7 -4
  257. package/src/schema/getFirstMatchingOption.ts +79 -4
  258. package/src/schema/getFromSchema.ts +100 -0
  259. package/src/schema/index.ts +6 -4
  260. package/src/schema/isFilesArray.ts +18 -3
  261. package/src/schema/isMultiSelect.ts +10 -4
  262. package/src/schema/isSelect.ts +5 -3
  263. package/src/schema/retrieveSchema.ts +256 -75
  264. package/src/schema/sanitizeDataForNewSchema.ts +52 -11
  265. package/src/schema/toIdSchema.ts +69 -43
  266. package/src/schema/toPathSchema.ts +49 -16
  267. package/src/toErrorList.ts +2 -2
  268. package/src/types.ts +266 -174
  269. package/src/validationDataMerge.ts +1 -1
  270. package/src/withIdRefPrefix.ts +1 -1
  271. package/LICENSE.md +0 -201
  272. package/lib/schema/getMatchingOption.d.ts +0 -14
  273. package/lib/schema/getMatchingOption.js +0 -85
  274. package/lib/schema/getMatchingOption.js.map +0 -1
  275. package/lib/schema/mergeValidationData.d.ts +0 -14
  276. package/lib/schema/mergeValidationData.js +0 -28
  277. package/lib/schema/mergeValidationData.js.map +0 -1
  278. package/src/schema/getMatchingOption.ts +0 -103
  279. package/src/schema/mergeValidationData.ts +0 -38
@@ -1,4 +1,4 @@
1
- import { FormContextType, RJSFSchema, StrictRJSFSchema, ValidatorType } from '../types';
1
+ import { Experimental_CustomMergeAllOf, FormContextType, RJSFSchema, StrictRJSFSchema, ValidatorType } from '../types.js';
2
2
  /** Retrieves an expanded schema that has had all of its conditions, additional properties, references and dependencies
3
3
  * resolved and merged into the `schema` given a `validator`, `rootSchema` and `rawFormData` that is used to do the
4
4
  * potentially recursive resolution.
@@ -7,9 +7,10 @@ import { FormContextType, RJSFSchema, StrictRJSFSchema, ValidatorType } from '..
7
7
  * @param schema - The schema for which retrieving a schema is desired
8
8
  * @param [rootSchema={}] - The root schema that will be forwarded to all the APIs
9
9
  * @param [rawFormData] - The current formData, if any, to assist retrieving a schema
10
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
10
11
  * @returns - The schema having its conditions, additional properties, references and dependencies resolved
11
12
  */
12
- export default function retrieveSchema<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, schema: S, rootSchema?: S, rawFormData?: T): S;
13
+ export default function retrieveSchema<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, schema: S, rootSchema?: S, rawFormData?: T, experimental_customMergeAllOf?: Experimental_CustomMergeAllOf<S>): S;
13
14
  /** Resolves a conditional block (if/else/then) by removing the condition and merging the appropriate conditional branch
14
15
  * with the rest of the schema. If `expandAllBranches` is true, then the `retrieveSchemaInteral()` results for both
15
16
  * conditions will be returned.
@@ -21,9 +22,10 @@ export default function retrieveSchema<T = any, S extends StrictRJSFSchema = RJS
21
22
  * dependencies as a list of schemas
22
23
  * @param recurseList - The list of recursive references already processed
23
24
  * @param [formData] - The current formData to assist retrieving a schema
25
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
24
26
  * @returns - A list of schemas with the appropriate conditions resolved, possibly with all branches expanded
25
27
  */
26
- export declare function resolveCondition<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, schema: S, rootSchema: S, expandAllBranches: boolean, recurseList: string[], formData?: T): S[];
28
+ export declare function resolveCondition<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, schema: S, rootSchema: S, expandAllBranches: boolean, recurseList: string[], formData?: T, experimental_customMergeAllOf?: Experimental_CustomMergeAllOf<S>): S[];
27
29
  /** Given a list of lists of allOf, anyOf or oneOf values, create a list of lists of all permutations of the values. The
28
30
  * `listOfLists` is expected to be all resolved values of the 1st...nth schemas within an `allOf`, `anyOf` or `oneOf`.
29
31
  * From those lists, build a matrix for each `xxxOf` where there is more than one schema for a row in the list of lists.
@@ -39,6 +41,13 @@ export declare function resolveCondition<T = any, S extends StrictRJSFSchema = R
39
41
  * @returns - The list of all permutations of schemas for a set of `xxxOf`s
40
42
  */
41
43
  export declare function getAllPermutationsOfXxxOf<S extends StrictRJSFSchema = RJSFSchema>(listOfLists: S[][]): S[][];
44
+ /** Returns the subset of 'patternProperties' specifications that match the given 'key'
45
+ *
46
+ * @param schema - The schema whose 'patternProperties' are to be filtered
47
+ * @param key - The key to match against the 'patternProperties' specifications
48
+ * @returns - The subset of 'patternProperties' specifications that match the given 'key'
49
+ */
50
+ export declare function getMatchingPatternProperties<S extends StrictRJSFSchema = RJSFSchema>(schema: S, key: string): Required<S['patternProperties']>;
42
51
  /** Resolves references and dependencies within a schema and its 'allOf' children. Passes the `expandAllBranches` flag
43
52
  * down to the `retrieveSchemaInternal()`, `resolveReference()` and `resolveDependencies()` helper calls. If
44
53
  * `expandAllBranches` is true, then all possible dependencies and/or allOf branches are returned.
@@ -50,9 +59,10 @@ export declare function getAllPermutationsOfXxxOf<S extends StrictRJSFSchema = R
50
59
  * as a list of schemas
51
60
  * @param recurseList - The list of recursive references already processed
52
61
  * @param [formData] - The current formData, if any, to assist retrieving a schema
62
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
53
63
  * @returns - The list of schemas having its references, dependencies and allOf schemas resolved
54
64
  */
55
- export declare function resolveSchema<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, schema: S, rootSchema: S, expandAllBranches: boolean, recurseList: string[], formData?: T): S[];
65
+ export declare function resolveSchema<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, schema: S, rootSchema: S, expandAllBranches: boolean, recurseList: string[], formData?: T, experimental_customMergeAllOf?: Experimental_CustomMergeAllOf<S>): S[];
56
66
  /** Resolves all references within a schema and then returns the `retrieveSchemaInternal()` if the resolved schema is
57
67
  * actually different than the original. Passes the `expandAllBranches` flag down to the `retrieveSchemaInternal()`
58
68
  * helper call.
@@ -64,9 +74,10 @@ export declare function resolveSchema<T = any, S extends StrictRJSFSchema = RJSF
64
74
  * as a list of schemas
65
75
  * @param recurseList - The list of recursive references already processed
66
76
  * @param [formData] - The current formData, if any, to assist retrieving a schema
77
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
67
78
  * @returns - The list schemas retrieved after having all references resolved
68
79
  */
69
- export declare function resolveReference<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, schema: S, rootSchema: S, expandAllBranches: boolean, recurseList: string[], formData?: T): S[];
80
+ export declare function resolveReference<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, schema: S, rootSchema: S, expandAllBranches: boolean, recurseList: string[], formData?: T, experimental_customMergeAllOf?: Experimental_CustomMergeAllOf<S>): S[];
70
81
  /** Resolves all references within the schema itself as well as any of its properties and array items.
71
82
  *
72
83
  * @param schema - The schema for which resolving all references is desired
@@ -81,9 +92,10 @@ export declare function resolveAllReferences<S extends StrictRJSFSchema = RJSFSc
81
92
  * @param theSchema - The schema for which the existing additional properties is desired
82
93
  * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s * @param validator
83
94
  * @param [aFormData] - The current formData, if any, to assist retrieving a schema
95
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
84
96
  * @returns - The updated schema with additional properties stubbed
85
97
  */
86
- export declare function stubExistingAdditionalProperties<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, theSchema: S, rootSchema?: S, aFormData?: T): S;
98
+ export declare function stubExistingAdditionalProperties<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, theSchema: S, rootSchema?: S, aFormData?: T, experimental_customMergeAllOf?: Experimental_CustomMergeAllOf<S>): S;
87
99
  /** Internal handler that retrieves an expanded schema that has had all of its conditions, additional properties,
88
100
  * references and dependencies resolved and merged into the `schema` given a `validator`, `rootSchema` and `rawFormData`
89
101
  * that is used to do the potentially recursive resolution. If `expandAllBranches` is true, then all possible branches
@@ -96,10 +108,11 @@ export declare function stubExistingAdditionalProperties<T = any, S extends Stri
96
108
  * @param [expandAllBranches=false] - Flag, if true, will return all possible branches of conditions, any/oneOf and
97
109
  * dependencies as a list of schemas
98
110
  * @param [recurseList=[]] - The optional, list of recursive references already processed
111
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
99
112
  * @returns - The schema(s) resulting from having its conditions, additional properties, references and dependencies
100
113
  * resolved. Multiple schemas may be returned if `expandAllBranches` is true.
101
114
  */
102
- export declare function retrieveSchemaInternal<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, schema: S, rootSchema: S, rawFormData?: T, expandAllBranches?: boolean, recurseList?: string[]): S[];
115
+ export declare function retrieveSchemaInternal<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, schema: S, rootSchema: S, rawFormData?: T, expandAllBranches?: boolean, recurseList?: string[], experimental_customMergeAllOf?: Experimental_CustomMergeAllOf<S>): S[];
103
116
  /** Resolves an `anyOf` or `oneOf` within a schema (if present) to the list of schemas returned from
104
117
  * `retrieveSchemaInternal()` for the best matching option. If `expandAllBranches` is true, then a list of schemas for ALL
105
118
  * options are retrieved and returned.
@@ -123,9 +136,10 @@ export declare function resolveAnyOrOneOfSchemas<T = any, S extends StrictRJSFSc
123
136
  * as a list of schemas
124
137
  * @param recurseList - The list of recursive references already processed
125
138
  * @param [formData] - The current formData, if any, to assist retrieving a schema
139
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
126
140
  * @returns - The list of schemas with their dependencies resolved
127
141
  */
128
- export declare function resolveDependencies<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, schema: S, rootSchema: S, expandAllBranches: boolean, recurseList: string[], formData?: T): S[];
142
+ export declare function resolveDependencies<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, schema: S, rootSchema: S, expandAllBranches: boolean, recurseList: string[], formData?: T, experimental_customMergeAllOf?: Experimental_CustomMergeAllOf<S>): S[];
129
143
  /** Processes all the `dependencies` recursively into the list of `resolvedSchema`s as needed. Passes the
130
144
  * `expandAllBranches` flag down to the `withDependentSchema()` and the recursive `processDependencies()` helper calls.
131
145
  *
@@ -137,9 +151,10 @@ export declare function resolveDependencies<T = any, S extends StrictRJSFSchema
137
151
  * as a list of schemas
138
152
  * @param recurseList - The list of recursive references already processed
139
153
  * @param [formData] - The current formData, if any, to assist retrieving a schema
154
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
140
155
  * @returns - The schema with the `dependencies` resolved into it
141
156
  */
142
- export declare function processDependencies<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, dependencies: S['dependencies'], resolvedSchema: S, rootSchema: S, expandAllBranches: boolean, recurseList: string[], formData?: T): S[];
157
+ export declare function processDependencies<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, dependencies: S['dependencies'], resolvedSchema: S, rootSchema: S, expandAllBranches: boolean, recurseList: string[], formData?: T, experimental_customMergeAllOf?: Experimental_CustomMergeAllOf<S>): S[];
143
158
  /** Updates a schema with additionally required properties added
144
159
  *
145
160
  * @param schema - The schema for which resolving a dependent properties is desired
@@ -159,9 +174,10 @@ export declare function withDependentProperties<S extends StrictRJSFSchema = RJS
159
174
  * as a list of schemas
160
175
  * @param recurseList - The list of recursive references already processed
161
176
  * @param [formData]- The current formData to assist retrieving a schema
177
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
162
178
  * @returns - The list of schemas with the dependent schema resolved into them
163
179
  */
164
- export declare function withDependentSchema<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, schema: S, rootSchema: S, dependencyKey: string, dependencyValue: S, expandAllBranches: boolean, recurseList: string[], formData?: T): S[];
180
+ export declare function withDependentSchema<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, schema: S, rootSchema: S, dependencyKey: string, dependencyValue: S, expandAllBranches: boolean, recurseList: string[], formData?: T, experimental_customMergeAllOf?: Experimental_CustomMergeAllOf<S>): S[];
165
181
  /** Returns a list of `schema`s with the best choice from the `oneOf` options merged into it. If `expandAllBranches` is
166
182
  * true, then a list of schemas for ALL options are retrieved and returned. Passes the `expandAllBranches` flag down to
167
183
  * the `retrieveSchemaInternal()` helper call.
@@ -175,6 +191,7 @@ export declare function withDependentSchema<T = any, S extends StrictRJSFSchema
175
191
  * as a list of schemas
176
192
  * @param recurseList - The list of recursive references already processed
177
193
  * @param [formData] - The current formData to assist retrieving a schema
194
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
178
195
  * @returns - Either an array containing the best matching option or all options if `expandAllBranches` is true
179
196
  */
180
- export declare function withExactlyOneSubschema<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, schema: S, rootSchema: S, dependencyKey: string, oneOf: S['oneOf'], expandAllBranches: boolean, recurseList: string[], formData?: T): S[];
197
+ export declare function withExactlyOneSubschema<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(validator: ValidatorType<T, S, F>, schema: S, rootSchema: S, dependencyKey: string, oneOf: S['oneOf'], expandAllBranches: boolean, recurseList: string[], formData?: T, experimental_customMergeAllOf?: Experimental_CustomMergeAllOf<S>): S[];
@@ -1,19 +1,20 @@
1
- import get from 'lodash/get';
2
- import isEqual from 'lodash/isEqual';
3
- import set from 'lodash/set';
4
- import times from 'lodash/times';
5
- import transform from 'lodash/transform';
6
- import merge from 'lodash/merge';
7
- import flattenDeep from 'lodash/flattenDeep';
8
- import uniq from 'lodash/uniq';
1
+ import get from 'lodash-es/get.js';
2
+ import set from 'lodash-es/set.js';
3
+ import times from 'lodash-es/times.js';
4
+ import transform from 'lodash-es/transform.js';
5
+ import merge from 'lodash-es/merge.js';
6
+ import flattenDeep from 'lodash-es/flattenDeep.js';
7
+ import uniq from 'lodash-es/uniq.js';
9
8
  import mergeAllOf from 'json-schema-merge-allof';
10
- import { ADDITIONAL_PROPERTIES_KEY, ADDITIONAL_PROPERTY_FLAG, ALL_OF_KEY, ANY_OF_KEY, DEPENDENCIES_KEY, IF_KEY, ONE_OF_KEY, REF_KEY, PROPERTIES_KEY, ITEMS_KEY, } from '../constants';
11
- import findSchemaDefinition, { splitKeyElementFromObject } from '../findSchemaDefinition';
12
- import getDiscriminatorFieldFromSchema from '../getDiscriminatorFieldFromSchema';
13
- import guessType from '../guessType';
14
- import isObject from '../isObject';
15
- import mergeSchemas from '../mergeSchemas';
16
- import getFirstMatchingOption from './getFirstMatchingOption';
9
+ import { ADDITIONAL_PROPERTIES_KEY, ADDITIONAL_PROPERTY_FLAG, ALL_OF_KEY, ANY_OF_KEY, DEPENDENCIES_KEY, IF_KEY, ITEMS_KEY, ONE_OF_KEY, PATTERN_PROPERTIES_KEY, PROPERTIES_KEY, REF_KEY, } from '../constants.js';
10
+ import findSchemaDefinition, { splitKeyElementFromObject } from '../findSchemaDefinition.js';
11
+ import getDiscriminatorFieldFromSchema from '../getDiscriminatorFieldFromSchema.js';
12
+ import guessType from '../guessType.js';
13
+ import isObject from '../isObject.js';
14
+ import mergeSchemas from '../mergeSchemas.js';
15
+ import getFirstMatchingOption from './getFirstMatchingOption.js';
16
+ import deepEquals from '../deepEquals.js';
17
+ import isEmpty from 'lodash-es/isEmpty.js';
17
18
  /** Retrieves an expanded schema that has had all of its conditions, additional properties, references and dependencies
18
19
  * resolved and merged into the `schema` given a `validator`, `rootSchema` and `rawFormData` that is used to do the
19
20
  * potentially recursive resolution.
@@ -22,10 +23,11 @@ import getFirstMatchingOption from './getFirstMatchingOption';
22
23
  * @param schema - The schema for which retrieving a schema is desired
23
24
  * @param [rootSchema={}] - The root schema that will be forwarded to all the APIs
24
25
  * @param [rawFormData] - The current formData, if any, to assist retrieving a schema
26
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
25
27
  * @returns - The schema having its conditions, additional properties, references and dependencies resolved
26
28
  */
27
- export default function retrieveSchema(validator, schema, rootSchema = {}, rawFormData) {
28
- return retrieveSchemaInternal(validator, schema, rootSchema, rawFormData)[0];
29
+ export default function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experimental_customMergeAllOf) {
30
+ return retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, undefined, undefined, experimental_customMergeAllOf)[0];
29
31
  }
30
32
  /** Resolves a conditional block (if/else/then) by removing the condition and merging the appropriate conditional branch
31
33
  * with the rest of the schema. If `expandAllBranches` is true, then the `retrieveSchemaInteral()` results for both
@@ -38,31 +40,32 @@ export default function retrieveSchema(validator, schema, rootSchema = {}, rawFo
38
40
  * dependencies as a list of schemas
39
41
  * @param recurseList - The list of recursive references already processed
40
42
  * @param [formData] - The current formData to assist retrieving a schema
43
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
41
44
  * @returns - A list of schemas with the appropriate conditions resolved, possibly with all branches expanded
42
45
  */
43
- export function resolveCondition(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
46
+ export function resolveCondition(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
44
47
  const { if: expression, then, else: otherwise, ...resolvedSchemaLessConditional } = schema;
45
48
  const conditionValue = validator.isValid(expression, formData || {}, rootSchema);
46
49
  let resolvedSchemas = [resolvedSchemaLessConditional];
47
50
  let schemas = [];
48
51
  if (expandAllBranches) {
49
52
  if (then && typeof then !== 'boolean') {
50
- schemas = schemas.concat(retrieveSchemaInternal(validator, then, rootSchema, formData, expandAllBranches, recurseList));
53
+ schemas = schemas.concat(retrieveSchemaInternal(validator, then, rootSchema, formData, expandAllBranches, recurseList, experimental_customMergeAllOf));
51
54
  }
52
55
  if (otherwise && typeof otherwise !== 'boolean') {
53
- schemas = schemas.concat(retrieveSchemaInternal(validator, otherwise, rootSchema, formData, expandAllBranches, recurseList));
56
+ schemas = schemas.concat(retrieveSchemaInternal(validator, otherwise, rootSchema, formData, expandAllBranches, recurseList, experimental_customMergeAllOf));
54
57
  }
55
58
  }
56
59
  else {
57
60
  const conditionalSchema = conditionValue ? then : otherwise;
58
61
  if (conditionalSchema && typeof conditionalSchema !== 'boolean') {
59
- schemas = schemas.concat(retrieveSchemaInternal(validator, conditionalSchema, rootSchema, formData, expandAllBranches, recurseList));
62
+ schemas = schemas.concat(retrieveSchemaInternal(validator, conditionalSchema, rootSchema, formData, expandAllBranches, recurseList, experimental_customMergeAllOf));
60
63
  }
61
64
  }
62
65
  if (schemas.length) {
63
66
  resolvedSchemas = schemas.map((s) => mergeSchemas(resolvedSchemaLessConditional, s));
64
67
  }
65
- return resolvedSchemas.flatMap((s) => retrieveSchemaInternal(validator, s, rootSchema, formData, expandAllBranches, recurseList));
68
+ return resolvedSchemas.flatMap((s) => retrieveSchemaInternal(validator, s, rootSchema, formData, expandAllBranches, recurseList, experimental_customMergeAllOf));
66
69
  }
67
70
  /** Given a list of lists of allOf, anyOf or oneOf values, create a list of lists of all permutations of the values. The
68
71
  * `listOfLists` is expected to be all resolved values of the 1st...nth schemas within an `allOf`, `anyOf` or `oneOf`.
@@ -87,10 +90,24 @@ export function getAllPermutationsOfXxxOf(listOfLists) {
87
90
  // Otherwise just push in the single value into the current set of permutations
88
91
  permutations.forEach((permutation) => permutation.push(list[0]));
89
92
  return permutations;
90
- }, [[]] // Start with an empty list
91
- );
93
+ }, [[]]);
92
94
  return allPermutations;
93
95
  }
96
+ /** Returns the subset of 'patternProperties' specifications that match the given 'key'
97
+ *
98
+ * @param schema - The schema whose 'patternProperties' are to be filtered
99
+ * @param key - The key to match against the 'patternProperties' specifications
100
+ * @returns - The subset of 'patternProperties' specifications that match the given 'key'
101
+ */
102
+ export function getMatchingPatternProperties(schema, key) {
103
+ return Object.keys(schema.patternProperties)
104
+ .filter((pattern) => RegExp(pattern).test(key))
105
+ .reduce((obj, pattern) => {
106
+ // Pass the pattern using the `[]` index notation so that any `.` in the pattern are not used as a dotted path
107
+ set(obj, [pattern], schema.patternProperties[pattern]);
108
+ return obj;
109
+ }, {});
110
+ }
94
111
  /** Resolves references and dependencies within a schema and its 'allOf' children. Passes the `expandAllBranches` flag
95
112
  * down to the `retrieveSchemaInternal()`, `resolveReference()` and `resolveDependencies()` helper calls. If
96
113
  * `expandAllBranches` is true, then all possible dependencies and/or allOf branches are returned.
@@ -102,9 +119,10 @@ export function getAllPermutationsOfXxxOf(listOfLists) {
102
119
  * as a list of schemas
103
120
  * @param recurseList - The list of recursive references already processed
104
121
  * @param [formData] - The current formData, if any, to assist retrieving a schema
122
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
105
123
  * @returns - The list of schemas having its references, dependencies and allOf schemas resolved
106
124
  */
107
- export function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
125
+ export function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
108
126
  const updatedSchemas = resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData);
109
127
  if (updatedSchemas.length > 1 || updatedSchemas[0] !== schema) {
110
128
  // return the updatedSchemas array if it has either multiple schemas within it
@@ -114,13 +132,16 @@ export function resolveSchema(validator, schema, rootSchema, expandAllBranches,
114
132
  if (DEPENDENCIES_KEY in schema) {
115
133
  const resolvedSchemas = resolveDependencies(validator, schema, rootSchema, expandAllBranches, recurseList, formData);
116
134
  return resolvedSchemas.flatMap((s) => {
117
- return retrieveSchemaInternal(validator, s, rootSchema, formData, expandAllBranches, recurseList);
135
+ return retrieveSchemaInternal(validator, s, rootSchema, formData, expandAllBranches, recurseList, experimental_customMergeAllOf);
118
136
  });
119
137
  }
120
138
  if (ALL_OF_KEY in schema && Array.isArray(schema.allOf)) {
121
- const allOfSchemaElements = schema.allOf.map((allOfSubschema) => retrieveSchemaInternal(validator, allOfSubschema, rootSchema, formData, expandAllBranches, recurseList));
139
+ const allOfSchemaElements = schema.allOf.map((allOfSubschema) => retrieveSchemaInternal(validator, allOfSubschema, rootSchema, formData, expandAllBranches, recurseList, experimental_customMergeAllOf));
122
140
  const allPermutations = getAllPermutationsOfXxxOf(allOfSchemaElements);
123
- return allPermutations.map((permutation) => ({ ...schema, allOf: permutation }));
141
+ return allPermutations.map((permutation) => ({
142
+ ...schema,
143
+ allOf: permutation,
144
+ }));
124
145
  }
125
146
  // No $ref or dependencies or allOf attribute was found, returning the original schema.
126
147
  return [schema];
@@ -136,13 +157,14 @@ export function resolveSchema(validator, schema, rootSchema, expandAllBranches,
136
157
  * as a list of schemas
137
158
  * @param recurseList - The list of recursive references already processed
138
159
  * @param [formData] - The current formData, if any, to assist retrieving a schema
160
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
139
161
  * @returns - The list schemas retrieved after having all references resolved
140
162
  */
141
- export function resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
163
+ export function resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
142
164
  const updatedSchema = resolveAllReferences(schema, rootSchema, recurseList);
143
165
  if (updatedSchema !== schema) {
144
166
  // Only call this if the schema was actually changed by the `resolveAllReferences()` function
145
- return retrieveSchemaInternal(validator, updatedSchema, rootSchema, formData, expandAllBranches, recurseList);
167
+ return retrieveSchemaInternal(validator, updatedSchema, rootSchema, formData, expandAllBranches, recurseList, experimental_customMergeAllOf);
146
168
  }
147
169
  return [schema];
148
170
  }
@@ -188,7 +210,7 @@ export function resolveAllReferences(schema, rootSchema, recurseList) {
188
210
  items: resolveAllReferences(resolvedSchema.items, rootSchema, recurseList),
189
211
  };
190
212
  }
191
- return isEqual(schema, resolvedSchema) ? schema : resolvedSchema;
213
+ return deepEquals(schema, resolvedSchema) ? schema : resolvedSchema;
192
214
  }
193
215
  /** Creates new 'properties' items for each key in the `formData`
194
216
  *
@@ -196,9 +218,10 @@ export function resolveAllReferences(schema, rootSchema, recurseList) {
196
218
  * @param theSchema - The schema for which the existing additional properties is desired
197
219
  * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s * @param validator
198
220
  * @param [aFormData] - The current formData, if any, to assist retrieving a schema
221
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
199
222
  * @returns - The updated schema with additional properties stubbed
200
223
  */
201
- export function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFormData) {
224
+ export function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFormData, experimental_customMergeAllOf) {
202
225
  // Clone the schema so that we don't ruin the consumer's original
203
226
  const schema = {
204
227
  ...theSchema,
@@ -211,31 +234,47 @@ export function stubExistingAdditionalProperties(validator, theSchema, rootSchem
211
234
  // No need to stub, our schema already has the property
212
235
  return;
213
236
  }
214
- let additionalProperties = {};
215
- if (typeof schema.additionalProperties !== 'boolean') {
216
- if (REF_KEY in schema.additionalProperties) {
217
- additionalProperties = retrieveSchema(validator, { $ref: get(schema.additionalProperties, [REF_KEY]) }, rootSchema, formData);
237
+ if (PATTERN_PROPERTIES_KEY in schema) {
238
+ const matchingProperties = getMatchingPatternProperties(schema, key);
239
+ if (!isEmpty(matchingProperties)) {
240
+ schema.properties[key] = retrieveSchema(validator, { allOf: Object.values(matchingProperties) }, rootSchema, formData, experimental_customMergeAllOf);
241
+ set(schema.properties, [key, ADDITIONAL_PROPERTY_FLAG], true);
242
+ return;
218
243
  }
219
- else if ('type' in schema.additionalProperties) {
220
- additionalProperties = { ...schema.additionalProperties };
221
- }
222
- else if (ANY_OF_KEY in schema.additionalProperties || ONE_OF_KEY in schema.additionalProperties) {
223
- additionalProperties = {
224
- type: 'object',
225
- ...schema.additionalProperties,
226
- };
244
+ }
245
+ if (ADDITIONAL_PROPERTIES_KEY in schema && schema.additionalProperties !== false) {
246
+ let additionalProperties = {};
247
+ if (typeof schema.additionalProperties !== 'boolean') {
248
+ if (REF_KEY in schema.additionalProperties) {
249
+ additionalProperties = retrieveSchema(validator, { $ref: get(schema.additionalProperties, [REF_KEY]) }, rootSchema, formData, experimental_customMergeAllOf);
250
+ }
251
+ else if ('type' in schema.additionalProperties) {
252
+ additionalProperties = { ...schema.additionalProperties };
253
+ }
254
+ else if (ANY_OF_KEY in schema.additionalProperties || ONE_OF_KEY in schema.additionalProperties) {
255
+ additionalProperties = {
256
+ type: 'object',
257
+ ...schema.additionalProperties,
258
+ };
259
+ }
260
+ else {
261
+ additionalProperties = { type: guessType(get(formData, [key])) };
262
+ }
227
263
  }
228
264
  else {
229
265
  additionalProperties = { type: guessType(get(formData, [key])) };
230
266
  }
267
+ // The type of our new key should match the additionalProperties value;
268
+ schema.properties[key] = additionalProperties;
269
+ // Set our additional property flag so we know it was dynamically added
270
+ set(schema.properties, [key, ADDITIONAL_PROPERTY_FLAG], true);
231
271
  }
232
272
  else {
233
- additionalProperties = { type: guessType(get(formData, [key])) };
273
+ // Invalid property
274
+ schema.properties[key] = { type: 'null' };
275
+ // Set our additional property flag so we know it was dynamically added
276
+ set(schema.properties, [key, ADDITIONAL_PROPERTY_FLAG], true);
234
277
  }
235
- // The type of our new key should match the additionalProperties value;
236
- schema.properties[key] = additionalProperties;
237
- // Set our additional property flag so we know it was dynamically added
238
- set(schema.properties, [key, ADDITIONAL_PROPERTY_FLAG], true);
239
278
  });
240
279
  return schema;
241
280
  }
@@ -251,18 +290,20 @@ export function stubExistingAdditionalProperties(validator, theSchema, rootSchem
251
290
  * @param [expandAllBranches=false] - Flag, if true, will return all possible branches of conditions, any/oneOf and
252
291
  * dependencies as a list of schemas
253
292
  * @param [recurseList=[]] - The optional, list of recursive references already processed
293
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
254
294
  * @returns - The schema(s) resulting from having its conditions, additional properties, references and dependencies
255
295
  * resolved. Multiple schemas may be returned if `expandAllBranches` is true.
256
296
  */
257
- export function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = []) {
297
+ export function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = [], experimental_customMergeAllOf) {
258
298
  if (!isObject(schema)) {
259
299
  return [{}];
260
300
  }
261
- const resolvedSchemas = resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, rawFormData);
301
+ const resolvedSchemas = resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, rawFormData, experimental_customMergeAllOf);
262
302
  return resolvedSchemas.flatMap((s) => {
303
+ var _a;
263
304
  let resolvedSchema = s;
264
305
  if (IF_KEY in resolvedSchema) {
265
- return resolveCondition(validator, resolvedSchema, rootSchema, expandAllBranches, recurseList, rawFormData);
306
+ return resolveCondition(validator, resolvedSchema, rootSchema, expandAllBranches, recurseList, rawFormData, experimental_customMergeAllOf);
266
307
  }
267
308
  if (ALL_OF_KEY in resolvedSchema) {
268
309
  // resolve allOf schemas
@@ -271,9 +312,27 @@ export function retrieveSchemaInternal(validator, schema, rootSchema, rawFormDat
271
312
  return [...allOf, restOfSchema];
272
313
  }
273
314
  try {
274
- resolvedSchema = mergeAllOf(resolvedSchema, {
275
- deep: false,
315
+ const withContainsSchemas = [];
316
+ const withoutContainsSchemas = [];
317
+ (_a = resolvedSchema.allOf) === null || _a === void 0 ? void 0 : _a.forEach((s) => {
318
+ if (typeof s === 'object' && s.contains) {
319
+ withContainsSchemas.push(s);
320
+ }
321
+ else {
322
+ withoutContainsSchemas.push(s);
323
+ }
276
324
  });
325
+ if (withContainsSchemas.length) {
326
+ resolvedSchema = { ...resolvedSchema, allOf: withoutContainsSchemas };
327
+ }
328
+ resolvedSchema = experimental_customMergeAllOf
329
+ ? experimental_customMergeAllOf(resolvedSchema)
330
+ : mergeAllOf(resolvedSchema, {
331
+ deep: false,
332
+ });
333
+ if (withContainsSchemas.length) {
334
+ resolvedSchema.allOf = withContainsSchemas;
335
+ }
277
336
  }
278
337
  catch (e) {
279
338
  console.warn('could not merge subschemas in allOf:\n', e);
@@ -281,9 +340,22 @@ export function retrieveSchemaInternal(validator, schema, rootSchema, rawFormDat
281
340
  return resolvedSchemaWithoutAllOf;
282
341
  }
283
342
  }
284
- const hasAdditionalProperties = ADDITIONAL_PROPERTIES_KEY in resolvedSchema && resolvedSchema.additionalProperties !== false;
343
+ if (PROPERTIES_KEY in resolvedSchema && PATTERN_PROPERTIES_KEY in resolvedSchema) {
344
+ resolvedSchema = Object.keys(resolvedSchema.properties).reduce((schema, key) => {
345
+ const matchingProperties = getMatchingPatternProperties(schema, key);
346
+ if (!isEmpty(matchingProperties)) {
347
+ schema.properties[key] = retrieveSchema(validator, { allOf: [schema.properties[key], ...Object.values(matchingProperties)] }, rootSchema, rawFormData, experimental_customMergeAllOf);
348
+ }
349
+ return schema;
350
+ }, {
351
+ ...resolvedSchema,
352
+ properties: { ...resolvedSchema.properties },
353
+ });
354
+ }
355
+ const hasAdditionalProperties = PATTERN_PROPERTIES_KEY in resolvedSchema ||
356
+ (ADDITIONAL_PROPERTIES_KEY in resolvedSchema && resolvedSchema.additionalProperties !== false);
285
357
  if (hasAdditionalProperties) {
286
- return stubExistingAdditionalProperties(validator, resolvedSchema, rootSchema, rawFormData);
358
+ return stubExistingAdditionalProperties(validator, resolvedSchema, rootSchema, rawFormData, experimental_customMergeAllOf);
287
359
  }
288
360
  return resolvedSchema;
289
361
  });
@@ -337,13 +409,14 @@ export function resolveAnyOrOneOfSchemas(validator, schema, rootSchema, expandAl
337
409
  * as a list of schemas
338
410
  * @param recurseList - The list of recursive references already processed
339
411
  * @param [formData] - The current formData, if any, to assist retrieving a schema
412
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
340
413
  * @returns - The list of schemas with their dependencies resolved
341
414
  */
342
- export function resolveDependencies(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
415
+ export function resolveDependencies(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
343
416
  // Drop the dependencies from the source schema.
344
417
  const { dependencies, ...remainingSchema } = schema;
345
418
  const resolvedSchemas = resolveAnyOrOneOfSchemas(validator, remainingSchema, rootSchema, expandAllBranches, formData);
346
- return resolvedSchemas.flatMap((resolvedSchema) => processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData));
419
+ return resolvedSchemas.flatMap((resolvedSchema) => processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf));
347
420
  }
348
421
  /** Processes all the `dependencies` recursively into the list of `resolvedSchema`s as needed. Passes the
349
422
  * `expandAllBranches` flag down to the `withDependentSchema()` and the recursive `processDependencies()` helper calls.
@@ -356,9 +429,10 @@ export function resolveDependencies(validator, schema, rootSchema, expandAllBran
356
429
  * as a list of schemas
357
430
  * @param recurseList - The list of recursive references already processed
358
431
  * @param [formData] - The current formData, if any, to assist retrieving a schema
432
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
359
433
  * @returns - The schema with the `dependencies` resolved into it
360
434
  */
361
- export function processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData) {
435
+ export function processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
362
436
  let schemas = [resolvedSchema];
363
437
  // Process dependencies updating the local schema properties as appropriate.
364
438
  for (const dependencyKey in dependencies) {
@@ -375,9 +449,9 @@ export function processDependencies(validator, dependencies, resolvedSchema, roo
375
449
  schemas[0] = withDependentProperties(resolvedSchema, dependencyValue);
376
450
  }
377
451
  else if (isObject(dependencyValue)) {
378
- schemas = withDependentSchema(validator, resolvedSchema, rootSchema, dependencyKey, dependencyValue, expandAllBranches, recurseList, formData);
452
+ schemas = withDependentSchema(validator, resolvedSchema, rootSchema, dependencyKey, dependencyValue, expandAllBranches, recurseList, formData, experimental_customMergeAllOf);
379
453
  }
380
- return schemas.flatMap((schema) => processDependencies(validator, remainingDependencies, schema, rootSchema, expandAllBranches, recurseList, formData));
454
+ return schemas.flatMap((schema) => processDependencies(validator, remainingDependencies, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf));
381
455
  }
382
456
  return schemas;
383
457
  }
@@ -408,10 +482,11 @@ export function withDependentProperties(schema, additionallyRequired) {
408
482
  * as a list of schemas
409
483
  * @param recurseList - The list of recursive references already processed
410
484
  * @param [formData]- The current formData to assist retrieving a schema
485
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
411
486
  * @returns - The list of schemas with the dependent schema resolved into them
412
487
  */
413
- export function withDependentSchema(validator, schema, rootSchema, dependencyKey, dependencyValue, expandAllBranches, recurseList, formData) {
414
- const dependentSchemas = retrieveSchemaInternal(validator, dependencyValue, rootSchema, formData, expandAllBranches, recurseList);
488
+ export function withDependentSchema(validator, schema, rootSchema, dependencyKey, dependencyValue, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
489
+ const dependentSchemas = retrieveSchemaInternal(validator, dependencyValue, rootSchema, formData, expandAllBranches, recurseList, experimental_customMergeAllOf);
415
490
  return dependentSchemas.flatMap((dependent) => {
416
491
  const { oneOf, ...dependentSchema } = dependent;
417
492
  schema = mergeSchemas(schema, dependentSchema);
@@ -427,7 +502,7 @@ export function withDependentSchema(validator, schema, rootSchema, dependencyKey
427
502
  return resolveReference(validator, subschema, rootSchema, expandAllBranches, recurseList, formData);
428
503
  });
429
504
  const allPermutations = getAllPermutationsOfXxxOf(resolvedOneOfs);
430
- return allPermutations.flatMap((resolvedOneOf) => withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, resolvedOneOf, expandAllBranches, recurseList, formData));
505
+ return allPermutations.flatMap((resolvedOneOf) => withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, resolvedOneOf, expandAllBranches, recurseList, formData, experimental_customMergeAllOf));
431
506
  });
432
507
  }
433
508
  /** Returns a list of `schema`s with the best choice from the `oneOf` options merged into it. If `expandAllBranches` is
@@ -443,9 +518,10 @@ export function withDependentSchema(validator, schema, rootSchema, dependencyKey
443
518
  * as a list of schemas
444
519
  * @param recurseList - The list of recursive references already processed
445
520
  * @param [formData] - The current formData to assist retrieving a schema
521
+ * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
446
522
  * @returns - Either an array containing the best matching option or all options if `expandAllBranches` is true
447
523
  */
448
- export function withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, oneOf, expandAllBranches, recurseList, formData) {
524
+ export function withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, oneOf, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
449
525
  const validSubschemas = oneOf.filter((subschema) => {
450
526
  if (typeof subschema === 'boolean' || !subschema || !subschema.properties) {
451
527
  return false;
@@ -470,7 +546,7 @@ export function withExactlyOneSubschema(validator, schema, rootSchema, dependenc
470
546
  const subschema = s;
471
547
  const [dependentSubschema] = splitKeyElementFromObject(dependencyKey, subschema.properties);
472
548
  const dependentSchema = { ...subschema, properties: dependentSubschema };
473
- const schemas = retrieveSchemaInternal(validator, dependentSchema, rootSchema, formData, expandAllBranches, recurseList);
549
+ const schemas = retrieveSchemaInternal(validator, dependentSchema, rootSchema, formData, expandAllBranches, recurseList, experimental_customMergeAllOf);
474
550
  return schemas.map((s) => mergeSchemas(schema, s));
475
551
  });
476
552
  }
@@ -1 +1 @@
1
- {"version":3,"file":"retrieveSchema.js","sourceRoot":"","sources":["../../src/schema/retrieveSchema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retrieveSchema.js","sourceRoot":"","sources":["../../src/schema/retrieveSchema.ts"],"names":[],"mappings":"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"}