@strapi/content-manager 0.0.0-next.df5dd4b92e1b046c04ff00d00d76c88ea51b57d4 → 0.0.0-next.e1a19b9e52cdcb526515883c8289522a64c9871a

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 (317) hide show
  1. package/dist/admin/components/ConfigurationForm/Fields.js +4 -1
  2. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/Fields.mjs +5 -2
  4. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  5. package/dist/admin/components/ConfigurationForm/Form.js +1 -1
  6. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  7. package/dist/admin/components/ConfigurationForm/Form.mjs +3 -3
  8. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  9. package/dist/admin/components/DragPreviews/CardDragPreview.js +3 -1
  10. package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
  11. package/dist/admin/components/DragPreviews/CardDragPreview.mjs +3 -1
  12. package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
  13. package/dist/admin/components/DragPreviews/ComponentDragPreview.js +3 -1
  14. package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
  15. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs +3 -1
  16. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
  17. package/dist/admin/components/DragPreviews/RelationDragPreview.js +3 -1
  18. package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
  19. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs +3 -1
  20. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
  21. package/dist/admin/components/LeftMenu.js +89 -49
  22. package/dist/admin/components/LeftMenu.js.map +1 -1
  23. package/dist/admin/components/LeftMenu.mjs +91 -51
  24. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  25. package/dist/admin/components/Widgets.js +269 -9
  26. package/dist/admin/components/Widgets.js.map +1 -1
  27. package/dist/admin/components/Widgets.mjs +252 -12
  28. package/dist/admin/components/Widgets.mjs.map +1 -1
  29. package/dist/admin/history/components/VersionContent.js +24 -3
  30. package/dist/admin/history/components/VersionContent.js.map +1 -1
  31. package/dist/admin/history/components/VersionContent.mjs +25 -4
  32. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  33. package/dist/admin/history/components/VersionHeader.js +1 -0
  34. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  35. package/dist/admin/history/components/VersionHeader.mjs +1 -0
  36. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  37. package/dist/admin/history/components/VersionsList.js +1 -1
  38. package/dist/admin/history/components/VersionsList.js.map +1 -1
  39. package/dist/admin/history/components/VersionsList.mjs +1 -1
  40. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  41. package/dist/admin/history/pages/History.js +7 -7
  42. package/dist/admin/history/pages/History.js.map +1 -1
  43. package/dist/admin/history/pages/History.mjs +7 -7
  44. package/dist/admin/history/pages/History.mjs.map +1 -1
  45. package/dist/admin/hooks/useDocumentActions.js +5 -5
  46. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  47. package/dist/admin/hooks/useDocumentActions.mjs +6 -6
  48. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  49. package/dist/admin/index.js +47 -8
  50. package/dist/admin/index.js.map +1 -1
  51. package/dist/admin/index.mjs +47 -9
  52. package/dist/admin/index.mjs.map +1 -1
  53. package/dist/admin/layout.js +28 -33
  54. package/dist/admin/layout.js.map +1 -1
  55. package/dist/admin/layout.mjs +29 -15
  56. package/dist/admin/layout.mjs.map +1 -1
  57. package/dist/admin/pages/EditView/EditViewPage.js +34 -20
  58. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  59. package/dist/admin/pages/EditView/EditViewPage.mjs +36 -22
  60. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  61. package/dist/admin/pages/EditView/components/Blocker.js +18 -0
  62. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -0
  63. package/dist/admin/pages/EditView/components/Blocker.mjs +16 -0
  64. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -0
  65. package/dist/admin/pages/EditView/components/DocumentActions.js +74 -63
  66. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  67. package/dist/admin/pages/EditView/components/DocumentActions.mjs +76 -65
  68. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  70. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  72. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +54 -14
  74. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +55 -15
  76. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +2 -2
  78. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +2 -2
  80. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +2 -2
  82. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +2 -2
  84. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +12 -1
  86. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +13 -2
  88. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +15 -3
  90. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +16 -4
  92. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  93. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +1 -2
  94. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +1 -2
  96. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +20 -6
  98. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +22 -8
  100. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  101. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +1 -0
  102. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  103. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +1 -0
  104. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  105. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +158 -106
  106. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  107. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +161 -109
  108. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  109. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  110. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  111. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  112. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  113. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +2 -2
  114. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  115. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +2 -2
  116. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  117. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  118. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  119. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  120. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  121. package/dist/admin/pages/EditView/components/FormLayout.js +40 -11
  122. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  123. package/dist/admin/pages/EditView/components/FormLayout.mjs +41 -11
  124. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  125. package/dist/admin/pages/EditView/components/Header.js +22 -7
  126. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  127. package/dist/admin/pages/EditView/components/Header.mjs +23 -8
  128. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  129. package/dist/admin/pages/EditView/components/InputRenderer.js +20 -7
  130. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  131. package/dist/admin/pages/EditView/components/InputRenderer.mjs +20 -7
  132. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  133. package/dist/admin/pages/EditView/utils/data.js +128 -0
  134. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  135. package/dist/admin/pages/EditView/utils/data.mjs +128 -1
  136. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  137. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +1 -0
  138. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  139. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -0
  140. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  141. package/dist/admin/pages/ListView/ListViewPage.js +221 -203
  142. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  143. package/dist/admin/pages/ListView/ListViewPage.mjs +222 -204
  144. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  145. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +12 -2
  146. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  147. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +12 -2
  148. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  149. package/dist/admin/pages/ListView/components/Filters.js +3 -1
  150. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  151. package/dist/admin/pages/ListView/components/Filters.mjs +3 -1
  152. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  153. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  154. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  155. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  156. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  157. package/dist/admin/preview/components/InputPopover.js +189 -0
  158. package/dist/admin/preview/components/InputPopover.js.map +1 -0
  159. package/dist/admin/preview/components/InputPopover.mjs +167 -0
  160. package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
  161. package/dist/admin/preview/components/PreviewHeader.js +0 -1
  162. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  163. package/dist/admin/preview/components/PreviewHeader.mjs +0 -1
  164. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  165. package/dist/admin/preview/components/PreviewSidePanel.js +31 -4
  166. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  167. package/dist/admin/preview/components/PreviewSidePanel.mjs +32 -5
  168. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  169. package/dist/admin/preview/hooks/usePreviewInputManager.js +77 -0
  170. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
  171. package/dist/admin/preview/hooks/usePreviewInputManager.mjs +56 -0
  172. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
  173. package/dist/admin/preview/pages/Preview.js +178 -74
  174. package/dist/admin/preview/pages/Preview.js.map +1 -1
  175. package/dist/admin/preview/pages/Preview.mjs +180 -76
  176. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  177. package/dist/admin/preview/utils/constants.js +56 -0
  178. package/dist/admin/preview/utils/constants.js.map +1 -0
  179. package/dist/admin/preview/utils/constants.mjs +52 -0
  180. package/dist/admin/preview/utils/constants.mjs.map +1 -0
  181. package/dist/admin/preview/utils/fieldUtils.js +107 -0
  182. package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
  183. package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
  184. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
  185. package/dist/admin/preview/utils/getSendMessage.js +22 -0
  186. package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
  187. package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
  188. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
  189. package/dist/admin/preview/utils/previewScript.js +534 -0
  190. package/dist/admin/preview/utils/previewScript.js.map +1 -0
  191. package/dist/admin/preview/utils/previewScript.mjs +532 -0
  192. package/dist/admin/preview/utils/previewScript.mjs.map +1 -0
  193. package/dist/admin/services/api.js +4 -1
  194. package/dist/admin/services/api.js.map +1 -1
  195. package/dist/admin/services/api.mjs +4 -1
  196. package/dist/admin/services/api.mjs.map +1 -1
  197. package/dist/admin/services/documents.js +42 -16
  198. package/dist/admin/services/documents.js.map +1 -1
  199. package/dist/admin/services/documents.mjs +42 -16
  200. package/dist/admin/services/documents.mjs.map +1 -1
  201. package/dist/admin/src/components/LeftMenu.d.ts +3 -1
  202. package/dist/admin/src/components/Widgets.d.ts +2 -1
  203. package/dist/admin/src/exports.d.ts +1 -0
  204. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  205. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  206. package/dist/admin/src/pages/EditView/components/Blocker.d.ts +5 -0
  207. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +0 -3
  208. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
  209. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  210. package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
  211. package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +5 -0
  212. package/dist/admin/src/preview/pages/Preview.d.ts +12 -0
  213. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  214. package/dist/admin/src/preview/utils/constants.d.ts +55 -0
  215. package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
  216. package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
  217. package/dist/admin/src/preview/utils/previewScript.d.ts +24 -0
  218. package/dist/admin/src/services/api.d.ts +1 -1
  219. package/dist/admin/src/services/components.d.ts +2 -2
  220. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  221. package/dist/admin/src/services/documents.d.ts +23 -17
  222. package/dist/admin/src/services/homepage.d.ts +1 -1
  223. package/dist/admin/src/services/init.d.ts +1 -1
  224. package/dist/admin/src/services/relations.d.ts +2 -2
  225. package/dist/admin/src/services/uid.d.ts +3 -3
  226. package/dist/admin/src/utils/api.d.ts +1 -1
  227. package/dist/admin/src/utils/validation.d.ts +1 -0
  228. package/dist/admin/translations/en.json.js +12 -0
  229. package/dist/admin/translations/en.json.js.map +1 -1
  230. package/dist/admin/translations/en.json.mjs +12 -0
  231. package/dist/admin/translations/en.json.mjs.map +1 -1
  232. package/dist/admin/translations/es.json.js +6 -2
  233. package/dist/admin/translations/es.json.js.map +1 -1
  234. package/dist/admin/translations/es.json.mjs +6 -2
  235. package/dist/admin/translations/es.json.mjs.map +1 -1
  236. package/dist/admin/translations/fr.json.js +11 -2
  237. package/dist/admin/translations/fr.json.js.map +1 -1
  238. package/dist/admin/translations/fr.json.mjs +11 -2
  239. package/dist/admin/translations/fr.json.mjs.map +1 -1
  240. package/dist/admin/utils/api.js +1 -1
  241. package/dist/admin/utils/api.js.map +1 -1
  242. package/dist/admin/utils/api.mjs +1 -1
  243. package/dist/admin/utils/api.mjs.map +1 -1
  244. package/dist/admin/utils/validation.js +18 -6
  245. package/dist/admin/utils/validation.js.map +1 -1
  246. package/dist/admin/utils/validation.mjs +18 -6
  247. package/dist/admin/utils/validation.mjs.map +1 -1
  248. package/dist/server/controllers/relations.js +8 -6
  249. package/dist/server/controllers/relations.js.map +1 -1
  250. package/dist/server/controllers/relations.mjs +8 -6
  251. package/dist/server/controllers/relations.mjs.map +1 -1
  252. package/dist/server/history/services/lifecycles.js +20 -19
  253. package/dist/server/history/services/lifecycles.js.map +1 -1
  254. package/dist/server/history/services/lifecycles.mjs +20 -19
  255. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  256. package/dist/server/homepage/controllers/homepage.js +5 -0
  257. package/dist/server/homepage/controllers/homepage.js.map +1 -1
  258. package/dist/server/homepage/controllers/homepage.mjs +5 -0
  259. package/dist/server/homepage/controllers/homepage.mjs.map +1 -1
  260. package/dist/server/homepage/routes/homepage.js +11 -0
  261. package/dist/server/homepage/routes/homepage.js.map +1 -1
  262. package/dist/server/homepage/routes/homepage.mjs +11 -0
  263. package/dist/server/homepage/routes/homepage.mjs.map +1 -1
  264. package/dist/server/homepage/services/homepage.js +86 -46
  265. package/dist/server/homepage/services/homepage.js.map +1 -1
  266. package/dist/server/homepage/services/homepage.mjs +86 -46
  267. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  268. package/dist/server/preview/services/preview-config.js +5 -1
  269. package/dist/server/preview/services/preview-config.js.map +1 -1
  270. package/dist/server/preview/services/preview-config.mjs +5 -1
  271. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  272. package/dist/server/preview/services/preview.js +4 -0
  273. package/dist/server/preview/services/preview.js.map +1 -1
  274. package/dist/server/preview/services/preview.mjs +4 -0
  275. package/dist/server/preview/services/preview.mjs.map +1 -1
  276. package/dist/server/services/document-manager.js +3 -0
  277. package/dist/server/services/document-manager.js.map +1 -1
  278. package/dist/server/services/document-manager.mjs +3 -0
  279. package/dist/server/services/document-manager.mjs.map +1 -1
  280. package/dist/server/services/document-metadata.js +1 -1
  281. package/dist/server/services/document-metadata.js.map +1 -1
  282. package/dist/server/services/document-metadata.mjs +1 -1
  283. package/dist/server/services/document-metadata.mjs.map +1 -1
  284. package/dist/server/services/utils/populate.js +11 -0
  285. package/dist/server/services/utils/populate.js.map +1 -1
  286. package/dist/server/services/utils/populate.mjs +11 -0
  287. package/dist/server/services/utils/populate.mjs.map +1 -1
  288. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  289. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  290. package/dist/server/src/homepage/controllers/homepage.d.ts +2 -1
  291. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -1
  292. package/dist/server/src/homepage/index.d.ts +7 -0
  293. package/dist/server/src/homepage/index.d.ts.map +1 -1
  294. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -1
  295. package/dist/server/src/homepage/services/homepage.d.ts +4 -1
  296. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  297. package/dist/server/src/homepage/services/index.d.ts +7 -0
  298. package/dist/server/src/homepage/services/index.d.ts.map +1 -1
  299. package/dist/server/src/index.d.ts +7 -0
  300. package/dist/server/src/index.d.ts.map +1 -1
  301. package/dist/server/src/preview/services/index.d.ts +1 -0
  302. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  303. package/dist/server/src/preview/services/preview-config.d.ts +1 -0
  304. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  305. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  306. package/dist/server/src/preview/utils.d.ts +1 -0
  307. package/dist/server/src/preview/utils.d.ts.map +1 -1
  308. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  309. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  310. package/dist/server/src/services/index.d.ts +7 -0
  311. package/dist/server/src/services/index.d.ts.map +1 -1
  312. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  313. package/dist/shared/contracts/collection-types.d.ts +0 -1
  314. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  315. package/dist/shared/contracts/homepage.d.ts +13 -0
  316. package/dist/shared/contracts/homepage.d.ts.map +1 -1
  317. package/package.json +7 -8
