@rjsf/utils 6.8.0 → 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.
Files changed (475) hide show
  1. package/dist/index.cjs +509 -419
  2. package/dist/index.cjs.map +4 -4
  3. package/dist/utils.esm.js +508 -418
  4. package/dist/utils.esm.js.map +4 -4
  5. package/dist/utils.umd.js +567 -327
  6. package/lib/ErrorSchemaBuilder.d.ts +8 -7
  7. package/lib/ErrorSchemaBuilder.d.ts.map +1 -0
  8. package/lib/ErrorSchemaBuilder.js +29 -27
  9. package/lib/ErrorSchemaBuilder.js.map +1 -1
  10. package/lib/SelectedOptionDescription.d.ts +2 -1
  11. package/lib/SelectedOptionDescription.d.ts.map +1 -0
  12. package/lib/SelectedOptionDescription.js +6 -7
  13. package/lib/SelectedOptionDescription.js.map +1 -1
  14. package/lib/allowAdditionalItems.d.ts +2 -1
  15. package/lib/allowAdditionalItems.d.ts.map +1 -0
  16. package/lib/allowAdditionalItems.js +1 -1
  17. package/lib/allowAdditionalItems.js.map +1 -1
  18. package/lib/asNumber.d.ts +1 -0
  19. package/lib/asNumber.d.ts.map +1 -0
  20. package/lib/asNumber.js +1 -1
  21. package/lib/asNumber.js.map +1 -1
  22. package/lib/canExpand.d.ts +2 -1
  23. package/lib/canExpand.d.ts.map +1 -0
  24. package/lib/canExpand.js +1 -1
  25. package/lib/canExpand.js.map +1 -1
  26. package/lib/constIsAjvDataReference.d.ts +2 -1
  27. package/lib/constIsAjvDataReference.d.ts.map +1 -0
  28. package/lib/constIsAjvDataReference.js +2 -3
  29. package/lib/constIsAjvDataReference.js.map +1 -1
  30. package/lib/constants.d.ts +1 -0
  31. package/lib/constants.d.ts.map +1 -0
  32. package/lib/createErrorHandler.d.ts +2 -1
  33. package/lib/createErrorHandler.d.ts.map +1 -0
  34. package/lib/createErrorHandler.js +3 -4
  35. package/lib/createErrorHandler.js.map +1 -1
  36. package/lib/createSchemaUtils.d.ts +2 -1
  37. package/lib/createSchemaUtils.d.ts.map +1 -0
  38. package/lib/createSchemaUtils.js +10 -7
  39. package/lib/createSchemaUtils.js.map +1 -1
  40. package/lib/dataURItoBlob.d.ts +1 -0
  41. package/lib/dataURItoBlob.d.ts.map +1 -0
  42. package/lib/dataURItoBlob.js +1 -2
  43. package/lib/dataURItoBlob.js.map +1 -1
  44. package/lib/dateRangeOptions.d.ts +2 -1
  45. package/lib/dateRangeOptions.d.ts.map +1 -0
  46. package/lib/dateRangeOptions.js +1 -1
  47. package/lib/dateRangeOptions.js.map +1 -1
  48. package/lib/deepEquals.d.ts +1 -0
  49. package/lib/deepEquals.d.ts.map +1 -0
  50. package/lib/englishStringTranslator.d.ts +2 -1
  51. package/lib/englishStringTranslator.d.ts.map +1 -0
  52. package/lib/englishStringTranslator.js +1 -1
  53. package/lib/englishStringTranslator.js.map +1 -1
  54. package/lib/enumOptionSelectedValue.d.ts +2 -1
  55. package/lib/enumOptionSelectedValue.d.ts.map +1 -0
  56. package/lib/enumOptionSelectedValue.js +1 -1
  57. package/lib/enumOptionSelectedValue.js.map +1 -1
  58. package/lib/enumOptionValueDecoder.d.ts +2 -1
  59. package/lib/enumOptionValueDecoder.d.ts.map +1 -0
  60. package/lib/enumOptionValueDecoder.js +1 -1
  61. package/lib/enumOptionValueDecoder.js.map +1 -1
  62. package/lib/enumOptionValueEncoder.d.ts +2 -1
  63. package/lib/enumOptionValueEncoder.d.ts.map +1 -0
  64. package/lib/enumOptionValueEncoder.js +1 -2
  65. package/lib/enumOptionValueEncoder.js.map +1 -1
  66. package/lib/enumOptionsDeselectValue.d.ts +2 -1
  67. package/lib/enumOptionsDeselectValue.d.ts.map +1 -0
  68. package/lib/enumOptionsDeselectValue.js +2 -2
  69. package/lib/enumOptionsDeselectValue.js.map +1 -1
  70. package/lib/enumOptionsIndexForValue.d.ts +2 -1
  71. package/lib/enumOptionsIndexForValue.d.ts.map +1 -0
  72. package/lib/enumOptionsIndexForValue.js +1 -1
  73. package/lib/enumOptionsIndexForValue.js.map +1 -1
  74. package/lib/enumOptionsIsSelected.d.ts +2 -1
  75. package/lib/enumOptionsIsSelected.d.ts.map +1 -0
  76. package/lib/enumOptionsIsSelected.js +1 -1
  77. package/lib/enumOptionsIsSelected.js.map +1 -1
  78. package/lib/enumOptionsSelectValue.d.ts +2 -1
  79. package/lib/enumOptionsSelectValue.d.ts.map +1 -0
  80. package/lib/enumOptionsSelectValue.js +2 -3
  81. package/lib/enumOptionsSelectValue.js.map +1 -1
  82. package/lib/enumOptionsValueForIndex.d.ts +2 -1
  83. package/lib/enumOptionsValueForIndex.d.ts.map +1 -0
  84. package/lib/enums.d.ts +1 -0
  85. package/lib/enums.d.ts.map +1 -0
  86. package/lib/findSchemaDefinition.d.ts +2 -1
  87. package/lib/findSchemaDefinition.d.ts.map +1 -0
  88. package/lib/findSchemaDefinition.js +7 -11
  89. package/lib/findSchemaDefinition.js.map +1 -1
  90. package/lib/getChangedFields.d.ts +11 -2
  91. package/lib/getChangedFields.d.ts.map +1 -0
  92. package/lib/getChangedFields.js +57 -18
  93. package/lib/getChangedFields.js.map +1 -1
  94. package/lib/getDateElementProps.d.ts +2 -1
  95. package/lib/getDateElementProps.d.ts.map +1 -0
  96. package/lib/getDecimalSeparator.d.ts +1 -0
  97. package/lib/getDecimalSeparator.d.ts.map +1 -0
  98. package/lib/getDecimalSeparator.js +1 -2
  99. package/lib/getDecimalSeparator.js.map +1 -1
  100. package/lib/getDiscriminatorFieldFromSchema.d.ts +2 -1
  101. package/lib/getDiscriminatorFieldFromSchema.d.ts.map +1 -0
  102. package/lib/getDiscriminatorFieldFromSchema.js +4 -5
  103. package/lib/getDiscriminatorFieldFromSchema.js.map +1 -1
  104. package/lib/getInputProps.d.ts +2 -1
  105. package/lib/getInputProps.d.ts.map +1 -0
  106. package/lib/getInputProps.js +4 -1
  107. package/lib/getInputProps.js.map +1 -1
  108. package/lib/getOptionMatchingSimpleDiscriminator.d.ts +2 -1
  109. package/lib/getOptionMatchingSimpleDiscriminator.d.ts.map +1 -0
  110. package/lib/getOptionMatchingSimpleDiscriminator.js +6 -6
  111. package/lib/getOptionMatchingSimpleDiscriminator.js.map +1 -1
  112. package/lib/getOptionValueFormat.d.ts +2 -1
  113. package/lib/getOptionValueFormat.d.ts.map +1 -0
  114. package/lib/getOptionValueFormat.js +1 -2
  115. package/lib/getOptionValueFormat.js.map +1 -1
  116. package/lib/getPropertySchema.d.ts +12 -0
  117. package/lib/getPropertySchema.d.ts.map +1 -0
  118. package/lib/getPropertySchema.js +14 -0
  119. package/lib/getPropertySchema.js.map +1 -0
  120. package/lib/getSchemaType.d.ts +2 -1
  121. package/lib/getSchemaType.d.ts.map +1 -0
  122. package/lib/getSchemaType.js +1 -1
  123. package/lib/getSchemaType.js.map +1 -1
  124. package/lib/getSubmitButtonOptions.d.ts +2 -1
  125. package/lib/getSubmitButtonOptions.d.ts.map +1 -0
  126. package/lib/getSubmitButtonOptions.js +3 -3
  127. package/lib/getSubmitButtonOptions.js.map +1 -1
  128. package/lib/getTemplate.d.ts +2 -1
  129. package/lib/getTemplate.d.ts.map +1 -0
  130. package/lib/getTestIds.d.ts +2 -1
  131. package/lib/getTestIds.d.ts.map +1 -0
  132. package/lib/getTestIds.js +6 -5
  133. package/lib/getTestIds.js.map +1 -1
  134. package/lib/getUiOptions.d.ts +2 -1
  135. package/lib/getUiOptions.d.ts.map +1 -0
  136. package/lib/getUiOptions.js +2 -2
  137. package/lib/getUiOptions.js.map +1 -1
  138. package/lib/getWidget.d.ts +2 -1
  139. package/lib/getWidget.d.ts.map +1 -0
  140. package/lib/getWidget.js +6 -7
  141. package/lib/getWidget.js.map +1 -1
  142. package/lib/guessType.d.ts +2 -1
  143. package/lib/guessType.d.ts.map +1 -0
  144. package/lib/hasWidget.d.ts +2 -1
  145. package/lib/hasWidget.d.ts.map +1 -0
  146. package/lib/hasWidget.js +1 -1
  147. package/lib/hasWidget.js.map +1 -1
  148. package/lib/hashForSchema.d.ts +2 -1
  149. package/lib/hashForSchema.d.ts.map +1 -0
  150. package/lib/idGenerators.d.ts +2 -1
  151. package/lib/idGenerators.d.ts.map +1 -0
  152. package/lib/idGenerators.js +2 -3
  153. package/lib/idGenerators.js.map +1 -1
  154. package/lib/index.d.ts +93 -87
  155. package/lib/index.d.ts.map +1 -0
  156. package/lib/index.js +85 -81
  157. package/lib/index.js.map +1 -1
  158. package/lib/isConstant.d.ts +2 -1
  159. package/lib/isConstant.d.ts.map +1 -0
  160. package/lib/isConstant.js +1 -1
  161. package/lib/isConstant.js.map +1 -1
  162. package/lib/isCustomWidget.d.ts +2 -1
  163. package/lib/isCustomWidget.d.ts.map +1 -0
  164. package/lib/isCustomWidget.js +1 -1
  165. package/lib/isCustomWidget.js.map +1 -1
  166. package/lib/isFixedItems.d.ts +2 -1
  167. package/lib/isFixedItems.d.ts.map +1 -0
  168. package/lib/isFixedItems.js +1 -1
  169. package/lib/isFixedItems.js.map +1 -1
  170. package/lib/isFormDataAvailable.d.ts +1 -0
  171. package/lib/isFormDataAvailable.d.ts.map +1 -0
  172. package/lib/isFormDataAvailable.js +7 -4
  173. package/lib/isFormDataAvailable.js.map +1 -1
  174. package/lib/isObject.d.ts +3 -1
  175. package/lib/isObject.d.ts.map +1 -0
  176. package/lib/isObject.js +8 -2
  177. package/lib/isObject.js.map +1 -1
  178. package/lib/isPlainObject.d.ts +9 -0
  179. package/lib/isPlainObject.d.ts.map +1 -0
  180. package/lib/isPlainObject.js +15 -0
  181. package/lib/isPlainObject.js.map +1 -0
  182. package/lib/isRootSchema.d.ts +2 -1
  183. package/lib/isRootSchema.d.ts.map +1 -0
  184. package/lib/isRootSchema.js +2 -2
  185. package/lib/isRootSchema.js.map +1 -1
  186. package/lib/jsonSchemaAugmentation.d.ts +1 -0
  187. package/lib/jsonSchemaAugmentation.d.ts.map +1 -0
  188. package/lib/labelValue.d.ts +1 -0
  189. package/lib/labelValue.d.ts.map +1 -0
  190. package/lib/localToUTC.d.ts +1 -0
  191. package/lib/localToUTC.d.ts.map +1 -0
  192. package/lib/logUnsupportedDefaultForEnum.d.ts +2 -1
  193. package/lib/logUnsupportedDefaultForEnum.d.ts.map +1 -0
  194. package/lib/logUnsupportedDefaultForEnum.js +1 -1
  195. package/lib/logUnsupportedDefaultForEnum.js.map +1 -1
  196. package/lib/lookupFromFormContext.d.ts +3 -2
  197. package/lib/lookupFromFormContext.d.ts.map +1 -0
  198. package/lib/lookupFromFormContext.js +4 -5
  199. package/lib/lookupFromFormContext.js.map +1 -1
  200. package/lib/mergeDefaultsWithFormData.d.ts +1 -0
  201. package/lib/mergeDefaultsWithFormData.d.ts.map +1 -0
  202. package/lib/mergeDefaultsWithFormData.js +20 -16
  203. package/lib/mergeDefaultsWithFormData.js.map +1 -1
  204. package/lib/mergeObjects.d.ts +2 -1
  205. package/lib/mergeObjects.d.ts.map +1 -0
  206. package/lib/mergeObjects.js +1 -1
  207. package/lib/mergeObjects.js.map +1 -1
  208. package/lib/mergeSchemas.d.ts +2 -1
  209. package/lib/mergeSchemas.d.ts.map +1 -0
  210. package/lib/mergeSchemas.js +4 -5
  211. package/lib/mergeSchemas.js.map +1 -1
  212. package/lib/nameGenerators.d.ts +2 -1
  213. package/lib/nameGenerators.d.ts.map +1 -0
  214. package/lib/noop.d.ts +5 -0
  215. package/lib/noop.d.ts.map +1 -0
  216. package/lib/noop.js +5 -0
  217. package/lib/noop.js.map +1 -0
  218. package/lib/optionsList.d.ts +2 -1
  219. package/lib/optionsList.d.ts.map +1 -0
  220. package/lib/optionsList.js +15 -15
  221. package/lib/optionsList.js.map +1 -1
  222. package/lib/orderProperties.d.ts +1 -0
  223. package/lib/orderProperties.d.ts.map +1 -0
  224. package/lib/pad.d.ts +1 -0
  225. package/lib/pad.d.ts.map +1 -0
  226. package/lib/parseDateString.d.ts +2 -1
  227. package/lib/parseDateString.d.ts.map +1 -0
  228. package/lib/parser/ParserValidator.d.ts +2 -1
  229. package/lib/parser/ParserValidator.d.ts.map +1 -0
  230. package/lib/parser/ParserValidator.js +8 -7
  231. package/lib/parser/ParserValidator.js.map +1 -1
  232. package/lib/parser/index.d.ts +3 -2
  233. package/lib/parser/index.d.ts.map +1 -0
  234. package/lib/parser/index.js +1 -1
  235. package/lib/parser/index.js.map +1 -1
  236. package/lib/parser/schemaParser.d.ts +3 -2
  237. package/lib/parser/schemaParser.d.ts.map +1 -0
  238. package/lib/parser/schemaParser.js +6 -7
  239. package/lib/parser/schemaParser.js.map +1 -1
  240. package/lib/pathUtils.d.ts +77 -0
  241. package/lib/pathUtils.d.ts.map +1 -0
  242. package/lib/pathUtils.js +192 -0
  243. package/lib/pathUtils.js.map +1 -0
  244. package/lib/rangeSpec.d.ts +2 -1
  245. package/lib/rangeSpec.d.ts.map +1 -0
  246. package/lib/removeOptionalEmptyObjects.d.ts +2 -1
  247. package/lib/removeOptionalEmptyObjects.d.ts.map +1 -0
  248. package/lib/removeOptionalEmptyObjects.js +2 -2
  249. package/lib/removeOptionalEmptyObjects.js.map +1 -1
  250. package/lib/replaceStringParameters.d.ts +1 -0
  251. package/lib/replaceStringParameters.d.ts.map +1 -0
  252. package/lib/resolveUiSchema.d.ts +2 -1
  253. package/lib/resolveUiSchema.d.ts.map +1 -0
  254. package/lib/resolveUiSchema.js +6 -8
  255. package/lib/resolveUiSchema.js.map +1 -1
  256. package/lib/schema/findFieldInSchema.d.ts +2 -1
  257. package/lib/schema/findFieldInSchema.d.ts.map +1 -0
  258. package/lib/schema/findFieldInSchema.js +10 -11
  259. package/lib/schema/findFieldInSchema.js.map +1 -1
  260. package/lib/schema/findSelectedOptionInXxxOf.d.ts +2 -1
  261. package/lib/schema/findSelectedOptionInXxxOf.d.ts.map +1 -0
  262. package/lib/schema/findSelectedOptionInXxxOf.js +7 -7
  263. package/lib/schema/findSelectedOptionInXxxOf.js.map +1 -1
  264. package/lib/schema/getClosestMatchingOption.d.ts +2 -1
  265. package/lib/schema/getClosestMatchingOption.d.ts.map +1 -0
  266. package/lib/schema/getClosestMatchingOption.js +18 -23
  267. package/lib/schema/getClosestMatchingOption.js.map +1 -1
  268. package/lib/schema/getDefaultFormState.d.ts +2 -1
  269. package/lib/schema/getDefaultFormState.d.ts.map +1 -0
  270. package/lib/schema/getDefaultFormState.js +78 -56
  271. package/lib/schema/getDefaultFormState.js.map +1 -1
  272. package/lib/schema/getDisplayLabel.d.ts +2 -1
  273. package/lib/schema/getDisplayLabel.d.ts.map +1 -0
  274. package/lib/schema/getDisplayLabel.js +7 -7
  275. package/lib/schema/getDisplayLabel.js.map +1 -1
  276. package/lib/schema/getFirstMatchingOption.d.ts +2 -1
  277. package/lib/schema/getFirstMatchingOption.d.ts.map +1 -0
  278. package/lib/schema/getFirstMatchingOption.js +9 -9
  279. package/lib/schema/getFirstMatchingOption.js.map +1 -1
  280. package/lib/schema/getFromSchema.d.ts +3 -2
  281. package/lib/schema/getFromSchema.d.ts.map +1 -0
  282. package/lib/schema/getFromSchema.js +10 -11
  283. package/lib/schema/getFromSchema.js.map +1 -1
  284. package/lib/schema/index.d.ts +15 -14
  285. package/lib/schema/index.d.ts.map +1 -0
  286. package/lib/schema/index.js +14 -14
  287. package/lib/schema/index.js.map +1 -1
  288. package/lib/schema/isFilesArray.d.ts +2 -1
  289. package/lib/schema/isFilesArray.d.ts.map +1 -0
  290. package/lib/schema/isFilesArray.js +2 -2
  291. package/lib/schema/isFilesArray.js.map +1 -1
  292. package/lib/schema/isMultiSelect.d.ts +2 -1
  293. package/lib/schema/isMultiSelect.d.ts.map +1 -0
  294. package/lib/schema/isMultiSelect.js +1 -1
  295. package/lib/schema/isMultiSelect.js.map +1 -1
  296. package/lib/schema/isSelect.d.ts +2 -1
  297. package/lib/schema/isSelect.d.ts.map +1 -0
  298. package/lib/schema/isSelect.js +2 -2
  299. package/lib/schema/isSelect.js.map +1 -1
  300. package/lib/schema/omitExtraData.d.ts +2 -1
  301. package/lib/schema/omitExtraData.d.ts.map +1 -0
  302. package/lib/schema/omitExtraData.js +100 -64
  303. package/lib/schema/omitExtraData.js.map +1 -1
  304. package/lib/schema/retrieveSchema.d.ts +2 -1
  305. package/lib/schema/retrieveSchema.d.ts.map +1 -0
  306. package/lib/schema/retrieveSchema.js +32 -40
  307. package/lib/schema/retrieveSchema.js.map +1 -1
  308. package/lib/schema/sanitizeDataForNewSchema.d.ts +4 -3
  309. package/lib/schema/sanitizeDataForNewSchema.d.ts.map +1 -0
  310. package/lib/schema/sanitizeDataForNewSchema.js +41 -39
  311. package/lib/schema/sanitizeDataForNewSchema.js.map +1 -1
  312. package/lib/schema/shallowAllOfMerge.d.ts +1 -0
  313. package/lib/schema/shallowAllOfMerge.d.ts.map +1 -0
  314. package/lib/schema/toPathSchema.d.ts +2 -1
  315. package/lib/schema/toPathSchema.d.ts.map +1 -0
  316. package/lib/schema/toPathSchema.js +14 -14
  317. package/lib/schema/toPathSchema.js.map +1 -1
  318. package/lib/schemaRequiresTrueValue.d.ts +2 -1
  319. package/lib/schemaRequiresTrueValue.d.ts.map +1 -0
  320. package/lib/schemaRequiresTrueValue.js +3 -4
  321. package/lib/schemaRequiresTrueValue.js.map +1 -1
  322. package/lib/shallowEquals.d.ts +1 -0
  323. package/lib/shallowEquals.d.ts.map +1 -0
  324. package/lib/shouldRender.d.ts +2 -1
  325. package/lib/shouldRender.d.ts.map +1 -0
  326. package/lib/shouldRender.js +2 -2
  327. package/lib/shouldRender.js.map +1 -1
  328. package/lib/shouldRenderOptionalField.d.ts +2 -1
  329. package/lib/shouldRenderOptionalField.d.ts.map +1 -0
  330. package/lib/shouldRenderOptionalField.js +11 -10
  331. package/lib/shouldRenderOptionalField.js.map +1 -1
  332. package/lib/toConstant.d.ts +2 -1
  333. package/lib/toConstant.d.ts.map +1 -0
  334. package/lib/toConstant.js +1 -1
  335. package/lib/toConstant.js.map +1 -1
  336. package/lib/toDateString.d.ts +2 -1
  337. package/lib/toDateString.d.ts.map +1 -0
  338. package/lib/toErrorList.d.ts +2 -1
  339. package/lib/toErrorList.d.ts.map +1 -0
  340. package/lib/toErrorList.js +20 -21
  341. package/lib/toErrorList.js.map +1 -1
  342. package/lib/toErrorSchema.d.ts +2 -1
  343. package/lib/toErrorSchema.d.ts.map +1 -0
  344. package/lib/toErrorSchema.js +4 -9
  345. package/lib/toErrorSchema.js.map +1 -1
  346. package/lib/toFieldPathId.d.ts +2 -1
  347. package/lib/toFieldPathId.d.ts.map +1 -0
  348. package/lib/toFieldPathId.js +2 -2
  349. package/lib/toFieldPathId.js.map +1 -1
  350. package/lib/types.d.ts +15 -5
  351. package/lib/types.d.ts.map +1 -0
  352. package/lib/types.js +1 -1
  353. package/lib/types.js.map +1 -1
  354. package/lib/unwrapErrorHandler.d.ts +2 -1
  355. package/lib/unwrapErrorHandler.d.ts.map +1 -0
  356. package/lib/unwrapErrorHandler.js +13 -4
  357. package/lib/unwrapErrorHandler.js.map +1 -1
  358. package/lib/useAltDateWidgetProps.d.ts +3 -2
  359. package/lib/useAltDateWidgetProps.d.ts.map +1 -0
  360. package/lib/useAltDateWidgetProps.js +5 -5
  361. package/lib/useAltDateWidgetProps.js.map +1 -1
  362. package/lib/useDeepCompareMemo.d.ts +1 -0
  363. package/lib/useDeepCompareMemo.d.ts.map +1 -0
  364. package/lib/useDeepCompareMemo.js +1 -1
  365. package/lib/useDeepCompareMemo.js.map +1 -1
  366. package/lib/useFileWidgetProps.d.ts +1 -0
  367. package/lib/useFileWidgetProps.d.ts.map +1 -0
  368. package/lib/useFileWidgetProps.js +3 -4
  369. package/lib/useFileWidgetProps.js.map +1 -1
  370. package/lib/utcToLocal.d.ts +1 -0
  371. package/lib/utcToLocal.d.ts.map +1 -0
  372. package/lib/utcToLocal.js +1 -1
  373. package/lib/utcToLocal.js.map +1 -1
  374. package/lib/validationDataMerge.d.ts +2 -1
  375. package/lib/validationDataMerge.d.ts.map +1 -0
  376. package/lib/validationDataMerge.js +3 -4
  377. package/lib/validationDataMerge.js.map +1 -1
  378. package/lib/withIdRefPrefix.d.ts +2 -1
  379. package/lib/withIdRefPrefix.d.ts.map +1 -0
  380. package/lib/withIdRefPrefix.js +2 -2
  381. package/lib/withIdRefPrefix.js.map +1 -1
  382. package/package.json +5 -6
  383. package/src/ErrorSchemaBuilder.ts +25 -24
  384. package/src/SelectedOptionDescription.tsx +5 -5
  385. package/src/allowAdditionalItems.ts +2 -2
  386. package/src/asNumber.ts +1 -1
  387. package/src/canExpand.ts +2 -2
  388. package/src/constIsAjvDataReference.ts +5 -4
  389. package/src/createErrorHandler.ts +5 -7
  390. package/src/createSchemaUtils.ts +8 -10
  391. package/src/dateRangeOptions.ts +2 -2
  392. package/src/englishStringTranslator.ts +2 -2
  393. package/src/enumOptionSelectedValue.ts +2 -2
  394. package/src/enumOptionValueDecoder.ts +2 -2
  395. package/src/enumOptionValueEncoder.ts +2 -4
  396. package/src/enumOptionsDeselectValue.ts +3 -3
  397. package/src/enumOptionsIndexForValue.ts +2 -2
  398. package/src/enumOptionsIsSelected.ts +2 -2
  399. package/src/enumOptionsSelectValue.ts +3 -5
  400. package/src/enumOptionsValueForIndex.ts +1 -1
  401. package/src/findSchemaDefinition.ts +8 -12
  402. package/src/getChangedFields.ts +57 -18
  403. package/src/getDateElementProps.ts +1 -1
  404. package/src/getDiscriminatorFieldFromSchema.ts +5 -7
  405. package/src/getInputProps.ts +6 -2
  406. package/src/getOptionMatchingSimpleDiscriminator.ts +7 -7
  407. package/src/getOptionValueFormat.ts +1 -1
  408. package/src/getPropertySchema.ts +18 -0
  409. package/src/getSchemaType.ts +2 -2
  410. package/src/getSubmitButtonOptions.ts +3 -3
  411. package/src/getTemplate.ts +1 -1
  412. package/src/getTestIds.ts +7 -6
  413. package/src/getUiOptions.ts +3 -3
  414. package/src/getWidget.tsx +6 -6
  415. package/src/hasWidget.ts +2 -2
  416. package/src/hashForSchema.ts +1 -1
  417. package/src/idGenerators.ts +3 -5
  418. package/src/index.ts +99 -85
  419. package/src/isConstant.ts +2 -2
  420. package/src/isCustomWidget.ts +2 -2
  421. package/src/isFixedItems.ts +2 -2
  422. package/src/isFormDataAvailable.ts +7 -5
  423. package/src/isObject.ts +15 -3
  424. package/src/isPlainObject.ts +14 -0
  425. package/src/isRootSchema.ts +3 -3
  426. package/src/logUnsupportedDefaultForEnum.ts +2 -2
  427. package/src/lookupFromFormContext.ts +7 -8
  428. package/src/mergeDefaultsWithFormData.ts +22 -18
  429. package/src/mergeObjects.ts +2 -2
  430. package/src/mergeSchemas.ts +5 -7
  431. package/src/nameGenerators.ts +1 -1
  432. package/src/noop.ts +4 -0
  433. package/src/optionsList.ts +9 -9
  434. package/src/orderProperties.ts +1 -1
  435. package/src/parseDateString.ts +1 -1
  436. package/src/parser/ParserValidator.ts +5 -7
  437. package/src/parser/index.ts +2 -2
  438. package/src/parser/schemaParser.ts +8 -10
  439. package/src/pathUtils.ts +203 -0
  440. package/src/rangeSpec.ts +1 -1
  441. package/src/removeOptionalEmptyObjects.ts +3 -3
  442. package/src/resolveUiSchema.ts +5 -7
  443. package/src/schema/findFieldInSchema.ts +11 -13
  444. package/src/schema/findSelectedOptionInXxxOf.ts +9 -10
  445. package/src/schema/getClosestMatchingOption.ts +73 -83
  446. package/src/schema/getDefaultFormState.ts +62 -34
  447. package/src/schema/getDisplayLabel.ts +7 -7
  448. package/src/schema/getFirstMatchingOption.ts +10 -11
  449. package/src/schema/getFromSchema.ts +12 -14
  450. package/src/schema/index.ts +14 -14
  451. package/src/schema/isFilesArray.ts +3 -3
  452. package/src/schema/isMultiSelect.ts +2 -2
  453. package/src/schema/isSelect.ts +3 -3
  454. package/src/schema/omitExtraData.ts +104 -68
  455. package/src/schema/retrieveSchema.ts +47 -60
  456. package/src/schema/sanitizeDataForNewSchema.ts +42 -41
  457. package/src/schema/toPathSchema.ts +14 -14
  458. package/src/schemaRequiresTrueValue.ts +1 -1
  459. package/src/shouldRender.ts +3 -3
  460. package/src/shouldRenderOptionalField.ts +14 -14
  461. package/src/toConstant.ts +2 -2
  462. package/src/toDateString.ts +1 -1
  463. package/src/toErrorList.ts +22 -25
  464. package/src/toErrorSchema.ts +5 -11
  465. package/src/toFieldPathId.ts +2 -2
  466. package/src/types.ts +14 -5
  467. package/src/unwrapErrorHandler.ts +15 -6
  468. package/src/useAltDateWidgetProps.tsx +7 -7
  469. package/src/useDeepCompareMemo.ts +1 -1
  470. package/src/useFileWidgetProps.ts +1 -1
  471. package/src/utcToLocal.ts +1 -1
  472. package/src/validationDataMerge.ts +4 -6
  473. package/src/withIdRefPrefix.ts +3 -4
  474. package/lib/tsconfig.tsbuildinfo +0 -1
  475. package/src/tsconfig.json +0 -9
