@strapi/content-manager 0.0.0-experimental.33dcb1d961027c44bf6dd839be1e557b39a57133 → 0.0.0-experimental.33e7800dc9389f78c5b00f5962ebc395c1acef77
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/ComponentIcon.js +3 -0
- package/dist/admin/components/ComponentIcon.js.map +1 -1
- package/dist/admin/components/ComponentIcon.mjs +3 -0
- package/dist/admin/components/ComponentIcon.mjs.map +1 -1
- package/dist/admin/components/ConfigurationForm/EditFieldForm.js +4 -2
- package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs +4 -2
- package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.js +306 -205
- package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.mjs +311 -211
- package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
- package/dist/admin/components/ConfigurationForm/Form.js +2 -2
- package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Form.mjs +4 -4
- package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
- package/dist/admin/components/DragPreviews/CardDragPreview.js +3 -1
- package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
- package/dist/admin/components/DragPreviews/CardDragPreview.mjs +3 -1
- package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
- package/dist/admin/components/DragPreviews/ComponentDragPreview.js +3 -1
- package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
- package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs +3 -1
- package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
- package/dist/admin/components/DragPreviews/RelationDragPreview.js +3 -1
- package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
- package/dist/admin/components/DragPreviews/RelationDragPreview.mjs +3 -1
- package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
- package/dist/admin/components/LeftMenu.js +91 -51
- package/dist/admin/components/LeftMenu.js.map +1 -1
- package/dist/admin/components/LeftMenu.mjs +93 -53
- package/dist/admin/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/components/RelativeTime.js.map +1 -1
- package/dist/admin/components/RelativeTime.mjs.map +1 -1
- package/dist/admin/components/Widgets.js +287 -11
- package/dist/admin/components/Widgets.js.map +1 -1
- package/dist/admin/components/Widgets.mjs +270 -14
- package/dist/admin/components/Widgets.mjs.map +1 -1
- package/dist/admin/content-manager.js.map +1 -1
- package/dist/admin/content-manager.mjs.map +1 -1
- package/dist/admin/history/components/HistoryAction.js.map +1 -1
- package/dist/admin/history/components/HistoryAction.mjs.map +1 -1
- package/dist/admin/history/components/VersionContent.js +24 -6
- package/dist/admin/history/components/VersionContent.js.map +1 -1
- package/dist/admin/history/components/VersionContent.mjs +25 -7
- package/dist/admin/history/components/VersionContent.mjs.map +1 -1
- package/dist/admin/history/components/VersionHeader.js +7 -0
- package/dist/admin/history/components/VersionHeader.js.map +1 -1
- package/dist/admin/history/components/VersionHeader.mjs +8 -1
- package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
- package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
- package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
- package/dist/admin/history/components/VersionsList.js +1 -1
- package/dist/admin/history/components/VersionsList.js.map +1 -1
- package/dist/admin/history/components/VersionsList.mjs +1 -1
- package/dist/admin/history/components/VersionsList.mjs.map +1 -1
- package/dist/admin/history/pages/History.js +7 -7
- package/dist/admin/history/pages/History.js.map +1 -1
- package/dist/admin/history/pages/History.mjs +7 -7
- package/dist/admin/history/pages/History.mjs.map +1 -1
- package/dist/admin/history/services/historyVersion.js.map +1 -1
- package/dist/admin/history/services/historyVersion.mjs.map +1 -1
- package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
- package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentActions.js +35 -11
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.mjs +36 -12
- package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentContext.js.map +1 -1
- package/dist/admin/hooks/useDocumentContext.mjs.map +1 -1
- package/dist/admin/index.js +48 -11
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +47 -9
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/layout.js +28 -33
- package/dist/admin/layout.js.map +1 -1
- package/dist/admin/layout.mjs +29 -15
- package/dist/admin/layout.mjs.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +98 -77
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +100 -79
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Blocker.js +18 -0
- package/dist/admin/pages/EditView/components/Blocker.js.map +1 -0
- package/dist/admin/pages/EditView/components/Blocker.mjs +16 -0
- package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -0
- package/dist/admin/pages/EditView/components/DocumentActions.js +315 -94
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +319 -98
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +66 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +66 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +54 -14
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +55 -15
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js +7 -3
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs +7 -3
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +12 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +13 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +17 -3
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +18 -4
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +1 -2
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +1 -2
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +22 -9
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +24 -11
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +130 -55
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +130 -55
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +126 -34
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +130 -38
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.js +6 -3
- package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +6 -3
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.js +59 -34
- package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.mjs +60 -34
- package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Header.js +92 -27
- package/dist/admin/pages/EditView/components/Header.js.map +1 -1
- package/dist/admin/pages/EditView/components/Header.mjs +94 -29
- package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.js +39 -24
- package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.mjs +39 -24
- package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
- package/dist/admin/pages/EditView/utils/data.js +211 -0
- package/dist/admin/pages/EditView/utils/data.js.map +1 -1
- package/dist/admin/pages/EditView/utils/data.mjs +211 -1
- package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +1 -0
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -0
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js +1 -1
- package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs +1 -1
- package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/Header.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/Header.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/Settings.js +1 -1
- package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/Settings.mjs +1 -1
- package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +219 -203
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +220 -204
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
- package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/Actions.js +6 -16
- package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs +6 -16
- package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +20 -32
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +21 -33
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +13 -3
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +13 -3
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.js +8 -2
- package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.mjs +8 -2
- package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableActions.js +13 -3
- package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
- package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.js +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Media.js +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Media.mjs +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.js +8 -4
- package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.mjs +8 -4
- package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +5 -2
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +5 -2
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
- package/dist/admin/preview/components/InputPopover.js +189 -0
- package/dist/admin/preview/components/InputPopover.js.map +1 -0
- package/dist/admin/preview/components/InputPopover.mjs +167 -0
- package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
- package/dist/admin/preview/components/PreviewHeader.js +0 -1
- package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
- package/dist/admin/preview/components/PreviewHeader.mjs +0 -1
- package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
- package/dist/admin/preview/components/PreviewSidePanel.js +31 -4
- package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
- package/dist/admin/preview/components/PreviewSidePanel.mjs +32 -5
- package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
- package/dist/admin/preview/hooks/usePreviewInputManager.js +77 -0
- package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
- package/dist/admin/preview/hooks/usePreviewInputManager.mjs +56 -0
- package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
- package/dist/admin/preview/pages/Preview.js +178 -74
- package/dist/admin/preview/pages/Preview.js.map +1 -1
- package/dist/admin/preview/pages/Preview.mjs +180 -76
- package/dist/admin/preview/pages/Preview.mjs.map +1 -1
- package/dist/admin/preview/services/preview.js.map +1 -1
- package/dist/admin/preview/services/preview.mjs.map +1 -1
- package/dist/admin/preview/utils/constants.js +56 -0
- package/dist/admin/preview/utils/constants.js.map +1 -0
- package/dist/admin/preview/utils/constants.mjs +52 -0
- package/dist/admin/preview/utils/constants.mjs.map +1 -0
- package/dist/admin/preview/utils/fieldUtils.js +107 -0
- package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
- package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
- package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
- package/dist/admin/preview/utils/getSendMessage.js +22 -0
- package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
- package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
- package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
- package/dist/admin/preview/utils/previewScript.js +534 -0
- package/dist/admin/preview/utils/previewScript.js.map +1 -0
- package/dist/admin/preview/utils/previewScript.mjs +532 -0
- package/dist/admin/preview/utils/previewScript.mjs.map +1 -0
- package/dist/admin/router.js.map +1 -1
- package/dist/admin/router.mjs.map +1 -1
- package/dist/admin/services/api.js +5 -1
- package/dist/admin/services/api.js.map +1 -1
- package/dist/admin/services/api.mjs +5 -1
- package/dist/admin/services/api.mjs.map +1 -1
- package/dist/admin/services/documents.js +59 -17
- package/dist/admin/services/documents.js.map +1 -1
- package/dist/admin/services/documents.mjs +59 -17
- package/dist/admin/services/documents.mjs.map +1 -1
- package/dist/admin/services/homepage.js +9 -5
- package/dist/admin/services/homepage.js.map +1 -1
- package/dist/admin/services/homepage.mjs +9 -5
- package/dist/admin/services/homepage.mjs.map +1 -1
- package/dist/admin/services/relations.js.map +1 -1
- package/dist/admin/services/relations.mjs.map +1 -1
- package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
- package/dist/admin/src/components/LeftMenu.d.ts +3 -1
- package/dist/admin/src/components/Widgets.d.ts +8 -3
- package/dist/admin/src/exports.d.ts +1 -0
- package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
- package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
- package/dist/admin/src/hooks/useDocumentContext.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/Blocker.d.ts +5 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +2 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +26 -5
- package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -11
- package/dist/admin/src/pages/EditView/components/Header.d.ts +15 -0
- package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
- package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
- package/dist/admin/src/pages/ListView/components/TableCells/Relations.d.ts +0 -3
- package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
- package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +5 -0
- package/dist/admin/src/preview/pages/Preview.d.ts +12 -0
- package/dist/admin/src/preview/services/preview.d.ts +1 -1
- package/dist/admin/src/preview/utils/constants.d.ts +55 -0
- package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
- package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
- package/dist/admin/src/preview/utils/previewScript.d.ts +24 -0
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/components.d.ts +2 -2
- package/dist/admin/src/services/contentTypes.d.ts +3 -3
- package/dist/admin/src/services/documents.d.ts +23 -17
- package/dist/admin/src/services/homepage.d.ts +1 -1
- package/dist/admin/src/services/init.d.ts +1 -1
- package/dist/admin/src/services/relations.d.ts +2 -2
- package/dist/admin/src/services/uid.d.ts +3 -3
- package/dist/admin/src/utils/api.d.ts +1 -1
- package/dist/admin/src/utils/validation.d.ts +1 -0
- package/dist/admin/translations/en.json.js +15 -1
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +15 -1
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +6 -2
- package/dist/admin/translations/es.json.js.map +1 -1
- package/dist/admin/translations/es.json.mjs +6 -2
- package/dist/admin/translations/es.json.mjs.map +1 -1
- package/dist/admin/translations/fr.json.js +12 -3
- package/dist/admin/translations/fr.json.js.map +1 -1
- package/dist/admin/translations/fr.json.mjs +12 -3
- package/dist/admin/translations/fr.json.mjs.map +1 -1
- package/dist/admin/translations/ru.json.js +235 -226
- package/dist/admin/translations/ru.json.js.map +1 -1
- package/dist/admin/translations/ru.json.mjs +230 -226
- package/dist/admin/translations/ru.json.mjs.map +1 -1
- package/dist/admin/utils/api.js +1 -1
- package/dist/admin/utils/api.js.map +1 -1
- package/dist/admin/utils/api.mjs +1 -1
- package/dist/admin/utils/api.mjs.map +1 -1
- package/dist/admin/utils/translations.js.map +1 -1
- package/dist/admin/utils/translations.mjs.map +1 -1
- package/dist/admin/utils/urls.js.map +1 -1
- package/dist/admin/utils/urls.mjs.map +1 -1
- package/dist/admin/utils/users.js.map +1 -1
- package/dist/admin/utils/users.mjs.map +1 -1
- package/dist/admin/utils/validation.js +19 -7
- package/dist/admin/utils/validation.js.map +1 -1
- package/dist/admin/utils/validation.mjs +19 -7
- package/dist/admin/utils/validation.mjs.map +1 -1
- package/dist/server/controllers/collection-types.js +2 -1
- package/dist/server/controllers/collection-types.js.map +1 -1
- package/dist/server/controllers/collection-types.mjs +2 -1
- package/dist/server/controllers/collection-types.mjs.map +1 -1
- package/dist/server/controllers/content-types.js +11 -1
- package/dist/server/controllers/content-types.js.map +1 -1
- package/dist/server/controllers/content-types.mjs +11 -1
- package/dist/server/controllers/content-types.mjs.map +1 -1
- package/dist/server/controllers/index.js +3 -1
- package/dist/server/controllers/index.js.map +1 -1
- package/dist/server/controllers/index.mjs +3 -1
- package/dist/server/controllers/index.mjs.map +1 -1
- package/dist/server/controllers/relations.js +8 -6
- package/dist/server/controllers/relations.js.map +1 -1
- package/dist/server/controllers/relations.mjs +8 -6
- package/dist/server/controllers/relations.mjs.map +1 -1
- package/dist/server/controllers/single-types.js +3 -1
- package/dist/server/controllers/single-types.js.map +1 -1
- package/dist/server/controllers/single-types.mjs +3 -1
- package/dist/server/controllers/single-types.mjs.map +1 -1
- package/dist/server/controllers/validation/dimensions.js.map +1 -1
- package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
- package/dist/server/controllers/validation/index.js +14 -2
- package/dist/server/controllers/validation/index.js.map +1 -1
- package/dist/server/controllers/validation/index.mjs +14 -2
- package/dist/server/controllers/validation/index.mjs.map +1 -1
- package/dist/server/controllers/validation/model-configuration.js +2 -2
- package/dist/server/controllers/validation/model-configuration.js.map +1 -1
- package/dist/server/controllers/validation/model-configuration.mjs +2 -2
- package/dist/server/controllers/validation/model-configuration.mjs.map +1 -1
- package/dist/server/history/services/lifecycles.js +23 -19
- package/dist/server/history/services/lifecycles.js.map +1 -1
- package/dist/server/history/services/lifecycles.mjs +23 -19
- package/dist/server/history/services/lifecycles.mjs.map +1 -1
- package/dist/server/history/utils.js.map +1 -1
- package/dist/server/history/utils.mjs.map +1 -1
- package/dist/server/homepage/controllers/homepage.js +62 -0
- package/dist/server/homepage/controllers/homepage.js.map +1 -0
- package/dist/server/homepage/controllers/homepage.mjs +41 -0
- package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
- package/dist/server/homepage/controllers/index.js +10 -0
- package/dist/server/homepage/controllers/index.js.map +1 -0
- package/dist/server/homepage/controllers/index.mjs +8 -0
- package/dist/server/homepage/controllers/index.mjs.map +1 -0
- package/dist/server/homepage/index.js +14 -0
- package/dist/server/homepage/index.js.map +1 -0
- package/dist/server/homepage/index.mjs +12 -0
- package/dist/server/homepage/index.mjs.map +1 -0
- package/dist/server/homepage/routes/homepage.js +36 -0
- package/dist/server/homepage/routes/homepage.js.map +1 -0
- package/dist/server/homepage/routes/homepage.mjs +34 -0
- package/dist/server/homepage/routes/homepage.mjs.map +1 -0
- package/dist/server/homepage/routes/index.js +13 -0
- package/dist/server/homepage/routes/index.js.map +1 -0
- package/dist/server/homepage/routes/index.mjs +11 -0
- package/dist/server/homepage/routes/index.mjs.map +1 -0
- package/dist/server/homepage/services/homepage.js +198 -0
- package/dist/server/homepage/services/homepage.js.map +1 -0
- package/dist/server/homepage/services/homepage.mjs +196 -0
- package/dist/server/homepage/services/homepage.mjs.map +1 -0
- package/dist/server/homepage/services/index.js +10 -0
- package/dist/server/homepage/services/index.js.map +1 -0
- package/dist/server/homepage/services/index.mjs +8 -0
- package/dist/server/homepage/services/index.mjs.map +1 -0
- package/dist/server/middlewares/routing.js.map +1 -1
- package/dist/server/middlewares/routing.mjs.map +1 -1
- package/dist/server/preview/services/preview-config.js +11 -32
- package/dist/server/preview/services/preview-config.js.map +1 -1
- package/dist/server/preview/services/preview-config.mjs +12 -33
- package/dist/server/preview/services/preview-config.mjs.map +1 -1
- package/dist/server/preview/services/preview.js +4 -1
- package/dist/server/preview/services/preview.js.map +1 -1
- package/dist/server/preview/services/preview.mjs +4 -1
- package/dist/server/preview/services/preview.mjs.map +1 -1
- package/dist/server/preview/utils.js.map +1 -1
- package/dist/server/preview/utils.mjs.map +1 -1
- package/dist/server/routes/index.js +3 -1
- package/dist/server/routes/index.js.map +1 -1
- package/dist/server/routes/index.mjs +3 -1
- package/dist/server/routes/index.mjs.map +1 -1
- package/dist/server/services/configuration.js.map +1 -1
- package/dist/server/services/configuration.mjs.map +1 -1
- package/dist/server/services/data-mapper.js +4 -1
- package/dist/server/services/data-mapper.js.map +1 -1
- package/dist/server/services/data-mapper.mjs +4 -1
- package/dist/server/services/data-mapper.mjs.map +1 -1
- package/dist/server/services/document-manager.js +8 -1
- package/dist/server/services/document-manager.js.map +1 -1
- package/dist/server/services/document-manager.mjs +8 -1
- package/dist/server/services/document-manager.mjs.map +1 -1
- package/dist/server/services/document-metadata.js +26 -2
- package/dist/server/services/document-metadata.js.map +1 -1
- package/dist/server/services/document-metadata.mjs +26 -2
- package/dist/server/services/document-metadata.mjs.map +1 -1
- package/dist/server/services/field-sizes.js.map +1 -1
- package/dist/server/services/field-sizes.mjs.map +1 -1
- package/dist/server/services/index.js +3 -1
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs +3 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/uid.js.map +1 -1
- package/dist/server/services/uid.mjs.map +1 -1
- package/dist/server/services/utils/configuration/attributes.js +1 -1
- package/dist/server/services/utils/configuration/attributes.js.map +1 -1
- package/dist/server/services/utils/configuration/attributes.mjs +1 -1
- package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
- package/dist/server/services/utils/configuration/layouts.js +1 -1
- package/dist/server/services/utils/configuration/layouts.js.map +1 -1
- package/dist/server/services/utils/configuration/layouts.mjs +1 -1
- package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
- package/dist/server/services/utils/configuration/metadatas.js +8 -0
- package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
- package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
- package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
- package/dist/server/services/utils/populate.js +11 -0
- package/dist/server/services/utils/populate.js.map +1 -1
- package/dist/server/services/utils/populate.mjs +11 -0
- package/dist/server/services/utils/populate.mjs.map +1 -1
- package/dist/server/services/utils/store.js.map +1 -1
- package/dist/server/services/utils/store.mjs.map +1 -1
- package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
- package/dist/server/src/controllers/content-types.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/relations.d.ts.map +1 -1
- package/dist/server/src/controllers/single-types.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/index.d.ts +6 -1
- package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
- package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
- package/dist/server/src/homepage/controllers/homepage.d.ts +8 -0
- package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
- package/dist/server/src/homepage/controllers/index.d.ts +2 -0
- package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
- package/dist/server/src/homepage/index.d.ts +23 -0
- package/dist/server/src/homepage/index.d.ts.map +1 -0
- package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
- package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
- package/dist/server/src/homepage/routes/index.d.ts +8 -0
- package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
- package/dist/server/src/homepage/services/homepage.d.ts +14 -0
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
- package/dist/server/src/homepage/services/index.d.ts +16 -0
- package/dist/server/src/homepage/services/index.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +14 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/index.d.ts +1 -0
- package/dist/server/src/preview/services/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview-config.d.ts +1 -0
- package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview.d.ts.map +1 -1
- package/dist/server/src/preview/utils.d.ts +1 -0
- package/dist/server/src/preview/utils.d.ts.map +1 -1
- package/dist/server/src/routes/index.d.ts +1 -0
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/server/src/services/data-mapper.d.ts.map +1 -1
- package/dist/server/src/services/document-manager.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +13 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
- package/dist/server/src/services/utils/populate.d.ts.map +1 -1
- package/dist/shared/contracts/collection-types.d.ts +0 -1
- package/dist/shared/contracts/collection-types.d.ts.map +1 -1
- package/dist/shared/contracts/homepage.d.ts +13 -0
- package/dist/shared/contracts/homepage.d.ts.map +1 -1
- package/package.json +12 -10
- package/dist/server/src/services/homepage.d.ts +0 -11
- package/dist/server/src/services/homepage.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-types.js","sources":["../../../server/src/controllers/single-types.ts"],"sourcesContent":["import type { UID, Modules } from '@strapi/types';\nimport { setCreatorFields, async, errors } from '@strapi/utils';\n\nimport { getDocumentLocaleAndStatus } from './validation/dimensions';\nimport { getService } from '../utils';\nimport { formatDocumentWithMetadata } from './utils/metadata';\n\ntype OptionsWithPopulate = Modules.Documents.Params.Pick<UID.ContentType, 'populate:object'>;\n\nconst buildPopulateFromQuery = async (query: any, model: any) => {\n return getService('populate-builder')(model)\n .populateFromQuery(query)\n .populateDeep(Infinity)\n .countRelations()\n .build();\n};\n\nconst findDocument = async (query: any, uid: UID.SingleType, opts: any = {}) => {\n const documentManager = getService('document-manager');\n const populate = await buildPopulateFromQuery(query, uid);\n\n return (\n documentManager\n .findMany({ ...opts, populate }, uid)\n // Return the first document found\n .then((documents: any) => documents[0])\n );\n};\n\nconst createOrUpdateDocument = async (ctx: any, opts?: OptionsWithPopulate) => {\n const { user, userAbility } = ctx.state;\n const { model } = ctx.params;\n const { body, query } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.create() && permissionChecker.cannot.update()) {\n throw new errors.ForbiddenError();\n }\n\n const sanitizedQuery = await permissionChecker.sanitizedQuery.update(query);\n\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n // Load document version to update\n const [documentVersion, otherDocumentVersion] = await Promise.all([\n findDocument(sanitizedQuery, model, { locale, status: 'draft' }),\n // Find the first document to check if it exists\n strapi.db.query(model).findOne({ select: ['documentId'] }),\n ]);\n\n const documentId = otherDocumentVersion?.documentId;\n\n const pickPermittedFields = documentVersion\n ? permissionChecker.sanitizeUpdateInput(documentVersion)\n : permissionChecker.sanitizeCreateInput;\n\n const setCreator = documentVersion\n ? setCreatorFields({ user, isEdition: true })\n : setCreatorFields({ user });\n\n const sanitizeFn = async.pipe(pickPermittedFields, setCreator as any);\n\n // If version is not found, but document exists,\n // the intent is to create a new document locale\n if (documentVersion) {\n if (permissionChecker.cannot.update(documentVersion)) {\n throw new errors.ForbiddenError();\n }\n } else if (permissionChecker.cannot.create()) {\n throw new errors.ForbiddenError();\n }\n\n const sanitizedBody = await sanitizeFn(body);\n\n if (!documentId) {\n return documentManager.create(model, {\n data: sanitizedBody,\n ...sanitizedQuery,\n locale,\n });\n }\n\n return documentManager.update(documentId, model, {\n data: sanitizedBody as any,\n populate: opts?.populate,\n locale,\n });\n};\n\nexport default {\n async find(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query = {} } = ctx.request;\n\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.read(query);\n const { locale, status } = await getDocumentLocaleAndStatus(query, model);\n\n const version = await findDocument(permissionQuery, model, { locale, status });\n\n // allow user with create permission to know a single type is not created\n if (!version) {\n if (permissionChecker.cannot.create()) {\n return ctx.forbidden();\n }\n // Check if document exists\n const document = await strapi.db.query(model).findOne({});\n\n if (!document) {\n return ctx.notFound();\n }\n\n // If the requested locale doesn't exist, return an empty response\n const { meta } = await formatDocumentWithMetadata(\n permissionChecker,\n model,\n // @ts-expect-error - fix types\n { documentId: document.documentId, locale, publishedAt: null },\n { availableLocales: true, availableStatus: false }\n );\n ctx.body = { data: {}, meta };\n return;\n }\n\n if (permissionChecker.cannot.read(version)) {\n return ctx.forbidden();\n }\n\n const sanitizedDocument = await permissionChecker.sanitizeOutput(version);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument);\n },\n\n async createOrUpdate(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n const document = await createOrUpdateDocument(ctx);\n const sanitizedDocument = await permissionChecker.sanitizeOutput(document);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument);\n },\n\n async delete(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query = {} } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.delete()) {\n return ctx.forbidden();\n }\n\n const sanitizedQuery = await permissionChecker.sanitizedQuery.delete(query);\n const populate = await buildPopulateFromQuery(sanitizedQuery, model);\n\n const { locale } = await getDocumentLocaleAndStatus(query, model);\n const documentLocales = await documentManager.findLocales(undefined, model, {\n populate,\n locale,\n });\n\n if (documentLocales.length === 0) {\n return ctx.notFound();\n }\n\n for (const document of documentLocales) {\n if (permissionChecker.cannot.delete(document)) {\n return ctx.forbidden();\n }\n }\n\n const deletedEntity = await documentManager.delete(documentLocales.at(0).documentId, model, {\n locale,\n });\n\n ctx.body = await permissionChecker.sanitizeOutput(deletedEntity);\n },\n\n async publish(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query = {} } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.publish()) {\n return ctx.forbidden();\n }\n\n const publishedDocument = await strapi.db.transaction(async () => {\n const sanitizedQuery = await permissionChecker.sanitizedQuery.publish(query);\n const populate = await buildPopulateFromQuery(sanitizedQuery, model);\n const document = await createOrUpdateDocument(ctx, { populate });\n\n if (!document) {\n throw new errors.NotFoundError();\n }\n\n if (permissionChecker.cannot.publish(document)) {\n throw new errors.ForbiddenError();\n }\n\n const { locale } = await getDocumentLocaleAndStatus(document, model);\n const publishResult = await documentManager.publish(document.documentId, model, { locale });\n\n return publishResult.at(0);\n });\n\n const sanitizedDocument = await permissionChecker.sanitizeOutput(publishedDocument);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument);\n },\n\n async unpublish(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const {\n body: { discardDraft, ...body },\n query = {},\n } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.unpublish()) {\n return ctx.forbidden();\n }\n\n if (discardDraft && permissionChecker.cannot.discard()) {\n return ctx.forbidden();\n }\n\n const sanitizedQuery = await permissionChecker.sanitizedQuery.unpublish(query);\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n const document = await findDocument(sanitizedQuery, model, { locale });\n\n if (!document) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.unpublish(document)) {\n return ctx.forbidden();\n }\n\n if (discardDraft && permissionChecker.cannot.discard(document)) {\n return ctx.forbidden();\n }\n\n await strapi.db.transaction(async () => {\n if (discardDraft) {\n await documentManager.discardDraft(document.documentId, model, { locale });\n }\n\n ctx.body = await async.pipe(\n (document) => documentManager.unpublish(document.documentId, model, { locale }),\n permissionChecker.sanitizeOutput,\n (document) => formatDocumentWithMetadata(permissionChecker, model, document)\n )(document);\n });\n },\n\n async discard(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { body, query = {} } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.discard()) {\n return ctx.forbidden();\n }\n\n const sanitizedQuery = await permissionChecker.sanitizedQuery.discard(query);\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n const document = await findDocument(sanitizedQuery, model, { locale, status: 'published' });\n\n // Can not discard a document that is not published\n if (!document) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.discard(document)) {\n return ctx.forbidden();\n }\n\n ctx.body = await async.pipe(\n (document) => documentManager.discardDraft(document.documentId, model, { locale }),\n permissionChecker.sanitizeOutput,\n (document) => formatDocumentWithMetadata(permissionChecker, model, document)\n )(document);\n },\n\n async countDraftRelations(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query } = ctx.request;\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n const { locale } = await getDocumentLocaleAndStatus(query, model);\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const document = await findDocument({}, model);\n if (!document) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.read(document)) {\n return ctx.forbidden();\n }\n\n const number = await documentManager.countDraftRelations(document.documentId, model, locale);\n\n return {\n data: number,\n };\n },\n};\n"],"names":["buildPopulateFromQuery","query","model","getService","populateFromQuery","populateDeep","Infinity","countRelations","build","findDocument","uid","opts","documentManager","populate","findMany","then","documents","createOrUpdateDocument","ctx","user","userAbility","state","params","body","request","permissionChecker","create","cannot","update","errors","ForbiddenError","sanitizedQuery","locale","getDocumentLocaleAndStatus","documentVersion","otherDocumentVersion","Promise","all","status","strapi","db","findOne","select","documentId","pickPermittedFields","sanitizeUpdateInput","sanitizeCreateInput","setCreator","setCreatorFields","isEdition","sanitizeFn","async","pipe","sanitizedBody","data","find","read","forbidden","permissionQuery","version","document","notFound","meta","formatDocumentWithMetadata","publishedAt","availableLocales","availableStatus","sanitizedDocument","sanitizeOutput","createOrUpdate","delete","documentLocales","findLocales","undefined","length","deletedEntity","at","publish","publishedDocument","transaction","NotFoundError","publishResult","unpublish","discardDraft","discard","countDraftRelations","number"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"single-types.js","sources":["../../../server/src/controllers/single-types.ts"],"sourcesContent":["import type { UID, Modules } from '@strapi/types';\nimport { setCreatorFields, async, errors } from '@strapi/utils';\n\nimport { getDocumentLocaleAndStatus } from './validation/dimensions';\nimport { getService } from '../utils';\nimport { formatDocumentWithMetadata } from './utils/metadata';\n\ntype OptionsWithPopulate = Modules.Documents.Params.Pick<UID.ContentType, 'populate:object'>;\n\nconst buildPopulateFromQuery = async (query: any, model: any) => {\n return getService('populate-builder')(model)\n .populateFromQuery(query)\n .populateDeep(Infinity)\n .countRelations()\n .build();\n};\n\nconst findDocument = async (query: any, uid: UID.SingleType, opts: any = {}) => {\n const documentManager = getService('document-manager');\n const populate = await buildPopulateFromQuery(query, uid);\n\n return (\n documentManager\n .findMany({ ...opts, populate }, uid)\n // Return the first document found\n .then((documents: any) => documents[0])\n );\n};\n\nconst createOrUpdateDocument = async (ctx: any, opts?: OptionsWithPopulate) => {\n const { user, userAbility } = ctx.state;\n const { model } = ctx.params;\n const { body, query } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.create() && permissionChecker.cannot.update()) {\n throw new errors.ForbiddenError();\n }\n\n const sanitizedQuery = await permissionChecker.sanitizedQuery.update(query);\n\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n // Load document version to update\n const [documentVersion, otherDocumentVersion] = await Promise.all([\n findDocument(sanitizedQuery, model, { locale, status: 'draft' }),\n // Find the first document to check if it exists\n strapi.db.query(model).findOne({ select: ['documentId'] }),\n ]);\n\n const documentId = otherDocumentVersion?.documentId;\n\n const pickPermittedFields = documentVersion\n ? permissionChecker.sanitizeUpdateInput(documentVersion)\n : permissionChecker.sanitizeCreateInput;\n\n const setCreator = documentVersion\n ? setCreatorFields({ user, isEdition: true })\n : setCreatorFields({ user });\n\n const sanitizeFn = async.pipe(pickPermittedFields, setCreator as any);\n\n // If version is not found, but document exists,\n // the intent is to create a new document locale\n if (documentVersion) {\n if (permissionChecker.cannot.update(documentVersion)) {\n throw new errors.ForbiddenError();\n }\n } else if (permissionChecker.cannot.create()) {\n throw new errors.ForbiddenError();\n }\n\n const sanitizedBody = await sanitizeFn(body);\n\n if (!documentId) {\n return documentManager.create(model, {\n data: sanitizedBody,\n ...sanitizedQuery,\n locale,\n });\n }\n\n return documentManager.update(documentId, model, {\n data: sanitizedBody as any,\n populate: opts?.populate,\n locale,\n });\n};\n\nexport default {\n async find(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query = {} } = ctx.request;\n\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.read(query);\n const { locale, status } = await getDocumentLocaleAndStatus(query, model);\n\n const version = await findDocument(permissionQuery, model, { locale, status });\n\n // allow user with create permission to know a single type is not created\n if (!version) {\n if (permissionChecker.cannot.create()) {\n return ctx.forbidden();\n }\n // Check if document exists\n const document = await strapi.db.query(model).findOne({});\n\n if (!document) {\n return ctx.notFound();\n }\n\n // If the requested locale doesn't exist, return an empty response\n const { meta } = await formatDocumentWithMetadata(\n permissionChecker,\n model,\n // @ts-expect-error - fix types\n { documentId: document.documentId, locale, publishedAt: null },\n { availableLocales: true, availableStatus: false }\n );\n ctx.body = { data: {}, meta };\n return;\n }\n\n if (permissionChecker.cannot.read(version)) {\n return ctx.forbidden();\n }\n\n const sanitizedDocument = await permissionChecker.sanitizeOutput(version);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument);\n },\n\n async createOrUpdate(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n const document = await createOrUpdateDocument(ctx);\n\n const sanitizedDocument = await permissionChecker.sanitizeOutput(document);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument);\n },\n\n async delete(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query = {} } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.delete()) {\n return ctx.forbidden();\n }\n\n const sanitizedQuery = await permissionChecker.sanitizedQuery.delete(query);\n const populate = await buildPopulateFromQuery(sanitizedQuery, model);\n\n const { locale } = await getDocumentLocaleAndStatus(query, model);\n const documentLocales = await documentManager.findLocales(undefined, model, {\n populate,\n locale,\n });\n\n if (documentLocales.length === 0) {\n return ctx.notFound();\n }\n\n for (const document of documentLocales) {\n if (permissionChecker.cannot.delete(document)) {\n return ctx.forbidden();\n }\n }\n\n const deletedEntity = await documentManager.delete(documentLocales.at(0).documentId, model, {\n locale,\n });\n\n ctx.body = await permissionChecker.sanitizeOutput(deletedEntity);\n },\n\n async publish(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query = {} } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.publish()) {\n return ctx.forbidden();\n }\n\n const publishedDocument = await strapi.db.transaction(async () => {\n const sanitizedQuery = await permissionChecker.sanitizedQuery.publish(query);\n const populate = await buildPopulateFromQuery(sanitizedQuery, model);\n const document = await createOrUpdateDocument(ctx, { populate });\n\n if (!document) {\n throw new errors.NotFoundError();\n }\n\n if (permissionChecker.cannot.publish(document)) {\n throw new errors.ForbiddenError();\n }\n\n const { locale } = await getDocumentLocaleAndStatus(document, model);\n const publishResult = await documentManager.publish(document.documentId, model, { locale });\n\n return publishResult.at(0);\n });\n\n const sanitizedDocument = await permissionChecker.sanitizeOutput(publishedDocument);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument);\n },\n\n async unpublish(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const {\n body: { discardDraft, ...body },\n query = {},\n } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.unpublish()) {\n return ctx.forbidden();\n }\n\n if (discardDraft && permissionChecker.cannot.discard()) {\n return ctx.forbidden();\n }\n\n const sanitizedQuery = await permissionChecker.sanitizedQuery.unpublish(query);\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n const document = await findDocument(sanitizedQuery, model, { locale });\n\n if (!document) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.unpublish(document)) {\n return ctx.forbidden();\n }\n\n if (discardDraft && permissionChecker.cannot.discard(document)) {\n return ctx.forbidden();\n }\n\n await strapi.db.transaction(async () => {\n if (discardDraft) {\n await documentManager.discardDraft(document.documentId, model, { locale });\n }\n\n ctx.body = await async.pipe(\n (document) => documentManager.unpublish(document.documentId, model, { locale }),\n permissionChecker.sanitizeOutput,\n (document) => formatDocumentWithMetadata(permissionChecker, model, document)\n )(document);\n });\n },\n\n async discard(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { body, query = {} } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.discard()) {\n return ctx.forbidden();\n }\n\n const sanitizedQuery = await permissionChecker.sanitizedQuery.discard(query);\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n const document = await findDocument(sanitizedQuery, model, { locale, status: 'published' });\n\n // Can not discard a document that is not published\n if (!document) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.discard(document)) {\n return ctx.forbidden();\n }\n\n ctx.body = await async.pipe(\n (document) => documentManager.discardDraft(document.documentId, model, { locale }),\n permissionChecker.sanitizeOutput,\n (document) => formatDocumentWithMetadata(permissionChecker, model, document)\n )(document);\n },\n\n async countDraftRelations(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query } = ctx.request;\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n const { locale } = await getDocumentLocaleAndStatus(query, model);\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const document = await findDocument({}, model, { locale });\n if (!document) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.read(document)) {\n return ctx.forbidden();\n }\n\n const number = await documentManager.countDraftRelations(document.documentId, model, locale);\n\n return {\n data: number,\n };\n },\n};\n"],"names":["buildPopulateFromQuery","query","model","getService","populateFromQuery","populateDeep","Infinity","countRelations","build","findDocument","uid","opts","documentManager","populate","findMany","then","documents","createOrUpdateDocument","ctx","user","userAbility","state","params","body","request","permissionChecker","create","cannot","update","errors","ForbiddenError","sanitizedQuery","locale","getDocumentLocaleAndStatus","documentVersion","otherDocumentVersion","Promise","all","status","strapi","db","findOne","select","documentId","pickPermittedFields","sanitizeUpdateInput","sanitizeCreateInput","setCreator","setCreatorFields","isEdition","sanitizeFn","async","pipe","sanitizedBody","data","find","read","forbidden","permissionQuery","version","document","notFound","meta","formatDocumentWithMetadata","publishedAt","availableLocales","availableStatus","sanitizedDocument","sanitizeOutput","createOrUpdate","delete","documentLocales","findLocales","undefined","length","deletedEntity","at","publish","publishedDocument","transaction","NotFoundError","publishResult","unpublish","discardDraft","discard","countDraftRelations","number"],"mappings":"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"}
|
|
@@ -282,7 +282,9 @@ var singleTypes = {
|
|
|
282
282
|
if (permissionChecker.cannot.read()) {
|
|
283
283
|
return ctx.forbidden();
|
|
284
284
|
}
|
|
285
|
-
const document = await findDocument({}, model
|
|
285
|
+
const document = await findDocument({}, model, {
|
|
286
|
+
locale
|
|
287
|
+
});
|
|
286
288
|
if (!document) {
|
|
287
289
|
return ctx.notFound();
|
|
288
290
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-types.mjs","sources":["../../../server/src/controllers/single-types.ts"],"sourcesContent":["import type { UID, Modules } from '@strapi/types';\nimport { setCreatorFields, async, errors } from '@strapi/utils';\n\nimport { getDocumentLocaleAndStatus } from './validation/dimensions';\nimport { getService } from '../utils';\nimport { formatDocumentWithMetadata } from './utils/metadata';\n\ntype OptionsWithPopulate = Modules.Documents.Params.Pick<UID.ContentType, 'populate:object'>;\n\nconst buildPopulateFromQuery = async (query: any, model: any) => {\n return getService('populate-builder')(model)\n .populateFromQuery(query)\n .populateDeep(Infinity)\n .countRelations()\n .build();\n};\n\nconst findDocument = async (query: any, uid: UID.SingleType, opts: any = {}) => {\n const documentManager = getService('document-manager');\n const populate = await buildPopulateFromQuery(query, uid);\n\n return (\n documentManager\n .findMany({ ...opts, populate }, uid)\n // Return the first document found\n .then((documents: any) => documents[0])\n );\n};\n\nconst createOrUpdateDocument = async (ctx: any, opts?: OptionsWithPopulate) => {\n const { user, userAbility } = ctx.state;\n const { model } = ctx.params;\n const { body, query } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.create() && permissionChecker.cannot.update()) {\n throw new errors.ForbiddenError();\n }\n\n const sanitizedQuery = await permissionChecker.sanitizedQuery.update(query);\n\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n // Load document version to update\n const [documentVersion, otherDocumentVersion] = await Promise.all([\n findDocument(sanitizedQuery, model, { locale, status: 'draft' }),\n // Find the first document to check if it exists\n strapi.db.query(model).findOne({ select: ['documentId'] }),\n ]);\n\n const documentId = otherDocumentVersion?.documentId;\n\n const pickPermittedFields = documentVersion\n ? permissionChecker.sanitizeUpdateInput(documentVersion)\n : permissionChecker.sanitizeCreateInput;\n\n const setCreator = documentVersion\n ? setCreatorFields({ user, isEdition: true })\n : setCreatorFields({ user });\n\n const sanitizeFn = async.pipe(pickPermittedFields, setCreator as any);\n\n // If version is not found, but document exists,\n // the intent is to create a new document locale\n if (documentVersion) {\n if (permissionChecker.cannot.update(documentVersion)) {\n throw new errors.ForbiddenError();\n }\n } else if (permissionChecker.cannot.create()) {\n throw new errors.ForbiddenError();\n }\n\n const sanitizedBody = await sanitizeFn(body);\n\n if (!documentId) {\n return documentManager.create(model, {\n data: sanitizedBody,\n ...sanitizedQuery,\n locale,\n });\n }\n\n return documentManager.update(documentId, model, {\n data: sanitizedBody as any,\n populate: opts?.populate,\n locale,\n });\n};\n\nexport default {\n async find(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query = {} } = ctx.request;\n\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.read(query);\n const { locale, status } = await getDocumentLocaleAndStatus(query, model);\n\n const version = await findDocument(permissionQuery, model, { locale, status });\n\n // allow user with create permission to know a single type is not created\n if (!version) {\n if (permissionChecker.cannot.create()) {\n return ctx.forbidden();\n }\n // Check if document exists\n const document = await strapi.db.query(model).findOne({});\n\n if (!document) {\n return ctx.notFound();\n }\n\n // If the requested locale doesn't exist, return an empty response\n const { meta } = await formatDocumentWithMetadata(\n permissionChecker,\n model,\n // @ts-expect-error - fix types\n { documentId: document.documentId, locale, publishedAt: null },\n { availableLocales: true, availableStatus: false }\n );\n ctx.body = { data: {}, meta };\n return;\n }\n\n if (permissionChecker.cannot.read(version)) {\n return ctx.forbidden();\n }\n\n const sanitizedDocument = await permissionChecker.sanitizeOutput(version);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument);\n },\n\n async createOrUpdate(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n const document = await createOrUpdateDocument(ctx);\n const sanitizedDocument = await permissionChecker.sanitizeOutput(document);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument);\n },\n\n async delete(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query = {} } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.delete()) {\n return ctx.forbidden();\n }\n\n const sanitizedQuery = await permissionChecker.sanitizedQuery.delete(query);\n const populate = await buildPopulateFromQuery(sanitizedQuery, model);\n\n const { locale } = await getDocumentLocaleAndStatus(query, model);\n const documentLocales = await documentManager.findLocales(undefined, model, {\n populate,\n locale,\n });\n\n if (documentLocales.length === 0) {\n return ctx.notFound();\n }\n\n for (const document of documentLocales) {\n if (permissionChecker.cannot.delete(document)) {\n return ctx.forbidden();\n }\n }\n\n const deletedEntity = await documentManager.delete(documentLocales.at(0).documentId, model, {\n locale,\n });\n\n ctx.body = await permissionChecker.sanitizeOutput(deletedEntity);\n },\n\n async publish(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query = {} } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.publish()) {\n return ctx.forbidden();\n }\n\n const publishedDocument = await strapi.db.transaction(async () => {\n const sanitizedQuery = await permissionChecker.sanitizedQuery.publish(query);\n const populate = await buildPopulateFromQuery(sanitizedQuery, model);\n const document = await createOrUpdateDocument(ctx, { populate });\n\n if (!document) {\n throw new errors.NotFoundError();\n }\n\n if (permissionChecker.cannot.publish(document)) {\n throw new errors.ForbiddenError();\n }\n\n const { locale } = await getDocumentLocaleAndStatus(document, model);\n const publishResult = await documentManager.publish(document.documentId, model, { locale });\n\n return publishResult.at(0);\n });\n\n const sanitizedDocument = await permissionChecker.sanitizeOutput(publishedDocument);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument);\n },\n\n async unpublish(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const {\n body: { discardDraft, ...body },\n query = {},\n } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.unpublish()) {\n return ctx.forbidden();\n }\n\n if (discardDraft && permissionChecker.cannot.discard()) {\n return ctx.forbidden();\n }\n\n const sanitizedQuery = await permissionChecker.sanitizedQuery.unpublish(query);\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n const document = await findDocument(sanitizedQuery, model, { locale });\n\n if (!document) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.unpublish(document)) {\n return ctx.forbidden();\n }\n\n if (discardDraft && permissionChecker.cannot.discard(document)) {\n return ctx.forbidden();\n }\n\n await strapi.db.transaction(async () => {\n if (discardDraft) {\n await documentManager.discardDraft(document.documentId, model, { locale });\n }\n\n ctx.body = await async.pipe(\n (document) => documentManager.unpublish(document.documentId, model, { locale }),\n permissionChecker.sanitizeOutput,\n (document) => formatDocumentWithMetadata(permissionChecker, model, document)\n )(document);\n });\n },\n\n async discard(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { body, query = {} } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.discard()) {\n return ctx.forbidden();\n }\n\n const sanitizedQuery = await permissionChecker.sanitizedQuery.discard(query);\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n const document = await findDocument(sanitizedQuery, model, { locale, status: 'published' });\n\n // Can not discard a document that is not published\n if (!document) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.discard(document)) {\n return ctx.forbidden();\n }\n\n ctx.body = await async.pipe(\n (document) => documentManager.discardDraft(document.documentId, model, { locale }),\n permissionChecker.sanitizeOutput,\n (document) => formatDocumentWithMetadata(permissionChecker, model, document)\n )(document);\n },\n\n async countDraftRelations(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query } = ctx.request;\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n const { locale } = await getDocumentLocaleAndStatus(query, model);\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const document = await findDocument({}, model);\n if (!document) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.read(document)) {\n return ctx.forbidden();\n }\n\n const number = await documentManager.countDraftRelations(document.documentId, model, locale);\n\n return {\n data: number,\n };\n },\n};\n"],"names":["buildPopulateFromQuery","query","model","getService","populateFromQuery","populateDeep","Infinity","countRelations","build","findDocument","uid","opts","documentManager","populate","findMany","then","documents","createOrUpdateDocument","ctx","user","userAbility","state","params","body","request","permissionChecker","create","cannot","update","errors","ForbiddenError","sanitizedQuery","locale","getDocumentLocaleAndStatus","documentVersion","otherDocumentVersion","Promise","all","status","strapi","db","findOne","select","documentId","pickPermittedFields","sanitizeUpdateInput","sanitizeCreateInput","setCreator","setCreatorFields","isEdition","sanitizeFn","async","pipe","sanitizedBody","data","find","read","forbidden","permissionQuery","version","document","notFound","meta","formatDocumentWithMetadata","publishedAt","availableLocales","availableStatus","sanitizedDocument","sanitizeOutput","createOrUpdate","delete","documentLocales","findLocales","undefined","length","deletedEntity","at","publish","publishedDocument","transaction","NotFoundError","publishResult","unpublish","discardDraft","discard","countDraftRelations","number"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"single-types.mjs","sources":["../../../server/src/controllers/single-types.ts"],"sourcesContent":["import type { UID, Modules } from '@strapi/types';\nimport { setCreatorFields, async, errors } from '@strapi/utils';\n\nimport { getDocumentLocaleAndStatus } from './validation/dimensions';\nimport { getService } from '../utils';\nimport { formatDocumentWithMetadata } from './utils/metadata';\n\ntype OptionsWithPopulate = Modules.Documents.Params.Pick<UID.ContentType, 'populate:object'>;\n\nconst buildPopulateFromQuery = async (query: any, model: any) => {\n return getService('populate-builder')(model)\n .populateFromQuery(query)\n .populateDeep(Infinity)\n .countRelations()\n .build();\n};\n\nconst findDocument = async (query: any, uid: UID.SingleType, opts: any = {}) => {\n const documentManager = getService('document-manager');\n const populate = await buildPopulateFromQuery(query, uid);\n\n return (\n documentManager\n .findMany({ ...opts, populate }, uid)\n // Return the first document found\n .then((documents: any) => documents[0])\n );\n};\n\nconst createOrUpdateDocument = async (ctx: any, opts?: OptionsWithPopulate) => {\n const { user, userAbility } = ctx.state;\n const { model } = ctx.params;\n const { body, query } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.create() && permissionChecker.cannot.update()) {\n throw new errors.ForbiddenError();\n }\n\n const sanitizedQuery = await permissionChecker.sanitizedQuery.update(query);\n\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n // Load document version to update\n const [documentVersion, otherDocumentVersion] = await Promise.all([\n findDocument(sanitizedQuery, model, { locale, status: 'draft' }),\n // Find the first document to check if it exists\n strapi.db.query(model).findOne({ select: ['documentId'] }),\n ]);\n\n const documentId = otherDocumentVersion?.documentId;\n\n const pickPermittedFields = documentVersion\n ? permissionChecker.sanitizeUpdateInput(documentVersion)\n : permissionChecker.sanitizeCreateInput;\n\n const setCreator = documentVersion\n ? setCreatorFields({ user, isEdition: true })\n : setCreatorFields({ user });\n\n const sanitizeFn = async.pipe(pickPermittedFields, setCreator as any);\n\n // If version is not found, but document exists,\n // the intent is to create a new document locale\n if (documentVersion) {\n if (permissionChecker.cannot.update(documentVersion)) {\n throw new errors.ForbiddenError();\n }\n } else if (permissionChecker.cannot.create()) {\n throw new errors.ForbiddenError();\n }\n\n const sanitizedBody = await sanitizeFn(body);\n\n if (!documentId) {\n return documentManager.create(model, {\n data: sanitizedBody,\n ...sanitizedQuery,\n locale,\n });\n }\n\n return documentManager.update(documentId, model, {\n data: sanitizedBody as any,\n populate: opts?.populate,\n locale,\n });\n};\n\nexport default {\n async find(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query = {} } = ctx.request;\n\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.read(query);\n const { locale, status } = await getDocumentLocaleAndStatus(query, model);\n\n const version = await findDocument(permissionQuery, model, { locale, status });\n\n // allow user with create permission to know a single type is not created\n if (!version) {\n if (permissionChecker.cannot.create()) {\n return ctx.forbidden();\n }\n // Check if document exists\n const document = await strapi.db.query(model).findOne({});\n\n if (!document) {\n return ctx.notFound();\n }\n\n // If the requested locale doesn't exist, return an empty response\n const { meta } = await formatDocumentWithMetadata(\n permissionChecker,\n model,\n // @ts-expect-error - fix types\n { documentId: document.documentId, locale, publishedAt: null },\n { availableLocales: true, availableStatus: false }\n );\n ctx.body = { data: {}, meta };\n return;\n }\n\n if (permissionChecker.cannot.read(version)) {\n return ctx.forbidden();\n }\n\n const sanitizedDocument = await permissionChecker.sanitizeOutput(version);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument);\n },\n\n async createOrUpdate(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n const document = await createOrUpdateDocument(ctx);\n\n const sanitizedDocument = await permissionChecker.sanitizeOutput(document);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument);\n },\n\n async delete(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query = {} } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.delete()) {\n return ctx.forbidden();\n }\n\n const sanitizedQuery = await permissionChecker.sanitizedQuery.delete(query);\n const populate = await buildPopulateFromQuery(sanitizedQuery, model);\n\n const { locale } = await getDocumentLocaleAndStatus(query, model);\n const documentLocales = await documentManager.findLocales(undefined, model, {\n populate,\n locale,\n });\n\n if (documentLocales.length === 0) {\n return ctx.notFound();\n }\n\n for (const document of documentLocales) {\n if (permissionChecker.cannot.delete(document)) {\n return ctx.forbidden();\n }\n }\n\n const deletedEntity = await documentManager.delete(documentLocales.at(0).documentId, model, {\n locale,\n });\n\n ctx.body = await permissionChecker.sanitizeOutput(deletedEntity);\n },\n\n async publish(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query = {} } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.publish()) {\n return ctx.forbidden();\n }\n\n const publishedDocument = await strapi.db.transaction(async () => {\n const sanitizedQuery = await permissionChecker.sanitizedQuery.publish(query);\n const populate = await buildPopulateFromQuery(sanitizedQuery, model);\n const document = await createOrUpdateDocument(ctx, { populate });\n\n if (!document) {\n throw new errors.NotFoundError();\n }\n\n if (permissionChecker.cannot.publish(document)) {\n throw new errors.ForbiddenError();\n }\n\n const { locale } = await getDocumentLocaleAndStatus(document, model);\n const publishResult = await documentManager.publish(document.documentId, model, { locale });\n\n return publishResult.at(0);\n });\n\n const sanitizedDocument = await permissionChecker.sanitizeOutput(publishedDocument);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument);\n },\n\n async unpublish(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const {\n body: { discardDraft, ...body },\n query = {},\n } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.unpublish()) {\n return ctx.forbidden();\n }\n\n if (discardDraft && permissionChecker.cannot.discard()) {\n return ctx.forbidden();\n }\n\n const sanitizedQuery = await permissionChecker.sanitizedQuery.unpublish(query);\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n const document = await findDocument(sanitizedQuery, model, { locale });\n\n if (!document) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.unpublish(document)) {\n return ctx.forbidden();\n }\n\n if (discardDraft && permissionChecker.cannot.discard(document)) {\n return ctx.forbidden();\n }\n\n await strapi.db.transaction(async () => {\n if (discardDraft) {\n await documentManager.discardDraft(document.documentId, model, { locale });\n }\n\n ctx.body = await async.pipe(\n (document) => documentManager.unpublish(document.documentId, model, { locale }),\n permissionChecker.sanitizeOutput,\n (document) => formatDocumentWithMetadata(permissionChecker, model, document)\n )(document);\n });\n },\n\n async discard(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { body, query = {} } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.discard()) {\n return ctx.forbidden();\n }\n\n const sanitizedQuery = await permissionChecker.sanitizedQuery.discard(query);\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n const document = await findDocument(sanitizedQuery, model, { locale, status: 'published' });\n\n // Can not discard a document that is not published\n if (!document) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.discard(document)) {\n return ctx.forbidden();\n }\n\n ctx.body = await async.pipe(\n (document) => documentManager.discardDraft(document.documentId, model, { locale }),\n permissionChecker.sanitizeOutput,\n (document) => formatDocumentWithMetadata(permissionChecker, model, document)\n )(document);\n },\n\n async countDraftRelations(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query } = ctx.request;\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n const { locale } = await getDocumentLocaleAndStatus(query, model);\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const document = await findDocument({}, model, { locale });\n if (!document) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.read(document)) {\n return ctx.forbidden();\n }\n\n const number = await documentManager.countDraftRelations(document.documentId, model, locale);\n\n return {\n data: number,\n };\n },\n};\n"],"names":["buildPopulateFromQuery","query","model","getService","populateFromQuery","populateDeep","Infinity","countRelations","build","findDocument","uid","opts","documentManager","populate","findMany","then","documents","createOrUpdateDocument","ctx","user","userAbility","state","params","body","request","permissionChecker","create","cannot","update","errors","ForbiddenError","sanitizedQuery","locale","getDocumentLocaleAndStatus","documentVersion","otherDocumentVersion","Promise","all","status","strapi","db","findOne","select","documentId","pickPermittedFields","sanitizeUpdateInput","sanitizeCreateInput","setCreator","setCreatorFields","isEdition","sanitizeFn","async","pipe","sanitizedBody","data","find","read","forbidden","permissionQuery","version","document","notFound","meta","formatDocumentWithMetadata","publishedAt","availableLocales","availableStatus","sanitizedDocument","sanitizeOutput","createOrUpdate","delete","documentLocales","findLocales","undefined","length","deletedEntity","at","publish","publishedDocument","transaction","NotFoundError","publishResult","unpublish","discardDraft","discard","countDraftRelations","number"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dimensions.js","sources":["../../../../server/src/controllers/validation/dimensions.ts"],"sourcesContent":["import { errors, yup, validateYupSchema, contentTypes } from '@strapi/utils';\nimport type { UID } from '@strapi/types';\n\ninterface Options {\n allowMultipleLocales?: boolean;\n}\n\nconst singleLocaleSchema = yup.string().nullable();\n\nconst multipleLocaleSchema = yup.lazy((value) =>\n Array.isArray(value) ? yup.array().of(singleLocaleSchema.required()) : singleLocaleSchema\n);\n\nconst statusSchema = yup.mixed().oneOf(['draft', 'published'], 'Invalid status');\n\n/**\n * From a request or query object, validates and returns the locale and status of the document.\n * If the status is not provided and Draft & Publish is disabled, it defaults to 'published'.\n */\nexport const getDocumentLocaleAndStatus = async (\n request: any,\n model: UID.Schema,\n opts: Options = { allowMultipleLocales: false }\n) => {\n const { allowMultipleLocales } = opts;\n const { locale, status: providedStatus, ...rest } = request || {};\n\n const defaultStatus = contentTypes.hasDraftAndPublish(strapi.getModel(model))\n ? undefined\n : 'published';\n const status = providedStatus !== undefined ? providedStatus : defaultStatus;\n\n const schema = yup.object().shape({\n locale: allowMultipleLocales ? multipleLocaleSchema : singleLocaleSchema,\n status: statusSchema,\n });\n\n try {\n await validateYupSchema(schema, { strict: true, abortEarly: false })(request);\n\n return { locale, status, ...rest };\n } catch (error: any) {\n throw new errors.ValidationError(`Validation error: ${error.message}`);\n }\n};\n"],"names":["singleLocaleSchema","yup","string","nullable","multipleLocaleSchema","lazy","value","Array","isArray","array","of","required","statusSchema","mixed","oneOf","getDocumentLocaleAndStatus","request","model","opts","allowMultipleLocales","locale","status","providedStatus","rest","defaultStatus","contentTypes","hasDraftAndPublish","strapi","getModel","undefined","schema","object","shape","validateYupSchema","strict","abortEarly","error","errors","ValidationError","message"],"mappings":";;;;AAOA,MAAMA,kBAAqBC,GAAAA,eAAAA,CAAIC,MAAM,EAAA,CAAGC,QAAQ,EAAA;AAEhD,MAAMC,uBAAuBH,eAAII,CAAAA,IAAI,CAAC,CAACC,QACrCC,KAAMC,CAAAA,OAAO,CAACF,KAAAA,CAAAA,GAASL,gBAAIQ,KAAK,EAAA,CAAGC,EAAE,CAACV,kBAAAA,CAAmBW,QAAQ,EAAMX,CAAAA,GAAAA,kBAAAA,CAAAA;AAGzE,MAAMY,YAAeX,GAAAA,eAAAA,CAAIY,KAAK,EAAA,CAAGC,KAAK,CAAC;AAAC,IAAA,OAAA;AAAS,IAAA;CAAY,EAAE,gBAAA,CAAA;AAE/D;;;AAGC,IACYC,MAAAA,0BAAAA,GAA6B,OACxCC,OAAAA,EACAC,OACAC,IAAgB,GAAA;IAAEC,oBAAsB,EAAA;AAAM,CAAC,GAAA;IAE/C,MAAM,EAAEA,oBAAoB,EAAE,GAAGD,IAAAA;IACjC,MAAM,EAAEE,MAAM,EAAEC,MAAQC,EAAAA,cAAc,EAAE,GAAGC,IAAAA,EAAM,GAAGP,OAAAA,IAAW,EAAC;IAEhE,MAAMQ,aAAAA,GAAgBC,yBAAaC,kBAAkB,CAACC,OAAOC,QAAQ,CAACX,UAClEY,SACA,GAAA,WAAA;IACJ,MAAMR,MAAAA,GAASC,cAAmBO,KAAAA,SAAAA,GAAYP,cAAiBE,GAAAA,aAAAA;AAE/D,IAAA,MAAMM,MAAS7B,GAAAA,eAAAA,CAAI8B,MAAM,EAAA,CAAGC,KAAK,CAAC;AAChCZ,QAAAA,MAAAA,EAAQD,uBAAuBf,oBAAuBJ,GAAAA,kBAAAA;QACtDqB,MAAQT,EAAAA;AACV,KAAA,CAAA;IAEA,IAAI;AACF,QAAA,MAAMqB,8BAAkBH,MAAQ,EAAA;YAAEI,MAAQ,EAAA,IAAA;YAAMC,UAAY,EAAA;SAASnB,CAAAA,CAAAA,OAAAA,CAAAA;QAErE,OAAO;AAAEI,YAAAA,MAAAA;AAAQC,YAAAA,MAAAA;AAAQ,YAAA,GAAGE;AAAK,SAAA;AACnC,KAAA,CAAE,OAAOa,KAAY,EAAA;QACnB,MAAM,IAAIC,
|
|
1
|
+
{"version":3,"file":"dimensions.js","sources":["../../../../server/src/controllers/validation/dimensions.ts"],"sourcesContent":["import { errors, yup, validateYupSchema, contentTypes } from '@strapi/utils';\nimport type { UID } from '@strapi/types';\n\ninterface Options {\n allowMultipleLocales?: boolean;\n}\n\nconst singleLocaleSchema = yup.string().nullable();\n\nconst multipleLocaleSchema = yup.lazy((value) =>\n Array.isArray(value) ? yup.array().of(singleLocaleSchema.required()) : singleLocaleSchema\n);\n\nconst statusSchema = yup.mixed().oneOf(['draft', 'published'], 'Invalid status');\n\n/**\n * From a request or query object, validates and returns the locale and status of the document.\n * If the status is not provided and Draft & Publish is disabled, it defaults to 'published'.\n */\nexport const getDocumentLocaleAndStatus = async (\n request: any,\n model: UID.Schema,\n opts: Options = { allowMultipleLocales: false }\n) => {\n const { allowMultipleLocales } = opts;\n const { locale, status: providedStatus, ...rest } = request || {};\n\n const defaultStatus = contentTypes.hasDraftAndPublish(strapi.getModel(model))\n ? undefined\n : 'published';\n const status = providedStatus !== undefined ? providedStatus : defaultStatus;\n\n const schema = yup.object().shape({\n locale: allowMultipleLocales ? multipleLocaleSchema : singleLocaleSchema,\n status: statusSchema,\n });\n\n try {\n await validateYupSchema(schema, { strict: true, abortEarly: false })(request);\n\n return { locale, status, ...rest };\n } catch (error: any) {\n throw new errors.ValidationError(`Validation error: ${error.message}`);\n }\n};\n"],"names":["singleLocaleSchema","yup","string","nullable","multipleLocaleSchema","lazy","value","Array","isArray","array","of","required","statusSchema","mixed","oneOf","getDocumentLocaleAndStatus","request","model","opts","allowMultipleLocales","locale","status","providedStatus","rest","defaultStatus","contentTypes","hasDraftAndPublish","strapi","getModel","undefined","schema","object","shape","validateYupSchema","strict","abortEarly","error","errors","ValidationError","message"],"mappings":";;;;AAOA,MAAMA,kBAAqBC,GAAAA,eAAAA,CAAIC,MAAM,EAAA,CAAGC,QAAQ,EAAA;AAEhD,MAAMC,uBAAuBH,eAAII,CAAAA,IAAI,CAAC,CAACC,QACrCC,KAAMC,CAAAA,OAAO,CAACF,KAAAA,CAAAA,GAASL,gBAAIQ,KAAK,EAAA,CAAGC,EAAE,CAACV,kBAAAA,CAAmBW,QAAQ,EAAMX,CAAAA,GAAAA,kBAAAA,CAAAA;AAGzE,MAAMY,YAAeX,GAAAA,eAAAA,CAAIY,KAAK,EAAA,CAAGC,KAAK,CAAC;AAAC,IAAA,OAAA;AAAS,IAAA;CAAY,EAAE,gBAAA,CAAA;AAE/D;;;AAGC,IACYC,MAAAA,0BAAAA,GAA6B,OACxCC,OAAAA,EACAC,OACAC,IAAgB,GAAA;IAAEC,oBAAsB,EAAA;AAAM,CAAC,GAAA;IAE/C,MAAM,EAAEA,oBAAoB,EAAE,GAAGD,IAAAA;IACjC,MAAM,EAAEE,MAAM,EAAEC,MAAQC,EAAAA,cAAc,EAAE,GAAGC,IAAAA,EAAM,GAAGP,OAAAA,IAAW,EAAC;IAEhE,MAAMQ,aAAAA,GAAgBC,yBAAaC,kBAAkB,CAACC,OAAOC,QAAQ,CAACX,UAClEY,SACA,GAAA,WAAA;IACJ,MAAMR,MAAAA,GAASC,cAAmBO,KAAAA,SAAAA,GAAYP,cAAiBE,GAAAA,aAAAA;AAE/D,IAAA,MAAMM,MAAS7B,GAAAA,eAAAA,CAAI8B,MAAM,EAAA,CAAGC,KAAK,CAAC;AAChCZ,QAAAA,MAAAA,EAAQD,uBAAuBf,oBAAuBJ,GAAAA,kBAAAA;QACtDqB,MAAQT,EAAAA;AACV,KAAA,CAAA;IAEA,IAAI;AACF,QAAA,MAAMqB,8BAAkBH,MAAQ,EAAA;YAAEI,MAAQ,EAAA,IAAA;YAAMC,UAAY,EAAA;SAASnB,CAAAA,CAAAA,OAAAA,CAAAA;QAErE,OAAO;AAAEI,YAAAA,MAAAA;AAAQC,YAAAA,MAAAA;AAAQ,YAAA,GAAGE;AAAK,SAAA;AACnC,KAAA,CAAE,OAAOa,KAAY,EAAA;QACnB,MAAM,IAAIC,mBAAOC,eAAe,CAAC,CAAC,kBAAkB,EAAEF,KAAMG,CAAAA,OAAO,CAAE,CAAA,CAAA;AACvE;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dimensions.mjs","sources":["../../../../server/src/controllers/validation/dimensions.ts"],"sourcesContent":["import { errors, yup, validateYupSchema, contentTypes } from '@strapi/utils';\nimport type { UID } from '@strapi/types';\n\ninterface Options {\n allowMultipleLocales?: boolean;\n}\n\nconst singleLocaleSchema = yup.string().nullable();\n\nconst multipleLocaleSchema = yup.lazy((value) =>\n Array.isArray(value) ? yup.array().of(singleLocaleSchema.required()) : singleLocaleSchema\n);\n\nconst statusSchema = yup.mixed().oneOf(['draft', 'published'], 'Invalid status');\n\n/**\n * From a request or query object, validates and returns the locale and status of the document.\n * If the status is not provided and Draft & Publish is disabled, it defaults to 'published'.\n */\nexport const getDocumentLocaleAndStatus = async (\n request: any,\n model: UID.Schema,\n opts: Options = { allowMultipleLocales: false }\n) => {\n const { allowMultipleLocales } = opts;\n const { locale, status: providedStatus, ...rest } = request || {};\n\n const defaultStatus = contentTypes.hasDraftAndPublish(strapi.getModel(model))\n ? undefined\n : 'published';\n const status = providedStatus !== undefined ? providedStatus : defaultStatus;\n\n const schema = yup.object().shape({\n locale: allowMultipleLocales ? multipleLocaleSchema : singleLocaleSchema,\n status: statusSchema,\n });\n\n try {\n await validateYupSchema(schema, { strict: true, abortEarly: false })(request);\n\n return { locale, status, ...rest };\n } catch (error: any) {\n throw new errors.ValidationError(`Validation error: ${error.message}`);\n }\n};\n"],"names":["singleLocaleSchema","yup","string","nullable","multipleLocaleSchema","lazy","value","Array","isArray","array","of","required","statusSchema","mixed","oneOf","getDocumentLocaleAndStatus","request","model","opts","allowMultipleLocales","locale","status","providedStatus","rest","defaultStatus","contentTypes","hasDraftAndPublish","strapi","getModel","undefined","schema","object","shape","validateYupSchema","strict","abortEarly","error","errors","ValidationError","message"],"mappings":";;AAOA,MAAMA,kBAAqBC,GAAAA,GAAAA,CAAIC,MAAM,EAAA,CAAGC,QAAQ,EAAA;AAEhD,MAAMC,uBAAuBH,GAAII,CAAAA,IAAI,CAAC,CAACC,QACrCC,KAAMC,CAAAA,OAAO,CAACF,KAAAA,CAAAA,GAASL,IAAIQ,KAAK,EAAA,CAAGC,EAAE,CAACV,kBAAAA,CAAmBW,QAAQ,EAAMX,CAAAA,GAAAA,kBAAAA,CAAAA;AAGzE,MAAMY,YAAeX,GAAAA,GAAAA,CAAIY,KAAK,EAAA,CAAGC,KAAK,CAAC;AAAC,IAAA,OAAA;AAAS,IAAA;CAAY,EAAE,gBAAA,CAAA;AAE/D;;;AAGC,IACYC,MAAAA,0BAAAA,GAA6B,OACxCC,OAAAA,EACAC,OACAC,IAAgB,GAAA;IAAEC,oBAAsB,EAAA;AAAM,CAAC,GAAA;IAE/C,MAAM,EAAEA,oBAAoB,EAAE,GAAGD,IAAAA;IACjC,MAAM,EAAEE,MAAM,EAAEC,MAAQC,EAAAA,cAAc,EAAE,GAAGC,IAAAA,EAAM,GAAGP,OAAAA,IAAW,EAAC;IAEhE,MAAMQ,aAAAA,GAAgBC,aAAaC,kBAAkB,CAACC,OAAOC,QAAQ,CAACX,UAClEY,SACA,GAAA,WAAA;IACJ,MAAMR,MAAAA,GAASC,cAAmBO,KAAAA,SAAAA,GAAYP,cAAiBE,GAAAA,aAAAA;AAE/D,IAAA,MAAMM,MAAS7B,GAAAA,GAAAA,CAAI8B,MAAM,EAAA,CAAGC,KAAK,CAAC;AAChCZ,QAAAA,MAAAA,EAAQD,uBAAuBf,oBAAuBJ,GAAAA,kBAAAA;QACtDqB,MAAQT,EAAAA;AACV,KAAA,CAAA;IAEA,IAAI;AACF,QAAA,MAAMqB,kBAAkBH,MAAQ,EAAA;YAAEI,MAAQ,EAAA,IAAA;YAAMC,UAAY,EAAA;SAASnB,CAAAA,CAAAA,OAAAA,CAAAA;QAErE,OAAO;AAAEI,YAAAA,MAAAA;AAAQC,YAAAA,MAAAA;AAAQ,YAAA,GAAGE;AAAK,SAAA;AACnC,KAAA,CAAE,OAAOa,KAAY,EAAA;QACnB,MAAM,IAAIC,
|
|
1
|
+
{"version":3,"file":"dimensions.mjs","sources":["../../../../server/src/controllers/validation/dimensions.ts"],"sourcesContent":["import { errors, yup, validateYupSchema, contentTypes } from '@strapi/utils';\nimport type { UID } from '@strapi/types';\n\ninterface Options {\n allowMultipleLocales?: boolean;\n}\n\nconst singleLocaleSchema = yup.string().nullable();\n\nconst multipleLocaleSchema = yup.lazy((value) =>\n Array.isArray(value) ? yup.array().of(singleLocaleSchema.required()) : singleLocaleSchema\n);\n\nconst statusSchema = yup.mixed().oneOf(['draft', 'published'], 'Invalid status');\n\n/**\n * From a request or query object, validates and returns the locale and status of the document.\n * If the status is not provided and Draft & Publish is disabled, it defaults to 'published'.\n */\nexport const getDocumentLocaleAndStatus = async (\n request: any,\n model: UID.Schema,\n opts: Options = { allowMultipleLocales: false }\n) => {\n const { allowMultipleLocales } = opts;\n const { locale, status: providedStatus, ...rest } = request || {};\n\n const defaultStatus = contentTypes.hasDraftAndPublish(strapi.getModel(model))\n ? undefined\n : 'published';\n const status = providedStatus !== undefined ? providedStatus : defaultStatus;\n\n const schema = yup.object().shape({\n locale: allowMultipleLocales ? multipleLocaleSchema : singleLocaleSchema,\n status: statusSchema,\n });\n\n try {\n await validateYupSchema(schema, { strict: true, abortEarly: false })(request);\n\n return { locale, status, ...rest };\n } catch (error: any) {\n throw new errors.ValidationError(`Validation error: ${error.message}`);\n }\n};\n"],"names":["singleLocaleSchema","yup","string","nullable","multipleLocaleSchema","lazy","value","Array","isArray","array","of","required","statusSchema","mixed","oneOf","getDocumentLocaleAndStatus","request","model","opts","allowMultipleLocales","locale","status","providedStatus","rest","defaultStatus","contentTypes","hasDraftAndPublish","strapi","getModel","undefined","schema","object","shape","validateYupSchema","strict","abortEarly","error","errors","ValidationError","message"],"mappings":";;AAOA,MAAMA,kBAAqBC,GAAAA,GAAAA,CAAIC,MAAM,EAAA,CAAGC,QAAQ,EAAA;AAEhD,MAAMC,uBAAuBH,GAAII,CAAAA,IAAI,CAAC,CAACC,QACrCC,KAAMC,CAAAA,OAAO,CAACF,KAAAA,CAAAA,GAASL,IAAIQ,KAAK,EAAA,CAAGC,EAAE,CAACV,kBAAAA,CAAmBW,QAAQ,EAAMX,CAAAA,GAAAA,kBAAAA,CAAAA;AAGzE,MAAMY,YAAeX,GAAAA,GAAAA,CAAIY,KAAK,EAAA,CAAGC,KAAK,CAAC;AAAC,IAAA,OAAA;AAAS,IAAA;CAAY,EAAE,gBAAA,CAAA;AAE/D;;;AAGC,IACYC,MAAAA,0BAAAA,GAA6B,OACxCC,OAAAA,EACAC,OACAC,IAAgB,GAAA;IAAEC,oBAAsB,EAAA;AAAM,CAAC,GAAA;IAE/C,MAAM,EAAEA,oBAAoB,EAAE,GAAGD,IAAAA;IACjC,MAAM,EAAEE,MAAM,EAAEC,MAAQC,EAAAA,cAAc,EAAE,GAAGC,IAAAA,EAAM,GAAGP,OAAAA,IAAW,EAAC;IAEhE,MAAMQ,aAAAA,GAAgBC,aAAaC,kBAAkB,CAACC,OAAOC,QAAQ,CAACX,UAClEY,SACA,GAAA,WAAA;IACJ,MAAMR,MAAAA,GAASC,cAAmBO,KAAAA,SAAAA,GAAYP,cAAiBE,GAAAA,aAAAA;AAE/D,IAAA,MAAMM,MAAS7B,GAAAA,GAAAA,CAAI8B,MAAM,EAAA,CAAGC,KAAK,CAAC;AAChCZ,QAAAA,MAAAA,EAAQD,uBAAuBf,oBAAuBJ,GAAAA,kBAAAA;QACtDqB,MAAQT,EAAAA;AACV,KAAA,CAAA;IAEA,IAAI;AACF,QAAA,MAAMqB,kBAAkBH,MAAQ,EAAA;YAAEI,MAAQ,EAAA,IAAA;YAAMC,UAAY,EAAA;SAASnB,CAAAA,CAAAA,OAAAA,CAAAA;QAErE,OAAO;AAAEI,YAAAA,MAAAA;AAAQC,YAAAA,MAAAA;AAAQ,YAAA,GAAGE;AAAK,SAAA;AACnC,KAAA,CAAE,OAAOa,KAAY,EAAA;QACnB,MAAM,IAAIC,OAAOC,eAAe,CAAC,CAAC,kBAAkB,EAAEF,KAAMG,CAAAA,OAAO,CAAE,CAAA,CAAA;AACvE;AACF;;;;"}
|
|
@@ -25,7 +25,9 @@ const generateUIDInputSchema = strapiUtils.yup.object({
|
|
|
25
25
|
const checkUIDAvailabilityInputSchema = strapiUtils.yup.object({
|
|
26
26
|
contentTypeUID: strapiUtils.yup.string().required(),
|
|
27
27
|
field: strapiUtils.yup.string().required(),
|
|
28
|
-
value: strapiUtils.yup.string().
|
|
28
|
+
value: strapiUtils.yup.string().required().test('isValueMatchingRegex', `\${path} must match the custom regex or the default one "/^[A-Za-z0-9-_.~]*$/"`, function(value, context) {
|
|
29
|
+
return value === '' || (context.options.context?.regex ? new RegExp(context.options?.context.regex).test(value) : /^[A-Za-z0-9-_.~]*$/.test(value));
|
|
30
|
+
})
|
|
29
31
|
});
|
|
30
32
|
const validateUIDField = (contentTypeUID, field)=>{
|
|
31
33
|
const model = strapi.contentTypes[contentTypeUID];
|
|
@@ -46,7 +48,17 @@ const validateUIDField = (contentTypeUID, field)=>{
|
|
|
46
48
|
const validateKind = strapiUtils.validateYupSchema(kindSchema);
|
|
47
49
|
const validateBulkActionInput = strapiUtils.validateYupSchema(bulkActionInputSchema);
|
|
48
50
|
const validateGenerateUIDInput = strapiUtils.validateYupSchema(generateUIDInputSchema);
|
|
49
|
-
const validateCheckUIDAvailabilityInput =
|
|
51
|
+
const validateCheckUIDAvailabilityInput = (body)=>{
|
|
52
|
+
const options = {};
|
|
53
|
+
const contentType = body.contentTypeUID in strapi.contentTypes ? strapi.contentTypes[body.contentTypeUID] : null;
|
|
54
|
+
if (contentType?.attributes[body.field] && `regex` in contentType.attributes[body.field] && contentType.attributes[body.field].regex) {
|
|
55
|
+
options.context = {
|
|
56
|
+
regex: (contentType?.attributes[body.field]).regex
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const validator = strapiUtils.validateYupSchema(checkUIDAvailabilityInputSchema, options);
|
|
60
|
+
return validator(body);
|
|
61
|
+
};
|
|
50
62
|
|
|
51
63
|
exports.validateBulkActionInput = validateBulkActionInput;
|
|
52
64
|
exports.validateCheckUIDAvailabilityInput = validateCheckUIDAvailabilityInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../server/src/controllers/validation/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport { yup, validateYupSchema, errors } from '@strapi/utils';\nimport createModelConfigurationSchema from './model-configuration';\n\nconst { PaginationError, ValidationError } = errors;\nconst TYPES = ['singleType', 'collectionType'];\n\n/**\n * Validates type kind\n */\nconst kindSchema = yup.string().oneOf(TYPES).nullable();\n\nconst bulkActionInputSchema = yup\n .object({\n documentIds: yup.array().of(yup.strapiID()).min(1).required(),\n })\n .required();\n\nconst generateUIDInputSchema = yup.object({\n contentTypeUID: yup.string().required(),\n field: yup.string().required(),\n data: yup.object().required(),\n});\n\nconst checkUIDAvailabilityInputSchema = yup.object({\n contentTypeUID: yup.string().required(),\n field: yup.string().required(),\n value: yup\n .string()\n .
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../server/src/controllers/validation/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport { Schema, UID } from '@strapi/types';\nimport { yup, validateYupSchema, errors } from '@strapi/utils';\nimport { ValidateOptions } from 'yup/lib/types';\nimport { TestContext } from 'yup';\nimport createModelConfigurationSchema from './model-configuration';\n\nconst { PaginationError, ValidationError } = errors;\nconst TYPES = ['singleType', 'collectionType'];\n\n/**\n * Validates type kind\n */\nconst kindSchema = yup.string().oneOf(TYPES).nullable();\n\nconst bulkActionInputSchema = yup\n .object({\n documentIds: yup.array().of(yup.strapiID()).min(1).required(),\n })\n .required();\n\nconst generateUIDInputSchema = yup.object({\n contentTypeUID: yup.string().required(),\n field: yup.string().required(),\n data: yup.object().required(),\n});\n\nconst checkUIDAvailabilityInputSchema = yup.object({\n contentTypeUID: yup.string().required(),\n field: yup.string().required(),\n value: yup\n .string()\n .required()\n .test(\n 'isValueMatchingRegex',\n `\\${path} must match the custom regex or the default one \"/^[A-Za-z0-9-_.~]*$/\"`,\n function (value, context: TestContext<{ regex?: string }>) {\n return (\n value === '' ||\n (context.options.context?.regex\n ? new RegExp(context.options?.context.regex).test(value as string)\n : /^[A-Za-z0-9-_.~]*$/.test(value as string))\n );\n }\n ),\n});\n\nconst validateUIDField = (contentTypeUID: any, field: any) => {\n const model = strapi.contentTypes[contentTypeUID];\n\n if (!model) {\n throw new ValidationError('ContentType not found');\n }\n\n if (\n !_.has(model, ['attributes', field]) ||\n _.get(model, ['attributes', field, 'type']) !== 'uid'\n ) {\n throw new ValidationError(`${field} must be a valid \\`uid\\` attribute`);\n }\n};\n\nconst validatePagination = ({ page, pageSize }: any) => {\n const pageNumber = parseInt(page, 10);\n const pageSizeNumber = parseInt(pageSize, 10);\n\n if (Number.isNaN(pageNumber) || pageNumber < 1) {\n throw new PaginationError('invalid pageNumber param');\n }\n if (Number.isNaN(pageSizeNumber) || pageSizeNumber < 1) {\n throw new PaginationError('invalid pageSize param');\n }\n};\n\nconst validateKind = validateYupSchema(kindSchema);\nconst validateBulkActionInput = validateYupSchema(bulkActionInputSchema);\nconst validateGenerateUIDInput = validateYupSchema(generateUIDInputSchema);\nconst validateCheckUIDAvailabilityInput = (body: {\n contentTypeUID: UID.ContentType;\n field: string;\n value: string;\n}) => {\n const options: ValidateOptions<{ regex?: string }> = {};\n\n const contentType =\n body.contentTypeUID in strapi.contentTypes ? strapi.contentTypes[body.contentTypeUID] : null;\n\n if (\n contentType?.attributes[body.field] &&\n `regex` in contentType.attributes[body.field] &&\n (contentType.attributes[body.field] as Schema.Attribute.UID).regex\n ) {\n options.context = {\n regex: (contentType?.attributes[body.field] as Schema.Attribute.UID).regex,\n };\n }\n\n const validator = validateYupSchema(checkUIDAvailabilityInputSchema, options);\n\n return validator(body);\n};\n\nexport {\n createModelConfigurationSchema,\n validateUIDField,\n validatePagination,\n validateKind,\n validateBulkActionInput,\n validateGenerateUIDInput,\n validateCheckUIDAvailabilityInput,\n};\n"],"names":["PaginationError","ValidationError","errors","TYPES","kindSchema","yup","string","oneOf","nullable","bulkActionInputSchema","object","documentIds","array","of","strapiID","min","required","generateUIDInputSchema","contentTypeUID","field","data","checkUIDAvailabilityInputSchema","value","test","context","options","regex","RegExp","validateUIDField","model","strapi","contentTypes","_","has","get","validateKind","validateYupSchema","validateBulkActionInput","validateGenerateUIDInput","validateCheckUIDAvailabilityInput","body","contentType","attributes","validator"],"mappings":"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"}
|
|
@@ -23,7 +23,9 @@ const generateUIDInputSchema = yup.object({
|
|
|
23
23
|
const checkUIDAvailabilityInputSchema = yup.object({
|
|
24
24
|
contentTypeUID: yup.string().required(),
|
|
25
25
|
field: yup.string().required(),
|
|
26
|
-
value: yup.string().
|
|
26
|
+
value: yup.string().required().test('isValueMatchingRegex', `\${path} must match the custom regex or the default one "/^[A-Za-z0-9-_.~]*$/"`, function(value, context) {
|
|
27
|
+
return value === '' || (context.options.context?.regex ? new RegExp(context.options?.context.regex).test(value) : /^[A-Za-z0-9-_.~]*$/.test(value));
|
|
28
|
+
})
|
|
27
29
|
});
|
|
28
30
|
const validateUIDField = (contentTypeUID, field)=>{
|
|
29
31
|
const model = strapi.contentTypes[contentTypeUID];
|
|
@@ -44,7 +46,17 @@ const validateUIDField = (contentTypeUID, field)=>{
|
|
|
44
46
|
const validateKind = validateYupSchema(kindSchema);
|
|
45
47
|
const validateBulkActionInput = validateYupSchema(bulkActionInputSchema);
|
|
46
48
|
const validateGenerateUIDInput = validateYupSchema(generateUIDInputSchema);
|
|
47
|
-
const validateCheckUIDAvailabilityInput =
|
|
49
|
+
const validateCheckUIDAvailabilityInput = (body)=>{
|
|
50
|
+
const options = {};
|
|
51
|
+
const contentType = body.contentTypeUID in strapi.contentTypes ? strapi.contentTypes[body.contentTypeUID] : null;
|
|
52
|
+
if (contentType?.attributes[body.field] && `regex` in contentType.attributes[body.field] && contentType.attributes[body.field].regex) {
|
|
53
|
+
options.context = {
|
|
54
|
+
regex: (contentType?.attributes[body.field]).regex
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const validator = validateYupSchema(checkUIDAvailabilityInputSchema, options);
|
|
58
|
+
return validator(body);
|
|
59
|
+
};
|
|
48
60
|
|
|
49
61
|
export { validateBulkActionInput, validateCheckUIDAvailabilityInput, validateGenerateUIDInput, validateKind, validateUIDField };
|
|
50
62
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../server/src/controllers/validation/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport { yup, validateYupSchema, errors } from '@strapi/utils';\nimport createModelConfigurationSchema from './model-configuration';\n\nconst { PaginationError, ValidationError } = errors;\nconst TYPES = ['singleType', 'collectionType'];\n\n/**\n * Validates type kind\n */\nconst kindSchema = yup.string().oneOf(TYPES).nullable();\n\nconst bulkActionInputSchema = yup\n .object({\n documentIds: yup.array().of(yup.strapiID()).min(1).required(),\n })\n .required();\n\nconst generateUIDInputSchema = yup.object({\n contentTypeUID: yup.string().required(),\n field: yup.string().required(),\n data: yup.object().required(),\n});\n\nconst checkUIDAvailabilityInputSchema = yup.object({\n contentTypeUID: yup.string().required(),\n field: yup.string().required(),\n value: yup\n .string()\n .
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../server/src/controllers/validation/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport { Schema, UID } from '@strapi/types';\nimport { yup, validateYupSchema, errors } from '@strapi/utils';\nimport { ValidateOptions } from 'yup/lib/types';\nimport { TestContext } from 'yup';\nimport createModelConfigurationSchema from './model-configuration';\n\nconst { PaginationError, ValidationError } = errors;\nconst TYPES = ['singleType', 'collectionType'];\n\n/**\n * Validates type kind\n */\nconst kindSchema = yup.string().oneOf(TYPES).nullable();\n\nconst bulkActionInputSchema = yup\n .object({\n documentIds: yup.array().of(yup.strapiID()).min(1).required(),\n })\n .required();\n\nconst generateUIDInputSchema = yup.object({\n contentTypeUID: yup.string().required(),\n field: yup.string().required(),\n data: yup.object().required(),\n});\n\nconst checkUIDAvailabilityInputSchema = yup.object({\n contentTypeUID: yup.string().required(),\n field: yup.string().required(),\n value: yup\n .string()\n .required()\n .test(\n 'isValueMatchingRegex',\n `\\${path} must match the custom regex or the default one \"/^[A-Za-z0-9-_.~]*$/\"`,\n function (value, context: TestContext<{ regex?: string }>) {\n return (\n value === '' ||\n (context.options.context?.regex\n ? new RegExp(context.options?.context.regex).test(value as string)\n : /^[A-Za-z0-9-_.~]*$/.test(value as string))\n );\n }\n ),\n});\n\nconst validateUIDField = (contentTypeUID: any, field: any) => {\n const model = strapi.contentTypes[contentTypeUID];\n\n if (!model) {\n throw new ValidationError('ContentType not found');\n }\n\n if (\n !_.has(model, ['attributes', field]) ||\n _.get(model, ['attributes', field, 'type']) !== 'uid'\n ) {\n throw new ValidationError(`${field} must be a valid \\`uid\\` attribute`);\n }\n};\n\nconst validatePagination = ({ page, pageSize }: any) => {\n const pageNumber = parseInt(page, 10);\n const pageSizeNumber = parseInt(pageSize, 10);\n\n if (Number.isNaN(pageNumber) || pageNumber < 1) {\n throw new PaginationError('invalid pageNumber param');\n }\n if (Number.isNaN(pageSizeNumber) || pageSizeNumber < 1) {\n throw new PaginationError('invalid pageSize param');\n }\n};\n\nconst validateKind = validateYupSchema(kindSchema);\nconst validateBulkActionInput = validateYupSchema(bulkActionInputSchema);\nconst validateGenerateUIDInput = validateYupSchema(generateUIDInputSchema);\nconst validateCheckUIDAvailabilityInput = (body: {\n contentTypeUID: UID.ContentType;\n field: string;\n value: string;\n}) => {\n const options: ValidateOptions<{ regex?: string }> = {};\n\n const contentType =\n body.contentTypeUID in strapi.contentTypes ? strapi.contentTypes[body.contentTypeUID] : null;\n\n if (\n contentType?.attributes[body.field] &&\n `regex` in contentType.attributes[body.field] &&\n (contentType.attributes[body.field] as Schema.Attribute.UID).regex\n ) {\n options.context = {\n regex: (contentType?.attributes[body.field] as Schema.Attribute.UID).regex,\n };\n }\n\n const validator = validateYupSchema(checkUIDAvailabilityInputSchema, options);\n\n return validator(body);\n};\n\nexport {\n createModelConfigurationSchema,\n validateUIDField,\n validatePagination,\n validateKind,\n validateBulkActionInput,\n validateGenerateUIDInput,\n validateCheckUIDAvailabilityInput,\n};\n"],"names":["PaginationError","ValidationError","errors","TYPES","kindSchema","yup","string","oneOf","nullable","bulkActionInputSchema","object","documentIds","array","of","strapiID","min","required","generateUIDInputSchema","contentTypeUID","field","data","checkUIDAvailabilityInputSchema","value","test","context","options","regex","RegExp","validateUIDField","model","strapi","contentTypes","_","has","get","validateKind","validateYupSchema","validateBulkActionInput","validateGenerateUIDInput","validateCheckUIDAvailabilityInput","body","contentType","attributes","validator"],"mappings":"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"}
|
|
@@ -35,8 +35,8 @@ const createMetadasSchema = (schema)=>{
|
|
|
35
35
|
acc[key] = strapiUtils.yup.object().shape({
|
|
36
36
|
edit: strapiUtils.yup.object().shape({
|
|
37
37
|
label: strapiUtils.yup.string(),
|
|
38
|
-
description: strapiUtils.yup.string(),
|
|
39
|
-
placeholder: strapiUtils.yup.string(),
|
|
38
|
+
description: strapiUtils.yup.string().nullable(),
|
|
39
|
+
placeholder: strapiUtils.yup.string().nullable(),
|
|
40
40
|
editable: strapiUtils.yup.boolean(),
|
|
41
41
|
visible: strapiUtils.yup.boolean(),
|
|
42
42
|
mainField: strapiUtils.yup.lazy((value)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-configuration.js","sources":["../../../../server/src/controllers/validation/model-configuration.ts"],"sourcesContent":["import { yup } from '@strapi/utils';\nimport { getService } from '../../utils';\nimport { isListable, hasEditableAttribute } from '../../services/utils/configuration/attributes';\nimport { isValidDefaultSort } from '../../services/utils/configuration/settings';\n\n/**\n * Creates the validation schema for content-type configurations\n */\nexport default (schema: any, opts = {}) =>\n yup\n .object()\n .shape({\n settings: createSettingsSchema(schema).default(null).nullable(),\n metadatas: createMetadasSchema(schema).default(null).nullable(),\n layouts: createLayoutsSchema(schema, opts).default(null).nullable(),\n options: yup.object().optional(),\n })\n .noUnknown();\n\nconst createSettingsSchema = (schema: any) => {\n const validAttributes = Object.keys(schema.attributes).filter((key) => isListable(schema, key));\n\n return yup\n .object()\n .shape({\n bulkable: yup.boolean().required(),\n filterable: yup.boolean().required(),\n pageSize: yup.number().integer().min(10).max(100).required(),\n searchable: yup.boolean().required(),\n // should be reset when the type changes\n mainField: yup.string().oneOf(validAttributes.concat('id')).default('id'),\n // should be reset when the type changes\n defaultSortBy: yup\n .string()\n .test('is-valid-sort-attribute', '${path} is not a valid sort attribute', async (value) =>\n isValidDefaultSort(schema, value)\n )\n .default('id'),\n defaultSortOrder: yup.string().oneOf(['ASC', 'DESC']).default('ASC'),\n })\n .noUnknown();\n};\n\nconst createMetadasSchema = (schema: any) => {\n return yup.object().shape(\n Object.keys(schema.attributes).reduce((acc: any, key) => {\n acc[key] = yup\n .object()\n .shape({\n edit: yup\n .object()\n .shape({\n label: yup.string(),\n description: yup.string(),\n placeholder: yup.string(),\n editable: yup.boolean(),\n visible: yup.boolean(),\n mainField: yup.lazy((value) => {\n if (!value) {\n return yup.string();\n }\n\n const targetSchema = getService('content-types').findContentType(\n schema.attributes[key].targetModel\n );\n\n if (!targetSchema) {\n return yup.string();\n }\n\n const validAttributes = Object.keys(targetSchema.attributes).filter((key) =>\n isListable(targetSchema, key)\n );\n\n return yup.string().oneOf(validAttributes.concat('id')).default('id');\n }),\n })\n .noUnknown()\n .required(),\n list: yup\n .object()\n .shape({\n label: yup.string(),\n searchable: yup.boolean(),\n sortable: yup.boolean(),\n })\n .noUnknown()\n .required(),\n })\n .noUnknown();\n\n return acc;\n }, {})\n );\n};\n\nconst createArrayTest = ({ allowUndefined = false } = {}) => ({\n name: 'isArray',\n message: '${path} is required and must be an array',\n test: (val: any) => (allowUndefined === true && val === undefined ? true : Array.isArray(val)),\n});\n\nconst createLayoutsSchema = (schema: any, opts = {}) => {\n const validAttributes = Object.keys(schema.attributes).filter((key) => isListable(schema, key));\n\n const editAttributes = Object.keys(schema.attributes).filter((key) =>\n hasEditableAttribute(schema, key)\n );\n\n return yup.object().shape({\n edit: yup\n .array()\n .of(\n yup.array().of(\n yup\n .object()\n .shape({\n name: yup.string().oneOf(editAttributes).required(),\n size: yup.number().integer().positive().required(),\n })\n .noUnknown()\n )\n )\n .test(createArrayTest(opts)),\n list: yup.array().of(yup.string().oneOf(validAttributes)).test(createArrayTest(opts)),\n });\n};\n"],"names":["schema","opts","yup","object","shape","settings","createSettingsSchema","default","nullable","metadatas","createMetadasSchema","layouts","createLayoutsSchema","options","optional","noUnknown","validAttributes","Object","keys","attributes","filter","key","isListable","bulkable","boolean","required","filterable","pageSize","number","integer","min","max","searchable","mainField","string","oneOf","concat","defaultSortBy","test","value","isValidDefaultSort","defaultSortOrder","reduce","acc","edit","label","description","placeholder","editable","visible","lazy","targetSchema","getService","findContentType","targetModel","list","sortable","createArrayTest","allowUndefined","name","message","val","undefined","Array","isArray","editAttributes","hasEditableAttribute","array","of","size","positive"],"mappings":";;;;;;;AAKA;;AAEC,IACD,qCAAe,CAAA,CAACA,MAAAA,EAAaC,IAAO,GAAA,EAAE,GACpCC,eACGC,CAAAA,MAAM,EACNC,CAAAA,KAAK,CAAC;AACLC,QAAAA,QAAAA,EAAUC,oBAAqBN,CAAAA,MAAAA,CAAAA,CAAQO,OAAO,CAAC,MAAMC,QAAQ,EAAA;AAC7DC,QAAAA,SAAAA,EAAWC,mBAAoBV,CAAAA,MAAAA,CAAAA,CAAQO,OAAO,CAAC,MAAMC,QAAQ,EAAA;AAC7DG,QAAAA,OAAAA,EAASC,oBAAoBZ,MAAQC,EAAAA,IAAAA,CAAAA,CAAMM,OAAO,CAAC,MAAMC,QAAQ,EAAA;QACjEK,OAASX,EAAAA,eAAAA,CAAIC,MAAM,EAAA,CAAGW,QAAQ;KAE/BC,CAAAA,CAAAA,SAAS,EAAC;AAEf,MAAMT,uBAAuB,CAACN,MAAAA,GAAAA;AAC5B,IAAA,MAAMgB,eAAkBC,GAAAA,MAAAA,CAAOC,IAAI,CAAClB,MAAOmB,CAAAA,UAAU,CAAEC,CAAAA,MAAM,CAAC,CAACC,GAAQC,GAAAA,qBAAAA,CAAWtB,MAAQqB,EAAAA,GAAAA,CAAAA,CAAAA;AAE1F,IAAA,OAAOnB,eACJC,CAAAA,MAAM,EACNC,CAAAA,KAAK,CAAC;QACLmB,QAAUrB,EAAAA,eAAAA,CAAIsB,OAAO,EAAA,CAAGC,QAAQ,EAAA;QAChCC,UAAYxB,EAAAA,eAAAA,CAAIsB,OAAO,EAAA,CAAGC,QAAQ,EAAA;QAClCE,QAAUzB,EAAAA,eAAAA,CAAI0B,MAAM,EAAA,CAAGC,OAAO,EAAA,CAAGC,GAAG,CAAC,EAAIC,CAAAA,CAAAA,GAAG,CAAC,GAAA,CAAA,CAAKN,QAAQ,EAAA;QAC1DO,UAAY9B,EAAAA,eAAAA,CAAIsB,OAAO,EAAA,CAAGC,QAAQ,EAAA;;QAElCQ,SAAW/B,EAAAA,eAAAA,CAAIgC,MAAM,EAAA,CAAGC,KAAK,CAACnB,gBAAgBoB,MAAM,CAAC,IAAO7B,CAAAA,CAAAA,CAAAA,OAAO,CAAC,IAAA,CAAA;;AAEpE8B,QAAAA,aAAAA,EAAenC,eACZgC,CAAAA,MAAM,EACNI,CAAAA,IAAI,CAAC,yBAAA,EAA2B,uCAAyC,EAAA,OAAOC,KAC/EC,GAAAA,2BAAAA,CAAmBxC,MAAQuC,EAAAA,KAAAA,CAAAA,CAAAA,CAE5BhC,OAAO,CAAC,IAAA,CAAA;AACXkC,QAAAA,gBAAAA,EAAkBvC,eAAIgC,CAAAA,MAAM,EAAGC,CAAAA,KAAK,CAAC;AAAC,YAAA,KAAA;AAAO,YAAA;AAAO,SAAA,CAAA,CAAE5B,OAAO,CAAC,KAAA;AAChE,KAAA,CAAA,CACCQ,SAAS,EAAA;AACd,CAAA;AAEA,MAAML,sBAAsB,CAACV,MAAAA,GAAAA;AAC3B,IAAA,OAAOE,eAAIC,CAAAA,MAAM,EAAGC,CAAAA,KAAK,CACvBa,MAAOC,CAAAA,IAAI,CAAClB,MAAAA,CAAOmB,UAAU,CAAA,CAAEuB,MAAM,CAAC,CAACC,GAAUtB,EAAAA,GAAAA,GAAAA;AAC/CsB,QAAAA,GAAG,CAACtB,GAAI,CAAA,GAAGnB,gBACRC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLwC,YAAAA,IAAAA,EAAM1C,eACHC,CAAAA,MAAM,EACNC,CAAAA,KAAK,CAAC;AACLyC,gBAAAA,KAAAA,EAAO3C,gBAAIgC,MAAM,EAAA;
|
|
1
|
+
{"version":3,"file":"model-configuration.js","sources":["../../../../server/src/controllers/validation/model-configuration.ts"],"sourcesContent":["import { yup } from '@strapi/utils';\nimport { getService } from '../../utils';\nimport { isListable, hasEditableAttribute } from '../../services/utils/configuration/attributes';\nimport { isValidDefaultSort } from '../../services/utils/configuration/settings';\n\n/**\n * Creates the validation schema for content-type configurations\n */\nexport default (schema: any, opts = {}) =>\n yup\n .object()\n .shape({\n settings: createSettingsSchema(schema).default(null).nullable(),\n metadatas: createMetadasSchema(schema).default(null).nullable(),\n layouts: createLayoutsSchema(schema, opts).default(null).nullable(),\n options: yup.object().optional(),\n })\n .noUnknown();\n\nconst createSettingsSchema = (schema: any) => {\n const validAttributes = Object.keys(schema.attributes).filter((key) => isListable(schema, key));\n\n return yup\n .object()\n .shape({\n bulkable: yup.boolean().required(),\n filterable: yup.boolean().required(),\n pageSize: yup.number().integer().min(10).max(100).required(),\n searchable: yup.boolean().required(),\n // should be reset when the type changes\n mainField: yup.string().oneOf(validAttributes.concat('id')).default('id'),\n // should be reset when the type changes\n defaultSortBy: yup\n .string()\n .test('is-valid-sort-attribute', '${path} is not a valid sort attribute', async (value) =>\n isValidDefaultSort(schema, value)\n )\n .default('id'),\n defaultSortOrder: yup.string().oneOf(['ASC', 'DESC']).default('ASC'),\n })\n .noUnknown();\n};\n\nconst createMetadasSchema = (schema: any) => {\n return yup.object().shape(\n Object.keys(schema.attributes).reduce((acc: any, key) => {\n acc[key] = yup\n .object()\n .shape({\n edit: yup\n .object()\n .shape({\n label: yup.string(),\n description: yup.string().nullable(),\n placeholder: yup.string().nullable(),\n editable: yup.boolean(),\n visible: yup.boolean(),\n mainField: yup.lazy((value) => {\n if (!value) {\n return yup.string();\n }\n\n const targetSchema = getService('content-types').findContentType(\n schema.attributes[key].targetModel\n );\n\n if (!targetSchema) {\n return yup.string();\n }\n\n const validAttributes = Object.keys(targetSchema.attributes).filter((key) =>\n isListable(targetSchema, key)\n );\n\n return yup.string().oneOf(validAttributes.concat('id')).default('id');\n }),\n })\n .noUnknown()\n .required(),\n list: yup\n .object()\n .shape({\n label: yup.string(),\n searchable: yup.boolean(),\n sortable: yup.boolean(),\n })\n .noUnknown()\n .required(),\n })\n .noUnknown();\n\n return acc;\n }, {})\n );\n};\n\nconst createArrayTest = ({ allowUndefined = false } = {}) => ({\n name: 'isArray',\n message: '${path} is required and must be an array',\n test: (val: any) => (allowUndefined === true && val === undefined ? true : Array.isArray(val)),\n});\n\nconst createLayoutsSchema = (schema: any, opts = {}) => {\n const validAttributes = Object.keys(schema.attributes).filter((key) => isListable(schema, key));\n\n const editAttributes = Object.keys(schema.attributes).filter((key) =>\n hasEditableAttribute(schema, key)\n );\n\n return yup.object().shape({\n edit: yup\n .array()\n .of(\n yup.array().of(\n yup\n .object()\n .shape({\n name: yup.string().oneOf(editAttributes).required(),\n size: yup.number().integer().positive().required(),\n })\n .noUnknown()\n )\n )\n .test(createArrayTest(opts)),\n list: yup.array().of(yup.string().oneOf(validAttributes)).test(createArrayTest(opts)),\n });\n};\n"],"names":["schema","opts","yup","object","shape","settings","createSettingsSchema","default","nullable","metadatas","createMetadasSchema","layouts","createLayoutsSchema","options","optional","noUnknown","validAttributes","Object","keys","attributes","filter","key","isListable","bulkable","boolean","required","filterable","pageSize","number","integer","min","max","searchable","mainField","string","oneOf","concat","defaultSortBy","test","value","isValidDefaultSort","defaultSortOrder","reduce","acc","edit","label","description","placeholder","editable","visible","lazy","targetSchema","getService","findContentType","targetModel","list","sortable","createArrayTest","allowUndefined","name","message","val","undefined","Array","isArray","editAttributes","hasEditableAttribute","array","of","size","positive"],"mappings":"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"}
|
|
@@ -33,8 +33,8 @@ const createMetadasSchema = (schema)=>{
|
|
|
33
33
|
acc[key] = yup.object().shape({
|
|
34
34
|
edit: yup.object().shape({
|
|
35
35
|
label: yup.string(),
|
|
36
|
-
description: yup.string(),
|
|
37
|
-
placeholder: yup.string(),
|
|
36
|
+
description: yup.string().nullable(),
|
|
37
|
+
placeholder: yup.string().nullable(),
|
|
38
38
|
editable: yup.boolean(),
|
|
39
39
|
visible: yup.boolean(),
|
|
40
40
|
mainField: yup.lazy((value)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-configuration.mjs","sources":["../../../../server/src/controllers/validation/model-configuration.ts"],"sourcesContent":["import { yup } from '@strapi/utils';\nimport { getService } from '../../utils';\nimport { isListable, hasEditableAttribute } from '../../services/utils/configuration/attributes';\nimport { isValidDefaultSort } from '../../services/utils/configuration/settings';\n\n/**\n * Creates the validation schema for content-type configurations\n */\nexport default (schema: any, opts = {}) =>\n yup\n .object()\n .shape({\n settings: createSettingsSchema(schema).default(null).nullable(),\n metadatas: createMetadasSchema(schema).default(null).nullable(),\n layouts: createLayoutsSchema(schema, opts).default(null).nullable(),\n options: yup.object().optional(),\n })\n .noUnknown();\n\nconst createSettingsSchema = (schema: any) => {\n const validAttributes = Object.keys(schema.attributes).filter((key) => isListable(schema, key));\n\n return yup\n .object()\n .shape({\n bulkable: yup.boolean().required(),\n filterable: yup.boolean().required(),\n pageSize: yup.number().integer().min(10).max(100).required(),\n searchable: yup.boolean().required(),\n // should be reset when the type changes\n mainField: yup.string().oneOf(validAttributes.concat('id')).default('id'),\n // should be reset when the type changes\n defaultSortBy: yup\n .string()\n .test('is-valid-sort-attribute', '${path} is not a valid sort attribute', async (value) =>\n isValidDefaultSort(schema, value)\n )\n .default('id'),\n defaultSortOrder: yup.string().oneOf(['ASC', 'DESC']).default('ASC'),\n })\n .noUnknown();\n};\n\nconst createMetadasSchema = (schema: any) => {\n return yup.object().shape(\n Object.keys(schema.attributes).reduce((acc: any, key) => {\n acc[key] = yup\n .object()\n .shape({\n edit: yup\n .object()\n .shape({\n label: yup.string(),\n description: yup.string(),\n placeholder: yup.string(),\n editable: yup.boolean(),\n visible: yup.boolean(),\n mainField: yup.lazy((value) => {\n if (!value) {\n return yup.string();\n }\n\n const targetSchema = getService('content-types').findContentType(\n schema.attributes[key].targetModel\n );\n\n if (!targetSchema) {\n return yup.string();\n }\n\n const validAttributes = Object.keys(targetSchema.attributes).filter((key) =>\n isListable(targetSchema, key)\n );\n\n return yup.string().oneOf(validAttributes.concat('id')).default('id');\n }),\n })\n .noUnknown()\n .required(),\n list: yup\n .object()\n .shape({\n label: yup.string(),\n searchable: yup.boolean(),\n sortable: yup.boolean(),\n })\n .noUnknown()\n .required(),\n })\n .noUnknown();\n\n return acc;\n }, {})\n );\n};\n\nconst createArrayTest = ({ allowUndefined = false } = {}) => ({\n name: 'isArray',\n message: '${path} is required and must be an array',\n test: (val: any) => (allowUndefined === true && val === undefined ? true : Array.isArray(val)),\n});\n\nconst createLayoutsSchema = (schema: any, opts = {}) => {\n const validAttributes = Object.keys(schema.attributes).filter((key) => isListable(schema, key));\n\n const editAttributes = Object.keys(schema.attributes).filter((key) =>\n hasEditableAttribute(schema, key)\n );\n\n return yup.object().shape({\n edit: yup\n .array()\n .of(\n yup.array().of(\n yup\n .object()\n .shape({\n name: yup.string().oneOf(editAttributes).required(),\n size: yup.number().integer().positive().required(),\n })\n .noUnknown()\n )\n )\n .test(createArrayTest(opts)),\n list: yup.array().of(yup.string().oneOf(validAttributes)).test(createArrayTest(opts)),\n });\n};\n"],"names":["schema","opts","yup","object","shape","settings","createSettingsSchema","default","nullable","metadatas","createMetadasSchema","layouts","createLayoutsSchema","options","optional","noUnknown","validAttributes","Object","keys","attributes","filter","key","isListable","bulkable","boolean","required","filterable","pageSize","number","integer","min","max","searchable","mainField","string","oneOf","concat","defaultSortBy","test","value","isValidDefaultSort","defaultSortOrder","reduce","acc","edit","label","description","placeholder","editable","visible","lazy","targetSchema","getService","findContentType","targetModel","list","sortable","createArrayTest","allowUndefined","name","message","val","undefined","Array","isArray","editAttributes","hasEditableAttribute","array","of","size","positive"],"mappings":";;;;;AAKA;;AAEC,IACD,qCAAe,CAAA,CAACA,MAAAA,EAAaC,IAAO,GAAA,EAAE,GACpCC,GACGC,CAAAA,MAAM,EACNC,CAAAA,KAAK,CAAC;AACLC,QAAAA,QAAAA,EAAUC,oBAAqBN,CAAAA,MAAAA,CAAAA,CAAQO,OAAO,CAAC,MAAMC,QAAQ,EAAA;AAC7DC,QAAAA,SAAAA,EAAWC,mBAAoBV,CAAAA,MAAAA,CAAAA,CAAQO,OAAO,CAAC,MAAMC,QAAQ,EAAA;AAC7DG,QAAAA,OAAAA,EAASC,oBAAoBZ,MAAQC,EAAAA,IAAAA,CAAAA,CAAMM,OAAO,CAAC,MAAMC,QAAQ,EAAA;QACjEK,OAASX,EAAAA,GAAAA,CAAIC,MAAM,EAAA,CAAGW,QAAQ;KAE/BC,CAAAA,CAAAA,SAAS,EAAC;AAEf,MAAMT,uBAAuB,CAACN,MAAAA,GAAAA;AAC5B,IAAA,MAAMgB,eAAkBC,GAAAA,MAAAA,CAAOC,IAAI,CAAClB,MAAOmB,CAAAA,UAAU,CAAEC,CAAAA,MAAM,CAAC,CAACC,GAAQC,GAAAA,UAAAA,CAAWtB,MAAQqB,EAAAA,GAAAA,CAAAA,CAAAA;AAE1F,IAAA,OAAOnB,GACJC,CAAAA,MAAM,EACNC,CAAAA,KAAK,CAAC;QACLmB,QAAUrB,EAAAA,GAAAA,CAAIsB,OAAO,EAAA,CAAGC,QAAQ,EAAA;QAChCC,UAAYxB,EAAAA,GAAAA,CAAIsB,OAAO,EAAA,CAAGC,QAAQ,EAAA;QAClCE,QAAUzB,EAAAA,GAAAA,CAAI0B,MAAM,EAAA,CAAGC,OAAO,EAAA,CAAGC,GAAG,CAAC,EAAIC,CAAAA,CAAAA,GAAG,CAAC,GAAA,CAAA,CAAKN,QAAQ,EAAA;QAC1DO,UAAY9B,EAAAA,GAAAA,CAAIsB,OAAO,EAAA,CAAGC,QAAQ,EAAA;;QAElCQ,SAAW/B,EAAAA,GAAAA,CAAIgC,MAAM,EAAA,CAAGC,KAAK,CAACnB,gBAAgBoB,MAAM,CAAC,IAAO7B,CAAAA,CAAAA,CAAAA,OAAO,CAAC,IAAA,CAAA;;AAEpE8B,QAAAA,aAAAA,EAAenC,GACZgC,CAAAA,MAAM,EACNI,CAAAA,IAAI,CAAC,yBAAA,EAA2B,uCAAyC,EAAA,OAAOC,KAC/EC,GAAAA,kBAAAA,CAAmBxC,MAAQuC,EAAAA,KAAAA,CAAAA,CAAAA,CAE5BhC,OAAO,CAAC,IAAA,CAAA;AACXkC,QAAAA,gBAAAA,EAAkBvC,GAAIgC,CAAAA,MAAM,EAAGC,CAAAA,KAAK,CAAC;AAAC,YAAA,KAAA;AAAO,YAAA;AAAO,SAAA,CAAA,CAAE5B,OAAO,CAAC,KAAA;AAChE,KAAA,CAAA,CACCQ,SAAS,EAAA;AACd,CAAA;AAEA,MAAML,sBAAsB,CAACV,MAAAA,GAAAA;AAC3B,IAAA,OAAOE,GAAIC,CAAAA,MAAM,EAAGC,CAAAA,KAAK,CACvBa,MAAOC,CAAAA,IAAI,CAAClB,MAAAA,CAAOmB,UAAU,CAAA,CAAEuB,MAAM,CAAC,CAACC,GAAUtB,EAAAA,GAAAA,GAAAA;AAC/CsB,QAAAA,GAAG,CAACtB,GAAI,CAAA,GAAGnB,IACRC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLwC,YAAAA,IAAAA,EAAM1C,GACHC,CAAAA,MAAM,EACNC,CAAAA,KAAK,CAAC;AACLyC,gBAAAA,KAAAA,EAAO3C,IAAIgC,MAAM,EAAA;
|
|
1
|
+
{"version":3,"file":"model-configuration.mjs","sources":["../../../../server/src/controllers/validation/model-configuration.ts"],"sourcesContent":["import { yup } from '@strapi/utils';\nimport { getService } from '../../utils';\nimport { isListable, hasEditableAttribute } from '../../services/utils/configuration/attributes';\nimport { isValidDefaultSort } from '../../services/utils/configuration/settings';\n\n/**\n * Creates the validation schema for content-type configurations\n */\nexport default (schema: any, opts = {}) =>\n yup\n .object()\n .shape({\n settings: createSettingsSchema(schema).default(null).nullable(),\n metadatas: createMetadasSchema(schema).default(null).nullable(),\n layouts: createLayoutsSchema(schema, opts).default(null).nullable(),\n options: yup.object().optional(),\n })\n .noUnknown();\n\nconst createSettingsSchema = (schema: any) => {\n const validAttributes = Object.keys(schema.attributes).filter((key) => isListable(schema, key));\n\n return yup\n .object()\n .shape({\n bulkable: yup.boolean().required(),\n filterable: yup.boolean().required(),\n pageSize: yup.number().integer().min(10).max(100).required(),\n searchable: yup.boolean().required(),\n // should be reset when the type changes\n mainField: yup.string().oneOf(validAttributes.concat('id')).default('id'),\n // should be reset when the type changes\n defaultSortBy: yup\n .string()\n .test('is-valid-sort-attribute', '${path} is not a valid sort attribute', async (value) =>\n isValidDefaultSort(schema, value)\n )\n .default('id'),\n defaultSortOrder: yup.string().oneOf(['ASC', 'DESC']).default('ASC'),\n })\n .noUnknown();\n};\n\nconst createMetadasSchema = (schema: any) => {\n return yup.object().shape(\n Object.keys(schema.attributes).reduce((acc: any, key) => {\n acc[key] = yup\n .object()\n .shape({\n edit: yup\n .object()\n .shape({\n label: yup.string(),\n description: yup.string().nullable(),\n placeholder: yup.string().nullable(),\n editable: yup.boolean(),\n visible: yup.boolean(),\n mainField: yup.lazy((value) => {\n if (!value) {\n return yup.string();\n }\n\n const targetSchema = getService('content-types').findContentType(\n schema.attributes[key].targetModel\n );\n\n if (!targetSchema) {\n return yup.string();\n }\n\n const validAttributes = Object.keys(targetSchema.attributes).filter((key) =>\n isListable(targetSchema, key)\n );\n\n return yup.string().oneOf(validAttributes.concat('id')).default('id');\n }),\n })\n .noUnknown()\n .required(),\n list: yup\n .object()\n .shape({\n label: yup.string(),\n searchable: yup.boolean(),\n sortable: yup.boolean(),\n })\n .noUnknown()\n .required(),\n })\n .noUnknown();\n\n return acc;\n }, {})\n );\n};\n\nconst createArrayTest = ({ allowUndefined = false } = {}) => ({\n name: 'isArray',\n message: '${path} is required and must be an array',\n test: (val: any) => (allowUndefined === true && val === undefined ? true : Array.isArray(val)),\n});\n\nconst createLayoutsSchema = (schema: any, opts = {}) => {\n const validAttributes = Object.keys(schema.attributes).filter((key) => isListable(schema, key));\n\n const editAttributes = Object.keys(schema.attributes).filter((key) =>\n hasEditableAttribute(schema, key)\n );\n\n return yup.object().shape({\n edit: yup\n .array()\n .of(\n yup.array().of(\n yup\n .object()\n .shape({\n name: yup.string().oneOf(editAttributes).required(),\n size: yup.number().integer().positive().required(),\n })\n .noUnknown()\n )\n )\n .test(createArrayTest(opts)),\n list: yup.array().of(yup.string().oneOf(validAttributes)).test(createArrayTest(opts)),\n });\n};\n"],"names":["schema","opts","yup","object","shape","settings","createSettingsSchema","default","nullable","metadatas","createMetadasSchema","layouts","createLayoutsSchema","options","optional","noUnknown","validAttributes","Object","keys","attributes","filter","key","isListable","bulkable","boolean","required","filterable","pageSize","number","integer","min","max","searchable","mainField","string","oneOf","concat","defaultSortBy","test","value","isValidDefaultSort","defaultSortOrder","reduce","acc","edit","label","description","placeholder","editable","visible","lazy","targetSchema","getService","findContentType","targetModel","list","sortable","createArrayTest","allowUndefined","name","message","val","undefined","Array","isArray","editAttributes","hasEditableAttribute","array","of","size","positive"],"mappings":"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"}
|