@@ -248,6 +248,7 @@ var en = {
248
248
  "popover.display-relations.label": "Display relations",
249
249
  "preview.panel.title": "Preview",
250
250
  "preview.panel.button": "Open preview",
251
+ "preview.panel.button-configuration": "Set up preview",
251
252
  "preview.panel.button-disabled-tooltip": "Please save to open the preview",
252
253
  "preview.page-title": "{contentType} preview",
253
254
  "preview.header.close": "Close preview",
@@ -256,6 +257,14 @@ var en = {
256
257
  "preview.tabs.label": "Preview status",
257
258
  "preview.content.close-editor": "Close editor",
258
259
  "preview.content.open-editor": "Open editor",
260
+ "preview.device.select": "Select device type",
261
+ "preview.device.desktop": "Desktop",
262
+ "preview.device.mobile": "Mobile",
263
+ "preview.info.single-click-hint": "Double click to edit",
264
+ "preview.error.invalid-field-path": "Could not locate this field in the current document",
265
+ "preview.error.relations-not-handled": "Inline editing for relations is not currently supported.",
266
+ "preview.error.incomplete-strapi-source": "This field is missing some required preview information",
267
+ "preview.error.different-document": "This field comes from a different document",
259
268
  "relation.create": "Create a relation",
260
269
  "relation.add": "Add or create a relation",
261
270
  "relation.disconnect": "Remove",
@@ -308,6 +317,9 @@ var en = {
308
317
  "validation.error": "There are validation errors in your document. Please fix them before saving.",
309
318
  "validation.error.unreadable-required-field": "Your current permissions prevent access to certain required fields. Please request access from an administrator to proceed.",
310
319
  "bulk-publish.edit": "Edit",
320
+ "widget.chart-entries.title": "Entries",
321
+ "widget.chart-entries.count.label": "{count, plural, =0 {Entries} one {Entry} other {Entries}}",
322
+ "widget.chart-entries.tooltip": "{count} {label}",
311
323
  "widget.last-edited.title": "Last edited entries",
312
324
  "widget.last-edited.single-type": "Single-Type",
313
325
  "widget.last-edited.no-data": "No edited entries",
@@ -1 +1 @@
1
- {"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -244,6 +244,7 @@ var en = {
244
244
  "popover.display-relations.label": "Display relations",
245
245
  "preview.panel.title": "Preview",
246
246
  "preview.panel.button": "Open preview",
247
+ "preview.panel.button-configuration": "Set up preview",
247
248
  "preview.panel.button-disabled-tooltip": "Please save to open the preview",
248
249
  "preview.page-title": "{contentType} preview",
249
250
  "preview.header.close": "Close preview",
@@ -252,6 +253,14 @@ var en = {
252
253
  "preview.tabs.label": "Preview status",
253
254
  "preview.content.close-editor": "Close editor",
254
255
  "preview.content.open-editor": "Open editor",
256
+ "preview.device.select": "Select device type",
257
+ "preview.device.desktop": "Desktop",
258
+ "preview.device.mobile": "Mobile",
259
+ "preview.info.single-click-hint": "Double click to edit",
260
+ "preview.error.invalid-field-path": "Could not locate this field in the current document",
261
+ "preview.error.relations-not-handled": "Inline editing for relations is not currently supported.",
262
+ "preview.error.incomplete-strapi-source": "This field is missing some required preview information",
263
+ "preview.error.different-document": "This field comes from a different document",
255
264
  "relation.create": "Create a relation",
256
265
  "relation.add": "Add or create a relation",
257
266
  "relation.disconnect": "Remove",
@@ -304,6 +313,9 @@ var en = {
304
313
  "validation.error": "There are validation errors in your document. Please fix them before saving.",
305
314
  "validation.error.unreadable-required-field": "Your current permissions prevent access to certain required fields. Please request access from an administrator to proceed.",
306
315
  "bulk-publish.edit": "Edit",
316
+ "widget.chart-entries.title": "Entries",
317
+ "widget.chart-entries.count.label": "{count, plural, =0 {Entries} one {Entry} other {Entries}}",
318
+ "widget.chart-entries.tooltip": "{count} {label}",
307
319
  "widget.last-edited.title": "Last edited entries",
308
320
  "widget.last-edited.single-type": "Single-Type",
309
321
  "widget.last-edited.no-data": "No edited entries",
@@ -1 +1 @@
1
- {"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -92,8 +92,9 @@ var es = {
92
92
  "containers.Home.pluginHeaderDescription": "Gestiona sus registros en una bella y poderoza interfaz.",
93
93
  "containers.Home.pluginHeaderTitle": "Gestor de Contenido",
94
94
  "containers.List.draft": "Borrador",
95
- "containers.List.errorFetchRecords": "Error",
96
95
  "containers.List.published": "Publicado",
96
+ "containers.List.modified": "Modificado",
97
+ "containers.List.errorFetchRecords": "Error",
97
98
  "containers.list.displayedFields": "Campos mostrados",
98
99
  "containers.list.items": "{number, plural, =0 {elementos} one {elemento} other {elementos}}",
99
100
  "containers.list.table-headers.publishedAt": "Estado",
@@ -189,7 +190,10 @@ var es = {
189
190
  "success.record.unpublish": "Sin publicar",
190
191
  "utils.data-loaded": "{number, plural, =1 {La entrada se ha cargado correctamente} other {Las entradas se han cargado correctamente}}",
191
192
  "popUpWarning.warning.publish-question": "¿Aún quieres publicarlo?",
192
- "popUpwarning.warning.has-draft-relations.button-confirm": "Si, publicar"
193
+ "popUpwarning.warning.has-draft-relations.button-confirm": "Si, publicar",
194
+ "widget.chart-entries.title": "Entradas",
195
+ "widget.chart-entries.count.label": "{count, plural, =0 {Entradas} one {Entrada} other {Entradas}}",
196
+ "widget.chart-entries.tooltip": "{count} {label}"
193
197
  };
194
198
 
195
199
  exports.default = es;
@@ -1 +1 @@
1
- {"version":3,"file":"es.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"es.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -88,8 +88,9 @@ var es = {
88
88
  "containers.Home.pluginHeaderDescription": "Gestiona sus registros en una bella y poderoza interfaz.",
89
89
  "containers.Home.pluginHeaderTitle": "Gestor de Contenido",
90
90
  "containers.List.draft": "Borrador",
91
- "containers.List.errorFetchRecords": "Error",
92
91
  "containers.List.published": "Publicado",
92
+ "containers.List.modified": "Modificado",
93
+ "containers.List.errorFetchRecords": "Error",
93
94
  "containers.list.displayedFields": "Campos mostrados",
94
95
  "containers.list.items": "{number, plural, =0 {elementos} one {elemento} other {elementos}}",
95
96
  "containers.list.table-headers.publishedAt": "Estado",
@@ -185,7 +186,10 @@ var es = {
185
186
  "success.record.unpublish": "Sin publicar",
186
187
  "utils.data-loaded": "{number, plural, =1 {La entrada se ha cargado correctamente} other {Las entradas se han cargado correctamente}}",
187
188
  "popUpWarning.warning.publish-question": "¿Aún quieres publicarlo?",
188
- "popUpwarning.warning.has-draft-relations.button-confirm": "Si, publicar"
189
+ "popUpwarning.warning.has-draft-relations.button-confirm": "Si, publicar",
190
+ "widget.chart-entries.title": "Entradas",
191
+ "widget.chart-entries.count.label": "{count, plural, =0 {Entradas} one {Entrada} other {Entradas}}",
192
+ "widget.chart-entries.tooltip": "{count} {label}"
189
193
  };
190
194
 
191
195
  export { es as default, groups, models, pageNotFound };
@@ -1 +1 @@
1
- {"version":3,"file":"es.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"es.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -95,8 +95,9 @@ var fr = {
95
95
  "containers.Home.pluginHeaderDescription": "Créer et modifier votre type de contenu",
96
96
  "containers.Home.pluginHeaderTitle": "Type de contenu",
97
97
  "containers.List.draft": "Brouillon",
98
- "containers.List.errorFetchRecords": "Erreur",
99
98
  "containers.List.published": "Publié",
99
+ "containers.List.modified": "Modifié",
100
+ "containers.List.errorFetchRecords": "Erreur",
100
101
  "containers.list.displayedFields": "Champs affichés",
101
102
  "containers.list.items": "{number, plural, =0 {élements} one {élement} other {élements}}",
102
103
  "containers.list.table-headers.publishedAt": "Statut",
@@ -212,7 +213,15 @@ var fr = {
212
213
  "history.restore.confirm.title": "Êtes-vous sûr de vouloir restaurer cette version ?",
213
214
  "history.restore.confirm.message": "{isDraft, select, true {Le contenu restauré écrasera votre brouillon.} other {Le contenu restauré ne sera pas publié, il écrasera le brouillon et sera sauvegardé en tant que changement en attente de publication. Vous pourrez publier les changements à tout moment.}}",
214
215
  "history.restore.success.title": "Version restaurée.",
215
- "history.restore.success.message": "Le contenu de la version restaurée n'a pas encore été publié."
216
+ "history.restore.success.message": "Le contenu de la version restaurée n'a pas encore été publié.",
217
+ "widget.chart-entries.title": "Entrées",
218
+ "widget.chart-entries.count.label": "{count, plural, =0 {entrées} one {entrée} other {entrées}}",
219
+ "widget.chart-entries.tooltip": "{count} {label}",
220
+ "widget.last-edited.title": "Dernières entrées éditées",
221
+ "widget.last-edited.single-type": "Types uniques",
222
+ "widget.last-edited.no-data": "Aucune entrée éditée",
223
+ "widget.last-published.title": "Dernières entrées publiées",
224
+ "widget.last-published.no-data": "Aucune entrée publiée"
216
225
  };
217
226
 
218
227
  exports.default = fr;
@@ -1 +1 @@
1
- {"version":3,"file":"fr.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"fr.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -91,8 +91,9 @@ var fr = {
91
91
  "containers.Home.pluginHeaderDescription": "Créer et modifier votre type de contenu",
92
92
  "containers.Home.pluginHeaderTitle": "Type de contenu",
93
93
  "containers.List.draft": "Brouillon",
94
- "containers.List.errorFetchRecords": "Erreur",
95
94
  "containers.List.published": "Publié",
95
+ "containers.List.modified": "Modifié",
96
+ "containers.List.errorFetchRecords": "Erreur",
96
97
  "containers.list.displayedFields": "Champs affichés",
97
98
  "containers.list.items": "{number, plural, =0 {élements} one {élement} other {élements}}",
98
99
  "containers.list.table-headers.publishedAt": "Statut",
@@ -208,7 +209,15 @@ var fr = {
208
209
  "history.restore.confirm.title": "Êtes-vous sûr de vouloir restaurer cette version ?",
209
210
  "history.restore.confirm.message": "{isDraft, select, true {Le contenu restauré écrasera votre brouillon.} other {Le contenu restauré ne sera pas publié, il écrasera le brouillon et sera sauvegardé en tant que changement en attente de publication. Vous pourrez publier les changements à tout moment.}}",
210
211
  "history.restore.success.title": "Version restaurée.",
211
- "history.restore.success.message": "Le contenu de la version restaurée n'a pas encore été publié."
212
+ "history.restore.success.message": "Le contenu de la version restaurée n'a pas encore été publié.",
213
+ "widget.chart-entries.title": "Entrées",
214
+ "widget.chart-entries.count.label": "{count, plural, =0 {entrées} one {entrée} other {entrées}}",
215
+ "widget.chart-entries.tooltip": "{count} {label}",
216
+ "widget.last-edited.title": "Dernières entrées éditées",
217
+ "widget.last-edited.single-type": "Types uniques",
218
+ "widget.last-edited.no-data": "Aucune entrée éditée",
219
+ "widget.last-published.title": "Dernières entrées publiées",
220
+ "widget.last-published.no-data": "Aucune entrée publiée"
212
221
  };
213
222
 
214
223
  export { fr as default, groups, models, pageNotFound };
@@ -1 +1 @@
1
- {"version":3,"file":"fr.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"fr.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -3,7 +3,7 @@
3
3
  /**
4
4
  * @description
5
5
  * Creates a valid query params object for get requests
6
- * ie. plugins[18n][locale]=en becomes locale=en
6
+ * ie. plugins[i18n][locale]=en becomes locale=en
7
7
  */ const buildValidParams = (query)=>{
8
8
  if (!query) return query;
9
9
  // Extract pluginOptions from the query, they shouldn't be part of the URL
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sources":["../../../admin/src/utils/api.ts"],"sourcesContent":["import { SerializedError } from '@reduxjs/toolkit';\nimport { ApiError, type UnknownApiError } from '@strapi/admin/strapi-admin';\n\ninterface Query {\n plugins?: Record<string, unknown>;\n _q?: string;\n [key: string]: any;\n}\n\n/**\n * This type extracts the plugin options from the query\n * and appends them to the root of the query\n */\ntype TransformedQuery<TQuery extends Query> = Omit<TQuery, 'plugins'> & {\n [key: string]: string;\n};\n\n/**\n * @description\n * Creates a valid query params object for get requests\n * ie. plugins[18n][locale]=en becomes locale=en\n */\nconst buildValidParams = <TQuery extends Query>(query: TQuery): TransformedQuery<TQuery> => {\n if (!query) return query;\n\n // Extract pluginOptions from the query, they shouldn't be part of the URL\n const { plugins: _, ...validQueryParams } = {\n ...query,\n ...Object.values(query?.plugins ?? {}).reduce<Record<string, string>>(\n (acc, current) => Object.assign(acc, current),\n {}\n ),\n };\n\n return validQueryParams;\n};\n\ntype BaseQueryError = ApiError | UnknownApiError;\n\nconst isBaseQueryError = (error: BaseQueryError | SerializedError): error is BaseQueryError => {\n return error.name !== undefined;\n};\n\nexport { isBaseQueryError, buildValidParams };\nexport type { BaseQueryError, UnknownApiError };\n"],"names":["buildValidParams","query","plugins","_","validQueryParams","Object","values","reduce","acc","current","assign","isBaseQueryError","error","name","undefined"],"mappings":";;AAiBA;;;;IAKA,MAAMA,mBAAmB,CAAuBC,KAAAA,GAAAA;IAC9C,IAAI,CAACA,OAAO,OAAOA,KAAAA;;AAGnB,IAAA,MAAM,EAAEC,OAASC,EAAAA,CAAC,EAAE,GAAGC,kBAAkB,GAAG;AAC1C,QAAA,GAAGH,KAAK;AACR,QAAA,GAAGI,OAAOC,MAAM,CAACL,OAAOC,OAAW,IAAA,IAAIK,MAAM,CAC3C,CAACC,GAAAA,EAAKC,UAAYJ,MAAOK,CAAAA,MAAM,CAACF,GAAKC,EAAAA,OAAAA,CAAAA,EACrC,EACD;AACH,KAAA;IAEA,OAAOL,gBAAAA;AACT;AAIA,MAAMO,mBAAmB,CAACC,KAAAA,GAAAA;IACxB,OAAOA,KAAAA,CAAMC,IAAI,KAAKC,SAAAA;AACxB;;;;;"}
1
+ {"version":3,"file":"api.js","sources":["../../../admin/src/utils/api.ts"],"sourcesContent":["import { SerializedError } from '@reduxjs/toolkit';\nimport { ApiError, type UnknownApiError } from '@strapi/admin/strapi-admin';\n\ninterface Query {\n plugins?: Record<string, unknown>;\n _q?: string;\n [key: string]: any;\n}\n\n/**\n * This type extracts the plugin options from the query\n * and appends them to the root of the query\n */\ntype TransformedQuery<TQuery extends Query> = Omit<TQuery, 'plugins'> & {\n [key: string]: string;\n};\n\n/**\n * @description\n * Creates a valid query params object for get requests\n * ie. plugins[i18n][locale]=en becomes locale=en\n */\nconst buildValidParams = <TQuery extends Query>(query: TQuery): TransformedQuery<TQuery> => {\n if (!query) return query;\n\n // Extract pluginOptions from the query, they shouldn't be part of the URL\n const { plugins: _, ...validQueryParams } = {\n ...query,\n ...Object.values(query?.plugins ?? {}).reduce<Record<string, string>>(\n (acc, current) => Object.assign(acc, current),\n {}\n ),\n };\n\n return validQueryParams;\n};\n\ntype BaseQueryError = ApiError | UnknownApiError;\n\nconst isBaseQueryError = (error: BaseQueryError | SerializedError): error is BaseQueryError => {\n return error.name !== undefined;\n};\n\nexport { isBaseQueryError, buildValidParams };\nexport type { BaseQueryError, UnknownApiError };\n"],"names":["buildValidParams","query","plugins","_","validQueryParams","Object","values","reduce","acc","current","assign","isBaseQueryError","error","name","undefined"],"mappings":";;AAiBA;;;;IAKA,MAAMA,mBAAmB,CAAuBC,KAAAA,GAAAA;IAC9C,IAAI,CAACA,OAAO,OAAOA,KAAAA;;AAGnB,IAAA,MAAM,EAAEC,OAASC,EAAAA,CAAC,EAAE,GAAGC,kBAAkB,GAAG;AAC1C,QAAA,GAAGH,KAAK;AACR,QAAA,GAAGI,OAAOC,MAAM,CAACL,OAAOC,OAAW,IAAA,IAAIK,MAAM,CAC3C,CAACC,GAAAA,EAAKC,UAAYJ,MAAOK,CAAAA,MAAM,CAACF,GAAKC,EAAAA,OAAAA,CAAAA,EACrC,EACD;AACH,KAAA;IAEA,OAAOL,gBAAAA;AACT;AAIA,MAAMO,mBAAmB,CAACC,KAAAA,GAAAA;IACxB,OAAOA,KAAAA,CAAMC,IAAI,KAAKC,SAAAA;AACxB;;;;;"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @description
3
3
  * Creates a valid query params object for get requests
4
- * ie. plugins[18n][locale]=en becomes locale=en
4
+ * ie. plugins[i18n][locale]=en becomes locale=en
5
5
  */ const buildValidParams = (query)=>{
6
6
  if (!query) return query;
7
7
  // Extract pluginOptions from the query, they shouldn't be part of the URL
@@ -1 +1 @@
1
- {"version":3,"file":"api.mjs","sources":["../../../admin/src/utils/api.ts"],"sourcesContent":["import { SerializedError } from '@reduxjs/toolkit';\nimport { ApiError, type UnknownApiError } from '@strapi/admin/strapi-admin';\n\ninterface Query {\n plugins?: Record<string, unknown>;\n _q?: string;\n [key: string]: any;\n}\n\n/**\n * This type extracts the plugin options from the query\n * and appends them to the root of the query\n */\ntype TransformedQuery<TQuery extends Query> = Omit<TQuery, 'plugins'> & {\n [key: string]: string;\n};\n\n/**\n * @description\n * Creates a valid query params object for get requests\n * ie. plugins[18n][locale]=en becomes locale=en\n */\nconst buildValidParams = <TQuery extends Query>(query: TQuery): TransformedQuery<TQuery> => {\n if (!query) return query;\n\n // Extract pluginOptions from the query, they shouldn't be part of the URL\n const { plugins: _, ...validQueryParams } = {\n ...query,\n ...Object.values(query?.plugins ?? {}).reduce<Record<string, string>>(\n (acc, current) => Object.assign(acc, current),\n {}\n ),\n };\n\n return validQueryParams;\n};\n\ntype BaseQueryError = ApiError | UnknownApiError;\n\nconst isBaseQueryError = (error: BaseQueryError | SerializedError): error is BaseQueryError => {\n return error.name !== undefined;\n};\n\nexport { isBaseQueryError, buildValidParams };\nexport type { BaseQueryError, UnknownApiError };\n"],"names":["buildValidParams","query","plugins","_","validQueryParams","Object","values","reduce","acc","current","assign","isBaseQueryError","error","name","undefined"],"mappings":"AAiBA;;;;IAKA,MAAMA,mBAAmB,CAAuBC,KAAAA,GAAAA;IAC9C,IAAI,CAACA,OAAO,OAAOA,KAAAA;;AAGnB,IAAA,MAAM,EAAEC,OAASC,EAAAA,CAAC,EAAE,GAAGC,kBAAkB,GAAG;AAC1C,QAAA,GAAGH,KAAK;AACR,QAAA,GAAGI,OAAOC,MAAM,CAACL,OAAOC,OAAW,IAAA,IAAIK,MAAM,CAC3C,CAACC,GAAAA,EAAKC,UAAYJ,MAAOK,CAAAA,MAAM,CAACF,GAAKC,EAAAA,OAAAA,CAAAA,EACrC,EACD;AACH,KAAA;IAEA,OAAOL,gBAAAA;AACT;AAIA,MAAMO,mBAAmB,CAACC,KAAAA,GAAAA;IACxB,OAAOA,KAAAA,CAAMC,IAAI,KAAKC,SAAAA;AACxB;;;;"}
1
+ {"version":3,"file":"api.mjs","sources":["../../../admin/src/utils/api.ts"],"sourcesContent":["import { SerializedError } from '@reduxjs/toolkit';\nimport { ApiError, type UnknownApiError } from '@strapi/admin/strapi-admin';\n\ninterface Query {\n plugins?: Record<string, unknown>;\n _q?: string;\n [key: string]: any;\n}\n\n/**\n * This type extracts the plugin options from the query\n * and appends them to the root of the query\n */\ntype TransformedQuery<TQuery extends Query> = Omit<TQuery, 'plugins'> & {\n [key: string]: string;\n};\n\n/**\n * @description\n * Creates a valid query params object for get requests\n * ie. plugins[i18n][locale]=en becomes locale=en\n */\nconst buildValidParams = <TQuery extends Query>(query: TQuery): TransformedQuery<TQuery> => {\n if (!query) return query;\n\n // Extract pluginOptions from the query, they shouldn't be part of the URL\n const { plugins: _, ...validQueryParams } = {\n ...query,\n ...Object.values(query?.plugins ?? {}).reduce<Record<string, string>>(\n (acc, current) => Object.assign(acc, current),\n {}\n ),\n };\n\n return validQueryParams;\n};\n\ntype BaseQueryError = ApiError | UnknownApiError;\n\nconst isBaseQueryError = (error: BaseQueryError | SerializedError): error is BaseQueryError => {\n return error.name !== undefined;\n};\n\nexport { isBaseQueryError, buildValidParams };\nexport type { BaseQueryError, UnknownApiError };\n"],"names":["buildValidParams","query","plugins","_","validQueryParams","Object","values","reduce","acc","current","assign","isBaseQueryError","error","name","undefined"],"mappings":"AAiBA;;;;IAKA,MAAMA,mBAAmB,CAAuBC,KAAAA,GAAAA;IAC9C,IAAI,CAACA,OAAO,OAAOA,KAAAA;;AAGnB,IAAA,MAAM,EAAEC,OAASC,EAAAA,CAAC,EAAE,GAAGC,kBAAkB,GAAG;AAC1C,QAAA,GAAGH,KAAK;AACR,QAAA,GAAGI,OAAOC,MAAM,CAACL,OAAOC,OAAW,IAAA,IAAIK,MAAM,CAC3C,CAACC,GAAAA,EAAKC,UAAYJ,MAAOK,CAAAA,MAAM,CAACF,GAAKC,EAAAA,OAAAA,CAAAA,EACrC,EACD;AACH,KAAA;IAEA,OAAOL,gBAAAA;AACT;AAIA,MAAMO,mBAAmB,CAACC,KAAAA,GAAAA;IACxB,OAAOA,KAAAA,CAAMC,IAAI,KAAKC,SAAAA;AACxB;;;;"}
@@ -42,15 +42,26 @@ const arrayValidator = (attribute, options)=>({
42
42
  return true;
43
43
  }
44
44
  });
45
+ const escapeRegex = (str)=>str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
45
46
  /**
46
47
  * TODO: should we create a Map to store these based on the hash of the schema?
47
48
  */ const createYupSchema = (attributes$1 = {}, components = {}, options = {
48
49
  status: null
49
50
  })=>{
50
- const createModelSchema = (attributes$1)=>yup__namespace.object().shape(Object.entries(attributes$1).reduce((acc, [name, attribute])=>{
51
+ const createModelSchema = (attributes$1, removedAttributes = [])=>yup__namespace.object().shape(Object.entries(attributes$1).reduce((acc, [name, attribute])=>{
52
+ const getNestedPathsForAttribute = (removed, attrName)=>{
53
+ const prefix = `${attrName}.`;
54
+ const bracketRegex = new RegExp(`^${escapeRegex(attrName)}\\[\\d+\\]\\.`);
55
+ return removed.filter((p)=>p.startsWith(prefix) || bracketRegex.test(p)).map((p)=>p.startsWith(prefix) ? p.slice(prefix.length) : p.replace(bracketRegex, ''));
56
+ };
51
57
  if (attributes.DOCUMENT_META_FIELDS.includes(name)) {
52
58
  return acc;
53
59
  }
60
+ if (removedAttributes?.includes(name)) {
61
+ // If the attribute is not visible, we don't want to validate it
62
+ return acc;
63
+ }
64
+ const nestedRemoved = getNestedPathsForAttribute(removedAttributes, name);
54
65
  /**
55
66
  * These validations won't apply to every attribute
56
67
  * and that's okay, in that case we just return the
@@ -72,12 +83,12 @@ const arrayValidator = (attribute, options)=>({
72
83
  if (attribute.repeatable) {
73
84
  return {
74
85
  ...acc,
75
- [name]: transformSchema(yup__namespace.array().of(createModelSchema(attributes).nullable(false))).test(arrayValidator(attribute, options))
86
+ [name]: transformSchema(yup__namespace.array().of(createModelSchema(attributes, nestedRemoved).nullable(false))).test(arrayValidator(attribute, options))
76
87
  };
77
88
  } else {
78
89
  return {
79
90
  ...acc,
80
- [name]: transformSchema(createModelSchema(attributes).nullable())
91
+ [name]: transformSchema(createModelSchema(attributes, nestedRemoved).nullable())
81
92
  };
82
93
  }
83
94
  }
@@ -92,7 +103,7 @@ const arrayValidator = (attribute, options)=>({
92
103
  if (!attributes) {
93
104
  return validation;
94
105
  }
95
- return validation.concat(createModelSchema(attributes));
106
+ return validation.concat(createModelSchema(attributes, nestedRemoved));
96
107
  }))).test(arrayValidator(attribute, options))
97
108
  };
98
109
  case 'relation':
@@ -126,7 +137,7 @@ const arrayValidator = (attribute, options)=>({
126
137
  }, {}))/**
127
138
  * TODO: investigate why an undefined object fails a check of `nullable`.
128
139
  */ .default(null);
129
- return createModelSchema(attributes$1);
140
+ return createModelSchema(attributes$1, options.removedAttributes);
130
141
  };
131
142
  const createAttributeSchema = (attribute)=>{
132
143
  switch(attribute.type){
@@ -177,6 +188,7 @@ const createAttributeSchema = (attribute)=>{
177
188
  }
178
189
  });
179
190
  case 'password':
191
+ return yup__namespace.string().nullable();
180
192
  case 'richtext':
181
193
  case 'string':
182
194
  case 'text':
@@ -199,7 +211,7 @@ const addNullableValidation = ()=>(schema)=>{
199
211
  return nullableSchema(schema);
200
212
  };
201
213
  const addRequiredValidation = (attribute, options)=>(schema)=>{
202
- if (options.status === 'draft' || !attribute.required) {
214
+ if (options.status === 'draft' || !attribute.required || attribute.type === 'password') {
203
215
  return schema;
204
216
  }
205
217
  if (attribute.required && 'required' in schema) {
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sources":["../../../admin/src/utils/validation.ts"],"sourcesContent":["import { translatedErrors } from '@strapi/admin/strapi-admin';\nimport pipe from 'lodash/fp/pipe';\nimport * as yup from 'yup';\n\nimport { DOCUMENT_META_FIELDS } from '../constants/attributes';\n\nimport type { ComponentsDictionary, Schema } from '../hooks/useDocument';\nimport type { Schema as SchemaUtils } from '@strapi/types';\nimport type { ObjectShape } from 'yup/lib/object';\n\ntype AnySchema =\n | yup.StringSchema\n | yup.NumberSchema\n | yup.BooleanSchema\n | yup.DateSchema\n | yup.ArraySchema<any>\n | yup.ObjectSchema<any>;\n\n/* -------------------------------------------------------------------------------------------------\n * createYupSchema\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ValidationOptions {\n status: 'draft' | 'published' | null;\n}\n\nconst arrayValidator = (attribute: Schema['attributes'][string], options: ValidationOptions) => ({\n message: translatedErrors.required,\n test(value: unknown) {\n if (options.status === 'draft') {\n return true;\n }\n\n if (!attribute.required) {\n return true;\n }\n\n if (!value) {\n return false;\n }\n\n if (Array.isArray(value) && value.length === 0) {\n return false;\n }\n\n return true;\n },\n});\n\n/**\n * TODO: should we create a Map to store these based on the hash of the schema?\n */\nconst createYupSchema = (\n attributes: Schema['attributes'] = {},\n components: ComponentsDictionary = {},\n options: ValidationOptions = { status: null }\n): yup.ObjectSchema<any> => {\n const createModelSchema = (attributes: Schema['attributes']): yup.ObjectSchema<any> =>\n yup\n .object()\n .shape(\n Object.entries(attributes).reduce<ObjectShape>((acc, [name, attribute]) => {\n if (DOCUMENT_META_FIELDS.includes(name)) {\n return acc;\n }\n\n /**\n * These validations won't apply to every attribute\n * and that's okay, in that case we just return the\n * schema as it was passed.\n */\n const validations = [\n addNullableValidation,\n addRequiredValidation,\n addMinLengthValidation,\n addMaxLengthValidation,\n addMinValidation,\n addMaxValidation,\n addRegexValidation,\n ].map((fn) => fn(attribute, options));\n\n const transformSchema = pipe(...validations);\n\n switch (attribute.type) {\n case 'component': {\n const { attributes } = components[attribute.component];\n\n if (attribute.repeatable) {\n return {\n ...acc,\n [name]: transformSchema(\n yup.array().of(createModelSchema(attributes).nullable(false))\n ).test(arrayValidator(attribute, options)),\n };\n } else {\n return {\n ...acc,\n [name]: transformSchema(createModelSchema(attributes).nullable()),\n };\n }\n }\n case 'dynamiczone':\n return {\n ...acc,\n [name]: transformSchema(\n yup.array().of(\n yup.lazy(\n (\n data: SchemaUtils.Attribute.Value<SchemaUtils.Attribute.DynamicZone>[number]\n ) => {\n const attributes = components?.[data?.__component]?.attributes;\n\n const validation = yup\n .object()\n .shape({\n __component: yup.string().required().oneOf(Object.keys(components)),\n })\n .nullable(false);\n if (!attributes) {\n return validation;\n }\n\n return validation.concat(createModelSchema(attributes));\n }\n ) as unknown as yup.ObjectSchema<any>\n )\n ).test(arrayValidator(attribute, options)),\n };\n case 'relation':\n return {\n ...acc,\n [name]: transformSchema(\n yup.lazy((value) => {\n if (!value) {\n return yup.mixed().nullable(true);\n } else if (Array.isArray(value)) {\n // If a relation value is an array, we expect\n // an array of objects with {id} properties, representing the related entities.\n return yup.array().of(\n yup.object().shape({\n id: yup.number().required(),\n })\n );\n } else if (typeof value === 'object') {\n // A realtion value can also be an object. Some API\n // repsonses return the number of entities in the relation\n // as { count: x }\n return yup.object();\n } else {\n return yup\n .mixed()\n .test(\n 'type-error',\n 'Relation values must be either null, an array of objects with {id} or an object.',\n () => false\n );\n }\n })\n ),\n };\n default:\n return {\n ...acc,\n [name]: transformSchema(createAttributeSchema(attribute)),\n };\n }\n }, {})\n )\n /**\n * TODO: investigate why an undefined object fails a check of `nullable`.\n */\n .default(null);\n\n return createModelSchema(attributes);\n};\n\nconst createAttributeSchema = (\n attribute: Exclude<\n SchemaUtils.Attribute.AnyAttribute,\n { type: 'dynamiczone' } | { type: 'component' } | { type: 'relation' }\n >\n) => {\n switch (attribute.type) {\n case 'biginteger':\n return yup.string().matches(/^-?\\d*$/);\n case 'boolean':\n return yup.boolean();\n case 'blocks':\n return yup.mixed().test('isBlocks', translatedErrors.json, (value) => {\n if (!value || Array.isArray(value)) {\n return true;\n } else {\n return false;\n }\n });\n case 'decimal':\n case 'float':\n case 'integer':\n return yup.number();\n case 'email':\n return yup.string().email(translatedErrors.email);\n case 'enumeration':\n return yup.string().oneOf([...attribute.enum, null]);\n case 'json':\n return yup.mixed().test('isJSON', translatedErrors.json, (value) => {\n /**\n * We don't want to validate the JSON field if it's empty.\n */\n if (!value || (typeof value === 'string' && value.length === 0)) {\n return true;\n }\n\n // If the value was created via content API and wasn't changed, then it's still an object\n if (typeof value === 'object') {\n try {\n JSON.stringify(value);\n return true;\n } catch (err) {\n return false;\n }\n }\n\n try {\n JSON.parse(value);\n\n return true;\n } catch (err) {\n return false;\n }\n });\n case 'password':\n case 'richtext':\n case 'string':\n case 'text':\n return yup.string();\n case 'uid':\n return yup\n .string()\n .matches(attribute.regex ? new RegExp(attribute.regex) : /^[A-Za-z0-9-_.~]*$/);\n default:\n /**\n * This allows any value.\n */\n return yup.mixed();\n }\n};\n\n// Helper function to return schema.nullable() if it exists, otherwise return schema\nconst nullableSchema = <TSchema extends AnySchema>(schema: TSchema) => {\n return schema?.nullable\n ? schema.nullable()\n : // In some cases '.nullable' will not be available on the schema.\n // e.g. when the schema has been built using yup.lazy (e.g. for relations).\n // In these cases we should just return the schema as it is.\n schema;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Validators\n * -----------------------------------------------------------------------------------------------*/\n/**\n * Our validator functions can be preped with the\n * attribute and then have the schema piped through them.\n */\ntype ValidationFn = (\n attribute: Schema['attributes'][string],\n options: ValidationOptions\n) => <TSchema extends AnySchema>(schema: TSchema) => TSchema;\n\nconst addNullableValidation: ValidationFn = () => (schema) => {\n return nullableSchema(schema);\n};\n\nconst addRequiredValidation: ValidationFn = (attribute, options) => (schema) => {\n if (options.status === 'draft' || !attribute.required) {\n return schema;\n }\n\n if (attribute.required && 'required' in schema) {\n return schema.required(translatedErrors.required);\n }\n\n return schema;\n};\n\nconst addMinLengthValidation: ValidationFn =\n (attribute, options) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n // Skip minLength validation for draft\n if (options.status === 'draft') {\n return schema;\n }\n\n if (\n 'minLength' in attribute &&\n attribute.minLength &&\n Number.isInteger(attribute.minLength) &&\n 'min' in schema\n ) {\n return schema.min(attribute.minLength, {\n ...translatedErrors.minLength,\n values: {\n min: attribute.minLength,\n },\n }) as TSchema;\n }\n\n return schema;\n };\n\nconst addMaxLengthValidation: ValidationFn =\n (attribute) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n if (\n 'maxLength' in attribute &&\n attribute.maxLength &&\n Number.isInteger(attribute.maxLength) &&\n 'max' in schema\n ) {\n return schema.max(attribute.maxLength, {\n ...translatedErrors.maxLength,\n values: {\n max: attribute.maxLength,\n },\n }) as TSchema;\n }\n\n return schema;\n };\n\nconst addMinValidation: ValidationFn =\n (attribute, options) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n // do not validate min for draft\n if (options.status === 'draft') {\n return schema;\n }\n\n if ('min' in attribute && 'min' in schema) {\n const min = toInteger(attribute.min);\n\n if (min) {\n return schema.min(min, {\n ...translatedErrors.min,\n values: {\n min,\n },\n }) as TSchema;\n }\n }\n\n return schema;\n };\n\nconst addMaxValidation: ValidationFn =\n (attribute) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n if ('max' in attribute) {\n const max = toInteger(attribute.max);\n\n if ('max' in schema && max) {\n return schema.max(max, {\n ...translatedErrors.max,\n values: {\n max,\n },\n }) as TSchema;\n }\n }\n\n return schema;\n };\n\nconst toInteger = (val?: string | number): number | undefined => {\n if (typeof val === 'number' || val === undefined) {\n return val;\n } else {\n const num = Number(val);\n return isNaN(num) ? undefined : num;\n }\n};\n\nconst addRegexValidation: ValidationFn =\n (attribute) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n if ('regex' in attribute && attribute.regex && 'matches' in schema) {\n return schema.matches(new RegExp(attribute.regex), {\n message: {\n id: translatedErrors.regex.id,\n defaultMessage: 'The value does not match the defined pattern.',\n },\n\n excludeEmptyString: !attribute.required,\n }) as TSchema;\n }\n\n return schema;\n };\n\nexport { createYupSchema };\n"],"names":["arrayValidator","attribute","options","message","translatedErrors","required","test","value","status","Array","isArray","length","createYupSchema","attributes","components","createModelSchema","yup","object","shape","Object","entries","reduce","acc","name","DOCUMENT_META_FIELDS","includes","validations","addNullableValidation","addRequiredValidation","addMinLengthValidation","addMaxLengthValidation","addMinValidation","addMaxValidation","addRegexValidation","map","fn","transformSchema","pipe","type","component","repeatable","array","of","nullable","lazy","data","__component","validation","string","oneOf","keys","concat","mixed","id","number","createAttributeSchema","default","matches","boolean","json","email","enum","JSON","stringify","err","parse","regex","RegExp","nullableSchema","schema","minLength","Number","isInteger","min","values","maxLength","max","toInteger","val","undefined","num","isNaN","defaultMessage","excludeEmptyString"],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sources":["../../../admin/src/utils/validation.ts"],"sourcesContent":["import { translatedErrors } from '@strapi/admin/strapi-admin';\nimport pipe from 'lodash/fp/pipe';\nimport * as yup from 'yup';\n\nimport { DOCUMENT_META_FIELDS } from '../constants/attributes';\n\nimport type { ComponentsDictionary, Schema } from '../hooks/useDocument';\nimport type { Schema as SchemaUtils } from '@strapi/types';\nimport type { ObjectShape } from 'yup/lib/object';\n\ntype AnySchema =\n | yup.StringSchema\n | yup.NumberSchema\n | yup.BooleanSchema\n | yup.DateSchema\n | yup.ArraySchema<any>\n | yup.ObjectSchema<any>;\n\n/* -------------------------------------------------------------------------------------------------\n * createYupSchema\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ValidationOptions {\n status: 'draft' | 'published' | null;\n removedAttributes?: string[];\n}\n\nconst arrayValidator = (attribute: Schema['attributes'][string], options: ValidationOptions) => ({\n message: translatedErrors.required,\n test(value: unknown) {\n if (options.status === 'draft') {\n return true;\n }\n\n if (!attribute.required) {\n return true;\n }\n\n if (!value) {\n return false;\n }\n\n if (Array.isArray(value) && value.length === 0) {\n return false;\n }\n\n return true;\n },\n});\nconst escapeRegex = (str: string) => str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n/**\n * TODO: should we create a Map to store these based on the hash of the schema?\n */\nconst createYupSchema = (\n attributes: Schema['attributes'] = {},\n components: ComponentsDictionary = {},\n options: ValidationOptions = { status: null }\n): yup.ObjectSchema<any> => {\n const createModelSchema = (\n attributes: Schema['attributes'],\n removedAttributes: string[] = []\n ): yup.ObjectSchema<any> =>\n yup\n .object()\n .shape(\n Object.entries(attributes).reduce<ObjectShape>((acc, [name, attribute]) => {\n const getNestedPathsForAttribute = (removed: string[], attrName: string): string[] => {\n const prefix = `${attrName}.`;\n const bracketRegex = new RegExp(`^${escapeRegex(attrName)}\\\\[\\\\d+\\\\]\\\\.`);\n\n return removed\n .filter((p) => p.startsWith(prefix) || bracketRegex.test(p))\n .map((p) =>\n p.startsWith(prefix) ? p.slice(prefix.length) : p.replace(bracketRegex, '')\n );\n };\n\n if (DOCUMENT_META_FIELDS.includes(name)) {\n return acc;\n }\n\n if (removedAttributes?.includes(name)) {\n // If the attribute is not visible, we don't want to validate it\n return acc;\n }\n\n const nestedRemoved = getNestedPathsForAttribute(removedAttributes, name);\n\n /**\n * These validations won't apply to every attribute\n * and that's okay, in that case we just return the\n * schema as it was passed.\n */\n const validations = [\n addNullableValidation,\n addRequiredValidation,\n addMinLengthValidation,\n addMaxLengthValidation,\n addMinValidation,\n addMaxValidation,\n addRegexValidation,\n ].map((fn) => fn(attribute, options));\n\n const transformSchema = pipe(...validations);\n\n switch (attribute.type) {\n case 'component': {\n const { attributes } = components[attribute.component];\n\n if (attribute.repeatable) {\n return {\n ...acc,\n [name]: transformSchema(\n yup.array().of(createModelSchema(attributes, nestedRemoved).nullable(false))\n ).test(arrayValidator(attribute, options)),\n };\n } else {\n return {\n ...acc,\n [name]: transformSchema(createModelSchema(attributes, nestedRemoved).nullable()),\n };\n }\n }\n case 'dynamiczone':\n return {\n ...acc,\n [name]: transformSchema(\n yup.array().of(\n yup.lazy(\n (\n data: SchemaUtils.Attribute.Value<SchemaUtils.Attribute.DynamicZone>[number]\n ) => {\n const attributes = components?.[data?.__component]?.attributes;\n\n const validation = yup\n .object()\n .shape({\n __component: yup.string().required().oneOf(Object.keys(components)),\n })\n .nullable(false);\n if (!attributes) {\n return validation;\n }\n\n return validation.concat(createModelSchema(attributes, nestedRemoved));\n }\n ) as unknown as yup.ObjectSchema<any>\n )\n ).test(arrayValidator(attribute, options)),\n };\n case 'relation':\n return {\n ...acc,\n [name]: transformSchema(\n yup.lazy((value) => {\n if (!value) {\n return yup.mixed().nullable(true);\n } else if (Array.isArray(value)) {\n // If a relation value is an array, we expect\n // an array of objects with {id} properties, representing the related entities.\n return yup.array().of(\n yup.object().shape({\n id: yup.number().required(),\n })\n );\n } else if (typeof value === 'object') {\n // A realtion value can also be an object. Some API\n // repsonses return the number of entities in the relation\n // as { count: x }\n return yup.object();\n } else {\n return yup\n .mixed()\n .test(\n 'type-error',\n 'Relation values must be either null, an array of objects with {id} or an object.',\n () => false\n );\n }\n })\n ),\n };\n default:\n return {\n ...acc,\n [name]: transformSchema(createAttributeSchema(attribute)),\n };\n }\n }, {})\n )\n /**\n * TODO: investigate why an undefined object fails a check of `nullable`.\n */\n .default(null);\n\n return createModelSchema(attributes, options.removedAttributes);\n};\n\nconst createAttributeSchema = (\n attribute: Exclude<\n SchemaUtils.Attribute.AnyAttribute,\n { type: 'dynamiczone' } | { type: 'component' } | { type: 'relation' }\n >\n) => {\n switch (attribute.type) {\n case 'biginteger':\n return yup.string().matches(/^-?\\d*$/);\n case 'boolean':\n return yup.boolean();\n case 'blocks':\n return yup.mixed().test('isBlocks', translatedErrors.json, (value) => {\n if (!value || Array.isArray(value)) {\n return true;\n } else {\n return false;\n }\n });\n case 'decimal':\n case 'float':\n case 'integer':\n return yup.number();\n case 'email':\n return yup.string().email(translatedErrors.email);\n case 'enumeration':\n return yup.string().oneOf([...attribute.enum, null]);\n case 'json':\n return yup.mixed().test('isJSON', translatedErrors.json, (value) => {\n /**\n * We don't want to validate the JSON field if it's empty.\n */\n if (!value || (typeof value === 'string' && value.length === 0)) {\n return true;\n }\n\n // If the value was created via content API and wasn't changed, then it's still an object\n if (typeof value === 'object') {\n try {\n JSON.stringify(value);\n return true;\n } catch (err) {\n return false;\n }\n }\n\n try {\n JSON.parse(value);\n\n return true;\n } catch (err) {\n return false;\n }\n });\n case 'password':\n return yup.string().nullable();\n case 'richtext':\n case 'string':\n case 'text':\n return yup.string();\n case 'uid':\n return yup\n .string()\n .matches(attribute.regex ? new RegExp(attribute.regex) : /^[A-Za-z0-9-_.~]*$/);\n default:\n /**\n * This allows any value.\n */\n return yup.mixed();\n }\n};\n\n// Helper function to return schema.nullable() if it exists, otherwise return schema\nconst nullableSchema = <TSchema extends AnySchema>(schema: TSchema) => {\n return schema?.nullable\n ? schema.nullable()\n : // In some cases '.nullable' will not be available on the schema.\n // e.g. when the schema has been built using yup.lazy (e.g. for relations).\n // In these cases we should just return the schema as it is.\n schema;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Validators\n * -----------------------------------------------------------------------------------------------*/\n/**\n * Our validator functions can be preped with the\n * attribute and then have the schema piped through them.\n */\ntype ValidationFn = (\n attribute: Schema['attributes'][string],\n options: ValidationOptions\n) => <TSchema extends AnySchema>(schema: TSchema) => TSchema;\n\nconst addNullableValidation: ValidationFn = () => (schema) => {\n return nullableSchema(schema);\n};\n\nconst addRequiredValidation: ValidationFn = (attribute, options) => (schema) => {\n if (options.status === 'draft' || !attribute.required || attribute.type === 'password') {\n return schema;\n }\n\n if (attribute.required && 'required' in schema) {\n return schema.required(translatedErrors.required);\n }\n\n return schema;\n};\n\nconst addMinLengthValidation: ValidationFn =\n (attribute, options) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n // Skip minLength validation for draft\n if (options.status === 'draft') {\n return schema;\n }\n\n if (\n 'minLength' in attribute &&\n attribute.minLength &&\n Number.isInteger(attribute.minLength) &&\n 'min' in schema\n ) {\n return schema.min(attribute.minLength, {\n ...translatedErrors.minLength,\n values: {\n min: attribute.minLength,\n },\n }) as TSchema;\n }\n\n return schema;\n };\n\nconst addMaxLengthValidation: ValidationFn =\n (attribute) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n if (\n 'maxLength' in attribute &&\n attribute.maxLength &&\n Number.isInteger(attribute.maxLength) &&\n 'max' in schema\n ) {\n return schema.max(attribute.maxLength, {\n ...translatedErrors.maxLength,\n values: {\n max: attribute.maxLength,\n },\n }) as TSchema;\n }\n\n return schema;\n };\n\nconst addMinValidation: ValidationFn =\n (attribute, options) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n // do not validate min for draft\n if (options.status === 'draft') {\n return schema;\n }\n\n if ('min' in attribute && 'min' in schema) {\n const min = toInteger(attribute.min);\n\n if (min) {\n return schema.min(min, {\n ...translatedErrors.min,\n values: {\n min,\n },\n }) as TSchema;\n }\n }\n\n return schema;\n };\n\nconst addMaxValidation: ValidationFn =\n (attribute) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n if ('max' in attribute) {\n const max = toInteger(attribute.max);\n\n if ('max' in schema && max) {\n return schema.max(max, {\n ...translatedErrors.max,\n values: {\n max,\n },\n }) as TSchema;\n }\n }\n\n return schema;\n };\n\nconst toInteger = (val?: string | number): number | undefined => {\n if (typeof val === 'number' || val === undefined) {\n return val;\n } else {\n const num = Number(val);\n return isNaN(num) ? undefined : num;\n }\n};\n\nconst addRegexValidation: ValidationFn =\n (attribute) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n if ('regex' in attribute && attribute.regex && 'matches' in schema) {\n return schema.matches(new RegExp(attribute.regex), {\n message: {\n id: translatedErrors.regex.id,\n defaultMessage: 'The value does not match the defined pattern.',\n },\n\n excludeEmptyString: !attribute.required,\n }) as TSchema;\n }\n\n return schema;\n };\n\nexport { createYupSchema };\n"],"names":["arrayValidator","attribute","options","message","translatedErrors","required","test","value","status","Array","isArray","length","escapeRegex","str","replace","createYupSchema","attributes","components","createModelSchema","removedAttributes","yup","object","shape","Object","entries","reduce","acc","name","getNestedPathsForAttribute","removed","attrName","prefix","bracketRegex","RegExp","filter","p","startsWith","map","slice","DOCUMENT_META_FIELDS","includes","nestedRemoved","validations","addNullableValidation","addRequiredValidation","addMinLengthValidation","addMaxLengthValidation","addMinValidation","addMaxValidation","addRegexValidation","fn","transformSchema","pipe","type","component","repeatable","array","of","nullable","lazy","data","__component","validation","string","oneOf","keys","concat","mixed","id","number","createAttributeSchema","default","matches","boolean","json","email","enum","JSON","stringify","err","parse","regex","nullableSchema","schema","minLength","Number","isInteger","min","values","maxLength","max","toInteger","val","undefined","num","isNaN","defaultMessage","excludeEmptyString"],"mappings":"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"}
@@ -21,15 +21,26 @@ const arrayValidator = (attribute, options)=>({
21
21
  return true;
22
22
  }
23
23
  });
24
+ const escapeRegex = (str)=>str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
24
25
  /**
25
26
  * TODO: should we create a Map to store these based on the hash of the schema?
26
27
  */ const createYupSchema = (attributes = {}, components = {}, options = {
27
28
  status: null
28
29
  })=>{
29
- const createModelSchema = (attributes)=>yup.object().shape(Object.entries(attributes).reduce((acc, [name, attribute])=>{
30
+ const createModelSchema = (attributes, removedAttributes = [])=>yup.object().shape(Object.entries(attributes).reduce((acc, [name, attribute])=>{
31
+ const getNestedPathsForAttribute = (removed, attrName)=>{
32
+ const prefix = `${attrName}.`;
33
+ const bracketRegex = new RegExp(`^${escapeRegex(attrName)}\\[\\d+\\]\\.`);
34
+ return removed.filter((p)=>p.startsWith(prefix) || bracketRegex.test(p)).map((p)=>p.startsWith(prefix) ? p.slice(prefix.length) : p.replace(bracketRegex, ''));
35
+ };
30
36
  if (DOCUMENT_META_FIELDS.includes(name)) {
31
37
  return acc;
32
38
  }
39
+ if (removedAttributes?.includes(name)) {
40
+ // If the attribute is not visible, we don't want to validate it
41
+ return acc;
42
+ }
43
+ const nestedRemoved = getNestedPathsForAttribute(removedAttributes, name);
33
44
  /**
34
45
  * These validations won't apply to every attribute
35
46
  * and that's okay, in that case we just return the
@@ -51,12 +62,12 @@ const arrayValidator = (attribute, options)=>({
51
62
  if (attribute.repeatable) {
52
63
  return {
53
64
  ...acc,
54
- [name]: transformSchema(yup.array().of(createModelSchema(attributes).nullable(false))).test(arrayValidator(attribute, options))
65
+ [name]: transformSchema(yup.array().of(createModelSchema(attributes, nestedRemoved).nullable(false))).test(arrayValidator(attribute, options))
55
66
  };
56
67
  } else {
57
68
  return {
58
69
  ...acc,
59
- [name]: transformSchema(createModelSchema(attributes).nullable())
70
+ [name]: transformSchema(createModelSchema(attributes, nestedRemoved).nullable())
60
71
  };
61
72
  }
62
73
  }
@@ -71,7 +82,7 @@ const arrayValidator = (attribute, options)=>({
71
82
  if (!attributes) {
72
83
  return validation;
73
84
  }
74
- return validation.concat(createModelSchema(attributes));
85
+ return validation.concat(createModelSchema(attributes, nestedRemoved));
75
86
  }))).test(arrayValidator(attribute, options))
76
87
  };
77
88
  case 'relation':
@@ -105,7 +116,7 @@ const arrayValidator = (attribute, options)=>({
105
116
  }, {}))/**
106
117
  * TODO: investigate why an undefined object fails a check of `nullable`.
107
118
  */ .default(null);
108
- return createModelSchema(attributes);
119
+ return createModelSchema(attributes, options.removedAttributes);
109
120
  };
110
121
  const createAttributeSchema = (attribute)=>{
111
122
  switch(attribute.type){
@@ -156,6 +167,7 @@ const createAttributeSchema = (attribute)=>{
156
167
  }
157
168
  });
158
169
  case 'password':
170
+ return yup.string().nullable();
159
171
  case 'richtext':
160
172
  case 'string':
161
173
  case 'text':
@@ -178,7 +190,7 @@ const addNullableValidation = ()=>(schema)=>{
178
190
  return nullableSchema(schema);
179
191
  };
180
192
  const addRequiredValidation = (attribute, options)=>(schema)=>{
181
- if (options.status === 'draft' || !attribute.required) {
193
+ if (options.status === 'draft' || !attribute.required || attribute.type === 'password') {
182
194
  return schema;
183
195
  }
184
196
  if (attribute.required && 'required' in schema) {