@@ -1,19 +1,41 @@
1
- import difference from 'lodash/difference';
2
- import get from 'lodash/get';
3
- import isPlainObject from 'lodash/isPlainObject';
4
- import keys from 'lodash/keys';
5
- import pickBy from 'lodash/pickBy';
1
+ import deepEquals from './deepEquals.ts';
2
+ import isPlainObject from './isPlainObject.ts';
3
+ import { getByPath } from './pathUtils.ts';
6
4
 
7
- import deepEquals from './deepEquals';
5
+ /** Returns the paths of the changed descendants of `a` relative to `b`, relative to the node itself. An empty list
6
+ * means the difference could not be narrowed any further, so the caller should report its own key instead.
7
+ *
8
+ * @param a - The first value, representing the original data to compare
9
+ * @param b - The second value, representing the updated data to compare
10
+ * @returns - An array of dotted paths, relative to `a`
11
+ */
12
+ function getChangedDescendants(a: unknown, b: unknown): string[] {
13
+ if (isPlainObject(a) && isPlainObject(b)) {
14
+ return getChangedFields(a, b, true);
15
+ }
16
+ // Arrays of a different length shift their items around, so nothing below them can be matched up by index.
17
+ if (Array.isArray(a) && Array.isArray(b) && a.length === b.length) {
18
+ return a.flatMap((value, index) => {
19
+ if (deepEquals(value, b[index])) {
20
+ return [];
21
+ }
22
+ const descendants = getChangedDescendants(value, b[index]);
23
+ return descendants.length ? descendants.map((path) => `${index}.${path}`) : [String(index)];
24
+ });
25
+ }
26
+ return [];
27
+ }
8
28
 
