@strapi/content-type-builder 5.49.0 → 5.50.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 (298) hide show
  1. package/dist/admin/components/AIChat/Chat.js +2 -4
  2. package/dist/admin/components/AIChat/Chat.js.map +1 -1
  3. package/dist/admin/components/AIChat/Chat.mjs +2 -4
  4. package/dist/admin/components/AIChat/Chat.mjs.map +1 -1
  5. package/dist/admin/components/AIChat/UploadFigmaModal.js +1 -1
  6. package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -1
  7. package/dist/admin/components/AIChat/UploadFigmaModal.mjs +1 -1
  8. package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -1
  9. package/dist/admin/components/AIChat/components/Messages/Message.js +8 -3
  10. package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
  11. package/dist/admin/components/AIChat/components/Messages/Message.mjs +8 -3
  12. package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -1
  13. package/dist/admin/components/AIChat/lib/aiClient.js +8 -2
  14. package/dist/admin/components/AIChat/lib/aiClient.js.map +1 -1
  15. package/dist/admin/components/AIChat/lib/aiClient.mjs +8 -2
  16. package/dist/admin/components/AIChat/lib/aiClient.mjs.map +1 -1
  17. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js +0 -3
  18. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js.map +1 -1
  19. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs +0 -3
  20. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs.map +1 -1
  21. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js +9 -7
  22. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -1
  23. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs +9 -7
  24. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs.map +1 -1
  25. package/dist/admin/components/AIChat/providers/SchemaProvider.js +1 -1
  26. package/dist/admin/components/AIChat/providers/SchemaProvider.js.map +1 -1
  27. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs +1 -1
  28. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs.map +1 -1
  29. package/dist/admin/components/AllowedTypesSelect.js.map +1 -1
  30. package/dist/admin/components/AllowedTypesSelect.mjs.map +1 -1
  31. package/dist/admin/components/AttributeIcon.js +1 -1
  32. package/dist/admin/components/AttributeIcon.js.map +1 -1
  33. package/dist/admin/components/AttributeIcon.mjs +1 -1
  34. package/dist/admin/components/AttributeIcon.mjs.map +1 -1
  35. package/dist/admin/components/BooleanDefaultValueSelect.js +3 -2
  36. package/dist/admin/components/BooleanDefaultValueSelect.js.map +1 -1
  37. package/dist/admin/components/BooleanDefaultValueSelect.mjs +3 -2
  38. package/dist/admin/components/BooleanDefaultValueSelect.mjs.map +1 -1
  39. package/dist/admin/components/BooleanRadioGroup.js.map +1 -1
  40. package/dist/admin/components/BooleanRadioGroup.mjs.map +1 -1
  41. package/dist/admin/components/CTBSession/useCTBTracking.js +3 -3
  42. package/dist/admin/components/CTBSession/useCTBTracking.js.map +1 -1
  43. package/dist/admin/components/CTBSession/useCTBTracking.mjs +3 -3
  44. package/dist/admin/components/CTBSession/useCTBTracking.mjs.map +1 -1
  45. package/dist/admin/components/CheckboxWithNumberField.js +3 -2
  46. package/dist/admin/components/CheckboxWithNumberField.js.map +1 -1
  47. package/dist/admin/components/CheckboxWithNumberField.mjs +3 -2
  48. package/dist/admin/components/CheckboxWithNumberField.mjs.map +1 -1
  49. package/dist/admin/components/ComponentCard/ComponentCard.js.map +1 -1
  50. package/dist/admin/components/ComponentCard/ComponentCard.mjs.map +1 -1
  51. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js +160 -162
  52. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
  53. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +160 -162
  54. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
  55. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +1 -1
  56. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
  57. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs +1 -1
  58. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
  59. package/dist/admin/components/ContentTypeRadioGroup.js.map +1 -1
  60. package/dist/admin/components/ContentTypeRadioGroup.mjs.map +1 -1
  61. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.js +6 -5
  62. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.js.map +1 -1
  63. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs +6 -5
  64. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs.map +1 -1
  65. package/dist/admin/components/CustomRadioGroup/Styles.js.map +1 -1
  66. package/dist/admin/components/CustomRadioGroup/Styles.mjs.map +1 -1
  67. package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -1
  68. package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -1
  69. package/dist/admin/components/DataManager/DataManagerProvider.js +16 -4
  70. package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
  71. package/dist/admin/components/DataManager/DataManagerProvider.mjs +16 -4
  72. package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
  73. package/dist/admin/components/DataManager/reducer.js +2 -2
  74. package/dist/admin/components/DataManager/reducer.js.map +1 -1
  75. package/dist/admin/components/DataManager/reducer.mjs +2 -2
  76. package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
  77. package/dist/admin/components/DataManager/useServerRestartWatcher.js.map +1 -1
  78. package/dist/admin/components/DataManager/useServerRestartWatcher.mjs.map +1 -1
  79. package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.js.map +1 -1
  80. package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.mjs.map +1 -1
  81. package/dist/admin/components/DraftAndPublishToggle.js.map +1 -1
  82. package/dist/admin/components/DraftAndPublishToggle.mjs.map +1 -1
  83. package/dist/admin/components/DynamicZoneList.js.map +1 -1
  84. package/dist/admin/components/DynamicZoneList.mjs.map +1 -1
  85. package/dist/admin/components/FormModal/FormModal.js +91 -71
  86. package/dist/admin/components/FormModal/FormModal.js.map +1 -1
  87. package/dist/admin/components/FormModal/FormModal.mjs +91 -70
  88. package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
  89. package/dist/admin/components/FormModal/attributes/ConditionForm.js +20 -17
  90. package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -1
  91. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs +20 -17
  92. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -1
  93. package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
  94. package/dist/admin/components/FormModal/attributes/validation/common.mjs.map +1 -1
  95. package/dist/admin/components/FormModal/component/createComponentSchema.js +1 -1
  96. package/dist/admin/components/FormModal/component/createComponentSchema.js.map +1 -1
  97. package/dist/admin/components/FormModal/component/createComponentSchema.mjs +1 -1
  98. package/dist/admin/components/FormModal/component/createComponentSchema.mjs.map +1 -1
  99. package/dist/admin/components/FormModal/forms/forms.js +4 -6
  100. package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
  101. package/dist/admin/components/FormModal/forms/forms.mjs +4 -6
  102. package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
  103. package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.js.map +1 -1
  104. package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.mjs.map +1 -1
  105. package/dist/admin/components/FormModal/reducer.js +9 -6
  106. package/dist/admin/components/FormModal/reducer.js.map +1 -1
  107. package/dist/admin/components/FormModal/reducer.mjs +9 -6
  108. package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
  109. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.js +3 -3
  110. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.js.map +1 -1
  111. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.mjs +3 -3
  112. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.mjs.map +1 -1
  113. package/dist/admin/components/FormModal/utils/getFormInputNames.js +1 -1
  114. package/dist/admin/components/FormModal/utils/getFormInputNames.js.map +1 -1
  115. package/dist/admin/components/FormModal/utils/getFormInputNames.mjs +1 -1
  116. package/dist/admin/components/FormModal/utils/getFormInputNames.mjs.map +1 -1
  117. package/dist/admin/components/FormModal/utils/relations.js +2 -2
  118. package/dist/admin/components/FormModal/utils/relations.js.map +1 -1
  119. package/dist/admin/components/FormModal/utils/relations.mjs +2 -2
  120. package/dist/admin/components/FormModal/utils/relations.mjs.map +1 -1
  121. package/dist/admin/components/FormModalHeader.js.map +1 -1
  122. package/dist/admin/components/FormModalHeader.mjs.map +1 -1
  123. package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js.map +1 -1
  124. package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.mjs.map +1 -1
  125. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js +13 -13
  126. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js.map +1 -1
  127. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs +13 -13
  128. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs.map +1 -1
  129. package/dist/admin/components/GenericInputs.js +24 -12
  130. package/dist/admin/components/GenericInputs.js.map +1 -1
  131. package/dist/admin/components/GenericInputs.mjs +24 -12
  132. package/dist/admin/components/GenericInputs.mjs.map +1 -1
  133. package/dist/admin/components/IconPicker/IconPicker.js.map +1 -1
  134. package/dist/admin/components/IconPicker/IconPicker.mjs.map +1 -1
  135. package/dist/admin/components/PluralName.js.map +1 -1
  136. package/dist/admin/components/PluralName.mjs.map +1 -1
  137. package/dist/admin/components/Relation/Relation.js +3 -3
  138. package/dist/admin/components/Relation/Relation.js.map +1 -1
  139. package/dist/admin/components/Relation/Relation.mjs +3 -3
  140. package/dist/admin/components/Relation/Relation.mjs.map +1 -1
  141. package/dist/admin/components/Relation/RelationField/RelationField.js +1 -1
  142. package/dist/admin/components/Relation/RelationField/RelationField.js.map +1 -1
  143. package/dist/admin/components/Relation/RelationField/RelationField.mjs +1 -1
  144. package/dist/admin/components/Relation/RelationField/RelationField.mjs.map +1 -1
  145. package/dist/admin/components/SelectCategory.js +6 -0
  146. package/dist/admin/components/SelectCategory.js.map +1 -1
  147. package/dist/admin/components/SelectCategory.mjs +6 -0
  148. package/dist/admin/components/SelectCategory.mjs.map +1 -1
  149. package/dist/admin/components/SelectComponent.js +1 -1
  150. package/dist/admin/components/SelectComponent.js.map +1 -1
  151. package/dist/admin/components/SelectComponent.mjs +1 -1
  152. package/dist/admin/components/SelectComponent.mjs.map +1 -1
  153. package/dist/admin/components/SingularName.js.map +1 -1
  154. package/dist/admin/components/SingularName.mjs.map +1 -1
  155. package/dist/admin/components/TabForm.js +50 -51
  156. package/dist/admin/components/TabForm.js.map +1 -1
  157. package/dist/admin/components/TabForm.mjs +51 -52
  158. package/dist/admin/components/TabForm.mjs.map +1 -1
  159. package/dist/admin/src/components/AIChat/components/AnimatedBox.d.ts +4 -5
  160. package/dist/admin/src/components/AIChat/components/Attachments/AttachmentPreview.d.ts +1 -1
  161. package/dist/admin/src/components/AIChat/components/Dropzone.d.ts +0 -1
  162. package/dist/admin/src/components/AIChat/components/FloatingPanel.d.ts +0 -1
  163. package/dist/admin/src/components/AIChat/components/Input.d.ts +2 -3
  164. package/dist/admin/src/components/AIChat/components/Messages/Message.d.ts +1 -2
  165. package/dist/admin/src/components/AIChat/components/ResizableTextArea.d.ts +0 -1
  166. package/dist/admin/src/components/AIChat/components/SimpleMenu.d.ts +9 -9
  167. package/dist/admin/src/components/AIChat/components/icons/FigmaIcon.d.ts +0 -1
  168. package/dist/admin/src/components/AIChat/components/icons/StopIcon.d.ts +0 -1
  169. package/dist/admin/src/components/AIChat/hooks/useAIFetch.d.ts +5 -5
  170. package/dist/admin/src/components/AIChat/lib/aiClient.d.ts +1 -1
  171. package/dist/admin/src/components/AIChat/lib/transforms/schemas/fromCTB.d.ts +6 -2
  172. package/dist/admin/src/components/AIChat/lib/transforms/schemas/toCTB.d.ts +1 -1
  173. package/dist/admin/src/components/AIChat/lib/types/schema.d.ts +5 -5
  174. package/dist/admin/src/components/AllowedTypesSelect.d.ts +3 -3
  175. package/dist/admin/src/components/AttributeOptions/OptionBoxWrapper.d.ts +2 -3
  176. package/dist/admin/src/components/AttributeRow.d.ts +7 -8
  177. package/dist/admin/src/components/BooleanDefaultValueSelect.d.ts +3 -3
  178. package/dist/admin/src/components/BooleanRadioGroup.d.ts +2 -2
  179. package/dist/admin/src/components/CTBSession/sessionContext.d.ts +0 -1
  180. package/dist/admin/src/components/CTBSession/useCTBTracking.d.ts +1 -1
  181. package/dist/admin/src/components/CheckboxWithNumberField.d.ts +6 -4
  182. package/dist/admin/src/components/ComponentRow.d.ts +6 -7
  183. package/dist/admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.d.ts +0 -1
  184. package/dist/admin/src/components/ContentTypeRadioGroup.d.ts +3 -2
  185. package/dist/admin/src/components/CustomRadioGroup/CustomRadioGroup.d.ts +3 -2
  186. package/dist/admin/src/components/CustomRadioGroup/Styles.d.ts +3 -4
  187. package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +13 -12
  188. package/dist/admin/src/components/DataManager/reducer.d.ts +16 -12
  189. package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +64 -64
  190. package/dist/admin/src/components/DataManager/utils/formatSchemas.d.ts +9 -3
  191. package/dist/admin/src/components/DataManager/utils/retrieveSpecificInfoFromComponents.d.ts +2 -1
  192. package/dist/admin/src/components/DraftAndPublishToggle.d.ts +1 -6
  193. package/dist/admin/src/components/DynamicZoneList.d.ts +2 -2
  194. package/dist/admin/src/components/FormModal/attributes/ConditionForm.d.ts +3 -2
  195. package/dist/admin/src/components/FormModal/attributes/form.d.ts +3 -3
  196. package/dist/admin/src/components/FormModal/attributes/validation/common.d.ts +4 -2
  197. package/dist/admin/src/components/FormModal/forms/forms.d.ts +61 -28
  198. package/dist/admin/src/components/FormModal/forms/utils/getUsedAttributeNames.d.ts +12 -2
  199. package/dist/admin/src/components/FormModal/reducer.d.ts +104 -32
  200. package/dist/admin/src/components/FormModal/utils/customFieldDefaultOptionsReducer.d.ts +11 -1
  201. package/dist/admin/src/components/FormModal/utils/getFormInputNames.d.ts +8 -1
  202. package/dist/admin/src/components/FormModal/utils/relations.d.ts +2 -2
  203. package/dist/admin/src/components/FormModalHeader.d.ts +5 -8
  204. package/dist/admin/src/components/FormModalNavigation/FormModalNavigationContext.d.ts +2 -2
  205. package/dist/admin/src/components/FormModalNavigation/FormModalNavigationProvider.d.ts +17 -2
  206. package/dist/admin/src/components/GenericInputs.d.ts +12 -7
  207. package/dist/admin/src/components/IconPicker/IconPicker.d.ts +2 -7
  208. package/dist/admin/src/components/List.d.ts +2 -3
  209. package/dist/admin/src/components/PluralName.d.ts +6 -14
  210. package/dist/admin/src/components/Relation/Relation.d.ts +12 -3
  211. package/dist/admin/src/components/Relation/RelationField/RelationField.d.ts +3 -2
  212. package/dist/admin/src/components/Relation/RelationNaturePicker/Components.d.ts +6 -7
  213. package/dist/admin/src/components/SelectCategory.d.ts +3 -12
  214. package/dist/admin/src/components/SelectComponent.d.ts +8 -7
  215. package/dist/admin/src/components/SingularName.d.ts +5 -8
  216. package/dist/admin/src/components/TabForm.d.ts +38 -7
  217. package/dist/admin/src/pages/ListView/LinkToCMSettingsView.d.ts +0 -1
  218. package/dist/admin/src/types.d.ts +20 -12
  219. package/dist/admin/src/utils/conditions.d.ts +13 -4
  220. package/dist/admin/src/utils/formAPI.d.ts +38 -33
  221. package/dist/admin/src/utils/getRelationType.d.ts +1 -1
  222. package/dist/admin/src/utils/isAllowedContentTypesForRelations.d.ts +1 -1
  223. package/dist/admin/src/utils/parseNumberInputValue.d.ts +1 -0
  224. package/dist/admin/translations/en.json.js +1 -0
  225. package/dist/admin/translations/en.json.js.map +1 -1
  226. package/dist/admin/translations/en.json.mjs +1 -0
  227. package/dist/admin/translations/en.json.mjs.map +1 -1
  228. package/dist/admin/translations/ja.json.js +109 -50
  229. package/dist/admin/translations/ja.json.js.map +1 -1
  230. package/dist/admin/translations/ja.json.mjs +109 -50
  231. package/dist/admin/translations/ja.json.mjs.map +1 -1
  232. package/dist/admin/utils/conditions.js +38 -28
  233. package/dist/admin/utils/conditions.js.map +1 -1
  234. package/dist/admin/utils/conditions.mjs +37 -28
  235. package/dist/admin/utils/conditions.mjs.map +1 -1
  236. package/dist/admin/utils/formAPI.js +9 -6
  237. package/dist/admin/utils/formAPI.js.map +1 -1
  238. package/dist/admin/utils/formAPI.mjs +9 -6
  239. package/dist/admin/utils/formAPI.mjs.map +1 -1
  240. package/dist/admin/utils/getRelationType.js +3 -0
  241. package/dist/admin/utils/getRelationType.js.map +1 -1
  242. package/dist/admin/utils/getRelationType.mjs +3 -0
  243. package/dist/admin/utils/getRelationType.mjs.map +1 -1
  244. package/dist/admin/utils/getYupInnerErrors.js +6 -4
  245. package/dist/admin/utils/getYupInnerErrors.js.map +1 -1
  246. package/dist/admin/utils/getYupInnerErrors.mjs +6 -4
  247. package/dist/admin/utils/getYupInnerErrors.mjs.map +1 -1
  248. package/dist/admin/utils/parseNumberInputValue.js +15 -0
  249. package/dist/admin/utils/parseNumberInputValue.js.map +1 -0
  250. package/dist/admin/utils/parseNumberInputValue.mjs +13 -0
  251. package/dist/admin/utils/parseNumberInputValue.mjs.map +1 -0
  252. package/dist/server/controllers/validation/common.js +1 -1
  253. package/dist/server/controllers/validation/common.js.map +1 -1
  254. package/dist/server/controllers/validation/common.mjs +1 -1
  255. package/dist/server/controllers/validation/common.mjs.map +1 -1
  256. package/dist/server/controllers/validation/relations.js +1 -1
  257. package/dist/server/controllers/validation/relations.js.map +1 -1
  258. package/dist/server/controllers/validation/relations.mjs +1 -1
  259. package/dist/server/controllers/validation/relations.mjs.map +1 -1
  260. package/dist/server/controllers/validation/types.js +4 -3
  261. package/dist/server/controllers/validation/types.js.map +1 -1
  262. package/dist/server/controllers/validation/types.mjs +4 -3
  263. package/dist/server/controllers/validation/types.mjs.map +1 -1
  264. package/dist/server/src/bootstrap.d.ts.map +1 -1
  265. package/dist/server/src/controllers/validation/common.d.ts.map +1 -1
  266. package/dist/server/src/controllers/validation/component-category.d.ts +1 -1
  267. package/dist/server/src/controllers/validation/component.d.ts +1 -1
  268. package/dist/server/src/controllers/validation/component.d.ts.map +1 -1
  269. package/dist/server/src/controllers/validation/content-type.d.ts +1 -1
  270. package/dist/server/src/controllers/validation/content-type.d.ts.map +1 -1
  271. package/dist/server/src/controllers/validation/data-transform.d.ts.map +1 -1
  272. package/dist/server/src/controllers/validation/model-schema.d.ts +1 -1
  273. package/dist/server/src/controllers/validation/model-schema.d.ts.map +1 -1
  274. package/dist/server/src/controllers/validation/relations.d.ts.map +1 -1
  275. package/dist/server/src/controllers/validation/schema.d.ts +1 -1
  276. package/dist/server/src/controllers/validation/types.d.ts.map +1 -1
  277. package/dist/server/src/middlewares/is-development-mode.d.ts.map +1 -1
  278. package/dist/server/src/register.d.ts.map +1 -1
  279. package/dist/server/src/services/builder.d.ts.map +1 -1
  280. package/dist/server/src/services/component-categories.d.ts.map +1 -1
  281. package/dist/server/src/services/components.d.ts.map +1 -1
  282. package/dist/server/src/services/content-types.d.ts +1 -1
  283. package/dist/server/src/services/content-types.d.ts.map +1 -1
  284. package/dist/server/src/services/schema-builder/component-builder.d.ts +12 -12
  285. package/dist/server/src/services/schema-builder/component-builder.d.ts.map +1 -1
  286. package/dist/server/src/services/schema-builder/content-type-builder.d.ts +14 -14
  287. package/dist/server/src/services/schema-builder/content-type-builder.d.ts.map +1 -1
  288. package/dist/server/src/services/schema-builder/index.d.ts +27 -27
  289. package/dist/server/src/services/schema-builder/index.d.ts.map +1 -1
  290. package/dist/server/src/services/schema-builder/schema-handler.d.ts +12 -12
  291. package/dist/server/src/services/schema-builder/schema-handler.d.ts.map +1 -1
  292. package/dist/server/src/services/schema.d.ts +66 -66
  293. package/dist/server/src/services/schema.d.ts.map +1 -1
  294. package/dist/server/src/utils/attributes.d.ts +2 -2
  295. package/dist/server/src/utils/attributes.d.ts.map +1 -1
  296. package/dist/server/src/utils/helpers.d.ts.map +1 -1
  297. package/dist/server/src/utils/typeguards.d.ts.map +1 -1
  298. package/package.json +13 -9