9
29
  /**
10
30
  * Compares two objects and returns the names of the fields that have changed.
11
- * This function iterates over each field of object `a`, using `_.isEqual` to compare the field value
31
+ * This function iterates over each field of object `a`, using `deepEquals` to compare the field value
12
32
  * with the corresponding field value in object `b`. If the values are different, the field name will
13
33
  * be included in the returned array.
14
34
  *
15
35
  * @param a - The first object, representing the original data to compare.
16
36
  * @param b - The second object, representing the updated data to compare.
37
+ * @param [deep=false] - Optional flag that, when true, descends into nested objects and same-length arrays and returns
38
+ * the dotted path of the deepest field that changed rather than the name of the top-level field holding it.
17
39
  * @returns - An array of field names that have changed.
18
40
  *
19
41
  * @example
@@ -21,21 +43,38 @@ import deepEquals from './deepEquals';
21
43
  * const b = { name: 'John', age: 31 };
22
44
  * const changedFields = getChangedFields(a, b);
23
45
  * console.log(changedFields); // Output: ['age']
46
+ *
47
+ * @example
48
+ * const a = { items: [{ qux: '', corge: '' }] };
49
+ * const b = { items: [{ qux: 'a', corge: '' }] };
50
+ * console.log(getChangedFields(a, b)); // Output: ['items']
51
+ * console.log(getChangedFields(a, b, true)); // Output: ['items.0.qux']
24
52
  */
25
- export default function getChangedFields(a: unknown, b: unknown): string[] {
26
- const aIsPlainObject = isPlainObject(a);
27
- const bIsPlainObject = isPlainObject(b);
28
- // If strictly equal or neither of them is a plainObject returns an empty array
29
- if (a === b || (!aIsPlainObject && !bIsPlainObject)) {
53
+ export default function getChangedFields(a: unknown, b: unknown, deep = false): string[] {
54
+ if (a === b) {
30
55
  return [];
31
56
  }
32
- if (aIsPlainObject && !bIsPlainObject) {
33
- return keys(a);
57
+ // If only one of them is a plainObject all of its fields changed; if neither is, nothing did
58
+ if (!isPlainObject(a)) {
59
+ return isPlainObject(b) ? Object.keys(b) : [];
34
60
  }
35
- if (!aIsPlainObject && bIsPlainObject) {
36
- return keys(b);
61
+ if (!isPlainObject(b)) {
62
+ return Object.keys(a);
37
63
  }
38
- const unequalFields = keys(pickBy(a as object, (value, key) => !deepEquals(value, get(b, key))));
39
- const diffFields = difference(keys(b), keys(a));
64
+ const aKeys = Object.keys(a);
65
+ const aKeySet = new Set(aKeys);
66
+ const unequalFields = aKeys
67
+ .filter((key) => !deepEquals(a[key], getByPath(b, key)))
68
+ .flatMap((key) => {
69
+ if (!deep) {
70
+ return [key];
71
+ }
72
+ // A key holding a `.` or a `[` is descended into like any other. The path it produces cannot be told apart from
73
+ // a path through nested keys, but neither can the entry an `ErrorSchema` keeps for it, since `toErrorSchema()`
74
+ // spells such a name out as a path in the same way, so the two agree on where the field lives.
75
+ const descendants = getChangedDescendants(a[key], getByPath(b, key));
76
+ return descendants.length ? descendants.map((path) => `${key}.${path}`) : [key];
77
+ });
78
+ const diffFields = Object.keys(b).filter((key) => !aKeySet.has(key));
40
79
  return [...unequalFields, ...diffFields];
41
80
  }
@@ -1,4 +1,4 @@
1
- import type { DateObject } from './types';
1
+ import type { DateObject } from './types.ts';
2
2
 
3
3
  /** Available options for re-ordering date input element */
4
4
  export type DateElementFormat = 'DMY' | 'MDY' | 'YMD';
@@ -1,8 +1,6 @@
1
- import get from 'lodash/get';
2
- import isString from 'lodash/isString';
3
-
4
- import { DISCRIMINATOR_PATH } from './constants';
5
- import type { RJSFSchema, StrictRJSFSchema } from './types';
1
+ import { DISCRIMINATOR_PATH } from './constants.ts';
2
+ import { getByPath } from './pathUtils.ts';
3
+ import type { RJSFSchema, StrictRJSFSchema } from './types.ts';
6
4
 
7
5
  /** Returns the `discriminator.propertyName` when defined in the `schema` if it is a string. A warning is generated when
8
6
  * it is not a string. Returns `undefined` when a valid discriminator is not present.
@@ -12,8 +10,8 @@ import type { RJSFSchema, StrictRJSFSchema } from './types';
12
10
  */
13
11
  export default function getDiscriminatorFieldFromSchema<S extends StrictRJSFSchema = RJSFSchema>(schema: S) {
14
12
  let discriminator: string | undefined;
15
- const maybeString = get(schema, DISCRIMINATOR_PATH);
16
- if (isString(maybeString)) {
13
+ const maybeString = getByPath(schema, DISCRIMINATOR_PATH);
14
+ if (typeof maybeString === 'string') {
17
15
  discriminator = maybeString;
18
16
  } else if (maybeString !== undefined) {
19
17
  // oxlint-disable-next-line no-console
@@ -1,5 +1,5 @@
1
- import rangeSpec from './rangeSpec';
2
- import type { FormContextType, InputPropsType, RJSFSchema, StrictRJSFSchema, UIOptionsType } from './types';
1
+ import rangeSpec from './rangeSpec.ts';
2
+ import type { FormContextType, InputPropsType, RJSFSchema, StrictRJSFSchema, UIOptionsType } from './types.ts';
3
3
 
4
4
  /** Using the `schema`, `defaultType` and `options`, extract out the props for the <input> element that make sense.
5
5
  *
@@ -61,6 +61,10 @@ export default function getInputProps<
61
61
  inputProps.autoComplete = options.autocomplete;
62
62
  }
63
63
 
64
+ if (options.autocapitalize) {
65
+ inputProps.autoCapitalize = options.autocapitalize;
66
+ }
67
+
64
68
  if (options.accept) {
65
69
  inputProps.accept = options.accept as string;
66
70
  }
@@ -1,7 +1,6 @@
1
- import get from 'lodash/get';
2
-
3
- import { PROPERTIES_KEY } from './constants';
4
- import type { RJSFSchema, StrictRJSFSchema } from './types';
1
+ import getPropertySchema from './getPropertySchema.ts';
2
+ import { getByPath } from './pathUtils.ts';
3
+ import type { RJSFSchema, StrictRJSFSchema } from './types.ts';
5
4
 
6
5
  /** Compares the value of `discriminatorField` within `formData` against the value of `discriminatorField` within schema for each `option`.
7
6
  * Returns index of first `option` whose discriminator matches formData. Returns `undefined` if there is no match.
@@ -19,7 +18,7 @@ export default function getOptionMatchingSimpleDiscriminator<T = any, S extends
19
18
  discriminatorField?: string,
20
19
  ): number | undefined {
21
20
  if (formData && discriminatorField) {
22
- const value = get(formData, discriminatorField);
21
+ const value = getByPath(formData, discriminatorField);
23
22
 
24
23
  if (value === undefined) {
25
24
  return undefined;
@@ -27,13 +26,14 @@ export default function getOptionMatchingSimpleDiscriminator<T = any, S extends
27
26
 
28
27
  for (let i = 0; i < options.length; i += 1) {
29
28
  const option = options[i];
30
- const discriminator: S = get(option, [PROPERTIES_KEY, discriminatorField], {}) as S;
29
+ const discriminator = getPropertySchema<S>(option, discriminatorField);
31
30
 
32
31
  if (discriminator.type !== 'object' && discriminator.type !== 'array') {
33
32
  if (discriminator.const === value) {
34
33
  return i;
35
34
  }
36
- if (discriminator.enum?.includes(value)) {
35
+ const enumValues: readonly unknown[] | undefined = discriminator.enum;
36
+ if (enumValues?.includes(value)) {
37
37
  return i;
38
38
  }
39
39
  }
@@ -1,4 +1,4 @@
1
- import type { OptionValueFormat } from './types';
1
+ import type { OptionValueFormat } from './types.ts';
2
2
 
3
3
  /** Resolves the effective `optionValueFormat` for enum-backed widgets.
4
4
  *
@@ -0,0 +1,18 @@
1
+ import { PROPERTIES_KEY } from './constants.ts';
2
+ import type { RJSFSchema, StrictRJSFSchema } from './types.ts';
3
+
4
+ /** Returns the sub-schema declared for `property` in the `properties` of `schema`, falling back to an empty schema
5
+ * when the schema has no such property. Callers treat the properties of a schema as schemas of the same type `S`,
6
+ * which the `JSONSchema7` typing of `properties` cannot express, so this function owns that single assertion rather
7
+ * than repeating it at every lookup.
8
+ *
9
+ * @param schema - The schema, if any, from which to read the property sub-schema
10
+ * @param property - The name of the property whose sub-schema is desired
11
+ * @returns - The sub-schema for `property`, or an empty schema when it is not declared
12
+ */
13
+ export default function getPropertySchema<S extends StrictRJSFSchema = RJSFSchema>(
14
+ schema: S | undefined,
15
+ property: string,
16
+ ): S {
17
+ return (schema?.[PROPERTIES_KEY]?.[property] ?? {}) as S;
18
+ }
@@ -1,5 +1,5 @@
1
- import guessType from './guessType';
2
- import type { RJSFSchema, StrictRJSFSchema } from './types';
1
+ import guessType from './guessType.ts';
2
+ import type { RJSFSchema, StrictRJSFSchema } from './types.ts';
3
3
 
4
4
  /** Gets the type of a given `schema`. If the type is not explicitly defined, then an attempt is made to infer it from
5
5
  * other elements of the schema as follows:
@@ -1,6 +1,6 @@
1
- import { SUBMIT_BTN_OPTIONS_KEY } from './constants';
2
- import getUiOptions from './getUiOptions';
3
- import type { FormContextType, RJSFSchema, StrictRJSFSchema, UiSchema, UISchemaSubmitButtonOptions } from './types';
1
+ import { SUBMIT_BTN_OPTIONS_KEY } from './constants.ts';
2
+ import getUiOptions from './getUiOptions.ts';
3
+ import type { FormContextType, RJSFSchema, StrictRJSFSchema, UiSchema, UISchemaSubmitButtonOptions } from './types.ts';
4
4
 
5
5
  /** The default submit button options, exported for testing purposes
6
6
  */
@@ -1,4 +1,4 @@
1
- import type { FormContextType, TemplatesType, Registry, UIOptionsType, StrictRJSFSchema, RJSFSchema } from './types';
1
+ import type { FormContextType, TemplatesType, Registry, UIOptionsType, StrictRJSFSchema, RJSFSchema } from './types.ts';
2
2
 
3
3
  /** Returns the template with the given `name` from either the `uiSchema` if it is defined or from the `registry`
4
4
  * otherwise. NOTE, since `ButtonTemplates` are not overridden in `uiSchema` only those in the `registry` are returned.
package/src/getTestIds.ts CHANGED
@@ -1,7 +1,7 @@
1
- import get from 'lodash/get';
2
- import uniqueId from 'lodash/uniqueId';
1
+ import { getByPath } from './pathUtils.ts';
2
+ import type { TestIdShape } from './types.ts';
3
3
 
4
- import type { TestIdShape } from './types';
4
+ let testIdCounter = 0;
5
5
 
6
6
  /** Returns an object of test IDs that can only be used in test mode. If the function is called in a test environment
7
7
  * (`NODE_ENV === 'test'`, this is set by vitest) then a Proxy object will be returned. If a key within the returned
@@ -20,9 +20,9 @@ import type { TestIdShape } from './types';
20
20
  */
21
21
  export default function getTestIds(): TestIdShape {
22
22
  // For some reason, even though process.env contains the value of `test` for NODE_ENV, accessing it directly returns
23
- // 'development'. Using `get()` does, in fact, return test so sticking with it.
23
+ // 'development'. Using `getByPath()` does, in fact, return test so sticking with it.
24
24
  // Use globalThis to access process without requiring @types/node (TS6 compatibility).
25
- if (get(globalThis, 'process.env.NODE_ENV') !== 'test') {
25
+ if (getByPath(globalThis, ['process', 'env', 'NODE_ENV']) !== 'test') {
26
26
  return {};
27
27
  }
28
28
 
@@ -32,7 +32,8 @@ export default function getTestIds(): TestIdShape {
32
32
  {
33
33
  get(_obj, prop) {
34
34
  if (!ids.has(prop)) {
35
- ids.set(prop, uniqueId('test-id-'));
35
+ testIdCounter += 1;
36
+ ids.set(prop, `test-id-${testIdCounter}`);
36
37
  }
37
38
  return ids.get(prop);
38
39
  },
@@ -1,5 +1,5 @@
1
- import { UI_OPTIONS_KEY, UI_WIDGET_KEY } from './constants';
2
- import isObject from './isObject';
1
+ import { UI_OPTIONS_KEY, UI_WIDGET_KEY } from './constants.ts';
2
+ import isObject from './isObject.ts';
3
3
  import type {
4
4
  FormContextType,
5
5
  GlobalUISchemaOptions,
@@ -7,7 +7,7 @@ import type {
7
7
  StrictRJSFSchema,
8
8
  UIOptionsType,
9
9
  UiSchema,
10
- } from './types';
10
+ } from './types.ts';
11
11
 
12
12
  /** Get all passed options from ui:options, and ui:<optionName>, returning them in an object with the `ui:`
13
13
  * stripped off. Any `globalOptions` will always be returned, unless they are overridden by options in the `uiSchema`.
package/src/getWidget.tsx CHANGED
@@ -1,10 +1,8 @@
1
1
  import { createElement } from 'react';
2
- import get from 'lodash/get';
3
- import set from 'lodash/set';
4
2
  import ReactIs from 'react-is';
5
3
 
6
- import getSchemaType from './getSchemaType';
7
- import type { FormContextType, RJSFSchema, Widget, RegistryWidgetsType, StrictRJSFSchema } from './types';
4
+ import getSchemaType from './getSchemaType.ts';
5
+ import type { FormContextType, RJSFSchema, Widget, RegistryWidgetsType, StrictRJSFSchema } from './types.ts';
8
6
 
9
7
  /** The map of schema types to widget type to widget name
10
8
  */
@@ -71,13 +69,15 @@ const widgetMap: Record<string, Record<string, string>> = {
71
69
  function mergeWidgetOptions<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(
72
70
  AWidget: Widget<T, S, F>,
73
71
  ) {
74
- let MergedWidget: Widget<T, S, F> | undefined = get(AWidget, 'MergedWidget');
72
+ let { MergedWidget } = AWidget;
75
73
  // cache return value as property of widget for proper react reconciliation
76
74
  if (!MergedWidget) {
77
75
  // oxlint-disable-next-line typescript/no-deprecated
78
76
  const defaultOptions = AWidget.defaultProps?.options || {};
79
77
  MergedWidget = ({ options, ...props }) => <AWidget options={{ ...defaultOptions, ...options }} {...props} />;
80
- set(AWidget, 'MergedWidget', MergedWidget);
78
+ // The mutation is deliberate: the wrapper is cached on the widget itself for React reconciliation
79
+ // oxlint-disable-next-line no-param-reassign
80
+ AWidget.MergedWidget = MergedWidget;
81
81
  }
82
82
  return MergedWidget;
83
83
  }
package/src/hasWidget.ts CHANGED
@@ -1,5 +1,5 @@
1
- import getWidget from './getWidget';
2
- import type { FormContextType, RegistryWidgetsType, RJSFSchema, StrictRJSFSchema, Widget } from './types';
1
+ import getWidget from './getWidget.tsx';
2
+ import type { FormContextType, RegistryWidgetsType, RJSFSchema, StrictRJSFSchema, Widget } from './types.ts';
3
3
 
4
4
  /** Detects whether the `widget` exists for the `schema` with the associated `registryWidgets` and returns true if it
5
5
  * does, or false if it doesn't.
@@ -1,4 +1,4 @@
1
- import type { RJSFSchema, StrictRJSFSchema } from './types';
1
+ import type { RJSFSchema, StrictRJSFSchema } from './types.ts';
2
2
 
3
3
  /** Hashes a string using the algorithm based on Java's hashing function.
4
4
  * JS has no built-in hashing function, so rolling our own
@@ -1,7 +1,5 @@
1
- import isString from 'lodash/isString';
2
-
3
- import { ID_KEY } from './constants';
4
- import type { FieldPathId } from './types';
1
+ import { ID_KEY } from './constants.ts';
2
+ import type { FieldPathId } from './types.ts';
5
3
 
6
4
  /** Generates a consistent `id` pattern for a given `id` and a `suffix`
7
5
  *
@@ -9,7 +7,7 @@ import type { FieldPathId } from './types';
9
7
  * @param suffix - The suffix to append to the id
10
8
  */
11
9
  function idGenerator(id: FieldPathId | string, suffix: string) {
12
- const theId = isString(id) ? id : id[ID_KEY];
10
+ const theId = typeof id === 'string' ? id : id[ID_KEY];
13
11
  return `${theId}__${suffix}`;
14
12
  }
15
13
  /** Return a consistent `id` for the field description element
package/src/index.ts CHANGED
@@ -1,39 +1,40 @@
1
- import allowAdditionalItems from './allowAdditionalItems';
2
- import asNumber from './asNumber';
3
- import canExpand from './canExpand';
4
- import createErrorHandler from './createErrorHandler';
5
- import createSchemaUtils from './createSchemaUtils';
6
- import dataURItoBlob from './dataURItoBlob';
7
- import dateRangeOptions from './dateRangeOptions';
8
- import deepEquals from './deepEquals';
9
- import englishStringTranslator from './englishStringTranslator';
10
- import enumOptionsDeselectValue from './enumOptionsDeselectValue';
11
- import enumOptionSelectedValue from './enumOptionSelectedValue';
12
- import enumOptionsIndexForValue from './enumOptionsIndexForValue';
13
- import enumOptionsIsSelected from './enumOptionsIsSelected';
14
- import enumOptionsSelectValue from './enumOptionsSelectValue';
15
- import enumOptionsValueForIndex from './enumOptionsValueForIndex';
16
- import enumOptionValueDecoder from './enumOptionValueDecoder';
17
- import enumOptionValueEncoder from './enumOptionValueEncoder';
18
- import ErrorSchemaBuilder from './ErrorSchemaBuilder';
19
- import findSchemaDefinition from './findSchemaDefinition';
20
- import getChangedFields from './getChangedFields';
21
- import type { DateElementFormat, DateElementProp } from './getDateElementProps';
22
- import getDateElementProps from './getDateElementProps';
23
- import getDecimalSeparator from './getDecimalSeparator';
24
- import getDiscriminatorFieldFromSchema from './getDiscriminatorFieldFromSchema';
25
- import getInputProps from './getInputProps';
26
- import getOptionMatchingSimpleDiscriminator from './getOptionMatchingSimpleDiscriminator';
27
- import getOptionValueFormat from './getOptionValueFormat';
28
- import getSchemaType from './getSchemaType';
29
- import getSubmitButtonOptions from './getSubmitButtonOptions';
30
- import getTemplate from './getTemplate';
31
- import getTestIds from './getTestIds';
32
- import getUiOptions from './getUiOptions';
33
- import getWidget from './getWidget';
34
- import guessType from './guessType';
35
- import hashForSchema, { hashObject, hashString, sortedJSONStringify } from './hashForSchema';
36
- import hasWidget from './hasWidget';
1
+ import allowAdditionalItems from './allowAdditionalItems.ts';
2
+ import asNumber from './asNumber.ts';
3
+ import canExpand from './canExpand.ts';
4
+ import createErrorHandler from './createErrorHandler.ts';
5
+ import createSchemaUtils from './createSchemaUtils.ts';
6
+ import dataURItoBlob from './dataURItoBlob.ts';
7
+ import dateRangeOptions from './dateRangeOptions.ts';
8
+ import deepEquals from './deepEquals.ts';
9
+ import englishStringTranslator from './englishStringTranslator.ts';
10
+ import enumOptionsDeselectValue from './enumOptionsDeselectValue.ts';
11
+ import enumOptionSelectedValue from './enumOptionSelectedValue.ts';
12
+ import enumOptionsIndexForValue from './enumOptionsIndexForValue.ts';
13
+ import enumOptionsIsSelected from './enumOptionsIsSelected.ts';
14
+ import enumOptionsSelectValue from './enumOptionsSelectValue.ts';
15
+ import enumOptionsValueForIndex from './enumOptionsValueForIndex.ts';
16
+ import enumOptionValueDecoder from './enumOptionValueDecoder.ts';
17
+ import enumOptionValueEncoder from './enumOptionValueEncoder.ts';
18
+ import ErrorSchemaBuilder from './ErrorSchemaBuilder.ts';
19
+ import findSchemaDefinition from './findSchemaDefinition.ts';
20
+ import getChangedFields from './getChangedFields.ts';
21
+ import type { DateElementFormat, DateElementProp } from './getDateElementProps.ts';
22
+ import getDateElementProps from './getDateElementProps.ts';
23
+ import getDecimalSeparator from './getDecimalSeparator.ts';
24
+ import getDiscriminatorFieldFromSchema from './getDiscriminatorFieldFromSchema.ts';
25
+ import getInputProps from './getInputProps.ts';
26
+ import getOptionMatchingSimpleDiscriminator from './getOptionMatchingSimpleDiscriminator.ts';
27
+ import getOptionValueFormat from './getOptionValueFormat.ts';
28
+ import getPropertySchema from './getPropertySchema.ts';
29
+ import getSchemaType from './getSchemaType.ts';
30
+ import getSubmitButtonOptions from './getSubmitButtonOptions.ts';
31
+ import getTemplate from './getTemplate.ts';
32
+ import getTestIds from './getTestIds.ts';
33
+ import getUiOptions from './getUiOptions.ts';
34
+ import getWidget from './getWidget.tsx';
35
+ import guessType from './guessType.ts';
36
+ import hashForSchema, { hashObject, hashString, sortedJSONStringify } from './hashForSchema.ts';
37
+ import hasWidget from './hasWidget.ts';
37
38
  import {
38
39
  ariaDescribedByIds,
39
40
  buttonId,
@@ -44,57 +45,61 @@ import {
44
45
  optionalControlsId,
45
46
  optionId,
46
47
  titleId,
47
- } from './idGenerators';
48
- import isConstant from './isConstant';
49
- import isCustomWidget from './isCustomWidget';
50
- import isFixedItems from './isFixedItems';
51
- import isFormDataAvailable from './isFormDataAvailable';
52
- import isObject from './isObject';
53
- import isRootSchema from './isRootSchema';
54
- import labelValue from './labelValue';
55
- import localToUTC from './localToUTC';
56
- import logUnsupportedDefaultForEnum from './logUnsupportedDefaultForEnum';
57
- import lookupFromFormContext from './lookupFromFormContext';
58
- import mergeDefaultsWithFormData from './mergeDefaultsWithFormData';
59
- import mergeObjects from './mergeObjects';
60
- import mergeSchemas from './mergeSchemas';
61
- import { bracketNameGenerator, dotNotationNameGenerator } from './nameGenerators';
62
- import optionsList from './optionsList';
63
- import orderProperties from './orderProperties';
64
- import pad from './pad';
65
- import parseDateString from './parseDateString';
66
- import rangeSpec from './rangeSpec';
67
- import removeOptionalEmptyObjects from './removeOptionalEmptyObjects';
68
- import replaceStringParameters from './replaceStringParameters';
69
- import resolveUiSchema from './resolveUiSchema';
70
- import schemaRequiresTrueValue from './schemaRequiresTrueValue';
71
- import SelectedOptionDescription from './SelectedOptionDescription';
72
- import type { SelectedOptionDescriptionProps } from './SelectedOptionDescription';
73
- import shallowEquals from './shallowEquals';
74
- import type { ComponentUpdateStrategy } from './shouldRender';
75
- import shouldRender from './shouldRender';
76
- import shouldRenderOptionalField from './shouldRenderOptionalField';
77
- import toConstant from './toConstant';
78
- import toDateString from './toDateString';
79
- import toErrorList from './toErrorList';
80
- import toErrorSchema from './toErrorSchema';
81
- import toFieldPathId from './toFieldPathId';
82
- import unwrapErrorHandler from './unwrapErrorHandler';
83
- import type { DateElementProps, UseAltDateWidgetResult } from './useAltDateWidgetProps';
84
- import useAltDateWidgetProps, { DateElement } from './useAltDateWidgetProps';
85
- import useDeepCompareMemo from './useDeepCompareMemo';
86
- import type { FileInfoType, UseFileWidgetPropsResult } from './useFileWidgetProps';
87
- import useFileWidgetProps from './useFileWidgetProps';
88
- import utcToLocal from './utcToLocal';
89
- import validationDataMerge from './validationDataMerge';
90
- import withIdRefPrefix from './withIdRefPrefix';
48
+ } from './idGenerators.ts';
49
+ import isConstant from './isConstant.ts';
50
+ import isCustomWidget from './isCustomWidget.ts';
51
+ import isFixedItems from './isFixedItems.ts';
52
+ import isFormDataAvailable from './isFormDataAvailable.ts';
53
+ import isObject from './isObject.ts';
54
+ import isPlainObject from './isPlainObject.ts';
55
+ import isRootSchema from './isRootSchema.ts';
56
+ import labelValue from './labelValue.ts';
57
+ import localToUTC from './localToUTC.ts';
58
+ import logUnsupportedDefaultForEnum from './logUnsupportedDefaultForEnum.ts';
59
+ import lookupFromFormContext from './lookupFromFormContext.ts';
60
+ import mergeDefaultsWithFormData from './mergeDefaultsWithFormData.ts';
61
+ import mergeObjects from './mergeObjects.ts';
62
+ import mergeSchemas from './mergeSchemas.ts';
63
+ import { bracketNameGenerator, dotNotationNameGenerator } from './nameGenerators.ts';
64
+ import noop from './noop.ts';
65
+ import optionsList from './optionsList.ts';
66
+ import orderProperties from './orderProperties.ts';
67
+ import pad from './pad.ts';
68
+ import parseDateString from './parseDateString.ts';
69
+ import { getByPath, hasByPath, setByPath, toPath, unsetByPath } from './pathUtils.ts';
70
+ import type { ObjectPath } from './pathUtils.ts';
71
+ import rangeSpec from './rangeSpec.ts';
72
+ import removeOptionalEmptyObjects from './removeOptionalEmptyObjects.ts';
73
+ import replaceStringParameters from './replaceStringParameters.ts';
74
+ import resolveUiSchema from './resolveUiSchema.ts';
75
+ import schemaRequiresTrueValue from './schemaRequiresTrueValue.ts';
76
+ import SelectedOptionDescription from './SelectedOptionDescription.tsx';
77
+ import type { SelectedOptionDescriptionProps } from './SelectedOptionDescription.tsx';
78
+ import shallowEquals from './shallowEquals.ts';
79
+ import type { ComponentUpdateStrategy } from './shouldRender.ts';
80
+ import shouldRender from './shouldRender.ts';
81
+ import shouldRenderOptionalField from './shouldRenderOptionalField.ts';
82
+ import toConstant from './toConstant.ts';
83
+ import toDateString from './toDateString.ts';
84
+ import toErrorList from './toErrorList.ts';
85
+ import toErrorSchema from './toErrorSchema.ts';
86
+ import toFieldPathId from './toFieldPathId.ts';
87
+ import unwrapErrorHandler from './unwrapErrorHandler.ts';
88
+ import type { DateElementProps, UseAltDateWidgetResult } from './useAltDateWidgetProps.tsx';
89
+ import useAltDateWidgetProps, { DateElement } from './useAltDateWidgetProps.tsx';
90
+ import useDeepCompareMemo from './useDeepCompareMemo.ts';
91
+ import type { FileInfoType, UseFileWidgetPropsResult } from './useFileWidgetProps.ts';
92
+ import useFileWidgetProps from './useFileWidgetProps.ts';
93
+ import utcToLocal from './utcToLocal.ts';
94
+ import validationDataMerge from './validationDataMerge.ts';
95
+ import withIdRefPrefix from './withIdRefPrefix.ts';
91
96
 
92
- export type * from './types';
93
- export * from './enums';
97
+ export type * from './types.ts';
98
+ export * from './enums.ts';
94
99
 
95
- export * from './constants';
96
- export * from './parser';
97
- export * from './schema';
100
+ export * from './constants.ts';
101
+ export * from './parser/index.ts';
102
+ export * from './schema/index.ts';
98
103
 
99
104
  export type {
100
105
  ComponentUpdateStrategy,
@@ -102,6 +107,7 @@ export type {
102
107
  DateElementProp,
103
108
  DateElementProps,
104
109
  FileInfoType,
110
+ ObjectPath,
105
111
  SelectedOptionDescriptionProps,
106
112
  UseAltDateWidgetResult,
107
113
  UseFileWidgetPropsResult,
@@ -139,14 +145,17 @@ export {
139
145
  getDiscriminatorFieldFromSchema,
140
146
  getInputProps,
141
147
  getOptionMatchingSimpleDiscriminator,
148
+ getPropertySchema,
142
149
  getOptionValueFormat,
143
150
  getSchemaType,
151
+ getByPath,
144
152
  getSubmitButtonOptions,
145
153
  getTemplate,
146
154
  getTestIds,
147
155
  getUiOptions,
148
156
  getWidget,
149
157
  guessType,
158
+ hasByPath,
150
159
  hasWidget,
151
160
  hashForSchema,
152
161
  hashObject,
@@ -157,6 +166,7 @@ export {
157
166
  isFixedItems,
158
167
  isFormDataAvailable,
159
168
  isObject,
169
+ isPlainObject,
160
170
  isRootSchema,
161
171
  labelValue,
162
172
  localToUTC,
@@ -165,6 +175,7 @@ export {
165
175
  mergeDefaultsWithFormData,
166
176
  mergeObjects,
167
177
  mergeSchemas,
178
+ noop,
168
179
  optionalControlsId,
169
180
  optionId,
170
181
  optionsList,
@@ -177,6 +188,7 @@ export {
177
188
  replaceStringParameters,
178
189
  resolveUiSchema,
179
190
  schemaRequiresTrueValue,
191
+ setByPath,
180
192
  SelectedOptionDescription,
181
193
  shallowEquals,
182
194
  shouldRender,
@@ -188,6 +200,8 @@ export {
188
200
  toErrorList,
189
201
  toErrorSchema,
190
202
  toFieldPathId,
203
+ toPath,
204
+ unsetByPath,
191
205
  unwrapErrorHandler,
192
206
  useAltDateWidgetProps,
193
207
  useDeepCompareMemo,
package/src/isConstant.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { CONST_KEY } from './constants';
2
- import type { RJSFSchema, StrictRJSFSchema } from './types';
1
+ import { CONST_KEY } from './constants.ts';
2
+ import type { RJSFSchema, StrictRJSFSchema } from './types.ts';
3
3
 
4
4
  /** This function checks if the given `schema` matches a single constant value. This happens when either the schema has
5
5
  * an `enum` array with a single value or there is a `const` defined.
@@ -1,5 +1,5 @@
1
- import getUiOptions from './getUiOptions';
2
- import type { FormContextType, RJSFSchema, StrictRJSFSchema, UiSchema } from './types';
1
+ import getUiOptions from './getUiOptions.ts';
2
+ import type { FormContextType, RJSFSchema, StrictRJSFSchema, UiSchema } from './types.ts';
3
3
 
4
4
  /** Checks to see if the `uiSchema` contains the `widget` field and that the widget is not `hidden`
5
5
  *
@@ -1,5 +1,5 @@
1
- import isObject from './isObject';
2
- import type { RJSFSchema, StrictRJSFSchema } from './types';
1
+ import isObject from './isObject.ts';
2
+ import type { RJSFSchema, StrictRJSFSchema } from './types.ts';
3
3
 
4
4
  /** Detects whether the given `schema` contains fixed items. This is the case when `schema.items` is an array that only
5
5
  * contains objects.