@@ -1,46 +1,55 @@
1
1
  'use strict';
2
2
 
3
+ const isRecord = (value)=>typeof value === 'object' && value !== null && !Array.isArray(value);
4
+ const isFieldVar = (value)=>isRecord(value) && typeof value.var === 'string';
5
+ const isAttributeConditionValue = (value)=>typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';
6
+ const getVisibleConditionEntries = (condition)=>{
7
+ const visible = condition?.visible;
8
+ if (!isRecord(visible)) {
9
+ return [];
10
+ }
11
+ return Object.entries(visible).reduce((entries, [operator, rule])=>{
12
+ if (!Array.isArray(rule)) {
13
+ return entries;
14
+ }
15
+ const [fieldVar, value] = rule;
16
+ if (!isFieldVar(fieldVar) || !isAttributeConditionValue(value)) {
17
+ return entries;
18
+ }
19
+ entries.push({
20
+ operator,
21
+ fieldVar,
22
+ value
23
+ });
24
+ return entries;
25
+ }, []);
26
+ };
27
+ const getFirstVisibleConditionEntry = (condition)=>getVisibleConditionEntries(condition)[0] ?? null;
3
28
  const checkDependentRows = (contentTypes, fieldName)=>{
4
29
  const dependentRows = [];
5
30
  Object.entries(contentTypes).forEach(([contentTypeUid, contentType])=>{
6
- if (contentType.attributes) {
31
+ if (contentType.attributes !== undefined) {
7
32
  // Handle both array and object formats of attributes
8
33
  const attributes = Array.isArray(contentType.attributes) ? contentType.attributes.reduce((acc, attr, index)=>{
9
34
  acc[index.toString()] = attr;
10
35
  return acc;
11
36
  }, {}) : contentType.attributes;
12
37
  Object.entries(attributes).forEach(([attrName, attr])=>{
13
- if (attr.conditions?.visible) {
14
- Object.entries(attr.conditions.visible).forEach(([, conditions])=>{
15
- const [fieldVar] = conditions;
16
- // Check if this condition references our field
17
- if (fieldVar && fieldVar.var === fieldName) {
18
- dependentRows.push({
19
- contentTypeUid,
20
- contentType: contentType.info.displayName,
21
- attribute: attr.name || attrName
22
- });
23
- }
24
- });
25
- }
38
+ getVisibleConditionEntries(attr.conditions).forEach(({ fieldVar })=>{
39
+ // Check if this condition references our field
40
+ if (fieldVar.var === fieldName) {
41
+ dependentRows.push({
42
+ contentTypeUid,
43
+ contentType: contentType.info.displayName,
44
+ attribute: attr.name || attrName
45
+ });
46
+ }
47
+ });
26
48
  });
27
49
  }
28
50
  });
29
51
  return dependentRows;
30
52
  };
31
- const formatCondition = (condition, availableFields, attributeName)=>{
32
- if (!condition?.visible) {
33
- return '';
34
- }
35
- const [[operator, conditions]] = Object.entries(condition.visible);
36
- const [fieldVar, value] = conditions;
37
- const dependsOnField = availableFields.find((field)=>field.name === fieldVar.var);
38
- const dependsOnFieldName = dependsOnField ? dependsOnField.name : fieldVar.var;
39
- const operatorText = operator === '==' ? 'is' : 'is not';
40
- const valueText = String(value);
41
- const actionText = operator === '==' ? 'Show' : 'Hide';
42
- return `If ${dependsOnFieldName} ${operatorText} ${valueText}, then ${actionText} ${attributeName}`;
43
- };
44
53
  const getAvailableConditionFields = (attributes, currentFieldName)=>{
45
54
  return attributes.filter((attr)=>{
46
55
  // Only include boolean and enum fields
@@ -56,6 +65,7 @@ const getAvailableConditionFields = (attributes, currentFieldName)=>{
56
65
  };
57
66
 
58
67
  exports.checkDependentRows = checkDependentRows;
59
- exports.formatCondition = formatCondition;
60
68
  exports.getAvailableConditionFields = getAvailableConditionFields;
69
+ exports.getFirstVisibleConditionEntry = getFirstVisibleConditionEntry;
70
+ exports.getVisibleConditionEntries = getVisibleConditionEntries;
61
71
  //# sourceMappingURL=conditions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conditions.js","sources":["../../../admin/src/utils/conditions.ts"],"sourcesContent":["import type { AnyAttribute } from '../types';\n\ninterface DependentRow {\n contentTypeUid: string;\n contentType: string;\n attribute: string;\n}\n\nexport const checkDependentRows = (\n contentTypes: Record<string, any>,\n fieldName: string\n): DependentRow[] => {\n const dependentRows: DependentRow[] = [];\n\n Object.entries(contentTypes).forEach(([contentTypeUid, contentType]: [string, any]) => {\n if (contentType.attributes) {\n // Handle both array and object formats of attributes\n const attributes = Array.isArray(contentType.attributes)\n ? contentType.attributes.reduce((acc: Record<string, any>, attr: any, index: number) => {\n acc[index.toString()] = attr;\n return acc;\n }, {})\n : contentType.attributes;\n\n Object.entries(attributes).forEach(([attrName, attr]: [string, any]) => {\n if (attr.conditions?.visible) {\n Object.entries(attr.conditions.visible).forEach(([, conditions]) => {\n const [fieldVar] = conditions as [{ var: string }, any];\n // Check if this condition references our field\n if (fieldVar && fieldVar.var === fieldName) {\n dependentRows.push({\n contentTypeUid,\n contentType: contentType.info.displayName,\n attribute: attr.name || attrName,\n });\n }\n });\n }\n });\n }\n });\n return dependentRows;\n};\n\nexport const formatCondition = (\n condition: any,\n availableFields: Array<{ name: string; type: string }>,\n attributeName: string\n): string => {\n if (!condition?.visible) {\n return '';\n }\n\n const [[operator, conditions]] = Object.entries(condition.visible);\n const [fieldVar, value] = conditions as [{ var: string }, any];\n\n const dependsOnField = availableFields.find((field) => field.name === fieldVar.var);\n const dependsOnFieldName = dependsOnField ? dependsOnField.name : fieldVar.var;\n\n const operatorText = operator === '==' ? 'is' : 'is not';\n const valueText = String(value);\n const actionText = operator === '==' ? 'Show' : 'Hide';\n\n return `If ${dependsOnFieldName} ${operatorText} ${valueText}, then ${actionText} ${attributeName}`;\n};\n\nexport const getAvailableConditionFields = (\n attributes: AnyAttribute[],\n currentFieldName: string\n) => {\n return attributes\n .filter((attr) => {\n // Only include boolean and enum fields\n const isCorrectType = attr.type === 'boolean' || attr.type === 'enumeration';\n // Exclude the current field to prevent self-referential conditions\n const isNotCurrentField = attr.name !== currentFieldName;\n return isCorrectType && isNotCurrentField;\n })\n .map((attr) => ({\n name: attr.name,\n type: attr.type,\n enum: attr.type === 'enumeration' ? attr.enum : undefined,\n }));\n};\n"],"names":["checkDependentRows","contentTypes","fieldName","dependentRows","Object","entries","forEach","contentTypeUid","contentType","attributes","Array","isArray","reduce","acc","attr","index","toString","attrName","conditions","visible","fieldVar","var","push","info","displayName","attribute","name","formatCondition","condition","availableFields","attributeName","operator","value","dependsOnField","find","field","dependsOnFieldName","operatorText","valueText","String","actionText","getAvailableConditionFields","currentFieldName","filter","isCorrectType","type","isNotCurrentField","map","enum","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"conditions.js","sources":["../../../admin/src/utils/conditions.ts"],"sourcesContent":["import type {\n AnyAttribute,\n AttributeConditionValue,\n AttributeConditions,\n ContentTypes,\n} from '../types';\n\ninterface DependentRow {\n contentTypeUid: string;\n contentType: string;\n attribute: string;\n}\n\ntype VisibleConditionEntry = {\n operator: string;\n fieldVar: { var: string };\n value: AttributeConditionValue;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst isFieldVar = (value: unknown): value is { var: string } =>\n isRecord(value) && typeof value.var === 'string';\n\nconst isAttributeConditionValue = (value: unknown): value is AttributeConditionValue =>\n typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';\n\nexport const getVisibleConditionEntries = (\n condition?: AttributeConditions | null\n): VisibleConditionEntry[] => {\n const visible = condition?.visible;\n\n if (!isRecord(visible)) {\n return [];\n }\n\n return Object.entries(visible).reduce<VisibleConditionEntry[]>((entries, [operator, rule]) => {\n if (!Array.isArray(rule)) {\n return entries;\n }\n\n const [fieldVar, value] = rule;\n\n if (!isFieldVar(fieldVar) || !isAttributeConditionValue(value)) {\n return entries;\n }\n\n entries.push({ operator, fieldVar, value });\n\n return entries;\n }, []);\n};\n\nexport const getFirstVisibleConditionEntry = (condition?: AttributeConditions | null) =>\n getVisibleConditionEntries(condition)[0] ?? null;\n\nexport const checkDependentRows = (\n contentTypes: ContentTypes,\n fieldName: string\n): DependentRow[] => {\n const dependentRows: DependentRow[] = [];\n\n Object.entries(contentTypes).forEach(([contentTypeUid, contentType]) => {\n if (contentType.attributes !== undefined) {\n // Handle both array and object formats of attributes\n const attributes = Array.isArray(contentType.attributes)\n ? contentType.attributes.reduce<Record<string, AnyAttribute>>((acc, attr, index) => {\n acc[index.toString()] = attr;\n return acc;\n }, {})\n : contentType.attributes;\n\n Object.entries(attributes).forEach(([attrName, attr]) => {\n getVisibleConditionEntries(attr.conditions).forEach(({ fieldVar }) => {\n // Check if this condition references our field\n if (fieldVar.var === fieldName) {\n dependentRows.push({\n contentTypeUid,\n contentType: contentType.info.displayName,\n attribute: attr.name || attrName,\n });\n }\n });\n });\n }\n });\n return dependentRows;\n};\n\nexport const formatCondition = (\n condition: AttributeConditions,\n availableFields: Array<{ name: string; type: string }>,\n attributeName: string\n): string => {\n const conditionEntry = getFirstVisibleConditionEntry(condition);\n\n if (conditionEntry === null) {\n return '';\n }\n\n const { operator, fieldVar, value } = conditionEntry;\n\n const dependsOnField = availableFields.find((field) => field.name === fieldVar.var);\n const dependsOnFieldName = dependsOnField ? dependsOnField.name : fieldVar.var;\n\n const operatorText = operator === '==' ? 'is' : 'is not';\n const valueText = String(value);\n const actionText = operator === '==' ? 'Show' : 'Hide';\n\n return `If ${dependsOnFieldName} ${operatorText} ${valueText}, then ${actionText} ${attributeName}`;\n};\n\nexport const getAvailableConditionFields = (\n attributes: AnyAttribute[],\n currentFieldName: string\n) => {\n return attributes\n .filter((attr) => {\n // Only include boolean and enum fields\n const isCorrectType = attr.type === 'boolean' || attr.type === 'enumeration';\n // Exclude the current field to prevent self-referential conditions\n const isNotCurrentField = attr.name !== currentFieldName;\n return isCorrectType && isNotCurrentField;\n })\n .map((attr) => ({\n name: attr.name,\n type: attr.type,\n enum: attr.type === 'enumeration' ? attr.enum : undefined,\n }));\n};\n"],"names":["isRecord","value","Array","isArray","isFieldVar","var","isAttributeConditionValue","getVisibleConditionEntries","condition","visible","Object","entries","reduce","operator","rule","fieldVar","push","getFirstVisibleConditionEntry","checkDependentRows","contentTypes","fieldName","dependentRows","forEach","contentTypeUid","contentType","attributes","undefined","acc","attr","index","toString","attrName","conditions","info","displayName","attribute","name","getAvailableConditionFields","currentFieldName","filter","isCorrectType","type","isNotCurrentField","map","enum"],"mappings":"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"}
@@ -1,44 +1,53 @@
1
+ const isRecord = (value)=>typeof value === 'object' && value !== null && !Array.isArray(value);
2
+ const isFieldVar = (value)=>isRecord(value) && typeof value.var === 'string';
3
+ const isAttributeConditionValue = (value)=>typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';
4
+ const getVisibleConditionEntries = (condition)=>{
5
+ const visible = condition?.visible;
6
+ if (!isRecord(visible)) {
7
+ return [];
8
+ }
9
+ return Object.entries(visible).reduce((entries, [operator, rule])=>{
10
+ if (!Array.isArray(rule)) {
11
+ return entries;
12
+ }
13
+ const [fieldVar, value] = rule;
14
+ if (!isFieldVar(fieldVar) || !isAttributeConditionValue(value)) {
15
+ return entries;
16
+ }
17
+ entries.push({
18
+ operator,
19
+ fieldVar,
20
+ value
21
+ });
22
+ return entries;
23
+ }, []);
24
+ };
25
+ const getFirstVisibleConditionEntry = (condition)=>getVisibleConditionEntries(condition)[0] ?? null;
1
26
  const checkDependentRows = (contentTypes, fieldName)=>{
2
27
  const dependentRows = [];
3
28
  Object.entries(contentTypes).forEach(([contentTypeUid, contentType])=>{
4
- if (contentType.attributes) {
29
+ if (contentType.attributes !== undefined) {
5
30
  // Handle both array and object formats of attributes
6
31
  const attributes = Array.isArray(contentType.attributes) ? contentType.attributes.reduce((acc, attr, index)=>{
7
32
  acc[index.toString()] = attr;
8
33
  return acc;
9
34
  }, {}) : contentType.attributes;
10
35
  Object.entries(attributes).forEach(([attrName, attr])=>{
11
- if (attr.conditions?.visible) {
12
- Object.entries(attr.conditions.visible).forEach(([, conditions])=>{
13
- const [fieldVar] = conditions;
14
- // Check if this condition references our field
15
- if (fieldVar && fieldVar.var === fieldName) {
16
- dependentRows.push({
17
- contentTypeUid,
18
- contentType: contentType.info.displayName,
19
- attribute: attr.name || attrName
20
- });
21
- }
22
- });
23
- }
36
+ getVisibleConditionEntries(attr.conditions).forEach(({ fieldVar })=>{
37
+ // Check if this condition references our field
38
+ if (fieldVar.var === fieldName) {
39
+ dependentRows.push({
40
+ contentTypeUid,
41
+ contentType: contentType.info.displayName,
42
+ attribute: attr.name || attrName
43
+ });
44
+ }
45
+ });
24
46
  });
25
47
  }
26
48
  });
27
49
  return dependentRows;
28
50
  };
29
- const formatCondition = (condition, availableFields, attributeName)=>{
30
- if (!condition?.visible) {
31
- return '';
32
- }
33
- const [[operator, conditions]] = Object.entries(condition.visible);
34
- const [fieldVar, value] = conditions;
35
- const dependsOnField = availableFields.find((field)=>field.name === fieldVar.var);
36
- const dependsOnFieldName = dependsOnField ? dependsOnField.name : fieldVar.var;
37
- const operatorText = operator === '==' ? 'is' : 'is not';
38
- const valueText = String(value);
39
- const actionText = operator === '==' ? 'Show' : 'Hide';
40
- return `If ${dependsOnFieldName} ${operatorText} ${valueText}, then ${actionText} ${attributeName}`;
41
- };
42
51
  const getAvailableConditionFields = (attributes, currentFieldName)=>{
43
52
  return attributes.filter((attr)=>{
44
53
  // Only include boolean and enum fields
@@ -53,5 +62,5 @@ const getAvailableConditionFields = (attributes, currentFieldName)=>{
53
62
  }));
54
63
  };
55
64
 
56
- export { checkDependentRows, formatCondition, getAvailableConditionFields };
65
+ export { checkDependentRows, getAvailableConditionFields, getFirstVisibleConditionEntry, getVisibleConditionEntries };
57
66
  //# sourceMappingURL=conditions.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"conditions.mjs","sources":["../../../admin/src/utils/conditions.ts"],"sourcesContent":["import type { AnyAttribute } from '../types';\n\ninterface DependentRow {\n contentTypeUid: string;\n contentType: string;\n attribute: string;\n}\n\nexport const checkDependentRows = (\n contentTypes: Record<string, any>,\n fieldName: string\n): DependentRow[] => {\n const dependentRows: DependentRow[] = [];\n\n Object.entries(contentTypes).forEach(([contentTypeUid, contentType]: [string, any]) => {\n if (contentType.attributes) {\n // Handle both array and object formats of attributes\n const attributes = Array.isArray(contentType.attributes)\n ? contentType.attributes.reduce((acc: Record<string, any>, attr: any, index: number) => {\n acc[index.toString()] = attr;\n return acc;\n }, {})\n : contentType.attributes;\n\n Object.entries(attributes).forEach(([attrName, attr]: [string, any]) => {\n if (attr.conditions?.visible) {\n Object.entries(attr.conditions.visible).forEach(([, conditions]) => {\n const [fieldVar] = conditions as [{ var: string }, any];\n // Check if this condition references our field\n if (fieldVar && fieldVar.var === fieldName) {\n dependentRows.push({\n contentTypeUid,\n contentType: contentType.info.displayName,\n attribute: attr.name || attrName,\n });\n }\n });\n }\n });\n }\n });\n return dependentRows;\n};\n\nexport const formatCondition = (\n condition: any,\n availableFields: Array<{ name: string; type: string }>,\n attributeName: string\n): string => {\n if (!condition?.visible) {\n return '';\n }\n\n const [[operator, conditions]] = Object.entries(condition.visible);\n const [fieldVar, value] = conditions as [{ var: string }, any];\n\n const dependsOnField = availableFields.find((field) => field.name === fieldVar.var);\n const dependsOnFieldName = dependsOnField ? dependsOnField.name : fieldVar.var;\n\n const operatorText = operator === '==' ? 'is' : 'is not';\n const valueText = String(value);\n const actionText = operator === '==' ? 'Show' : 'Hide';\n\n return `If ${dependsOnFieldName} ${operatorText} ${valueText}, then ${actionText} ${attributeName}`;\n};\n\nexport const getAvailableConditionFields = (\n attributes: AnyAttribute[],\n currentFieldName: string\n) => {\n return attributes\n .filter((attr) => {\n // Only include boolean and enum fields\n const isCorrectType = attr.type === 'boolean' || attr.type === 'enumeration';\n // Exclude the current field to prevent self-referential conditions\n const isNotCurrentField = attr.name !== currentFieldName;\n return isCorrectType && isNotCurrentField;\n })\n .map((attr) => ({\n name: attr.name,\n type: attr.type,\n enum: attr.type === 'enumeration' ? attr.enum : undefined,\n }));\n};\n"],"names":["checkDependentRows","contentTypes","fieldName","dependentRows","Object","entries","forEach","contentTypeUid","contentType","attributes","Array","isArray","reduce","acc","attr","index","toString","attrName","conditions","visible","fieldVar","var","push","info","displayName","attribute","name","formatCondition","condition","availableFields","attributeName","operator","value","dependsOnField","find","field","dependsOnFieldName","operatorText","valueText","String","actionText","getAvailableConditionFields","currentFieldName","filter","isCorrectType","type","isNotCurrentField","map","enum","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"conditions.mjs","sources":["../../../admin/src/utils/conditions.ts"],"sourcesContent":["import type {\n AnyAttribute,\n AttributeConditionValue,\n AttributeConditions,\n ContentTypes,\n} from '../types';\n\ninterface DependentRow {\n contentTypeUid: string;\n contentType: string;\n attribute: string;\n}\n\ntype VisibleConditionEntry = {\n operator: string;\n fieldVar: { var: string };\n value: AttributeConditionValue;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst isFieldVar = (value: unknown): value is { var: string } =>\n isRecord(value) && typeof value.var === 'string';\n\nconst isAttributeConditionValue = (value: unknown): value is AttributeConditionValue =>\n typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';\n\nexport const getVisibleConditionEntries = (\n condition?: AttributeConditions | null\n): VisibleConditionEntry[] => {\n const visible = condition?.visible;\n\n if (!isRecord(visible)) {\n return [];\n }\n\n return Object.entries(visible).reduce<VisibleConditionEntry[]>((entries, [operator, rule]) => {\n if (!Array.isArray(rule)) {\n return entries;\n }\n\n const [fieldVar, value] = rule;\n\n if (!isFieldVar(fieldVar) || !isAttributeConditionValue(value)) {\n return entries;\n }\n\n entries.push({ operator, fieldVar, value });\n\n return entries;\n }, []);\n};\n\nexport const getFirstVisibleConditionEntry = (condition?: AttributeConditions | null) =>\n getVisibleConditionEntries(condition)[0] ?? null;\n\nexport const checkDependentRows = (\n contentTypes: ContentTypes,\n fieldName: string\n): DependentRow[] => {\n const dependentRows: DependentRow[] = [];\n\n Object.entries(contentTypes).forEach(([contentTypeUid, contentType]) => {\n if (contentType.attributes !== undefined) {\n // Handle both array and object formats of attributes\n const attributes = Array.isArray(contentType.attributes)\n ? contentType.attributes.reduce<Record<string, AnyAttribute>>((acc, attr, index) => {\n acc[index.toString()] = attr;\n return acc;\n }, {})\n : contentType.attributes;\n\n Object.entries(attributes).forEach(([attrName, attr]) => {\n getVisibleConditionEntries(attr.conditions).forEach(({ fieldVar }) => {\n // Check if this condition references our field\n if (fieldVar.var === fieldName) {\n dependentRows.push({\n contentTypeUid,\n contentType: contentType.info.displayName,\n attribute: attr.name || attrName,\n });\n }\n });\n });\n }\n });\n return dependentRows;\n};\n\nexport const formatCondition = (\n condition: AttributeConditions,\n availableFields: Array<{ name: string; type: string }>,\n attributeName: string\n): string => {\n const conditionEntry = getFirstVisibleConditionEntry(condition);\n\n if (conditionEntry === null) {\n return '';\n }\n\n const { operator, fieldVar, value } = conditionEntry;\n\n const dependsOnField = availableFields.find((field) => field.name === fieldVar.var);\n const dependsOnFieldName = dependsOnField ? dependsOnField.name : fieldVar.var;\n\n const operatorText = operator === '==' ? 'is' : 'is not';\n const valueText = String(value);\n const actionText = operator === '==' ? 'Show' : 'Hide';\n\n return `If ${dependsOnFieldName} ${operatorText} ${valueText}, then ${actionText} ${attributeName}`;\n};\n\nexport const getAvailableConditionFields = (\n attributes: AnyAttribute[],\n currentFieldName: string\n) => {\n return attributes\n .filter((attr) => {\n // Only include boolean and enum fields\n const isCorrectType = attr.type === 'boolean' || attr.type === 'enumeration';\n // Exclude the current field to prevent self-referential conditions\n const isNotCurrentField = attr.name !== currentFieldName;\n return isCorrectType && isNotCurrentField;\n })\n .map((attr) => ({\n name: attr.name,\n type: attr.type,\n enum: attr.type === 'enumeration' ? attr.enum : undefined,\n }));\n};\n"],"names":["isRecord","value","Array","isArray","isFieldVar","var","isAttributeConditionValue","getVisibleConditionEntries","condition","visible","Object","entries","reduce","operator","rule","fieldVar","push","getFirstVisibleConditionEntry","checkDependentRows","contentTypes","fieldName","dependentRows","forEach","contentTypeUid","contentType","attributes","undefined","acc","attr","index","toString","attrName","conditions","info","displayName","attribute","name","getAvailableConditionFields","currentFieldName","filter","isCorrectType","type","isNotCurrentField","map","enum"],"mappings":"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"}
@@ -32,7 +32,7 @@ const formsAPI = {
32
32
  components: {
33
33
  inputs: {},
34
34
  add ({ id, component }) {
35
- if (!this.inputs[id]) {
35
+ if (this.inputs[id] === undefined) {
36
36
  this.inputs[id] = component;
37
37
  }
38
38
  }
@@ -61,7 +61,7 @@ const formsAPI = {
61
61
  },
62
62
  extendContentType ({ validator, form: { advanced, base } }) {
63
63
  const { contentType } = this.types;
64
- if (validator) {
64
+ if (validator !== undefined) {
65
65
  contentType.validators.push(validator);
66
66
  }
67
67
  contentType.form.advanced.push(advanced);
@@ -79,7 +79,7 @@ const formsAPI = {
79
79
  }
80
80
  };
81
81
  }
82
- if (validator) {
82
+ if (validator !== undefined) {
83
83
  formType[field].validators.push(validator);
84
84
  }
85
85
  formType[field].form.advanced.push(advanced);
@@ -87,11 +87,12 @@ const formsAPI = {
87
87
  });
88
88
  },
89
89
  getAdvancedForm (target, props = null) {
90
- const sectionsToAdd = get__default.default(this.types, [
90
+ const advancedForms = get__default.default(this.types, [
91
91
  ...target,
92
92
  'form',
93
93
  'advanced'
94
- ], []).reduce((acc, current)=>{
94
+ ], []);
95
+ const sectionsToAdd = advancedForms.reduce((acc, current)=>{
95
96
  const sections = current(props);
96
97
  return [
97
98
  ...acc,
@@ -102,7 +103,9 @@ const formsAPI = {
102
103
  },
103
104
  makeCustomFieldValidator (attributeShape, validator, ...validatorArgs) {
104
105
  // When no validator, return the attribute shape
105
- if (!validator) return attributeShape;
106
+ if (validator === undefined) {
107
+ return attributeShape;
108
+ }
106
109
  // Otherwise extend the shape with the provided validator
107
110
  return attributeShape.shape({
108
111
  options: yup__namespace.object().shape(validator(validatorArgs))
@@ -1 +1 @@
1
- {"version":3,"file":"formAPI.js","sources":["../../../admin/src/utils/formAPI.ts"],"sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport * as yup from 'yup';\n\nexport interface FormAPI {\n components: {\n inputs: Record<string, any>;\n add: ({ id, component }: { id: string; component: any }) => void;\n };\n types: {\n attribute: {\n [key: string]: {\n validators: any[];\n form: {\n advanced: any[];\n base: any[];\n };\n };\n };\n contentType: {\n validators: any[];\n form: {\n advanced: any[];\n base: any[];\n };\n };\n component: {\n validators: any[];\n form: {\n advanced: any[];\n base: any[];\n };\n };\n };\n contentTypeSchemaMutations: any[];\n addContentTypeSchemaMutation: (cb: any) => void;\n extendContentType: (data: any) => void;\n extendFields: (fields: any[], data: any) => void;\n getAdvancedForm: (target: any, props?: any) => any[];\n makeCustomFieldValidator: (attributeShape: any, validator: any, ...validatorArgs: any) => any;\n makeValidator: (target: any, initShape: any, ...args: any) => any;\n mutateContentTypeSchema: (\n data: Record<string, unknown>,\n initialData: Record<string, unknown>\n ) => any;\n}\n\nexport const formsAPI: FormAPI = {\n components: {\n inputs: {},\n add({ id, component }) {\n if (!this.inputs[id]) {\n this.inputs[id] = component;\n }\n },\n },\n types: {\n attribute: {\n // test: {\n // validators: [],\n // form: {\n // advanced: [\n // /* cb */\n // ],\n // base: [\n // /* cb */\n // ],\n // },\n // },\n },\n contentType: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n component: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n },\n contentTypeSchemaMutations: [],\n addContentTypeSchemaMutation(cb) {\n this.contentTypeSchemaMutations.push(cb);\n },\n extendContentType({ validator, form: { advanced, base } }) {\n const { contentType } = this.types;\n\n if (validator) {\n contentType.validators.push(validator);\n }\n contentType.form.advanced.push(advanced);\n contentType.form.base.push(base);\n },\n extendFields(fields, { validator, form: { advanced, base } }) {\n const formType = this.types.attribute;\n\n fields.forEach((field) => {\n if (!formType[field]) {\n formType[field] = {\n validators: [],\n form: {\n advanced: [\n /* cb */\n ],\n base: [\n /* cb */\n ],\n },\n };\n }\n\n if (validator) {\n formType[field].validators.push(validator);\n }\n formType[field].form.advanced.push(advanced);\n formType[field].form.base.push(base);\n });\n },\n\n getAdvancedForm(target, props = null) {\n const sectionsToAdd = get(this.types, [...target, 'form', 'advanced'], []).reduce(\n (acc: any, current: any) => {\n const sections = current(props);\n\n return [...acc, ...sections];\n },\n []\n );\n\n return sectionsToAdd;\n },\n\n makeCustomFieldValidator(attributeShape, validator, ...validatorArgs) {\n // When no validator, return the attribute shape\n if (!validator) return attributeShape;\n\n // Otherwise extend the shape with the provided validator\n return attributeShape.shape({ options: yup.object().shape(validator(validatorArgs)) });\n },\n\n makeValidator(target, initShape, ...args) {\n const validators = get(this.types, [...target, 'validators'], []);\n\n const pluginOptionsShape = validators.reduce((acc: any, current: any) => {\n const pluginOptionShape = current(args);\n\n return { ...acc, ...pluginOptionShape };\n }, {});\n\n return initShape.shape({ pluginOptions: yup.object().shape(pluginOptionsShape) });\n },\n mutateContentTypeSchema(data: Record<string, unknown>, initialData: Record<string, unknown>) {\n let enhancedData = cloneDeep(data);\n\n const refData = cloneDeep(initialData);\n\n this.contentTypeSchemaMutations.forEach((cb: any) => {\n enhancedData = cb(enhancedData, refData);\n });\n\n return enhancedData;\n },\n};\n"],"names":["formsAPI","components","inputs","add","id","component","types","attribute","contentType","validators","form","advanced","base","contentTypeSchemaMutations","addContentTypeSchemaMutation","cb","push","extendContentType","validator","extendFields","fields","formType","forEach","field","getAdvancedForm","target","props","sectionsToAdd","get","reduce","acc","current","sections","makeCustomFieldValidator","attributeShape","validatorArgs","shape","options","yup","object","makeValidator","initShape","args","pluginOptionsShape","pluginOptionShape","pluginOptions","mutateContentTypeSchema","data","initialData","enhancedData","cloneDeep","refData"],"mappings":"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"}
1
+ {"version":3,"file":"formAPI.js","sources":["../../../admin/src/utils/formAPI.ts"],"sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport * as yup from 'yup';\n\ntype YupObjectShape = Parameters<ReturnType<typeof yup.object>['shape']>[0];\ntype YupObjectSchema = ReturnType<typeof yup.object>;\ntype FormSection = unknown;\ntype FormExtensionHandler = (props?: unknown) => FormSection[];\ntype FormValidator = (args: unknown[]) => YupObjectShape;\ntype ContentTypeSchemaMutation = (\n data: Record<string, unknown>,\n initialData: Record<string, unknown>\n) => Record<string, unknown>;\n\ntype ExtensionForm = {\n advanced: FormExtensionHandler[];\n base: FormExtensionHandler[];\n};\n\ntype ExtensionDefinition = {\n validators: FormValidator[];\n form: ExtensionForm;\n};\n\ntype ExtensionInput = {\n validator?: FormValidator;\n form: {\n advanced: FormExtensionHandler;\n base: FormExtensionHandler;\n };\n};\n\nexport type FormAPI = {\n components: {\n inputs: Record<string, unknown>;\n add: ({ id, component }: { id: string; component: unknown }) => void;\n };\n types: {\n attribute: {\n [key: string]: ExtensionDefinition;\n };\n contentType: ExtensionDefinition;\n component: ExtensionDefinition;\n };\n contentTypeSchemaMutations: ContentTypeSchemaMutation[];\n addContentTypeSchemaMutation: (cb: ContentTypeSchemaMutation) => void;\n extendContentType: (data: ExtensionInput) => void;\n extendFields: (fields: string[], data: ExtensionInput) => void;\n getAdvancedForm: (target: string[], props?: unknown) => FormSection[];\n makeCustomFieldValidator: (\n attributeShape: YupObjectSchema,\n validator: FormValidator | undefined,\n ...validatorArgs: unknown[]\n ) => YupObjectSchema;\n makeValidator: (\n target: string[],\n initShape: YupObjectSchema,\n ...args: unknown[]\n ) => YupObjectSchema;\n mutateContentTypeSchema: (\n data: Record<string, unknown>,\n initialData: Record<string, unknown>\n ) => Record<string, unknown>;\n};\n\nexport const formsAPI: FormAPI = {\n components: {\n inputs: {},\n add({ id, component }) {\n if (this.inputs[id] === undefined) {\n this.inputs[id] = component;\n }\n },\n },\n types: {\n attribute: {\n // test: {\n // validators: [],\n // form: {\n // advanced: [\n // /* cb */\n // ],\n // base: [\n // /* cb */\n // ],\n // },\n // },\n },\n contentType: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n component: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n },\n contentTypeSchemaMutations: [],\n addContentTypeSchemaMutation(cb) {\n this.contentTypeSchemaMutations.push(cb);\n },\n extendContentType({ validator, form: { advanced, base } }) {\n const { contentType } = this.types;\n\n if (validator !== undefined) {\n contentType.validators.push(validator);\n }\n contentType.form.advanced.push(advanced);\n contentType.form.base.push(base);\n },\n extendFields(fields, { validator, form: { advanced, base } }) {\n const formType = this.types.attribute;\n\n fields.forEach((field) => {\n if (!formType[field]) {\n formType[field] = {\n validators: [],\n form: {\n advanced: [\n /* cb */\n ],\n base: [\n /* cb */\n ],\n },\n };\n }\n\n if (validator !== undefined) {\n formType[field].validators.push(validator);\n }\n formType[field].form.advanced.push(advanced);\n formType[field].form.base.push(base);\n });\n },\n\n getAdvancedForm(target, props = null) {\n const advancedForms = get(\n this.types,\n [...target, 'form', 'advanced'],\n []\n ) as FormExtensionHandler[];\n const sectionsToAdd = advancedForms.reduce<FormSection[]>((acc, current) => {\n const sections = current(props);\n\n return [...acc, ...sections];\n }, []);\n\n return sectionsToAdd;\n },\n\n makeCustomFieldValidator(attributeShape, validator, ...validatorArgs) {\n // When no validator, return the attribute shape\n if (validator === undefined) {\n return attributeShape;\n }\n\n // Otherwise extend the shape with the provided validator\n return attributeShape.shape({ options: yup.object().shape(validator(validatorArgs)) });\n },\n\n makeValidator(target, initShape, ...args) {\n const validators = get(this.types, [...target, 'validators'], []) as FormValidator[];\n\n const pluginOptionsShape = validators.reduce<YupObjectShape>((acc, current) => {\n const pluginOptionShape = current(args);\n\n return { ...acc, ...pluginOptionShape };\n }, {});\n\n return initShape.shape({ pluginOptions: yup.object().shape(pluginOptionsShape) });\n },\n mutateContentTypeSchema(data: Record<string, unknown>, initialData: Record<string, unknown>) {\n let enhancedData = cloneDeep(data);\n\n const refData = cloneDeep(initialData);\n\n this.contentTypeSchemaMutations.forEach((cb) => {\n enhancedData = cb(enhancedData, refData);\n });\n\n return enhancedData;\n },\n};\n"],"names":["formsAPI","components","inputs","add","id","component","undefined","types","attribute","contentType","validators","form","advanced","base","contentTypeSchemaMutations","addContentTypeSchemaMutation","cb","push","extendContentType","validator","extendFields","fields","formType","forEach","field","getAdvancedForm","target","props","advancedForms","get","sectionsToAdd","reduce","acc","current","sections","makeCustomFieldValidator","attributeShape","validatorArgs","shape","options","yup","object","makeValidator","initShape","args","pluginOptionsShape","pluginOptionShape","pluginOptions","mutateContentTypeSchema","data","initialData","enhancedData","cloneDeep","refData"],"mappings":"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"}
@@ -6,7 +6,7 @@ const formsAPI = {
6
6
  components: {
7
7
  inputs: {},
8
8
  add ({ id, component }) {
9
- if (!this.inputs[id]) {
9
+ if (this.inputs[id] === undefined) {
10
10
  this.inputs[id] = component;
11
11
  }
12
12
  }
@@ -35,7 +35,7 @@ const formsAPI = {
35
35
  },
36
36
  extendContentType ({ validator, form: { advanced, base } }) {
37
37
  const { contentType } = this.types;
38
- if (validator) {
38
+ if (validator !== undefined) {
39
39
  contentType.validators.push(validator);
40
40
  }
41
41
  contentType.form.advanced.push(advanced);
@@ -53,7 +53,7 @@ const formsAPI = {
53
53
  }
54
54
  };
55
55
  }
56
- if (validator) {
56
+ if (validator !== undefined) {
57
57
  formType[field].validators.push(validator);
58
58
  }
59
59
  formType[field].form.advanced.push(advanced);
@@ -61,11 +61,12 @@ const formsAPI = {
61
61
  });
62
62
  },
63
63
  getAdvancedForm (target, props = null) {
64
- const sectionsToAdd = get(this.types, [
64
+ const advancedForms = get(this.types, [
65
65
  ...target,
66
66
  'form',
67
67
  'advanced'
68
- ], []).reduce((acc, current)=>{
68
+ ], []);
69
+ const sectionsToAdd = advancedForms.reduce((acc, current)=>{
69
70
  const sections = current(props);
70
71
  return [
71
72
  ...acc,
@@ -76,7 +77,9 @@ const formsAPI = {
76
77
  },
77
78
  makeCustomFieldValidator (attributeShape, validator, ...validatorArgs) {
78
79
  // When no validator, return the attribute shape
79
- if (!validator) return attributeShape;
80
+ if (validator === undefined) {
81
+ return attributeShape;
82
+ }
80
83
  // Otherwise extend the shape with the provided validator
81
84
  return attributeShape.shape({
82
85
  options: yup.object().shape(validator(validatorArgs))
@@ -1 +1 @@
1
- {"version":3,"file":"formAPI.mjs","sources":["../../../admin/src/utils/formAPI.ts"],"sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport * as yup from 'yup';\n\nexport interface FormAPI {\n components: {\n inputs: Record<string, any>;\n add: ({ id, component }: { id: string; component: any }) => void;\n };\n types: {\n attribute: {\n [key: string]: {\n validators: any[];\n form: {\n advanced: any[];\n base: any[];\n };\n };\n };\n contentType: {\n validators: any[];\n form: {\n advanced: any[];\n base: any[];\n };\n };\n component: {\n validators: any[];\n form: {\n advanced: any[];\n base: any[];\n };\n };\n };\n contentTypeSchemaMutations: any[];\n addContentTypeSchemaMutation: (cb: any) => void;\n extendContentType: (data: any) => void;\n extendFields: (fields: any[], data: any) => void;\n getAdvancedForm: (target: any, props?: any) => any[];\n makeCustomFieldValidator: (attributeShape: any, validator: any, ...validatorArgs: any) => any;\n makeValidator: (target: any, initShape: any, ...args: any) => any;\n mutateContentTypeSchema: (\n data: Record<string, unknown>,\n initialData: Record<string, unknown>\n ) => any;\n}\n\nexport const formsAPI: FormAPI = {\n components: {\n inputs: {},\n add({ id, component }) {\n if (!this.inputs[id]) {\n this.inputs[id] = component;\n }\n },\n },\n types: {\n attribute: {\n // test: {\n // validators: [],\n // form: {\n // advanced: [\n // /* cb */\n // ],\n // base: [\n // /* cb */\n // ],\n // },\n // },\n },\n contentType: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n component: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n },\n contentTypeSchemaMutations: [],\n addContentTypeSchemaMutation(cb) {\n this.contentTypeSchemaMutations.push(cb);\n },\n extendContentType({ validator, form: { advanced, base } }) {\n const { contentType } = this.types;\n\n if (validator) {\n contentType.validators.push(validator);\n }\n contentType.form.advanced.push(advanced);\n contentType.form.base.push(base);\n },\n extendFields(fields, { validator, form: { advanced, base } }) {\n const formType = this.types.attribute;\n\n fields.forEach((field) => {\n if (!formType[field]) {\n formType[field] = {\n validators: [],\n form: {\n advanced: [\n /* cb */\n ],\n base: [\n /* cb */\n ],\n },\n };\n }\n\n if (validator) {\n formType[field].validators.push(validator);\n }\n formType[field].form.advanced.push(advanced);\n formType[field].form.base.push(base);\n });\n },\n\n getAdvancedForm(target, props = null) {\n const sectionsToAdd = get(this.types, [...target, 'form', 'advanced'], []).reduce(\n (acc: any, current: any) => {\n const sections = current(props);\n\n return [...acc, ...sections];\n },\n []\n );\n\n return sectionsToAdd;\n },\n\n makeCustomFieldValidator(attributeShape, validator, ...validatorArgs) {\n // When no validator, return the attribute shape\n if (!validator) return attributeShape;\n\n // Otherwise extend the shape with the provided validator\n return attributeShape.shape({ options: yup.object().shape(validator(validatorArgs)) });\n },\n\n makeValidator(target, initShape, ...args) {\n const validators = get(this.types, [...target, 'validators'], []);\n\n const pluginOptionsShape = validators.reduce((acc: any, current: any) => {\n const pluginOptionShape = current(args);\n\n return { ...acc, ...pluginOptionShape };\n }, {});\n\n return initShape.shape({ pluginOptions: yup.object().shape(pluginOptionsShape) });\n },\n mutateContentTypeSchema(data: Record<string, unknown>, initialData: Record<string, unknown>) {\n let enhancedData = cloneDeep(data);\n\n const refData = cloneDeep(initialData);\n\n this.contentTypeSchemaMutations.forEach((cb: any) => {\n enhancedData = cb(enhancedData, refData);\n });\n\n return enhancedData;\n },\n};\n"],"names":["formsAPI","components","inputs","add","id","component","types","attribute","contentType","validators","form","advanced","base","contentTypeSchemaMutations","addContentTypeSchemaMutation","cb","push","extendContentType","validator","extendFields","fields","formType","forEach","field","getAdvancedForm","target","props","sectionsToAdd","get","reduce","acc","current","sections","makeCustomFieldValidator","attributeShape","validatorArgs","shape","options","yup","object","makeValidator","initShape","args","pluginOptionsShape","pluginOptionShape","pluginOptions","mutateContentTypeSchema","data","initialData","enhancedData","cloneDeep","refData"],"mappings":";;;;MA+CaA,QAAAA,GAAoB;IAC/BC,UAAAA,EAAY;AACVC,QAAAA,MAAAA,EAAQ,EAAC;AACTC,QAAAA,GAAAA,CAAAA,CAAI,EAAEC,EAAE,EAAEC,SAAS,EAAE,EAAA;AACnB,YAAA,IAAI,CAAC,IAAI,CAACH,MAAM,CAACE,GAAG,EAAE;AACpB,gBAAA,IAAI,CAACF,MAAM,CAACE,EAAAA,CAAG,GAAGC,SAAAA;AACpB,YAAA;AACF,QAAA;AACF,KAAA;IACAC,KAAAA,EAAO;QACLC,SAAAA,EAAW;AAYX,SAAA;QACAC,WAAAA,EAAa;AACXC,YAAAA,UAAAA,EAAY,EAAE;YACdC,IAAAA,EAAM;AACJC,gBAAAA,QAAAA,EAAU,EAAE;AACZC,gBAAAA,IAAAA,EAAM;AACR;AACF,SAAA;QACAP,SAAAA,EAAW;AACTI,YAAAA,UAAAA,EAAY,EAAE;YACdC,IAAAA,EAAM;AACJC,gBAAAA,QAAAA,EAAU,EAAE;AACZC,gBAAAA,IAAAA,EAAM;AACR;AACF;AACF,KAAA;AACAC,IAAAA,0BAAAA,EAA4B,EAAE;AAC9BC,IAAAA,4BAAAA,CAAAA,CAA6BC,EAAE,EAAA;AAC7B,QAAA,IAAI,CAACF,0BAA0B,CAACG,IAAI,CAACD,EAAAA,CAAAA;AACvC,IAAA,CAAA;IACAE,iBAAAA,CAAAA,CAAkB,EAAEC,SAAS,EAAER,IAAAA,EAAM,EAAEC,QAAQ,EAAEC,IAAI,EAAE,EAAE,EAAA;AACvD,QAAA,MAAM,EAAEJ,WAAW,EAAE,GAAG,IAAI,CAACF,KAAK;AAElC,QAAA,IAAIY,SAAAA,EAAW;YACbV,WAAAA,CAAYC,UAAU,CAACO,IAAI,CAACE,SAAAA,CAAAA;AAC9B,QAAA;AACAV,QAAAA,WAAAA,CAAYE,IAAI,CAACC,QAAQ,CAACK,IAAI,CAACL,QAAAA,CAAAA;AAC/BH,QAAAA,WAAAA,CAAYE,IAAI,CAACE,IAAI,CAACI,IAAI,CAACJ,IAAAA,CAAAA;AAC7B,IAAA,CAAA;IACAO,YAAAA,CAAAA,CAAaC,MAAM,EAAE,EAAEF,SAAS,EAAER,IAAAA,EAAM,EAAEC,QAAQ,EAAEC,IAAI,EAAE,EAAE,EAAA;AAC1D,QAAA,MAAMS,QAAAA,GAAW,IAAI,CAACf,KAAK,CAACC,SAAS;QAErCa,MAAAA,CAAOE,OAAO,CAAC,CAACC,KAAAA,GAAAA;AACd,YAAA,IAAI,CAACF,QAAQ,CAACE,KAAAA,CAAM,EAAE;gBACpBF,QAAQ,CAACE,MAAM,GAAG;AAChBd,oBAAAA,UAAAA,EAAY,EAAE;oBACdC,IAAAA,EAAM;AACJC,wBAAAA,QAAAA,EAAU,EAET;AACDC,wBAAAA,IAAAA,EAAM;AAGR;AACF,iBAAA;AACF,YAAA;AAEA,YAAA,IAAIM,SAAAA,EAAW;AACbG,gBAAAA,QAAQ,CAACE,KAAAA,CAAM,CAACd,UAAU,CAACO,IAAI,CAACE,SAAAA,CAAAA;AAClC,YAAA;YACAG,QAAQ,CAACE,MAAM,CAACb,IAAI,CAACC,QAAQ,CAACK,IAAI,CAACL,QAAAA,CAAAA;YACnCU,QAAQ,CAACE,MAAM,CAACb,IAAI,CAACE,IAAI,CAACI,IAAI,CAACJ,IAAAA,CAAAA;AACjC,QAAA,CAAA,CAAA;AACF,IAAA,CAAA;IAEAY,eAAAA,CAAAA,CAAgBC,MAAM,EAAEC,KAAAA,GAAQ,IAAI,EAAA;AAClC,QAAA,MAAMC,aAAAA,GAAgBC,GAAAA,CAAI,IAAI,CAACtB,KAAK,EAAE;AAAImB,YAAAA,GAAAA,MAAAA;AAAQ,YAAA,MAAA;AAAQ,YAAA;AAAW,SAAA,EAAE,EAAE,CAAA,CAAEI,MAAM,CAC/E,CAACC,GAAAA,EAAUC,OAAAA,GAAAA;AACT,YAAA,MAAMC,WAAWD,OAAAA,CAAQL,KAAAA,CAAAA;YAEzB,OAAO;AAAII,gBAAAA,GAAAA,GAAAA;AAAQE,gBAAAA,GAAAA;AAAS,aAAA;AAC9B,QAAA,CAAA,EACA,EAAE,CAAA;QAGJ,OAAOL,aAAAA;AACT,IAAA,CAAA;AAEAM,IAAAA,wBAAAA,CAAAA,CAAyBC,cAAc,EAAEhB,SAAS,EAAE,GAAGiB,aAAa,EAAA;;QAElE,IAAI,CAACjB,WAAW,OAAOgB,cAAAA;;QAGvB,OAAOA,cAAAA,CAAeE,KAAK,CAAC;AAAEC,YAAAA,OAAAA,EAASC,GAAAA,CAAIC,MAAM,EAAA,CAAGH,KAAK,CAAClB,SAAAA,CAAUiB,aAAAA,CAAAA;AAAgB,SAAA,CAAA;AACtF,IAAA,CAAA;AAEAK,IAAAA,aAAAA,CAAAA,CAAcf,MAAM,EAAEgB,SAAS,EAAE,GAAGC,IAAI,EAAA;AACtC,QAAA,MAAMjC,UAAAA,GAAamB,GAAAA,CAAI,IAAI,CAACtB,KAAK,EAAE;AAAImB,YAAAA,GAAAA,MAAAA;AAAQ,YAAA;AAAa,SAAA,EAAE,EAAE,CAAA;AAEhE,QAAA,MAAMkB,kBAAAA,GAAqBlC,UAAAA,CAAWoB,MAAM,CAAC,CAACC,GAAAA,EAAUC,OAAAA,GAAAA;AACtD,YAAA,MAAMa,oBAAoBb,OAAAA,CAAQW,IAAAA,CAAAA;YAElC,OAAO;AAAE,gBAAA,GAAGZ,GAAG;AAAE,gBAAA,GAAGc;AAAkB,aAAA;AACxC,QAAA,CAAA,EAAG,EAAC,CAAA;QAEJ,OAAOH,SAAAA,CAAUL,KAAK,CAAC;AAAES,YAAAA,aAAAA,EAAeP,GAAAA,CAAIC,MAAM,EAAA,CAAGH,KAAK,CAACO,kBAAAA;AAAoB,SAAA,CAAA;AACjF,IAAA,CAAA;IACAG,uBAAAA,CAAAA,CAAwBC,IAA6B,EAAEC,WAAoC,EAAA;AACzF,QAAA,IAAIC,eAAeC,SAAAA,CAAUH,IAAAA,CAAAA;AAE7B,QAAA,MAAMI,UAAUD,SAAAA,CAAUF,WAAAA,CAAAA;AAE1B,QAAA,IAAI,CAACnC,0BAA0B,CAACS,OAAO,CAAC,CAACP,EAAAA,GAAAA;AACvCkC,YAAAA,YAAAA,GAAelC,GAAGkC,YAAAA,EAAcE,OAAAA,CAAAA;AAClC,QAAA,CAAA,CAAA;QAEA,OAAOF,YAAAA;AACT,IAAA;AACF;;;;"}
1
+ {"version":3,"file":"formAPI.mjs","sources":["../../../admin/src/utils/formAPI.ts"],"sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport * as yup from 'yup';\n\ntype YupObjectShape = Parameters<ReturnType<typeof yup.object>['shape']>[0];\ntype YupObjectSchema = ReturnType<typeof yup.object>;\ntype FormSection = unknown;\ntype FormExtensionHandler = (props?: unknown) => FormSection[];\ntype FormValidator = (args: unknown[]) => YupObjectShape;\ntype ContentTypeSchemaMutation = (\n data: Record<string, unknown>,\n initialData: Record<string, unknown>\n) => Record<string, unknown>;\n\ntype ExtensionForm = {\n advanced: FormExtensionHandler[];\n base: FormExtensionHandler[];\n};\n\ntype ExtensionDefinition = {\n validators: FormValidator[];\n form: ExtensionForm;\n};\n\ntype ExtensionInput = {\n validator?: FormValidator;\n form: {\n advanced: FormExtensionHandler;\n base: FormExtensionHandler;\n };\n};\n\nexport type FormAPI = {\n components: {\n inputs: Record<string, unknown>;\n add: ({ id, component }: { id: string; component: unknown }) => void;\n };\n types: {\n attribute: {\n [key: string]: ExtensionDefinition;\n };\n contentType: ExtensionDefinition;\n component: ExtensionDefinition;\n };\n contentTypeSchemaMutations: ContentTypeSchemaMutation[];\n addContentTypeSchemaMutation: (cb: ContentTypeSchemaMutation) => void;\n extendContentType: (data: ExtensionInput) => void;\n extendFields: (fields: string[], data: ExtensionInput) => void;\n getAdvancedForm: (target: string[], props?: unknown) => FormSection[];\n makeCustomFieldValidator: (\n attributeShape: YupObjectSchema,\n validator: FormValidator | undefined,\n ...validatorArgs: unknown[]\n ) => YupObjectSchema;\n makeValidator: (\n target: string[],\n initShape: YupObjectSchema,\n ...args: unknown[]\n ) => YupObjectSchema;\n mutateContentTypeSchema: (\n data: Record<string, unknown>,\n initialData: Record<string, unknown>\n ) => Record<string, unknown>;\n};\n\nexport const formsAPI: FormAPI = {\n components: {\n inputs: {},\n add({ id, component }) {\n if (this.inputs[id] === undefined) {\n this.inputs[id] = component;\n }\n },\n },\n types: {\n attribute: {\n // test: {\n // validators: [],\n // form: {\n // advanced: [\n // /* cb */\n // ],\n // base: [\n // /* cb */\n // ],\n // },\n // },\n },\n contentType: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n component: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n },\n contentTypeSchemaMutations: [],\n addContentTypeSchemaMutation(cb) {\n this.contentTypeSchemaMutations.push(cb);\n },\n extendContentType({ validator, form: { advanced, base } }) {\n const { contentType } = this.types;\n\n if (validator !== undefined) {\n contentType.validators.push(validator);\n }\n contentType.form.advanced.push(advanced);\n contentType.form.base.push(base);\n },\n extendFields(fields, { validator, form: { advanced, base } }) {\n const formType = this.types.attribute;\n\n fields.forEach((field) => {\n if (!formType[field]) {\n formType[field] = {\n validators: [],\n form: {\n advanced: [\n /* cb */\n ],\n base: [\n /* cb */\n ],\n },\n };\n }\n\n if (validator !== undefined) {\n formType[field].validators.push(validator);\n }\n formType[field].form.advanced.push(advanced);\n formType[field].form.base.push(base);\n });\n },\n\n getAdvancedForm(target, props = null) {\n const advancedForms = get(\n this.types,\n [...target, 'form', 'advanced'],\n []\n ) as FormExtensionHandler[];\n const sectionsToAdd = advancedForms.reduce<FormSection[]>((acc, current) => {\n const sections = current(props);\n\n return [...acc, ...sections];\n }, []);\n\n return sectionsToAdd;\n },\n\n makeCustomFieldValidator(attributeShape, validator, ...validatorArgs) {\n // When no validator, return the attribute shape\n if (validator === undefined) {\n return attributeShape;\n }\n\n // Otherwise extend the shape with the provided validator\n return attributeShape.shape({ options: yup.object().shape(validator(validatorArgs)) });\n },\n\n makeValidator(target, initShape, ...args) {\n const validators = get(this.types, [...target, 'validators'], []) as FormValidator[];\n\n const pluginOptionsShape = validators.reduce<YupObjectShape>((acc, current) => {\n const pluginOptionShape = current(args);\n\n return { ...acc, ...pluginOptionShape };\n }, {});\n\n return initShape.shape({ pluginOptions: yup.object().shape(pluginOptionsShape) });\n },\n mutateContentTypeSchema(data: Record<string, unknown>, initialData: Record<string, unknown>) {\n let enhancedData = cloneDeep(data);\n\n const refData = cloneDeep(initialData);\n\n this.contentTypeSchemaMutations.forEach((cb) => {\n enhancedData = cb(enhancedData, refData);\n });\n\n return enhancedData;\n },\n};\n"],"names":["formsAPI","components","inputs","add","id","component","undefined","types","attribute","contentType","validators","form","advanced","base","contentTypeSchemaMutations","addContentTypeSchemaMutation","cb","push","extendContentType","validator","extendFields","fields","formType","forEach","field","getAdvancedForm","target","props","advancedForms","get","sectionsToAdd","reduce","acc","current","sections","makeCustomFieldValidator","attributeShape","validatorArgs","shape","options","yup","object","makeValidator","initShape","args","pluginOptionsShape","pluginOptionShape","pluginOptions","mutateContentTypeSchema","data","initialData","enhancedData","cloneDeep","refData"],"mappings":"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"}
@@ -4,6 +4,9 @@
4
4
  *
5
5
  * Retrieves the relation type
6
6
  */ const getRelationType = (relation, targetAttribute)=>{
7
+ if (relation === undefined) {
8
+ return undefined;
9
+ }
7
10
  const hasNotTargetAttribute = targetAttribute === undefined || targetAttribute === null;
8
11
  if (relation === 'oneToOne' && hasNotTargetAttribute) {
9
12
  return 'oneWay';
@@ -1 +1 @@
1
- {"version":3,"file":"getRelationType.js","sources":["../../../admin/src/utils/getRelationType.ts"],"sourcesContent":["import type { Schema } from '@strapi/types';\n\n/**\n *\n * Retrieves the relation type\n */\nexport const getRelationType = (\n relation: Schema.Attribute.RelationKind.Any,\n targetAttribute?: string | null\n) => {\n const hasNotTargetAttribute = targetAttribute === undefined || targetAttribute === null;\n\n if (relation === 'oneToOne' && hasNotTargetAttribute) {\n return 'oneWay';\n }\n\n if (relation === 'oneToMany' && hasNotTargetAttribute) {\n return 'manyWay';\n }\n\n return relation;\n};\n"],"names":["getRelationType","relation","targetAttribute","hasNotTargetAttribute","undefined"],"mappings":";;AAEA;;;AAGC,IACM,MAAMA,eAAAA,GAAkB,CAC7BC,QAAAA,EACAC,eAAAA,GAAAA;IAEA,MAAMC,qBAAAA,GAAwBD,eAAAA,KAAoBE,SAAAA,IAAaF,eAAAA,KAAoB,IAAA;IAEnF,IAAID,QAAAA,KAAa,cAAcE,qBAAAA,EAAuB;QACpD,OAAO,QAAA;AACT,IAAA;IAEA,IAAIF,QAAAA,KAAa,eAAeE,qBAAAA,EAAuB;QACrD,OAAO,SAAA;AACT,IAAA;IAEA,OAAOF,QAAAA;AACT;;;;"}
1
+ {"version":3,"file":"getRelationType.js","sources":["../../../admin/src/utils/getRelationType.ts"],"sourcesContent":["import type { Schema } from '@strapi/types';\n\n/**\n *\n * Retrieves the relation type\n */\nexport const getRelationType = (\n relation?: Schema.Attribute.RelationKind.Any,\n targetAttribute?: string | null\n) => {\n if (relation === undefined) {\n return undefined;\n }\n\n const hasNotTargetAttribute = targetAttribute === undefined || targetAttribute === null;\n\n if (relation === 'oneToOne' && hasNotTargetAttribute) {\n return 'oneWay';\n }\n\n if (relation === 'oneToMany' && hasNotTargetAttribute) {\n return 'manyWay';\n }\n\n return relation;\n};\n"],"names":["getRelationType","relation","targetAttribute","undefined","hasNotTargetAttribute"],"mappings":";;AAEA;;;AAGC,IACM,MAAMA,eAAAA,GAAkB,CAC7BC,QAAAA,EACAC,eAAAA,GAAAA;AAEA,IAAA,IAAID,aAAaE,SAAAA,EAAW;QAC1B,OAAOA,SAAAA;AACT,IAAA;IAEA,MAAMC,qBAAAA,GAAwBF,eAAAA,KAAoBC,SAAAA,IAAaD,eAAAA,KAAoB,IAAA;IAEnF,IAAID,QAAAA,KAAa,cAAcG,qBAAAA,EAAuB;QACpD,OAAO,QAAA;AACT,IAAA;IAEA,IAAIH,QAAAA,KAAa,eAAeG,qBAAAA,EAAuB;QACrD,OAAO,SAAA;AACT,IAAA;IAEA,OAAOH,QAAAA;AACT;;;;"}
@@ -2,6 +2,9 @@
2
2
  *
3
3
  * Retrieves the relation type
4
4
  */ const getRelationType = (relation, targetAttribute)=>{
5
+ if (relation === undefined) {
6
+ return undefined;
7
+ }
5
8
  const hasNotTargetAttribute = targetAttribute === undefined || targetAttribute === null;
6
9
  if (relation === 'oneToOne' && hasNotTargetAttribute) {
7
10
  return 'oneWay';
@@ -1 +1 @@
1
- {"version":3,"file":"getRelationType.mjs","sources":["../../../admin/src/utils/getRelationType.ts"],"sourcesContent":["import type { Schema } from '@strapi/types';\n\n/**\n *\n * Retrieves the relation type\n */\nexport const getRelationType = (\n relation: Schema.Attribute.RelationKind.Any,\n targetAttribute?: string | null\n) => {\n const hasNotTargetAttribute = targetAttribute === undefined || targetAttribute === null;\n\n if (relation === 'oneToOne' && hasNotTargetAttribute) {\n return 'oneWay';\n }\n\n if (relation === 'oneToMany' && hasNotTargetAttribute) {\n return 'manyWay';\n }\n\n return relation;\n};\n"],"names":["getRelationType","relation","targetAttribute","hasNotTargetAttribute","undefined"],"mappings":"AAEA;;;AAGC,IACM,MAAMA,eAAAA,GAAkB,CAC7BC,QAAAA,EACAC,eAAAA,GAAAA;IAEA,MAAMC,qBAAAA,GAAwBD,eAAAA,KAAoBE,SAAAA,IAAaF,eAAAA,KAAoB,IAAA;IAEnF,IAAID,QAAAA,KAAa,cAAcE,qBAAAA,EAAuB;QACpD,OAAO,QAAA;AACT,IAAA;IAEA,IAAIF,QAAAA,KAAa,eAAeE,qBAAAA,EAAuB;QACrD,OAAO,SAAA;AACT,IAAA;IAEA,OAAOF,QAAAA;AACT;;;;"}
1
+ {"version":3,"file":"getRelationType.mjs","sources":["../../../admin/src/utils/getRelationType.ts"],"sourcesContent":["import type { Schema } from '@strapi/types';\n\n/**\n *\n * Retrieves the relation type\n */\nexport const getRelationType = (\n relation?: Schema.Attribute.RelationKind.Any,\n targetAttribute?: string | null\n) => {\n if (relation === undefined) {\n return undefined;\n }\n\n const hasNotTargetAttribute = targetAttribute === undefined || targetAttribute === null;\n\n if (relation === 'oneToOne' && hasNotTargetAttribute) {\n return 'oneWay';\n }\n\n if (relation === 'oneToMany' && hasNotTargetAttribute) {\n return 'manyWay';\n }\n\n return relation;\n};\n"],"names":["getRelationType","relation","targetAttribute","undefined","hasNotTargetAttribute"],"mappings":"AAEA;;;AAGC,IACM,MAAMA,eAAAA,GAAkB,CAC7BC,QAAAA,EACAC,eAAAA,GAAAA;AAEA,IAAA,IAAID,aAAaE,SAAAA,EAAW;QAC1B,OAAOA,SAAAA;AACT,IAAA;IAEA,MAAMC,qBAAAA,GAAwBF,eAAAA,KAAoBC,SAAAA,IAAaD,eAAAA,KAAoB,IAAA;IAEnF,IAAID,QAAAA,KAAa,cAAcG,qBAAAA,EAAuB;QACpD,OAAO,QAAA;AACT,IAAA;IAEA,IAAIH,QAAAA,KAAa,eAAeG,qBAAAA,EAAuB;QACrD,OAAO,SAAA;AACT,IAAA;IAEA,OAAOH,QAAAA;AACT;;;;"}
@@ -1,13 +1,15 @@
1
1
  'use strict';
2
2
 
3
3
  const extractValuesFromYupError = (errorType, errorParams)=>{
4
- if (!errorType || !errorParams) {
4
+ if (errorType === undefined || errorParams === undefined) {
5
5
  return {};
6
6
  }
7
- return {
8
- [errorType]: errorParams[errorType]
9
- };
7
+ const value = errorParams[errorType];
8
+ return isPrimitiveType(value) ? {
9
+ [errorType]: value
10
+ } : {};
10
11
  };
12
+ const isPrimitiveType = (value)=>value === null || value === undefined || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';
11
13
  const getYupInnerErrors = (error)=>(error?.inner || []).reduce((acc, currentError)=>{
12
14
  if (currentError.path) {
13
15
  acc[currentError.path.split('[').join('.').split(']').join('')] = {
@@ -1 +1 @@
1
- {"version":3,"file":"getYupInnerErrors.js","sources":["../../../admin/src/utils/getYupInnerErrors.ts"],"sourcesContent":["import type { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport type { ValidationError } from 'yup';\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\nconst extractValuesFromYupError = (\n errorType?: string | undefined,\n errorParams?: Record<string, any> | undefined\n) => {\n if (!errorType || !errorParams) {\n return {};\n }\n\n return {\n [errorType]: errorParams[errorType],\n };\n};\n\nconst getYupInnerErrors = (error: ValidationError) =>\n (error?.inner || []).reduce<Record<string, TranslationMessage>>((acc, currentError) => {\n if (currentError.path) {\n acc[currentError.path.split('[').join('.').split(']').join('')] = {\n id: currentError.message,\n defaultMessage: currentError.message,\n values: extractValuesFromYupError(currentError?.type, currentError?.params),\n };\n }\n\n return acc;\n }, {});\n\nexport { getYupInnerErrors };\n"],"names":["extractValuesFromYupError","errorType","errorParams","getYupInnerErrors","error","inner","reduce","acc","currentError","path","split","join","id","message","defaultMessage","values","type","params"],"mappings":";;AAOA,MAAMA,yBAAAA,GAA4B,CAChCC,SAAAA,EACAC,WAAAA,GAAAA;IAEA,IAAI,CAACD,SAAAA,IAAa,CAACC,WAAAA,EAAa;AAC9B,QAAA,OAAO,EAAC;AACV,IAAA;IAEA,OAAO;AACL,QAAA,CAACD,SAAAA,GAAYC,WAAW,CAACD,SAAAA;AAC3B,KAAA;AACF,CAAA;AAEA,MAAME,iBAAAA,GAAoB,CAACC,KAAAA,GACxBA,CAAAA,KAAAA,EAAOC,KAAAA,IAAS,EAAE,EAAEC,MAAM,CAAqC,CAACC,GAAAA,EAAKC,YAAAA,GAAAA;QACpE,IAAIA,YAAAA,CAAaC,IAAI,EAAE;AACrBF,YAAAA,GAAG,CAACC,YAAAA,CAAaC,IAAI,CAACC,KAAK,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC,GAAA,CAAA,CAAKD,KAAK,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC,IAAI,GAAG;AAChEC,gBAAAA,EAAAA,EAAIJ,aAAaK,OAAO;AACxBC,gBAAAA,cAAAA,EAAgBN,aAAaK,OAAO;gBACpCE,MAAAA,EAAQf,yBAAAA,CAA0BQ,YAAAA,EAAcQ,IAAAA,EAAMR,YAAAA,EAAcS,MAAAA;AACtE,aAAA;AACF,QAAA;QAEA,OAAOV,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC;;;;"}
1
+ {"version":3,"file":"getYupInnerErrors.js","sources":["../../../admin/src/utils/getYupInnerErrors.ts"],"sourcesContent":["import type { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport type { ValidationError } from 'yup';\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\nconst extractValuesFromYupError = (\n errorType?: string | undefined,\n errorParams?: Record<string, unknown> | undefined\n) => {\n if (errorType === undefined || errorParams === undefined) {\n return {};\n }\n\n const value = errorParams[errorType];\n\n return isPrimitiveType(value) ? { [errorType]: value } : {};\n};\n\nconst isPrimitiveType = (value: unknown): value is PrimitiveType =>\n value === null ||\n value === undefined ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean';\n\nconst getYupInnerErrors = (error: ValidationError) =>\n (error?.inner || []).reduce<Record<string, TranslationMessage>>((acc, currentError) => {\n if (currentError.path) {\n acc[currentError.path.split('[').join('.').split(']').join('')] = {\n id: currentError.message,\n defaultMessage: currentError.message,\n values: extractValuesFromYupError(currentError?.type, currentError?.params),\n };\n }\n\n return acc;\n }, {});\n\nexport { getYupInnerErrors };\n"],"names":["extractValuesFromYupError","errorType","errorParams","undefined","value","isPrimitiveType","getYupInnerErrors","error","inner","reduce","acc","currentError","path","split","join","id","message","defaultMessage","values","type","params"],"mappings":";;AAOA,MAAMA,yBAAAA,GAA4B,CAChCC,SAAAA,EACAC,WAAAA,GAAAA;IAEA,IAAID,SAAAA,KAAcE,SAAAA,IAAaD,WAAAA,KAAgBC,SAAAA,EAAW;AACxD,QAAA,OAAO,EAAC;AACV,IAAA;IAEA,MAAMC,KAAAA,GAAQF,WAAW,CAACD,SAAAA,CAAU;AAEpC,IAAA,OAAOI,gBAAgBD,KAAAA,CAAAA,GAAS;AAAE,QAAA,CAACH,YAAYG;AAAM,KAAA,GAAI,EAAC;AAC5D,CAAA;AAEA,MAAMC,eAAAA,GAAkB,CAACD,KAAAA,GACvBA,KAAAA,KAAU,QACVA,KAAAA,KAAUD,SAAAA,IACV,OAAOC,KAAAA,KAAU,QAAA,IACjB,OAAOA,KAAAA,KAAU,QAAA,IACjB,OAAOA,KAAAA,KAAU,SAAA;AAEnB,MAAME,iBAAAA,GAAoB,CAACC,KAAAA,GACxBA,CAAAA,KAAAA,EAAOC,KAAAA,IAAS,EAAE,EAAEC,MAAM,CAAqC,CAACC,GAAAA,EAAKC,YAAAA,GAAAA;QACpE,IAAIA,YAAAA,CAAaC,IAAI,EAAE;AACrBF,YAAAA,GAAG,CAACC,YAAAA,CAAaC,IAAI,CAACC,KAAK,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC,GAAA,CAAA,CAAKD,KAAK,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC,IAAI,GAAG;AAChEC,gBAAAA,EAAAA,EAAIJ,aAAaK,OAAO;AACxBC,gBAAAA,cAAAA,EAAgBN,aAAaK,OAAO;gBACpCE,MAAAA,EAAQlB,yBAAAA,CAA0BW,YAAAA,EAAcQ,IAAAA,EAAMR,YAAAA,EAAcS,MAAAA;AACtE,aAAA;AACF,QAAA;QAEA,OAAOV,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC;;;;"}
@@ -1,11 +1,13 @@
1
1
  const extractValuesFromYupError = (errorType, errorParams)=>{
2
- if (!errorType || !errorParams) {
2
+ if (errorType === undefined || errorParams === undefined) {
3
3
  return {};
4
4
  }
5
- return {
6
- [errorType]: errorParams[errorType]
7
- };
5
+ const value = errorParams[errorType];
6
+ return isPrimitiveType(value) ? {
7
+ [errorType]: value
8
+ } : {};
8
9
  };
10
+ const isPrimitiveType = (value)=>value === null || value === undefined || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';
9
11
  const getYupInnerErrors = (error)=>(error?.inner || []).reduce((acc, currentError)=>{
10
12
  if (currentError.path) {
11
13
  acc[currentError.path.split('[').join('.').split(']').join('')] = {