@strapi/upload 5.37.1 → 5.38.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/ai/components/AIAssetCard.js.map +1 -1
- package/dist/admin/ai/components/AIAssetCard.mjs +1 -1
- package/dist/admin/ai/components/AIAssetCard.mjs.map +1 -1
- package/dist/admin/ai/components/AIUploadModal.js.map +1 -1
- package/dist/admin/ai/components/AIUploadModal.mjs +1 -1
- package/dist/admin/ai/components/AIUploadModal.mjs.map +1 -1
- package/dist/admin/components/AssetCard/AssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/AssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/AssetCardBase.js.map +1 -1
- package/dist/admin/components/AssetCard/AssetCardBase.mjs.map +1 -1
- package/dist/admin/components/AssetCard/AudioAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/AudioAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/AudioPreview.js.map +1 -1
- package/dist/admin/components/AssetCard/AudioPreview.mjs.map +1 -1
- package/dist/admin/components/AssetCard/DocAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/DocAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/VideoPreview.js.map +1 -1
- package/dist/admin/components/AssetCard/VideoPreview.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/AssetDialog.js.map +1 -1
- package/dist/admin/components/AssetDialog/AssetDialog.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PageSize.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PageSize.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/utils/isSelectable.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/utils/isSelectable.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/DialogFooter.js.map +1 -1
- package/dist/admin/components/AssetDialog/DialogFooter.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js.map +1 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs.map +1 -1
- package/dist/admin/components/AssetGridList/AssetGridList.js.map +1 -1
- package/dist/admin/components/AssetGridList/AssetGridList.mjs.map +1 -1
- package/dist/admin/components/AssetGridList/Draggable.js.map +1 -1
- package/dist/admin/components/AssetGridList/Draggable.mjs.map +1 -1
- package/dist/admin/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/admin/components/Breadcrumbs/Breadcrumbs.mjs.map +1 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +1 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs.map +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -1
- package/dist/admin/components/ContextInfo/ContextInfo.js.map +1 -1
- package/dist/admin/components/ContextInfo/ContextInfo.mjs.map +1 -1
- package/dist/admin/components/CopyLinkButton/CopyLinkButton.js.map +1 -1
- package/dist/admin/components/CopyLinkButton/CopyLinkButton.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/DialogHeader.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/DialogHeader.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +1 -4
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +1 -4
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/RemoveAssetDialog.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/RemoveAssetDialog.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs.map +1 -1
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.js.map +1 -1
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs.map +1 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js.map +1 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs.map +1 -1
- package/dist/admin/components/EditFolderDialog/RemoveFolderDialog.js.map +1 -1
- package/dist/admin/components/EditFolderDialog/RemoveFolderDialog.mjs.map +1 -1
- package/dist/admin/components/EmptyAssets/EmptyAssetGrid.js.map +1 -1
- package/dist/admin/components/EmptyAssets/EmptyAssetGrid.mjs.map +1 -1
- package/dist/admin/components/EmptyAssets/EmptyAssets.js.map +1 -1
- package/dist/admin/components/EmptyAssets/EmptyAssets.mjs.map +1 -1
- package/dist/admin/components/FilterList/FilterList.js.map +1 -1
- package/dist/admin/components/FilterList/FilterList.mjs.map +1 -1
- package/dist/admin/components/FilterList/FilterTag.js.map +1 -1
- package/dist/admin/components/FilterList/FilterTag.mjs.map +1 -1
- package/dist/admin/components/FilterPopover/FilterPopover.js.map +1 -1
- package/dist/admin/components/FilterPopover/FilterPopover.mjs.map +1 -1
- package/dist/admin/components/FilterPopover/FilterValueInput.js.map +1 -1
- package/dist/admin/components/FilterPopover/FilterValueInput.mjs.map +1 -1
- package/dist/admin/components/FilterPopover/utils/getFilterList.js.map +1 -1
- package/dist/admin/components/FilterPopover/utils/getFilterList.mjs.map +1 -1
- package/dist/admin/components/FolderCard/FolderCard/FolderCard.js.map +1 -1
- package/dist/admin/components/FolderCard/FolderCard/FolderCard.mjs.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.js.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.mjs.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.js.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.mjs.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.js.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.mjs.map +1 -1
- package/dist/admin/components/FolderCard/contexts/FolderCard.js.map +1 -1
- package/dist/admin/components/FolderCard/contexts/FolderCard.mjs.map +1 -1
- package/dist/admin/components/FolderGridList/FolderGridList.js.map +1 -1
- package/dist/admin/components/FolderGridList/FolderGridList.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.js.map +1 -1
- package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -1
- package/dist/admin/components/SelectTree/Option.js.map +1 -1
- package/dist/admin/components/SelectTree/Option.mjs.map +1 -1
- package/dist/admin/components/SelectTree/SelectTree.js.map +1 -1
- package/dist/admin/components/SelectTree/SelectTree.mjs +1 -1
- package/dist/admin/components/SelectTree/SelectTree.mjs.map +1 -1
- package/dist/admin/components/SelectTree/utils/flattenTree.js.map +1 -1
- package/dist/admin/components/SelectTree/utils/flattenTree.mjs.map +1 -1
- package/dist/admin/components/SelectTree/utils/getOpenValues.js.map +1 -1
- package/dist/admin/components/SelectTree/utils/getOpenValues.mjs.map +1 -1
- package/dist/admin/components/SelectTree/utils/getValuesToClose.js.map +1 -1
- package/dist/admin/components/SelectTree/utils/getValuesToClose.mjs.map +1 -1
- package/dist/admin/components/SortPicker/SortPicker.js.map +1 -1
- package/dist/admin/components/SortPicker/SortPicker.mjs.map +1 -1
- package/dist/admin/components/TableList/CellContent.js.map +1 -1
- package/dist/admin/components/TableList/CellContent.mjs.map +1 -1
- package/dist/admin/components/TableList/PreviewCell.js.map +1 -1
- package/dist/admin/components/TableList/PreviewCell.mjs +1 -1
- package/dist/admin/components/TableList/PreviewCell.mjs.map +1 -1
- package/dist/admin/components/TableList/TableList.js.map +1 -1
- package/dist/admin/components/TableList/TableList.mjs +1 -1
- package/dist/admin/components/TableList/TableList.mjs.map +1 -1
- package/dist/admin/components/TableList/TableRows.js.map +1 -1
- package/dist/admin/components/TableList/TableRows.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.mjs.map +1 -1
- package/dist/admin/components/UploadProgress/UploadProgress.js.map +1 -1
- package/dist/admin/components/UploadProgress/UploadProgress.mjs.map +1 -1
- package/dist/admin/constants.js.map +1 -1
- package/dist/admin/constants.mjs.map +1 -1
- package/dist/admin/future/App.js.map +1 -1
- package/dist/admin/future/App.mjs.map +1 -1
- package/dist/admin/future/components/Drawer.js +189 -0
- package/dist/admin/future/components/Drawer.js.map +1 -0
- package/dist/admin/future/components/Drawer.mjs +166 -0
- package/dist/admin/future/components/Drawer.mjs.map +1 -0
- package/dist/admin/future/components/UploadProgressDialog.js +60 -101
- package/dist/admin/future/components/UploadProgressDialog.js.map +1 -1
- package/dist/admin/future/components/UploadProgressDialog.mjs +62 -84
- package/dist/admin/future/components/UploadProgressDialog.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.js +155 -100
- package/dist/admin/future/pages/Assets/AssetsPage.js.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.mjs +160 -105
- package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +406 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +384 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js +215 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.mjs +194 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js +37 -8
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs +38 -9
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.js +35 -5
- package/dist/admin/future/pages/Assets/components/AssetsTable.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs +37 -7
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/CreateFolderDialog.js +143 -0
- package/dist/admin/future/pages/Assets/components/CreateFolderDialog.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/CreateFolderDialog.mjs +141 -0
- package/dist/admin/future/pages/Assets/components/CreateFolderDialog.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.js +127 -0
- package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.mjs +106 -0
- package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/constants.js.map +1 -1
- package/dist/admin/future/pages/Assets/constants.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderInfo.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderInfo.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs.map +1 -1
- package/dist/admin/future/services/api.js +181 -97
- package/dist/admin/future/services/api.js.map +1 -1
- package/dist/admin/future/services/api.mjs +181 -98
- package/dist/admin/future/services/api.mjs.map +1 -1
- package/dist/admin/future/services/assets.js +14 -1
- package/dist/admin/future/services/assets.js.map +1 -1
- package/dist/admin/future/services/assets.mjs +14 -2
- package/dist/admin/future/services/assets.mjs.map +1 -1
- package/dist/admin/future/services/folders.js +16 -1
- package/dist/admin/future/services/folders.js.map +1 -1
- package/dist/admin/future/services/folders.mjs +16 -2
- package/dist/admin/future/services/folders.mjs.map +1 -1
- package/dist/admin/future/store/hooks.js.map +1 -1
- package/dist/admin/future/store/hooks.mjs.map +1 -1
- package/dist/admin/future/store/uploadProgress.js +7 -4
- package/dist/admin/future/store/uploadProgress.js.map +1 -1
- package/dist/admin/future/store/uploadProgress.mjs +7 -4
- package/dist/admin/future/store/uploadProgress.mjs.map +1 -1
- package/dist/admin/future/utils/files.js +105 -3
- package/dist/admin/future/utils/files.js.map +1 -1
- package/dist/admin/future/utils/files.mjs +104 -4
- package/dist/admin/future/utils/files.mjs.map +1 -1
- package/dist/admin/future/utils/getAssetIcon.js +3 -3
- package/dist/admin/future/utils/getAssetIcon.js.map +1 -1
- package/dist/admin/future/utils/getAssetIcon.mjs +4 -4
- package/dist/admin/future/utils/getAssetIcon.mjs.map +1 -1
- package/dist/admin/future/utils/translations.js.map +1 -1
- package/dist/admin/future/utils/translations.mjs.map +1 -1
- package/dist/admin/hooks/useAIMetadataJob.js.map +1 -1
- package/dist/admin/hooks/useAIMetadataJob.mjs.map +1 -1
- package/dist/admin/hooks/useAiAvailability.js.map +1 -1
- package/dist/admin/hooks/useAiAvailability.mjs.map +1 -1
- package/dist/admin/hooks/useAssets.js.map +1 -1
- package/dist/admin/hooks/useAssets.mjs.map +1 -1
- package/dist/admin/hooks/useBulkEdit.js.map +1 -1
- package/dist/admin/hooks/useBulkEdit.mjs.map +1 -1
- package/dist/admin/hooks/useBulkMove.js.map +1 -1
- package/dist/admin/hooks/useBulkMove.mjs.map +1 -1
- package/dist/admin/hooks/useBulkRemove.js.map +1 -1
- package/dist/admin/hooks/useBulkRemove.mjs.map +1 -1
- package/dist/admin/hooks/useConfig.js.map +1 -1
- package/dist/admin/hooks/useConfig.mjs.map +1 -1
- package/dist/admin/hooks/useCropImg.js.map +1 -1
- package/dist/admin/hooks/useCropImg.mjs.map +1 -1
- package/dist/admin/hooks/useEditAsset.js.map +1 -1
- package/dist/admin/hooks/useEditAsset.mjs.map +1 -1
- package/dist/admin/hooks/useEditFolder.js.map +1 -1
- package/dist/admin/hooks/useEditFolder.mjs.map +1 -1
- package/dist/admin/hooks/useFolder.js.map +1 -1
- package/dist/admin/hooks/useFolder.mjs.map +1 -1
- package/dist/admin/hooks/useFolderStructure.js.map +1 -1
- package/dist/admin/hooks/useFolderStructure.mjs.map +1 -1
- package/dist/admin/hooks/useFolders.js.map +1 -1
- package/dist/admin/hooks/useFolders.mjs.map +1 -1
- package/dist/admin/hooks/useMediaLibraryPermissions.js.map +1 -1
- package/dist/admin/hooks/useMediaLibraryPermissions.mjs.map +1 -1
- package/dist/admin/hooks/useModalQueryParams.js.map +1 -1
- package/dist/admin/hooks/useModalQueryParams.mjs.map +1 -1
- package/dist/admin/hooks/usePersistentState.js.map +1 -1
- package/dist/admin/hooks/usePersistentState.mjs.map +1 -1
- package/dist/admin/hooks/useRemoveAsset.js.map +1 -1
- package/dist/admin/hooks/useRemoveAsset.mjs.map +1 -1
- package/dist/admin/hooks/useSelectionState.js.map +1 -1
- package/dist/admin/hooks/useSelectionState.mjs.map +1 -1
- package/dist/admin/hooks/useSettings.js.map +1 -1
- package/dist/admin/hooks/useSettings.mjs.map +1 -1
- package/dist/admin/hooks/useTracking.js.map +1 -1
- package/dist/admin/hooks/useTracking.mjs.map +1 -1
- package/dist/admin/hooks/useUpload.js.map +1 -1
- package/dist/admin/hooks/useUpload.mjs.map +1 -1
- package/dist/admin/hooks/utils/renameKeys.js.map +1 -1
- package/dist/admin/hooks/utils/renameKeys.mjs.map +1 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/package.json.js +1 -152
- package/dist/admin/package.json.js.map +1 -1
- package/dist/admin/package.json.mjs +2 -141
- package/dist/admin/package.json.mjs.map +1 -1
- package/dist/admin/pages/App/App.js.map +1 -1
- package/dist/admin/pages/App/App.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs +3 -3
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/actions.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/actions.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/init.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/init.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/reducer.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/reducer.mjs +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/reducer.mjs.map +1 -1
- package/dist/admin/pages/App/MediaLibrary.js +1 -1
- package/dist/admin/pages/App/MediaLibrary.js.map +1 -1
- package/dist/admin/pages/App/MediaLibrary.mjs +2 -2
- package/dist/admin/pages/App/MediaLibrary.mjs.map +1 -1
- package/dist/admin/pages/App/components/BulkActions.js.map +1 -1
- package/dist/admin/pages/App/components/BulkActions.mjs.map +1 -1
- package/dist/admin/pages/App/components/BulkDeleteButton.js.map +1 -1
- package/dist/admin/pages/App/components/BulkDeleteButton.mjs.map +1 -1
- package/dist/admin/pages/App/components/BulkMoveButton.js.map +1 -1
- package/dist/admin/pages/App/components/BulkMoveButton.mjs.map +1 -1
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.js.map +1 -1
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.mjs.map +1 -1
- package/dist/admin/pages/App/components/Filters.js.map +1 -1
- package/dist/admin/pages/App/components/Filters.mjs.map +1 -1
- package/dist/admin/pages/App/components/Header.js.map +1 -1
- package/dist/admin/pages/App/components/Header.mjs +2 -2
- package/dist/admin/pages/App/components/Header.mjs.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -1
- package/dist/admin/pages/SettingsPage/reducer.js.map +1 -1
- package/dist/admin/pages/SettingsPage/reducer.mjs.map +1 -1
- package/dist/admin/pluginId.js.map +1 -1
- package/dist/admin/pluginId.mjs.map +1 -1
- package/dist/admin/src/future/components/Drawer.d.ts +32 -0
- package/dist/admin/src/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.d.ts +8 -0
- package/dist/admin/src/future/pages/Assets/components/AssetDetails/AssetPreview.d.ts +6 -0
- package/dist/admin/src/future/pages/Assets/components/AssetsGrid.d.ts +2 -1
- package/dist/admin/src/future/pages/Assets/components/AssetsTable.d.ts +2 -1
- package/dist/admin/src/future/pages/Assets/components/CreateFolderDialog.d.ts +8 -0
- package/dist/admin/src/future/pages/Assets/components/ImportFromUrlDialog.d.ts +7 -0
- package/dist/admin/src/future/services/api.d.ts +10 -1
- package/dist/admin/src/future/services/assets.d.ts +2 -2
- package/dist/admin/src/future/services/folders.d.ts +1 -1
- package/dist/admin/src/future/store/uploadProgress.d.ts +1 -1
- package/dist/admin/src/future/utils/files.d.ts +70 -0
- package/dist/admin/translations/en.json.js +35 -3
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +35 -3
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +26 -2
- package/dist/admin/translations/es.json.js.map +1 -1
- package/dist/admin/translations/es.json.mjs +26 -2
- package/dist/admin/translations/es.json.mjs.map +1 -1
- package/dist/admin/utils/appendSearchParamsToUrl.js.map +1 -1
- package/dist/admin/utils/appendSearchParamsToUrl.mjs.map +1 -1
- package/dist/admin/utils/containsAssetFilter.js.map +1 -1
- package/dist/admin/utils/containsAssetFilter.mjs.map +1 -1
- package/dist/admin/utils/createAssetUrl.js.map +1 -1
- package/dist/admin/utils/createAssetUrl.mjs.map +1 -1
- package/dist/admin/utils/displayedFilters.js.map +1 -1
- package/dist/admin/utils/displayedFilters.mjs.map +1 -1
- package/dist/admin/utils/downloadFile.js.map +1 -1
- package/dist/admin/utils/downloadFile.mjs.map +1 -1
- package/dist/admin/utils/findRecursiveFolderByValue.js.map +1 -1
- package/dist/admin/utils/findRecursiveFolderByValue.mjs.map +1 -1
- package/dist/admin/utils/formatBytes.js.map +1 -1
- package/dist/admin/utils/formatBytes.mjs.map +1 -1
- package/dist/admin/utils/formatDuration.js.map +1 -1
- package/dist/admin/utils/formatDuration.mjs.map +1 -1
- package/dist/admin/utils/getAPIInnerErrors.js.map +1 -1
- package/dist/admin/utils/getAPIInnerErrors.mjs.map +1 -1
- package/dist/admin/utils/getAllowedFiles.js.map +1 -1
- package/dist/admin/utils/getAllowedFiles.mjs.map +1 -1
- package/dist/admin/utils/getBreadcrumbDataCM.js.map +1 -1
- package/dist/admin/utils/getBreadcrumbDataCM.mjs.map +1 -1
- package/dist/admin/utils/getBreadcrumbDataML.js.map +1 -1
- package/dist/admin/utils/getBreadcrumbDataML.mjs.map +1 -1
- package/dist/admin/utils/getFileExtension.js.map +1 -1
- package/dist/admin/utils/getFileExtension.mjs.map +1 -1
- package/dist/admin/utils/getFolderParents.js.map +1 -1
- package/dist/admin/utils/getFolderParents.mjs.map +1 -1
- package/dist/admin/utils/getFolderURL.js.map +1 -1
- package/dist/admin/utils/getFolderURL.mjs.map +1 -1
- package/dist/admin/utils/getTrad.js.map +1 -1
- package/dist/admin/utils/getTrad.mjs.map +1 -1
- package/dist/admin/utils/icons.js.map +1 -1
- package/dist/admin/utils/icons.mjs +1 -1
- package/dist/admin/utils/icons.mjs.map +1 -1
- package/dist/admin/utils/moveElement.js.map +1 -1
- package/dist/admin/utils/moveElement.mjs.map +1 -1
- package/dist/admin/utils/normalizeAPIError.js.map +1 -1
- package/dist/admin/utils/normalizeAPIError.mjs.map +1 -1
- package/dist/admin/utils/prefixFileUrlWithBackendUrl.js.map +1 -1
- package/dist/admin/utils/prefixFileUrlWithBackendUrl.mjs.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
- package/dist/admin/utils/rawFileToAsset.js.map +1 -1
- package/dist/admin/utils/rawFileToAsset.mjs.map +1 -1
- package/dist/admin/utils/toSingularTypes.js.map +1 -1
- package/dist/admin/utils/toSingularTypes.mjs.map +1 -1
- package/dist/admin/utils/typeFromMime.js.map +1 -1
- package/dist/admin/utils/typeFromMime.mjs.map +1 -1
- package/dist/admin/utils/urlYupSchema.js.map +1 -1
- package/dist/admin/utils/urlYupSchema.mjs.map +1 -1
- package/dist/admin/utils/urlsToAssets.js.map +1 -1
- package/dist/admin/utils/urlsToAssets.mjs.map +1 -1
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/server/bootstrap.mjs.map +1 -1
- package/dist/server/config.js.map +1 -1
- package/dist/server/config.mjs.map +1 -1
- package/dist/server/constants.js.map +1 -1
- package/dist/server/constants.mjs.map +1 -1
- package/dist/server/content-types/file.js.map +1 -1
- package/dist/server/content-types/file.mjs.map +1 -1
- package/dist/server/content-types/folder.js.map +1 -1
- package/dist/server/content-types/folder.mjs +1 -1
- package/dist/server/content-types/folder.mjs.map +1 -1
- package/dist/server/content-types/index.js.map +1 -1
- package/dist/server/content-types/index.mjs.map +1 -1
- package/dist/server/controllers/admin-file.js.map +1 -1
- package/dist/server/controllers/admin-file.mjs +1 -1
- package/dist/server/controllers/admin-file.mjs.map +1 -1
- package/dist/server/controllers/admin-folder-file.js.map +1 -1
- package/dist/server/controllers/admin-folder-file.mjs +2 -2
- package/dist/server/controllers/admin-folder-file.mjs.map +1 -1
- package/dist/server/controllers/admin-folder.js.map +1 -1
- package/dist/server/controllers/admin-folder.mjs +1 -1
- package/dist/server/controllers/admin-folder.mjs.map +1 -1
- package/dist/server/controllers/admin-settings.js.map +1 -1
- package/dist/server/controllers/admin-settings.mjs.map +1 -1
- package/dist/server/controllers/admin-upload.js +144 -0
- package/dist/server/controllers/admin-upload.js.map +1 -1
- package/dist/server/controllers/admin-upload.mjs +147 -3
- package/dist/server/controllers/admin-upload.mjs.map +1 -1
- package/dist/server/controllers/content-api.js.map +1 -1
- package/dist/server/controllers/content-api.mjs.map +1 -1
- package/dist/server/controllers/index.js.map +1 -1
- package/dist/server/controllers/index.mjs.map +1 -1
- package/dist/server/controllers/utils/find-entity-and-check-permissions.js.map +1 -1
- package/dist/server/controllers/utils/find-entity-and-check-permissions.mjs.map +1 -1
- package/dist/server/controllers/utils/folders.js.map +1 -1
- package/dist/server/controllers/utils/folders.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/configureView.js.map +1 -1
- package/dist/server/controllers/validation/admin/configureView.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/folder-file.js.map +1 -1
- package/dist/server/controllers/validation/admin/folder-file.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/folder.js.map +1 -1
- package/dist/server/controllers/validation/admin/folder.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/settings.js.map +1 -1
- package/dist/server/controllers/validation/admin/settings.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/upload.js.map +1 -1
- package/dist/server/controllers/validation/admin/upload.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/utils.js.map +1 -1
- package/dist/server/controllers/validation/admin/utils.mjs.map +1 -1
- package/dist/server/controllers/validation/content-api/upload.js.map +1 -1
- package/dist/server/controllers/validation/content-api/upload.mjs.map +1 -1
- package/dist/server/controllers/view-configuration.js.map +1 -1
- package/dist/server/controllers/view-configuration.mjs.map +1 -1
- package/dist/server/graphql.js.map +1 -1
- package/dist/server/graphql.mjs.map +1 -1
- package/dist/server/index.js +8 -8
- package/dist/server/middlewares/upload.js.map +1 -1
- package/dist/server/middlewares/upload.mjs.map +1 -1
- package/dist/server/models/ai-metadata-job.js.map +1 -1
- package/dist/server/models/ai-metadata-job.mjs.map +1 -1
- package/dist/server/register.js.map +1 -1
- package/dist/server/register.mjs.map +1 -1
- package/dist/server/routes/admin.js +10 -0
- package/dist/server/routes/admin.js.map +1 -1
- package/dist/server/routes/admin.mjs +10 -0
- package/dist/server/routes/admin.mjs.map +1 -1
- package/dist/server/routes/content-api.js.map +1 -1
- package/dist/server/routes/content-api.mjs.map +1 -1
- package/dist/server/routes/index.js.map +1 -1
- package/dist/server/routes/index.mjs +4 -4
- package/dist/server/routes/index.mjs.map +1 -1
- package/dist/server/routes/validation/upload.js.map +1 -1
- package/dist/server/routes/validation/upload.mjs.map +1 -1
- package/dist/server/routes/view-configuration.js.map +1 -1
- package/dist/server/routes/view-configuration.mjs.map +1 -1
- package/dist/server/services/ai-metadata-jobs.js.map +1 -1
- package/dist/server/services/ai-metadata-jobs.mjs.map +1 -1
- package/dist/server/services/ai-metadata.js.map +1 -1
- package/dist/server/services/ai-metadata.mjs.map +1 -1
- package/dist/server/services/api-upload-folder.js.map +1 -1
- package/dist/server/services/api-upload-folder.mjs.map +1 -1
- package/dist/server/services/extensions/index.js.map +1 -1
- package/dist/server/services/extensions/index.mjs.map +1 -1
- package/dist/server/services/extensions/utils.js.map +1 -1
- package/dist/server/services/extensions/utils.mjs.map +1 -1
- package/dist/server/services/file.js +120 -1
- package/dist/server/services/file.js.map +1 -1
- package/dist/server/services/file.mjs +122 -3
- package/dist/server/services/file.mjs.map +1 -1
- package/dist/server/services/folder.js.map +1 -1
- package/dist/server/services/folder.mjs +1 -1
- package/dist/server/services/folder.mjs.map +1 -1
- package/dist/server/services/image-manipulation.js.map +1 -1
- package/dist/server/services/image-manipulation.mjs +1 -1
- package/dist/server/services/image-manipulation.mjs.map +1 -1
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/metrics.js.map +1 -1
- package/dist/server/services/metrics.mjs.map +1 -1
- package/dist/server/services/provider.js.map +1 -1
- package/dist/server/services/provider.mjs.map +1 -1
- package/dist/server/services/upload.js +6 -1
- package/dist/server/services/upload.js.map +1 -1
- package/dist/server/services/upload.mjs +7 -2
- package/dist/server/services/upload.mjs.map +1 -1
- package/dist/server/services/weekly-metrics.js.map +1 -1
- package/dist/server/services/weekly-metrics.mjs.map +1 -1
- package/dist/server/src/controllers/admin-upload.d.ts +13 -0
- package/dist/server/src/controllers/admin-upload.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +1 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +2 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/admin.d.ts.map +1 -1
- package/dist/server/src/services/file.d.ts +15 -0
- package/dist/server/src/services/file.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +1 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/upload.d.ts.map +1 -1
- package/dist/server/src/utils/mime-validation.d.ts +1 -0
- package/dist/server/src/utils/mime-validation.d.ts.map +1 -1
- package/dist/server/utils/cron.js.map +1 -1
- package/dist/server/utils/cron.mjs.map +1 -1
- package/dist/server/utils/images.js.map +1 -1
- package/dist/server/utils/images.mjs.map +1 -1
- package/dist/server/utils/index.js.map +1 -1
- package/dist/server/utils/index.mjs.map +1 -1
- package/dist/server/utils/mime-validation.js +184 -47
- package/dist/server/utils/mime-validation.js.map +1 -1
- package/dist/server/utils/mime-validation.mjs +185 -47
- package/dist/server/utils/mime-validation.mjs.map +1 -1
- package/dist/shared/contracts/files.d.ts +11 -0
- package/dist/shared/contracts/files.d.ts.map +1 -1
- package/package.json +19 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlYupSchema.js","sources":["../../../admin/src/utils/urlYupSchema.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport * as yup from 'yup';\n\nimport { getTrad } from './getTrad';\n\nexport const urlSchema = yup.object().shape({\n urls: yup.string().test({\n name: 'isUrlValid',\n // eslint-disable-next-line no-template-curly-in-string\n message: '${path}',\n test(values = '') {\n const urls = values.split(/\\r?\\n/);\n\n if (urls.length === 0) {\n return this.createError({\n path: this.path,\n message: errorsTrads.min.id,\n });\n }\n\n if (urls.length > 20) {\n return this.createError({\n path: this.path,\n message: errorsTrads.max.id,\n });\n }\n\n const filtered = urls.filter((val) => {\n try {\n // eslint-disable-next-line no-new\n new URL(val);\n\n return false;\n } catch (err) {\n // invalid url\n return true;\n }\n });\n\n const filteredLength = filtered.length;\n\n if (filteredLength === 0) {\n return true;\n }\n\n const errorMessage =\n filteredLength > 1\n ? 'form.upload-url.error.url.invalids'\n : 'form.upload-url.error.url.invalid';\n\n return this.createError({\n path: this.path,\n message: getTrad(errorMessage),\n params: { number: filtered.length },\n });\n },\n }),\n});\n"],"names":["urlSchema","yup","object","shape","urls","string","test","name","message","values","split","length","createError","path","errorsTrads","min","id","max","filtered","filter","val","URL","err","filteredLength","errorMessage","getTrad","params","number"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;MAKaA,
|
|
1
|
+
{"version":3,"file":"urlYupSchema.js","sources":["../../../admin/src/utils/urlYupSchema.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport * as yup from 'yup';\n\nimport { getTrad } from './getTrad';\n\nexport const urlSchema = yup.object().shape({\n urls: yup.string().test({\n name: 'isUrlValid',\n // eslint-disable-next-line no-template-curly-in-string\n message: '${path}',\n test(values = '') {\n const urls = values.split(/\\r?\\n/);\n\n if (urls.length === 0) {\n return this.createError({\n path: this.path,\n message: errorsTrads.min.id,\n });\n }\n\n if (urls.length > 20) {\n return this.createError({\n path: this.path,\n message: errorsTrads.max.id,\n });\n }\n\n const filtered = urls.filter((val) => {\n try {\n // eslint-disable-next-line no-new\n new URL(val);\n\n return false;\n } catch (err) {\n // invalid url\n return true;\n }\n });\n\n const filteredLength = filtered.length;\n\n if (filteredLength === 0) {\n return true;\n }\n\n const errorMessage =\n filteredLength > 1\n ? 'form.upload-url.error.url.invalids'\n : 'form.upload-url.error.url.invalid';\n\n return this.createError({\n path: this.path,\n message: getTrad(errorMessage),\n params: { number: filtered.length },\n });\n },\n }),\n});\n"],"names":["urlSchema","yup","object","shape","urls","string","test","name","message","values","split","length","createError","path","errorsTrads","min","id","max","filtered","filter","val","URL","err","filteredLength","errorMessage","getTrad","params","number"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;MAKaA,SAAAA,GAAYC,cAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AAC1CC,IAAAA,IAAAA,EAAMH,cAAAA,CAAII,MAAM,EAAA,CAAGC,IAAI,CAAC;QACtBC,IAAAA,EAAM,YAAA;;QAENC,OAAAA,EAAS,SAAA;AACTF,QAAAA,IAAAA,CAAAA,CAAKG,SAAS,EAAE,EAAA;YACd,MAAML,IAAAA,GAAOK,MAAAA,CAAOC,KAAK,CAAC,OAAA,CAAA;YAE1B,IAAIN,IAAAA,CAAKO,MAAM,KAAK,CAAA,EAAG;gBACrB,OAAO,IAAI,CAACC,WAAW,CAAC;oBACtBC,IAAAA,EAAM,IAAI,CAACA,IAAI;oBACfL,OAAAA,EAASM,4BAAAA,CAAYC,GAAG,CAACC;AAC3B,iBAAA,CAAA;AACF,YAAA;YAEA,IAAIZ,IAAAA,CAAKO,MAAM,GAAG,EAAA,EAAI;gBACpB,OAAO,IAAI,CAACC,WAAW,CAAC;oBACtBC,IAAAA,EAAM,IAAI,CAACA,IAAI;oBACfL,OAAAA,EAASM,4BAAAA,CAAYG,GAAG,CAACD;AAC3B,iBAAA,CAAA;AACF,YAAA;AAEA,YAAA,MAAME,QAAAA,GAAWd,IAAAA,CAAKe,MAAM,CAAC,CAACC,GAAAA,GAAAA;gBAC5B,IAAI;;AAEF,oBAAA,IAAIC,GAAAA,CAAID,GAAAA,CAAAA;oBAER,OAAO,KAAA;AACT,gBAAA,CAAA,CAAE,OAAOE,GAAAA,EAAK;;oBAEZ,OAAO,IAAA;AACT,gBAAA;AACF,YAAA,CAAA,CAAA;YAEA,MAAMC,cAAAA,GAAiBL,SAASP,MAAM;AAEtC,YAAA,IAAIY,mBAAmB,CAAA,EAAG;gBACxB,OAAO,IAAA;AACT,YAAA;YAEA,MAAMC,YAAAA,GACJD,cAAAA,GAAiB,CAAA,GACb,oCAAA,GACA,mCAAA;YAEN,OAAO,IAAI,CAACX,WAAW,CAAC;gBACtBC,IAAAA,EAAM,IAAI,CAACA,IAAI;AACfL,gBAAAA,OAAAA,EAASiB,eAAAA,CAAQD,YAAAA,CAAAA;gBACjBE,MAAAA,EAAQ;AAAEC,oBAAAA,MAAAA,EAAQT,SAASP;AAAO;AACpC,aAAA,CAAA;AACF,QAAA;AACF,KAAA;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlYupSchema.mjs","sources":["../../../admin/src/utils/urlYupSchema.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport * as yup from 'yup';\n\nimport { getTrad } from './getTrad';\n\nexport const urlSchema = yup.object().shape({\n urls: yup.string().test({\n name: 'isUrlValid',\n // eslint-disable-next-line no-template-curly-in-string\n message: '${path}',\n test(values = '') {\n const urls = values.split(/\\r?\\n/);\n\n if (urls.length === 0) {\n return this.createError({\n path: this.path,\n message: errorsTrads.min.id,\n });\n }\n\n if (urls.length > 20) {\n return this.createError({\n path: this.path,\n message: errorsTrads.max.id,\n });\n }\n\n const filtered = urls.filter((val) => {\n try {\n // eslint-disable-next-line no-new\n new URL(val);\n\n return false;\n } catch (err) {\n // invalid url\n return true;\n }\n });\n\n const filteredLength = filtered.length;\n\n if (filteredLength === 0) {\n return true;\n }\n\n const errorMessage =\n filteredLength > 1\n ? 'form.upload-url.error.url.invalids'\n : 'form.upload-url.error.url.invalid';\n\n return this.createError({\n path: this.path,\n message: getTrad(errorMessage),\n params: { number: filtered.length },\n });\n },\n }),\n});\n"],"names":["urlSchema","yup","object","shape","urls","string","test","name","message","values","split","length","createError","path","errorsTrads","min","id","max","filtered","filter","val","URL","err","filteredLength","errorMessage","getTrad","params","number"],"mappings":";;;;MAKaA,
|
|
1
|
+
{"version":3,"file":"urlYupSchema.mjs","sources":["../../../admin/src/utils/urlYupSchema.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport * as yup from 'yup';\n\nimport { getTrad } from './getTrad';\n\nexport const urlSchema = yup.object().shape({\n urls: yup.string().test({\n name: 'isUrlValid',\n // eslint-disable-next-line no-template-curly-in-string\n message: '${path}',\n test(values = '') {\n const urls = values.split(/\\r?\\n/);\n\n if (urls.length === 0) {\n return this.createError({\n path: this.path,\n message: errorsTrads.min.id,\n });\n }\n\n if (urls.length > 20) {\n return this.createError({\n path: this.path,\n message: errorsTrads.max.id,\n });\n }\n\n const filtered = urls.filter((val) => {\n try {\n // eslint-disable-next-line no-new\n new URL(val);\n\n return false;\n } catch (err) {\n // invalid url\n return true;\n }\n });\n\n const filteredLength = filtered.length;\n\n if (filteredLength === 0) {\n return true;\n }\n\n const errorMessage =\n filteredLength > 1\n ? 'form.upload-url.error.url.invalids'\n : 'form.upload-url.error.url.invalid';\n\n return this.createError({\n path: this.path,\n message: getTrad(errorMessage),\n params: { number: filtered.length },\n });\n },\n }),\n});\n"],"names":["urlSchema","yup","object","shape","urls","string","test","name","message","values","split","length","createError","path","errorsTrads","min","id","max","filtered","filter","val","URL","err","filteredLength","errorMessage","getTrad","params","number"],"mappings":";;;;MAKaA,SAAAA,GAAYC,GAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AAC1CC,IAAAA,IAAAA,EAAMH,GAAAA,CAAII,MAAM,EAAA,CAAGC,IAAI,CAAC;QACtBC,IAAAA,EAAM,YAAA;;QAENC,OAAAA,EAAS,SAAA;AACTF,QAAAA,IAAAA,CAAAA,CAAKG,SAAS,EAAE,EAAA;YACd,MAAML,IAAAA,GAAOK,MAAAA,CAAOC,KAAK,CAAC,OAAA,CAAA;YAE1B,IAAIN,IAAAA,CAAKO,MAAM,KAAK,CAAA,EAAG;gBACrB,OAAO,IAAI,CAACC,WAAW,CAAC;oBACtBC,IAAAA,EAAM,IAAI,CAACA,IAAI;oBACfL,OAAAA,EAASM,gBAAAA,CAAYC,GAAG,CAACC;AAC3B,iBAAA,CAAA;AACF,YAAA;YAEA,IAAIZ,IAAAA,CAAKO,MAAM,GAAG,EAAA,EAAI;gBACpB,OAAO,IAAI,CAACC,WAAW,CAAC;oBACtBC,IAAAA,EAAM,IAAI,CAACA,IAAI;oBACfL,OAAAA,EAASM,gBAAAA,CAAYG,GAAG,CAACD;AAC3B,iBAAA,CAAA;AACF,YAAA;AAEA,YAAA,MAAME,QAAAA,GAAWd,IAAAA,CAAKe,MAAM,CAAC,CAACC,GAAAA,GAAAA;gBAC5B,IAAI;;AAEF,oBAAA,IAAIC,GAAAA,CAAID,GAAAA,CAAAA;oBAER,OAAO,KAAA;AACT,gBAAA,CAAA,CAAE,OAAOE,GAAAA,EAAK;;oBAEZ,OAAO,IAAA;AACT,gBAAA;AACF,YAAA,CAAA,CAAA;YAEA,MAAMC,cAAAA,GAAiBL,SAASP,MAAM;AAEtC,YAAA,IAAIY,mBAAmB,CAAA,EAAG;gBACxB,OAAO,IAAA;AACT,YAAA;YAEA,MAAMC,YAAAA,GACJD,cAAAA,GAAiB,CAAA,GACb,oCAAA,GACA,mCAAA;YAEN,OAAO,IAAI,CAACX,WAAW,CAAC;gBACtBC,IAAAA,EAAM,IAAI,CAACA,IAAI;AACfL,gBAAAA,OAAAA,EAASiB,OAAAA,CAAQD,YAAAA,CAAAA;gBACjBE,MAAAA,EAAQ;AAAEC,oBAAAA,MAAAA,EAAQT,SAASP;AAAO;AACpC,aAAA,CAAA;AACF,QAAA;AACF,KAAA;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlsToAssets.js","sources":["../../../admin/src/utils/urlsToAssets.ts"],"sourcesContent":["import { AssetSource } from '../constants';\n\nimport { typeFromMime } from './typeFromMime';\n\nfunction getFilenameFromURL(url: string) {\n return new URL(url).pathname.split('/').pop();\n}\n\nexport const urlsToAssets = async (urls: string[]) => {\n const assetPromises = urls.map((url) =>\n fetch(url).then(async (res) => {\n const blob = await res.blob();\n\n const loadedFile = new File([blob], getFilenameFromURL(res.url)!, {\n type: res.headers.get('content-type') || undefined,\n });\n\n return {\n name: loadedFile.name,\n url: res.url,\n mime: res.headers.get('content-type'),\n rawFile: loadedFile,\n };\n })\n );\n // Retrieve the assets metadata\n const assetsResults = await Promise.all(assetPromises);\n\n const assets = assetsResults.map((fullFilledAsset) => ({\n source: AssetSource.Url,\n name: fullFilledAsset.name,\n type: typeFromMime(fullFilledAsset.mime!),\n url: fullFilledAsset.url,\n ext: fullFilledAsset.url.split('.').pop(),\n mime: fullFilledAsset.mime ? fullFilledAsset.mime : undefined,\n rawFile: fullFilledAsset.rawFile,\n }));\n\n return assets;\n};\n"],"names":["getFilenameFromURL","url","URL","pathname","split","pop","urlsToAssets","urls","assetPromises","map","fetch","then","res","blob","loadedFile","File","type","headers","get","undefined","name","mime","rawFile","assetsResults","Promise","all","assets","fullFilledAsset","source","AssetSource","Url","typeFromMime","ext"],"mappings":";;;;;AAIA,SAASA,mBAAmBC,GAAW,EAAA;IACrC,OAAO,IAAIC,IAAID,
|
|
1
|
+
{"version":3,"file":"urlsToAssets.js","sources":["../../../admin/src/utils/urlsToAssets.ts"],"sourcesContent":["import { AssetSource } from '../constants';\n\nimport { typeFromMime } from './typeFromMime';\n\nfunction getFilenameFromURL(url: string) {\n return new URL(url).pathname.split('/').pop();\n}\n\nexport const urlsToAssets = async (urls: string[]) => {\n const assetPromises = urls.map((url) =>\n fetch(url).then(async (res) => {\n const blob = await res.blob();\n\n const loadedFile = new File([blob], getFilenameFromURL(res.url)!, {\n type: res.headers.get('content-type') || undefined,\n });\n\n return {\n name: loadedFile.name,\n url: res.url,\n mime: res.headers.get('content-type'),\n rawFile: loadedFile,\n };\n })\n );\n // Retrieve the assets metadata\n const assetsResults = await Promise.all(assetPromises);\n\n const assets = assetsResults.map((fullFilledAsset) => ({\n source: AssetSource.Url,\n name: fullFilledAsset.name,\n type: typeFromMime(fullFilledAsset.mime!),\n url: fullFilledAsset.url,\n ext: fullFilledAsset.url.split('.').pop(),\n mime: fullFilledAsset.mime ? fullFilledAsset.mime : undefined,\n rawFile: fullFilledAsset.rawFile,\n }));\n\n return assets;\n};\n"],"names":["getFilenameFromURL","url","URL","pathname","split","pop","urlsToAssets","urls","assetPromises","map","fetch","then","res","blob","loadedFile","File","type","headers","get","undefined","name","mime","rawFile","assetsResults","Promise","all","assets","fullFilledAsset","source","AssetSource","Url","typeFromMime","ext"],"mappings":";;;;;AAIA,SAASA,mBAAmBC,GAAW,EAAA;IACrC,OAAO,IAAIC,IAAID,GAAAA,CAAAA,CAAKE,QAAQ,CAACC,KAAK,CAAC,KAAKC,GAAG,EAAA;AAC7C;AAEO,MAAMC,eAAe,OAAOC,IAAAA,GAAAA;IACjC,MAAMC,aAAAA,GAAgBD,IAAAA,CAAKE,GAAG,CAAC,CAACR,MAC9BS,KAAAA,CAAMT,GAAAA,CAAAA,CAAKU,IAAI,CAAC,OAAOC,GAAAA,GAAAA;YACrB,MAAMC,IAAAA,GAAO,MAAMD,GAAAA,CAAIC,IAAI,EAAA;YAE3B,MAAMC,UAAAA,GAAa,IAAIC,IAAAA,CAAK;AAACF,gBAAAA;aAAK,EAAEb,kBAAAA,CAAmBY,GAAAA,CAAIX,GAAG,CAAA,EAAI;AAChEe,gBAAAA,IAAAA,EAAMJ,GAAAA,CAAIK,OAAO,CAACC,GAAG,CAAC,cAAA,CAAA,IAAmBC;AAC3C,aAAA,CAAA;YAEA,OAAO;AACLC,gBAAAA,IAAAA,EAAMN,WAAWM,IAAI;AACrBnB,gBAAAA,GAAAA,EAAKW,IAAIX,GAAG;AACZoB,gBAAAA,IAAAA,EAAMT,GAAAA,CAAIK,OAAO,CAACC,GAAG,CAAC,cAAA,CAAA;gBACtBI,OAAAA,EAASR;AACX,aAAA;AACF,QAAA,CAAA,CAAA,CAAA;;AAGF,IAAA,MAAMS,aAAAA,GAAgB,MAAMC,OAAAA,CAAQC,GAAG,CAACjB,aAAAA,CAAAA;AAExC,IAAA,MAAMkB,SAASH,aAAAA,CAAcd,GAAG,CAAC,CAACkB,mBAAqB;AACrDC,YAAAA,MAAAA,EAAQC,sBAAYC,GAAG;AACvBV,YAAAA,IAAAA,EAAMO,gBAAgBP,IAAI;YAC1BJ,IAAAA,EAAMe,yBAAAA,CAAaJ,gBAAgBN,IAAI,CAAA;AACvCpB,YAAAA,GAAAA,EAAK0B,gBAAgB1B,GAAG;AACxB+B,YAAAA,GAAAA,EAAKL,gBAAgB1B,GAAG,CAACG,KAAK,CAAC,KAAKC,GAAG,EAAA;AACvCgB,YAAAA,IAAAA,EAAMM,eAAAA,CAAgBN,IAAI,GAAGM,eAAAA,CAAgBN,IAAI,GAAGF,SAAAA;AACpDG,YAAAA,OAAAA,EAASK,gBAAgBL;SAC3B,CAAA,CAAA;IAEA,OAAOI,MAAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlsToAssets.mjs","sources":["../../../admin/src/utils/urlsToAssets.ts"],"sourcesContent":["import { AssetSource } from '../constants';\n\nimport { typeFromMime } from './typeFromMime';\n\nfunction getFilenameFromURL(url: string) {\n return new URL(url).pathname.split('/').pop();\n}\n\nexport const urlsToAssets = async (urls: string[]) => {\n const assetPromises = urls.map((url) =>\n fetch(url).then(async (res) => {\n const blob = await res.blob();\n\n const loadedFile = new File([blob], getFilenameFromURL(res.url)!, {\n type: res.headers.get('content-type') || undefined,\n });\n\n return {\n name: loadedFile.name,\n url: res.url,\n mime: res.headers.get('content-type'),\n rawFile: loadedFile,\n };\n })\n );\n // Retrieve the assets metadata\n const assetsResults = await Promise.all(assetPromises);\n\n const assets = assetsResults.map((fullFilledAsset) => ({\n source: AssetSource.Url,\n name: fullFilledAsset.name,\n type: typeFromMime(fullFilledAsset.mime!),\n url: fullFilledAsset.url,\n ext: fullFilledAsset.url.split('.').pop(),\n mime: fullFilledAsset.mime ? fullFilledAsset.mime : undefined,\n rawFile: fullFilledAsset.rawFile,\n }));\n\n return assets;\n};\n"],"names":["getFilenameFromURL","url","URL","pathname","split","pop","urlsToAssets","urls","assetPromises","map","fetch","then","res","blob","loadedFile","File","type","headers","get","undefined","name","mime","rawFile","assetsResults","Promise","all","assets","fullFilledAsset","source","AssetSource","Url","typeFromMime","ext"],"mappings":";;;AAIA,SAASA,mBAAmBC,GAAW,EAAA;IACrC,OAAO,IAAIC,IAAID,
|
|
1
|
+
{"version":3,"file":"urlsToAssets.mjs","sources":["../../../admin/src/utils/urlsToAssets.ts"],"sourcesContent":["import { AssetSource } from '../constants';\n\nimport { typeFromMime } from './typeFromMime';\n\nfunction getFilenameFromURL(url: string) {\n return new URL(url).pathname.split('/').pop();\n}\n\nexport const urlsToAssets = async (urls: string[]) => {\n const assetPromises = urls.map((url) =>\n fetch(url).then(async (res) => {\n const blob = await res.blob();\n\n const loadedFile = new File([blob], getFilenameFromURL(res.url)!, {\n type: res.headers.get('content-type') || undefined,\n });\n\n return {\n name: loadedFile.name,\n url: res.url,\n mime: res.headers.get('content-type'),\n rawFile: loadedFile,\n };\n })\n );\n // Retrieve the assets metadata\n const assetsResults = await Promise.all(assetPromises);\n\n const assets = assetsResults.map((fullFilledAsset) => ({\n source: AssetSource.Url,\n name: fullFilledAsset.name,\n type: typeFromMime(fullFilledAsset.mime!),\n url: fullFilledAsset.url,\n ext: fullFilledAsset.url.split('.').pop(),\n mime: fullFilledAsset.mime ? fullFilledAsset.mime : undefined,\n rawFile: fullFilledAsset.rawFile,\n }));\n\n return assets;\n};\n"],"names":["getFilenameFromURL","url","URL","pathname","split","pop","urlsToAssets","urls","assetPromises","map","fetch","then","res","blob","loadedFile","File","type","headers","get","undefined","name","mime","rawFile","assetsResults","Promise","all","assets","fullFilledAsset","source","AssetSource","Url","typeFromMime","ext"],"mappings":";;;AAIA,SAASA,mBAAmBC,GAAW,EAAA;IACrC,OAAO,IAAIC,IAAID,GAAAA,CAAAA,CAAKE,QAAQ,CAACC,KAAK,CAAC,KAAKC,GAAG,EAAA;AAC7C;AAEO,MAAMC,eAAe,OAAOC,IAAAA,GAAAA;IACjC,MAAMC,aAAAA,GAAgBD,IAAAA,CAAKE,GAAG,CAAC,CAACR,MAC9BS,KAAAA,CAAMT,GAAAA,CAAAA,CAAKU,IAAI,CAAC,OAAOC,GAAAA,GAAAA;YACrB,MAAMC,IAAAA,GAAO,MAAMD,GAAAA,CAAIC,IAAI,EAAA;YAE3B,MAAMC,UAAAA,GAAa,IAAIC,IAAAA,CAAK;AAACF,gBAAAA;aAAK,EAAEb,kBAAAA,CAAmBY,GAAAA,CAAIX,GAAG,CAAA,EAAI;AAChEe,gBAAAA,IAAAA,EAAMJ,GAAAA,CAAIK,OAAO,CAACC,GAAG,CAAC,cAAA,CAAA,IAAmBC;AAC3C,aAAA,CAAA;YAEA,OAAO;AACLC,gBAAAA,IAAAA,EAAMN,WAAWM,IAAI;AACrBnB,gBAAAA,GAAAA,EAAKW,IAAIX,GAAG;AACZoB,gBAAAA,IAAAA,EAAMT,GAAAA,CAAIK,OAAO,CAACC,GAAG,CAAC,cAAA,CAAA;gBACtBI,OAAAA,EAASR;AACX,aAAA;AACF,QAAA,CAAA,CAAA,CAAA;;AAGF,IAAA,MAAMS,aAAAA,GAAgB,MAAMC,OAAAA,CAAQC,GAAG,CAACjB,aAAAA,CAAAA;AAExC,IAAA,MAAMkB,SAASH,aAAAA,CAAcd,GAAG,CAAC,CAACkB,mBAAqB;AACrDC,YAAAA,MAAAA,EAAQC,YAAYC,GAAG;AACvBV,YAAAA,IAAAA,EAAMO,gBAAgBP,IAAI;YAC1BJ,IAAAA,EAAMe,YAAAA,CAAaJ,gBAAgBN,IAAI,CAAA;AACvCpB,YAAAA,GAAAA,EAAK0B,gBAAgB1B,GAAG;AACxB+B,YAAAA,GAAAA,EAAKL,gBAAgB1B,GAAG,CAACG,KAAK,CAAC,KAAKC,GAAG,EAAA;AACvCgB,YAAAA,IAAAA,EAAMM,eAAAA,CAAgBN,IAAI,GAAGM,eAAAA,CAAgBN,IAAI,GAAGF,SAAAA;AACpDG,YAAAA,OAAAA,EAASK,gBAAgBL;SAC3B,CAAA,CAAA;IAEA,OAAOI,MAAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sources":["../../server/src/bootstrap.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { getService } from './utils';\nimport { ALLOWED_SORT_STRINGS, ALLOWED_WEBHOOK_EVENTS } from './constants';\n\nexport async function bootstrap({ strapi }: { strapi: Core.Strapi }) {\n const defaultConfig = {\n settings: {\n sizeOptimization: true,\n responsiveDimensions: true,\n autoOrientation: false,\n aiMetadata: true,\n },\n view_configuration: {\n pageSize: 10,\n sort: ALLOWED_SORT_STRINGS[0],\n },\n };\n\n for (const [key, defaultValue] of Object.entries(defaultConfig)) {\n // set plugin store\n const configurator = strapi.store!({ type: 'plugin', name: 'upload', key });\n\n const config = await configurator.get({});\n if (\n config &&\n Object.keys(defaultValue).every((key) => Object.prototype.hasOwnProperty.call(config, key))\n ) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n // if the config does not exist or does not have all the required keys\n // set from the defaultValue ensuring all required settings are present\n await configurator.set({\n value: Object.assign(defaultValue, config || {}),\n });\n }\n\n await registerPermissionActions();\n await registerWebhookEvents();\n\n await getService('weeklyMetrics').registerCron();\n await getService('aiMetadataJobs').registerCron();\n\n getService('metrics').sendUploadPluginMetrics();\n\n getService('extensions').signFileUrlsOnDocumentService();\n}\n\nconst registerWebhookEvents = async () =>\n Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {\n strapi.get('webhookStore').addAllowedEvent(key, value);\n });\n\nconst registerPermissionActions = async () => {\n const actions = [\n {\n section: 'plugins',\n displayName: 'Access the Media Library',\n uid: 'read',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Create (upload)',\n uid: 'assets.create',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Update (crop, details, replace) + delete',\n uid: 'assets.update',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Download',\n uid: 'assets.download',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Copy link',\n uid: 'assets.copy-link',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Configure view',\n uid: 'configure-view',\n pluginName: 'upload',\n },\n {\n section: 'settings',\n displayName: 'Access the Media Library settings page',\n uid: 'settings.read',\n category: 'media library',\n pluginName: 'upload',\n },\n ];\n\n await strapi.service('admin::permission').actionProvider.registerMany(actions);\n};\n"],"names":["bootstrap","strapi","defaultConfig","settings","sizeOptimization","responsiveDimensions","autoOrientation","aiMetadata","view_configuration","pageSize","sort","ALLOWED_SORT_STRINGS","key","defaultValue","Object","entries","configurator","store","type","name","config","get","keys","every","prototype","hasOwnProperty","call","set","value","assign","registerPermissionActions","registerWebhookEvents","getService","registerCron","sendUploadPluginMetrics","signFileUrlsOnDocumentService","ALLOWED_WEBHOOK_EVENTS","forEach","addAllowedEvent","actions","section","displayName","uid","pluginName","subCategory","category","service","actionProvider","registerMany"],"mappings":";;;;;AAKO,eAAeA,SAAAA,CAAU,EAAEC,MAAAA,EAAAA,OAAM,EAA2B,EAAA;AACjE,IAAA,MAAMC,
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sources":["../../server/src/bootstrap.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { getService } from './utils';\nimport { ALLOWED_SORT_STRINGS, ALLOWED_WEBHOOK_EVENTS } from './constants';\n\nexport async function bootstrap({ strapi }: { strapi: Core.Strapi }) {\n const defaultConfig = {\n settings: {\n sizeOptimization: true,\n responsiveDimensions: true,\n autoOrientation: false,\n aiMetadata: true,\n },\n view_configuration: {\n pageSize: 10,\n sort: ALLOWED_SORT_STRINGS[0],\n },\n };\n\n for (const [key, defaultValue] of Object.entries(defaultConfig)) {\n // set plugin store\n const configurator = strapi.store!({ type: 'plugin', name: 'upload', key });\n\n const config = await configurator.get({});\n if (\n config &&\n Object.keys(defaultValue).every((key) => Object.prototype.hasOwnProperty.call(config, key))\n ) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n // if the config does not exist or does not have all the required keys\n // set from the defaultValue ensuring all required settings are present\n await configurator.set({\n value: Object.assign(defaultValue, config || {}),\n });\n }\n\n await registerPermissionActions();\n await registerWebhookEvents();\n\n await getService('weeklyMetrics').registerCron();\n await getService('aiMetadataJobs').registerCron();\n\n getService('metrics').sendUploadPluginMetrics();\n\n getService('extensions').signFileUrlsOnDocumentService();\n}\n\nconst registerWebhookEvents = async () =>\n Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {\n strapi.get('webhookStore').addAllowedEvent(key, value);\n });\n\nconst registerPermissionActions = async () => {\n const actions = [\n {\n section: 'plugins',\n displayName: 'Access the Media Library',\n uid: 'read',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Create (upload)',\n uid: 'assets.create',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Update (crop, details, replace) + delete',\n uid: 'assets.update',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Download',\n uid: 'assets.download',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Copy link',\n uid: 'assets.copy-link',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Configure view',\n uid: 'configure-view',\n pluginName: 'upload',\n },\n {\n section: 'settings',\n displayName: 'Access the Media Library settings page',\n uid: 'settings.read',\n category: 'media library',\n pluginName: 'upload',\n },\n ];\n\n await strapi.service('admin::permission').actionProvider.registerMany(actions);\n};\n"],"names":["bootstrap","strapi","defaultConfig","settings","sizeOptimization","responsiveDimensions","autoOrientation","aiMetadata","view_configuration","pageSize","sort","ALLOWED_SORT_STRINGS","key","defaultValue","Object","entries","configurator","store","type","name","config","get","keys","every","prototype","hasOwnProperty","call","set","value","assign","registerPermissionActions","registerWebhookEvents","getService","registerCron","sendUploadPluginMetrics","signFileUrlsOnDocumentService","ALLOWED_WEBHOOK_EVENTS","forEach","addAllowedEvent","actions","section","displayName","uid","pluginName","subCategory","category","service","actionProvider","registerMany"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.mjs","sources":["../../server/src/bootstrap.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { getService } from './utils';\nimport { ALLOWED_SORT_STRINGS, ALLOWED_WEBHOOK_EVENTS } from './constants';\n\nexport async function bootstrap({ strapi }: { strapi: Core.Strapi }) {\n const defaultConfig = {\n settings: {\n sizeOptimization: true,\n responsiveDimensions: true,\n autoOrientation: false,\n aiMetadata: true,\n },\n view_configuration: {\n pageSize: 10,\n sort: ALLOWED_SORT_STRINGS[0],\n },\n };\n\n for (const [key, defaultValue] of Object.entries(defaultConfig)) {\n // set plugin store\n const configurator = strapi.store!({ type: 'plugin', name: 'upload', key });\n\n const config = await configurator.get({});\n if (\n config &&\n Object.keys(defaultValue).every((key) => Object.prototype.hasOwnProperty.call(config, key))\n ) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n // if the config does not exist or does not have all the required keys\n // set from the defaultValue ensuring all required settings are present\n await configurator.set({\n value: Object.assign(defaultValue, config || {}),\n });\n }\n\n await registerPermissionActions();\n await registerWebhookEvents();\n\n await getService('weeklyMetrics').registerCron();\n await getService('aiMetadataJobs').registerCron();\n\n getService('metrics').sendUploadPluginMetrics();\n\n getService('extensions').signFileUrlsOnDocumentService();\n}\n\nconst registerWebhookEvents = async () =>\n Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {\n strapi.get('webhookStore').addAllowedEvent(key, value);\n });\n\nconst registerPermissionActions = async () => {\n const actions = [\n {\n section: 'plugins',\n displayName: 'Access the Media Library',\n uid: 'read',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Create (upload)',\n uid: 'assets.create',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Update (crop, details, replace) + delete',\n uid: 'assets.update',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Download',\n uid: 'assets.download',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Copy link',\n uid: 'assets.copy-link',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Configure view',\n uid: 'configure-view',\n pluginName: 'upload',\n },\n {\n section: 'settings',\n displayName: 'Access the Media Library settings page',\n uid: 'settings.read',\n category: 'media library',\n pluginName: 'upload',\n },\n ];\n\n await strapi.service('admin::permission').actionProvider.registerMany(actions);\n};\n"],"names":["bootstrap","strapi","defaultConfig","settings","sizeOptimization","responsiveDimensions","autoOrientation","aiMetadata","view_configuration","pageSize","sort","ALLOWED_SORT_STRINGS","key","defaultValue","Object","entries","configurator","store","type","name","config","get","keys","every","prototype","hasOwnProperty","call","set","value","assign","registerPermissionActions","registerWebhookEvents","getService","registerCron","sendUploadPluginMetrics","signFileUrlsOnDocumentService","ALLOWED_WEBHOOK_EVENTS","forEach","addAllowedEvent","actions","section","displayName","uid","pluginName","subCategory","category","service","actionProvider","registerMany"],"mappings":";;;AAKO,eAAeA,SAAAA,CAAU,EAAEC,MAAAA,EAAAA,OAAM,EAA2B,EAAA;AACjE,IAAA,MAAMC,
|
|
1
|
+
{"version":3,"file":"bootstrap.mjs","sources":["../../server/src/bootstrap.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { getService } from './utils';\nimport { ALLOWED_SORT_STRINGS, ALLOWED_WEBHOOK_EVENTS } from './constants';\n\nexport async function bootstrap({ strapi }: { strapi: Core.Strapi }) {\n const defaultConfig = {\n settings: {\n sizeOptimization: true,\n responsiveDimensions: true,\n autoOrientation: false,\n aiMetadata: true,\n },\n view_configuration: {\n pageSize: 10,\n sort: ALLOWED_SORT_STRINGS[0],\n },\n };\n\n for (const [key, defaultValue] of Object.entries(defaultConfig)) {\n // set plugin store\n const configurator = strapi.store!({ type: 'plugin', name: 'upload', key });\n\n const config = await configurator.get({});\n if (\n config &&\n Object.keys(defaultValue).every((key) => Object.prototype.hasOwnProperty.call(config, key))\n ) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n // if the config does not exist or does not have all the required keys\n // set from the defaultValue ensuring all required settings are present\n await configurator.set({\n value: Object.assign(defaultValue, config || {}),\n });\n }\n\n await registerPermissionActions();\n await registerWebhookEvents();\n\n await getService('weeklyMetrics').registerCron();\n await getService('aiMetadataJobs').registerCron();\n\n getService('metrics').sendUploadPluginMetrics();\n\n getService('extensions').signFileUrlsOnDocumentService();\n}\n\nconst registerWebhookEvents = async () =>\n Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {\n strapi.get('webhookStore').addAllowedEvent(key, value);\n });\n\nconst registerPermissionActions = async () => {\n const actions = [\n {\n section: 'plugins',\n displayName: 'Access the Media Library',\n uid: 'read',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Create (upload)',\n uid: 'assets.create',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Update (crop, details, replace) + delete',\n uid: 'assets.update',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Download',\n uid: 'assets.download',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Copy link',\n uid: 'assets.copy-link',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Configure view',\n uid: 'configure-view',\n pluginName: 'upload',\n },\n {\n section: 'settings',\n displayName: 'Access the Media Library settings page',\n uid: 'settings.read',\n category: 'media library',\n pluginName: 'upload',\n },\n ];\n\n await strapi.service('admin::permission').actionProvider.registerMany(actions);\n};\n"],"names":["bootstrap","strapi","defaultConfig","settings","sizeOptimization","responsiveDimensions","autoOrientation","aiMetadata","view_configuration","pageSize","sort","ALLOWED_SORT_STRINGS","key","defaultValue","Object","entries","configurator","store","type","name","config","get","keys","every","prototype","hasOwnProperty","call","set","value","assign","registerPermissionActions","registerWebhookEvents","getService","registerCron","sendUploadPluginMetrics","signFileUrlsOnDocumentService","ALLOWED_WEBHOOK_EVENTS","forEach","addAllowedEvent","actions","section","displayName","uid","pluginName","subCategory","category","service","actionProvider","registerMany"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sources":["../../server/src/config.ts"],"sourcesContent":["export const config = {\n default: {\n enabled: true,\n provider: 'local',\n sizeLimit: 1000000000, // 1GB\n actionOptions: {},\n },\n validator() {},\n};\n"],"names":["config","default","enabled","provider","sizeLimit","actionOptions","validator"],"mappings":";;MAAaA,
|
|
1
|
+
{"version":3,"file":"config.js","sources":["../../server/src/config.ts"],"sourcesContent":["export const config = {\n default: {\n enabled: true,\n provider: 'local',\n sizeLimit: 1000000000, // 1GB\n actionOptions: {},\n },\n validator() {},\n};\n"],"names":["config","default","enabled","provider","sizeLimit","actionOptions","validator"],"mappings":";;MAAaA,MAAAA,GAAS;IACpBC,OAAAA,EAAS;QACPC,OAAAA,EAAS,IAAA;QACTC,QAAAA,EAAU,OAAA;QACVC,SAAAA,EAAW,UAAA;AACXC,QAAAA,aAAAA,EAAe;AACjB,KAAA;IACAC,SAAAA,CAAAA,GAAAA,CAAa;AACf;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.mjs","sources":["../../server/src/config.ts"],"sourcesContent":["export const config = {\n default: {\n enabled: true,\n provider: 'local',\n sizeLimit: 1000000000, // 1GB\n actionOptions: {},\n },\n validator() {},\n};\n"],"names":["config","default","enabled","provider","sizeLimit","actionOptions","validator"],"mappings":"MAAaA,
|
|
1
|
+
{"version":3,"file":"config.mjs","sources":["../../server/src/config.ts"],"sourcesContent":["export const config = {\n default: {\n enabled: true,\n provider: 'local',\n sizeLimit: 1000000000, // 1GB\n actionOptions: {},\n },\n validator() {},\n};\n"],"names":["config","default","enabled","provider","sizeLimit","actionOptions","validator"],"mappings":"MAAaA,MAAAA,GAAS;IACpBC,OAAAA,EAAS;QACPC,OAAAA,EAAS,IAAA;QACTC,QAAAA,EAAU,OAAA;QACVC,SAAAA,EAAW,UAAA;AACXC,QAAAA,aAAAA,EAAe;AACjB,KAAA;IACAC,SAAAA,CAAAA,GAAAA,CAAa;AACf;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../server/src/constants.ts"],"sourcesContent":["const ACTIONS = {\n read: 'plugin::upload.read',\n readSettings: 'plugin::upload.settings.read',\n create: 'plugin::upload.assets.create',\n update: 'plugin::upload.assets.update',\n download: 'plugin::upload.assets.download',\n copyLink: 'plugin::upload.assets.copy-link',\n configureView: 'plugin::upload.configure-view',\n};\n\nconst ALLOWED_SORT_STRINGS = [\n 'createdAt:DESC',\n 'createdAt:ASC',\n 'name:ASC',\n 'name:DESC',\n 'updatedAt:DESC',\n 'updatedAt:ASC',\n];\n\nconst ALLOWED_WEBHOOK_EVENTS = {\n MEDIA_CREATE: 'media.create',\n MEDIA_UPDATE: 'media.update',\n MEDIA_DELETE: 'media.delete',\n};\n\nconst FOLDER_MODEL_UID = 'plugin::upload.folder';\nconst FILE_MODEL_UID = 'plugin::upload.file';\nconst API_UPLOAD_FOLDER_BASE_NAME = 'API Uploads';\n\nexport {\n ACTIONS,\n FOLDER_MODEL_UID,\n FILE_MODEL_UID,\n API_UPLOAD_FOLDER_BASE_NAME,\n ALLOWED_SORT_STRINGS,\n ALLOWED_WEBHOOK_EVENTS,\n};\n"],"names":["ACTIONS","read","readSettings","create","update","download","copyLink","configureView","ALLOWED_SORT_STRINGS","ALLOWED_WEBHOOK_EVENTS","MEDIA_CREATE","MEDIA_UPDATE","MEDIA_DELETE","FOLDER_MODEL_UID","FILE_MODEL_UID","API_UPLOAD_FOLDER_BASE_NAME"],"mappings":";;AAAA,MAAMA,
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../server/src/constants.ts"],"sourcesContent":["const ACTIONS = {\n read: 'plugin::upload.read',\n readSettings: 'plugin::upload.settings.read',\n create: 'plugin::upload.assets.create',\n update: 'plugin::upload.assets.update',\n download: 'plugin::upload.assets.download',\n copyLink: 'plugin::upload.assets.copy-link',\n configureView: 'plugin::upload.configure-view',\n};\n\nconst ALLOWED_SORT_STRINGS = [\n 'createdAt:DESC',\n 'createdAt:ASC',\n 'name:ASC',\n 'name:DESC',\n 'updatedAt:DESC',\n 'updatedAt:ASC',\n];\n\nconst ALLOWED_WEBHOOK_EVENTS = {\n MEDIA_CREATE: 'media.create',\n MEDIA_UPDATE: 'media.update',\n MEDIA_DELETE: 'media.delete',\n};\n\nconst FOLDER_MODEL_UID = 'plugin::upload.folder';\nconst FILE_MODEL_UID = 'plugin::upload.file';\nconst API_UPLOAD_FOLDER_BASE_NAME = 'API Uploads';\n\nexport {\n ACTIONS,\n FOLDER_MODEL_UID,\n FILE_MODEL_UID,\n API_UPLOAD_FOLDER_BASE_NAME,\n ALLOWED_SORT_STRINGS,\n ALLOWED_WEBHOOK_EVENTS,\n};\n"],"names":["ACTIONS","read","readSettings","create","update","download","copyLink","configureView","ALLOWED_SORT_STRINGS","ALLOWED_WEBHOOK_EVENTS","MEDIA_CREATE","MEDIA_UPDATE","MEDIA_DELETE","FOLDER_MODEL_UID","FILE_MODEL_UID","API_UPLOAD_FOLDER_BASE_NAME"],"mappings":";;AAAA,MAAMA,OAAAA,GAAU;IACdC,IAAAA,EAAM,qBAAA;IACNC,YAAAA,EAAc,8BAAA;IACdC,MAAAA,EAAQ,8BAAA;IACRC,MAAAA,EAAQ,8BAAA;IACRC,QAAAA,EAAU,gCAAA;IACVC,QAAAA,EAAU,iCAAA;IACVC,aAAAA,EAAe;AACjB;AAEA,MAAMC,oBAAAA,GAAuB;AAC3B,IAAA,gBAAA;AACA,IAAA,eAAA;AACA,IAAA,UAAA;AACA,IAAA,WAAA;AACA,IAAA,gBAAA;AACA,IAAA;AACD;AAED,MAAMC,sBAAAA,GAAyB;IAC7BC,YAAAA,EAAc,cAAA;IACdC,YAAAA,EAAc,cAAA;IACdC,YAAAA,EAAc;AAChB;AAEA,MAAMC,gBAAAA,GAAmB;AACzB,MAAMC,cAAAA,GAAiB;AACvB,MAAMC,2BAAAA,GAA8B;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","sources":["../../server/src/constants.ts"],"sourcesContent":["const ACTIONS = {\n read: 'plugin::upload.read',\n readSettings: 'plugin::upload.settings.read',\n create: 'plugin::upload.assets.create',\n update: 'plugin::upload.assets.update',\n download: 'plugin::upload.assets.download',\n copyLink: 'plugin::upload.assets.copy-link',\n configureView: 'plugin::upload.configure-view',\n};\n\nconst ALLOWED_SORT_STRINGS = [\n 'createdAt:DESC',\n 'createdAt:ASC',\n 'name:ASC',\n 'name:DESC',\n 'updatedAt:DESC',\n 'updatedAt:ASC',\n];\n\nconst ALLOWED_WEBHOOK_EVENTS = {\n MEDIA_CREATE: 'media.create',\n MEDIA_UPDATE: 'media.update',\n MEDIA_DELETE: 'media.delete',\n};\n\nconst FOLDER_MODEL_UID = 'plugin::upload.folder';\nconst FILE_MODEL_UID = 'plugin::upload.file';\nconst API_UPLOAD_FOLDER_BASE_NAME = 'API Uploads';\n\nexport {\n ACTIONS,\n FOLDER_MODEL_UID,\n FILE_MODEL_UID,\n API_UPLOAD_FOLDER_BASE_NAME,\n ALLOWED_SORT_STRINGS,\n ALLOWED_WEBHOOK_EVENTS,\n};\n"],"names":["ACTIONS","read","readSettings","create","update","download","copyLink","configureView","ALLOWED_SORT_STRINGS","ALLOWED_WEBHOOK_EVENTS","MEDIA_CREATE","MEDIA_UPDATE","MEDIA_DELETE","FOLDER_MODEL_UID","FILE_MODEL_UID","API_UPLOAD_FOLDER_BASE_NAME"],"mappings":"AAAA,MAAMA,
|
|
1
|
+
{"version":3,"file":"constants.mjs","sources":["../../server/src/constants.ts"],"sourcesContent":["const ACTIONS = {\n read: 'plugin::upload.read',\n readSettings: 'plugin::upload.settings.read',\n create: 'plugin::upload.assets.create',\n update: 'plugin::upload.assets.update',\n download: 'plugin::upload.assets.download',\n copyLink: 'plugin::upload.assets.copy-link',\n configureView: 'plugin::upload.configure-view',\n};\n\nconst ALLOWED_SORT_STRINGS = [\n 'createdAt:DESC',\n 'createdAt:ASC',\n 'name:ASC',\n 'name:DESC',\n 'updatedAt:DESC',\n 'updatedAt:ASC',\n];\n\nconst ALLOWED_WEBHOOK_EVENTS = {\n MEDIA_CREATE: 'media.create',\n MEDIA_UPDATE: 'media.update',\n MEDIA_DELETE: 'media.delete',\n};\n\nconst FOLDER_MODEL_UID = 'plugin::upload.folder';\nconst FILE_MODEL_UID = 'plugin::upload.file';\nconst API_UPLOAD_FOLDER_BASE_NAME = 'API Uploads';\n\nexport {\n ACTIONS,\n FOLDER_MODEL_UID,\n FILE_MODEL_UID,\n API_UPLOAD_FOLDER_BASE_NAME,\n ALLOWED_SORT_STRINGS,\n ALLOWED_WEBHOOK_EVENTS,\n};\n"],"names":["ACTIONS","read","readSettings","create","update","download","copyLink","configureView","ALLOWED_SORT_STRINGS","ALLOWED_WEBHOOK_EVENTS","MEDIA_CREATE","MEDIA_UPDATE","MEDIA_DELETE","FOLDER_MODEL_UID","FILE_MODEL_UID","API_UPLOAD_FOLDER_BASE_NAME"],"mappings":"AAAA,MAAMA,OAAAA,GAAU;IACdC,IAAAA,EAAM,qBAAA;IACNC,YAAAA,EAAc,8BAAA;IACdC,MAAAA,EAAQ,8BAAA;IACRC,MAAAA,EAAQ,8BAAA;IACRC,QAAAA,EAAU,gCAAA;IACVC,QAAAA,EAAU,iCAAA;IACVC,aAAAA,EAAe;AACjB;AAEA,MAAMC,oBAAAA,GAAuB;AAC3B,IAAA,gBAAA;AACA,IAAA,eAAA;AACA,IAAA,UAAA;AACA,IAAA,WAAA;AACA,IAAA,gBAAA;AACA,IAAA;AACD;AAED,MAAMC,sBAAAA,GAAyB;IAC7BC,YAAAA,EAAc,cAAA;IACdC,YAAAA,EAAc,cAAA;IACdC,YAAAA,EAAc;AAChB;AAEA,MAAMC,gBAAAA,GAAmB;AACzB,MAAMC,cAAAA,GAAiB;AACvB,MAAMC,2BAAAA,GAA8B;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.js","sources":["../../../server/src/content-types/file.ts"],"sourcesContent":["import type { Struct } from '@strapi/types';\n\nimport { FOLDER_MODEL_UID } from '../constants';\n\nexport default {\n schema: {\n collectionName: 'files',\n info: {\n singularName: 'file',\n pluralName: 'files',\n displayName: 'File',\n description: '',\n },\n options: {},\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n name: {\n type: 'string',\n configurable: false,\n required: true,\n },\n alternativeText: {\n type: 'text',\n configurable: false,\n },\n caption: {\n type: 'text',\n configurable: false,\n },\n focalPoint: {\n type: 'json',\n configurable: false,\n },\n width: {\n type: 'integer',\n configurable: false,\n },\n height: {\n type: 'integer',\n configurable: false,\n },\n formats: {\n type: 'json',\n configurable: false,\n },\n hash: {\n type: 'string',\n configurable: false,\n required: true,\n },\n ext: {\n type: 'string',\n configurable: false,\n },\n mime: {\n type: 'string',\n configurable: false,\n required: true,\n },\n size: {\n type: 'decimal',\n configurable: false,\n required: true,\n },\n url: {\n type: 'text',\n configurable: false,\n required: true,\n },\n previewUrl: {\n type: 'text',\n configurable: false,\n },\n provider: {\n type: 'string',\n configurable: false,\n required: true,\n },\n provider_metadata: {\n type: 'json',\n configurable: false,\n },\n related: {\n type: 'relation',\n relation: 'morphToMany',\n configurable: false,\n },\n folder: {\n type: 'relation',\n relation: 'manyToOne',\n target: FOLDER_MODEL_UID,\n inversedBy: 'files',\n private: true,\n },\n folderPath: {\n type: 'string',\n minLength: 1,\n required: true,\n private: true,\n searchable: false,\n },\n },\n // experimental feature:\n indexes: [\n {\n name: 'upload_files_folder_path_index',\n columns: ['folder_path'],\n type: null,\n },\n {\n name: `upload_files_created_at_index`,\n columns: ['created_at'],\n type: null,\n },\n {\n name: `upload_files_updated_at_index`,\n columns: ['updated_at'],\n type: null,\n },\n {\n name: `upload_files_name_index`,\n columns: ['name'],\n type: null,\n },\n {\n name: `upload_files_size_index`,\n columns: ['size'],\n type: null,\n },\n {\n name: `upload_files_ext_index`,\n columns: ['ext'],\n type: null,\n },\n ],\n } satisfies Partial<Struct.CollectionTypeSchema>,\n};\n"],"names":["schema","collectionName","info","singularName","pluralName","displayName","description","options","pluginOptions","visible","attributes","name","type","configurable","required","alternativeText","caption","focalPoint","width","height","formats","hash","ext","mime","size","url","previewUrl","provider","provider_metadata","related","relation","folder","target","FOLDER_MODEL_UID","inversedBy","private","folderPath","minLength","searchable","indexes","columns"],"mappings":";;;;AAIA,WAAe;IACbA,
|
|
1
|
+
{"version":3,"file":"file.js","sources":["../../../server/src/content-types/file.ts"],"sourcesContent":["import type { Struct } from '@strapi/types';\n\nimport { FOLDER_MODEL_UID } from '../constants';\n\nexport default {\n schema: {\n collectionName: 'files',\n info: {\n singularName: 'file',\n pluralName: 'files',\n displayName: 'File',\n description: '',\n },\n options: {},\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n name: {\n type: 'string',\n configurable: false,\n required: true,\n },\n alternativeText: {\n type: 'text',\n configurable: false,\n },\n caption: {\n type: 'text',\n configurable: false,\n },\n focalPoint: {\n type: 'json',\n configurable: false,\n },\n width: {\n type: 'integer',\n configurable: false,\n },\n height: {\n type: 'integer',\n configurable: false,\n },\n formats: {\n type: 'json',\n configurable: false,\n },\n hash: {\n type: 'string',\n configurable: false,\n required: true,\n },\n ext: {\n type: 'string',\n configurable: false,\n },\n mime: {\n type: 'string',\n configurable: false,\n required: true,\n },\n size: {\n type: 'decimal',\n configurable: false,\n required: true,\n },\n url: {\n type: 'text',\n configurable: false,\n required: true,\n },\n previewUrl: {\n type: 'text',\n configurable: false,\n },\n provider: {\n type: 'string',\n configurable: false,\n required: true,\n },\n provider_metadata: {\n type: 'json',\n configurable: false,\n },\n related: {\n type: 'relation',\n relation: 'morphToMany',\n configurable: false,\n },\n folder: {\n type: 'relation',\n relation: 'manyToOne',\n target: FOLDER_MODEL_UID,\n inversedBy: 'files',\n private: true,\n },\n folderPath: {\n type: 'string',\n minLength: 1,\n required: true,\n private: true,\n searchable: false,\n },\n },\n // experimental feature:\n indexes: [\n {\n name: 'upload_files_folder_path_index',\n columns: ['folder_path'],\n type: null,\n },\n {\n name: `upload_files_created_at_index`,\n columns: ['created_at'],\n type: null,\n },\n {\n name: `upload_files_updated_at_index`,\n columns: ['updated_at'],\n type: null,\n },\n {\n name: `upload_files_name_index`,\n columns: ['name'],\n type: null,\n },\n {\n name: `upload_files_size_index`,\n columns: ['size'],\n type: null,\n },\n {\n name: `upload_files_ext_index`,\n columns: ['ext'],\n type: null,\n },\n ],\n } satisfies Partial<Struct.CollectionTypeSchema>,\n};\n"],"names":["schema","collectionName","info","singularName","pluralName","displayName","description","options","pluginOptions","visible","attributes","name","type","configurable","required","alternativeText","caption","focalPoint","width","height","formats","hash","ext","mime","size","url","previewUrl","provider","provider_metadata","related","relation","folder","target","FOLDER_MODEL_UID","inversedBy","private","folderPath","minLength","searchable","indexes","columns"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.mjs","sources":["../../../server/src/content-types/file.ts"],"sourcesContent":["import type { Struct } from '@strapi/types';\n\nimport { FOLDER_MODEL_UID } from '../constants';\n\nexport default {\n schema: {\n collectionName: 'files',\n info: {\n singularName: 'file',\n pluralName: 'files',\n displayName: 'File',\n description: '',\n },\n options: {},\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n name: {\n type: 'string',\n configurable: false,\n required: true,\n },\n alternativeText: {\n type: 'text',\n configurable: false,\n },\n caption: {\n type: 'text',\n configurable: false,\n },\n focalPoint: {\n type: 'json',\n configurable: false,\n },\n width: {\n type: 'integer',\n configurable: false,\n },\n height: {\n type: 'integer',\n configurable: false,\n },\n formats: {\n type: 'json',\n configurable: false,\n },\n hash: {\n type: 'string',\n configurable: false,\n required: true,\n },\n ext: {\n type: 'string',\n configurable: false,\n },\n mime: {\n type: 'string',\n configurable: false,\n required: true,\n },\n size: {\n type: 'decimal',\n configurable: false,\n required: true,\n },\n url: {\n type: 'text',\n configurable: false,\n required: true,\n },\n previewUrl: {\n type: 'text',\n configurable: false,\n },\n provider: {\n type: 'string',\n configurable: false,\n required: true,\n },\n provider_metadata: {\n type: 'json',\n configurable: false,\n },\n related: {\n type: 'relation',\n relation: 'morphToMany',\n configurable: false,\n },\n folder: {\n type: 'relation',\n relation: 'manyToOne',\n target: FOLDER_MODEL_UID,\n inversedBy: 'files',\n private: true,\n },\n folderPath: {\n type: 'string',\n minLength: 1,\n required: true,\n private: true,\n searchable: false,\n },\n },\n // experimental feature:\n indexes: [\n {\n name: 'upload_files_folder_path_index',\n columns: ['folder_path'],\n type: null,\n },\n {\n name: `upload_files_created_at_index`,\n columns: ['created_at'],\n type: null,\n },\n {\n name: `upload_files_updated_at_index`,\n columns: ['updated_at'],\n type: null,\n },\n {\n name: `upload_files_name_index`,\n columns: ['name'],\n type: null,\n },\n {\n name: `upload_files_size_index`,\n columns: ['size'],\n type: null,\n },\n {\n name: `upload_files_ext_index`,\n columns: ['ext'],\n type: null,\n },\n ],\n } satisfies Partial<Struct.CollectionTypeSchema>,\n};\n"],"names":["schema","collectionName","info","singularName","pluralName","displayName","description","options","pluginOptions","visible","attributes","name","type","configurable","required","alternativeText","caption","focalPoint","width","height","formats","hash","ext","mime","size","url","previewUrl","provider","provider_metadata","related","relation","folder","target","FOLDER_MODEL_UID","inversedBy","private","folderPath","minLength","searchable","indexes","columns"],"mappings":";;AAIA,WAAe;IACbA,
|
|
1
|
+
{"version":3,"file":"file.mjs","sources":["../../../server/src/content-types/file.ts"],"sourcesContent":["import type { Struct } from '@strapi/types';\n\nimport { FOLDER_MODEL_UID } from '../constants';\n\nexport default {\n schema: {\n collectionName: 'files',\n info: {\n singularName: 'file',\n pluralName: 'files',\n displayName: 'File',\n description: '',\n },\n options: {},\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n name: {\n type: 'string',\n configurable: false,\n required: true,\n },\n alternativeText: {\n type: 'text',\n configurable: false,\n },\n caption: {\n type: 'text',\n configurable: false,\n },\n focalPoint: {\n type: 'json',\n configurable: false,\n },\n width: {\n type: 'integer',\n configurable: false,\n },\n height: {\n type: 'integer',\n configurable: false,\n },\n formats: {\n type: 'json',\n configurable: false,\n },\n hash: {\n type: 'string',\n configurable: false,\n required: true,\n },\n ext: {\n type: 'string',\n configurable: false,\n },\n mime: {\n type: 'string',\n configurable: false,\n required: true,\n },\n size: {\n type: 'decimal',\n configurable: false,\n required: true,\n },\n url: {\n type: 'text',\n configurable: false,\n required: true,\n },\n previewUrl: {\n type: 'text',\n configurable: false,\n },\n provider: {\n type: 'string',\n configurable: false,\n required: true,\n },\n provider_metadata: {\n type: 'json',\n configurable: false,\n },\n related: {\n type: 'relation',\n relation: 'morphToMany',\n configurable: false,\n },\n folder: {\n type: 'relation',\n relation: 'manyToOne',\n target: FOLDER_MODEL_UID,\n inversedBy: 'files',\n private: true,\n },\n folderPath: {\n type: 'string',\n minLength: 1,\n required: true,\n private: true,\n searchable: false,\n },\n },\n // experimental feature:\n indexes: [\n {\n name: 'upload_files_folder_path_index',\n columns: ['folder_path'],\n type: null,\n },\n {\n name: `upload_files_created_at_index`,\n columns: ['created_at'],\n type: null,\n },\n {\n name: `upload_files_updated_at_index`,\n columns: ['updated_at'],\n type: null,\n },\n {\n name: `upload_files_name_index`,\n columns: ['name'],\n type: null,\n },\n {\n name: `upload_files_size_index`,\n columns: ['size'],\n type: null,\n },\n {\n name: `upload_files_ext_index`,\n columns: ['ext'],\n type: null,\n },\n ],\n } satisfies Partial<Struct.CollectionTypeSchema>,\n};\n"],"names":["schema","collectionName","info","singularName","pluralName","displayName","description","options","pluginOptions","visible","attributes","name","type","configurable","required","alternativeText","caption","focalPoint","width","height","formats","hash","ext","mime","size","url","previewUrl","provider","provider_metadata","related","relation","folder","target","FOLDER_MODEL_UID","inversedBy","private","folderPath","minLength","searchable","indexes","columns"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folder.js","sources":["../../../server/src/content-types/folder.ts"],"sourcesContent":["import type { Struct } from '@strapi/types';\n\nimport { FOLDER_MODEL_UID, FILE_MODEL_UID } from '../constants';\n\nexport default {\n schema: {\n collectionName: 'upload_folders',\n info: {\n singularName: 'folder',\n pluralName: 'folders',\n displayName: 'Folder',\n },\n options: {},\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n name: {\n type: 'string',\n minLength: 1,\n required: true,\n },\n pathId: {\n type: 'integer',\n unique: true,\n required: true,\n },\n parent: {\n type: 'relation',\n relation: 'manyToOne',\n target: FOLDER_MODEL_UID,\n inversedBy: 'children',\n },\n children: {\n type: 'relation',\n relation: 'oneToMany',\n target: FOLDER_MODEL_UID,\n mappedBy: 'parent',\n },\n files: {\n type: 'relation',\n relation: 'oneToMany',\n target: FILE_MODEL_UID,\n mappedBy: 'folder',\n },\n path: {\n type: 'string',\n minLength: 1,\n required: true,\n },\n },\n // experimental feature:\n indexes: [\n {\n name: 'upload_folders_path_id_index',\n columns: ['path_id'],\n type: 'unique',\n },\n {\n name: 'upload_folders_path_index',\n columns: ['path'],\n type: 'unique',\n },\n ],\n } satisfies Partial<Struct.CollectionTypeSchema>,\n};\n"],"names":["schema","collectionName","info","singularName","pluralName","displayName","options","pluginOptions","visible","attributes","name","type","minLength","required","pathId","unique","parent","relation","target","FOLDER_MODEL_UID","inversedBy","children","mappedBy","files","FILE_MODEL_UID","path","indexes","columns"],"mappings":";;;;AAIA,aAAe;IACbA,
|
|
1
|
+
{"version":3,"file":"folder.js","sources":["../../../server/src/content-types/folder.ts"],"sourcesContent":["import type { Struct } from '@strapi/types';\n\nimport { FOLDER_MODEL_UID, FILE_MODEL_UID } from '../constants';\n\nexport default {\n schema: {\n collectionName: 'upload_folders',\n info: {\n singularName: 'folder',\n pluralName: 'folders',\n displayName: 'Folder',\n },\n options: {},\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n name: {\n type: 'string',\n minLength: 1,\n required: true,\n },\n pathId: {\n type: 'integer',\n unique: true,\n required: true,\n },\n parent: {\n type: 'relation',\n relation: 'manyToOne',\n target: FOLDER_MODEL_UID,\n inversedBy: 'children',\n },\n children: {\n type: 'relation',\n relation: 'oneToMany',\n target: FOLDER_MODEL_UID,\n mappedBy: 'parent',\n },\n files: {\n type: 'relation',\n relation: 'oneToMany',\n target: FILE_MODEL_UID,\n mappedBy: 'folder',\n },\n path: {\n type: 'string',\n minLength: 1,\n required: true,\n },\n },\n // experimental feature:\n indexes: [\n {\n name: 'upload_folders_path_id_index',\n columns: ['path_id'],\n type: 'unique',\n },\n {\n name: 'upload_folders_path_index',\n columns: ['path'],\n type: 'unique',\n },\n ],\n } satisfies Partial<Struct.CollectionTypeSchema>,\n};\n"],"names":["schema","collectionName","info","singularName","pluralName","displayName","options","pluginOptions","visible","attributes","name","type","minLength","required","pathId","unique","parent","relation","target","FOLDER_MODEL_UID","inversedBy","children","mappedBy","files","FILE_MODEL_UID","path","indexes","columns"],"mappings":";;;;AAIA,aAAe;IACbA,MAAAA,EAAQ;QACNC,cAAAA,EAAgB,gBAAA;QAChBC,IAAAA,EAAM;YACJC,YAAAA,EAAc,QAAA;YACdC,UAAAA,EAAY,SAAA;YACZC,WAAAA,EAAa;AACf,SAAA;AACAC,QAAAA,OAAAA,EAAS,EAAC;QACVC,aAAAA,EAAe;YACb,iBAAA,EAAmB;gBACjBC,OAAAA,EAAS;AACX,aAAA;YACA,sBAAA,EAAwB;gBACtBA,OAAAA,EAAS;AACX;AACF,SAAA;QACAC,UAAAA,EAAY;YACVC,IAAAA,EAAM;gBACJC,IAAAA,EAAM,QAAA;gBACNC,SAAAA,EAAW,CAAA;gBACXC,QAAAA,EAAU;AACZ,aAAA;YACAC,MAAAA,EAAQ;gBACNH,IAAAA,EAAM,SAAA;gBACNI,MAAAA,EAAQ,IAAA;gBACRF,QAAAA,EAAU;AACZ,aAAA;YACAG,MAAAA,EAAQ;gBACNL,IAAAA,EAAM,UAAA;gBACNM,QAAAA,EAAU,WAAA;gBACVC,MAAAA,EAAQC,0BAAAA;gBACRC,UAAAA,EAAY;AACd,aAAA;YACAC,QAAAA,EAAU;gBACRV,IAAAA,EAAM,UAAA;gBACNM,QAAAA,EAAU,WAAA;gBACVC,MAAAA,EAAQC,0BAAAA;gBACRG,QAAAA,EAAU;AACZ,aAAA;YACAC,KAAAA,EAAO;gBACLZ,IAAAA,EAAM,UAAA;gBACNM,QAAAA,EAAU,WAAA;gBACVC,MAAAA,EAAQM,wBAAAA;gBACRF,QAAAA,EAAU;AACZ,aAAA;YACAG,IAAAA,EAAM;gBACJd,IAAAA,EAAM,QAAA;gBACNC,SAAAA,EAAW,CAAA;gBACXC,QAAAA,EAAU;AACZ;AACF,SAAA;;QAEAa,OAAAA,EAAS;AACP,YAAA;gBACEhB,IAAAA,EAAM,8BAAA;gBACNiB,OAAAA,EAAS;AAAC,oBAAA;AAAU,iBAAA;gBACpBhB,IAAAA,EAAM;AACR,aAAA;AACA,YAAA;gBACED,IAAAA,EAAM,2BAAA;gBACNiB,OAAAA,EAAS;AAAC,oBAAA;AAAO,iBAAA;gBACjBhB,IAAAA,EAAM;AACR;AACD;AACH;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folder.mjs","sources":["../../../server/src/content-types/folder.ts"],"sourcesContent":["import type { Struct } from '@strapi/types';\n\nimport { FOLDER_MODEL_UID, FILE_MODEL_UID } from '../constants';\n\nexport default {\n schema: {\n collectionName: 'upload_folders',\n info: {\n singularName: 'folder',\n pluralName: 'folders',\n displayName: 'Folder',\n },\n options: {},\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n name: {\n type: 'string',\n minLength: 1,\n required: true,\n },\n pathId: {\n type: 'integer',\n unique: true,\n required: true,\n },\n parent: {\n type: 'relation',\n relation: 'manyToOne',\n target: FOLDER_MODEL_UID,\n inversedBy: 'children',\n },\n children: {\n type: 'relation',\n relation: 'oneToMany',\n target: FOLDER_MODEL_UID,\n mappedBy: 'parent',\n },\n files: {\n type: 'relation',\n relation: 'oneToMany',\n target: FILE_MODEL_UID,\n mappedBy: 'folder',\n },\n path: {\n type: 'string',\n minLength: 1,\n required: true,\n },\n },\n // experimental feature:\n indexes: [\n {\n name: 'upload_folders_path_id_index',\n columns: ['path_id'],\n type: 'unique',\n },\n {\n name: 'upload_folders_path_index',\n columns: ['path'],\n type: 'unique',\n },\n ],\n } satisfies Partial<Struct.CollectionTypeSchema>,\n};\n"],"names":["schema","collectionName","info","singularName","pluralName","displayName","options","pluginOptions","visible","attributes","name","type","minLength","required","pathId","unique","parent","relation","target","FOLDER_MODEL_UID","inversedBy","children","mappedBy","files","FILE_MODEL_UID","path","indexes","columns"],"mappings":";;AAIA,aAAe;IACbA,
|
|
1
|
+
{"version":3,"file":"folder.mjs","sources":["../../../server/src/content-types/folder.ts"],"sourcesContent":["import type { Struct } from '@strapi/types';\n\nimport { FOLDER_MODEL_UID, FILE_MODEL_UID } from '../constants';\n\nexport default {\n schema: {\n collectionName: 'upload_folders',\n info: {\n singularName: 'folder',\n pluralName: 'folders',\n displayName: 'Folder',\n },\n options: {},\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n name: {\n type: 'string',\n minLength: 1,\n required: true,\n },\n pathId: {\n type: 'integer',\n unique: true,\n required: true,\n },\n parent: {\n type: 'relation',\n relation: 'manyToOne',\n target: FOLDER_MODEL_UID,\n inversedBy: 'children',\n },\n children: {\n type: 'relation',\n relation: 'oneToMany',\n target: FOLDER_MODEL_UID,\n mappedBy: 'parent',\n },\n files: {\n type: 'relation',\n relation: 'oneToMany',\n target: FILE_MODEL_UID,\n mappedBy: 'folder',\n },\n path: {\n type: 'string',\n minLength: 1,\n required: true,\n },\n },\n // experimental feature:\n indexes: [\n {\n name: 'upload_folders_path_id_index',\n columns: ['path_id'],\n type: 'unique',\n },\n {\n name: 'upload_folders_path_index',\n columns: ['path'],\n type: 'unique',\n },\n ],\n } satisfies Partial<Struct.CollectionTypeSchema>,\n};\n"],"names":["schema","collectionName","info","singularName","pluralName","displayName","options","pluginOptions","visible","attributes","name","type","minLength","required","pathId","unique","parent","relation","target","FOLDER_MODEL_UID","inversedBy","children","mappedBy","files","FILE_MODEL_UID","path","indexes","columns"],"mappings":";;AAIA,aAAe;IACbA,MAAAA,EAAQ;QACNC,cAAAA,EAAgB,gBAAA;QAChBC,IAAAA,EAAM;YACJC,YAAAA,EAAc,QAAA;YACdC,UAAAA,EAAY,SAAA;YACZC,WAAAA,EAAa;AACf,SAAA;AACAC,QAAAA,OAAAA,EAAS,EAAC;QACVC,aAAAA,EAAe;YACb,iBAAA,EAAmB;gBACjBC,OAAAA,EAAS;AACX,aAAA;YACA,sBAAA,EAAwB;gBACtBA,OAAAA,EAAS;AACX;AACF,SAAA;QACAC,UAAAA,EAAY;YACVC,IAAAA,EAAM;gBACJC,IAAAA,EAAM,QAAA;gBACNC,SAAAA,EAAW,CAAA;gBACXC,QAAAA,EAAU;AACZ,aAAA;YACAC,MAAAA,EAAQ;gBACNH,IAAAA,EAAM,SAAA;gBACNI,MAAAA,EAAQ,IAAA;gBACRF,QAAAA,EAAU;AACZ,aAAA;YACAG,MAAAA,EAAQ;gBACNL,IAAAA,EAAM,UAAA;gBACNM,QAAAA,EAAU,WAAA;gBACVC,MAAAA,EAAQC,gBAAAA;gBACRC,UAAAA,EAAY;AACd,aAAA;YACAC,QAAAA,EAAU;gBACRV,IAAAA,EAAM,UAAA;gBACNM,QAAAA,EAAU,WAAA;gBACVC,MAAAA,EAAQC,gBAAAA;gBACRG,QAAAA,EAAU;AACZ,aAAA;YACAC,KAAAA,EAAO;gBACLZ,IAAAA,EAAM,UAAA;gBACNM,QAAAA,EAAU,WAAA;gBACVC,MAAAA,EAAQM,cAAAA;gBACRF,QAAAA,EAAU;AACZ,aAAA;YACAG,IAAAA,EAAM;gBACJd,IAAAA,EAAM,QAAA;gBACNC,SAAAA,EAAW,CAAA;gBACXC,QAAAA,EAAU;AACZ;AACF,SAAA;;QAEAa,OAAAA,EAAS;AACP,YAAA;gBACEhB,IAAAA,EAAM,8BAAA;gBACNiB,OAAAA,EAAS;AAAC,oBAAA;AAAU,iBAAA;gBACpBhB,IAAAA,EAAM;AACR,aAAA;AACA,YAAA;gBACED,IAAAA,EAAM,2BAAA;gBACNiB,OAAAA,EAAS;AAAC,oBAAA;AAAO,iBAAA;gBACjBhB,IAAAA,EAAM;AACR;AACD;AACH;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../server/src/content-types/index.ts"],"sourcesContent":["import file from './file';\nimport folder from './folder';\n\nexport const contentTypes = {\n file,\n folder,\n};\n"],"names":["contentTypes","file","folder"],"mappings":";;;;;MAGaA,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../server/src/content-types/index.ts"],"sourcesContent":["import file from './file';\nimport folder from './folder';\n\nexport const contentTypes = {\n file,\n folder,\n};\n"],"names":["contentTypes","file","folder"],"mappings":";;;;;MAGaA,YAAAA,GAAe;AAC1BC,IAAAA,IAAAA;AACAC,IAAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../server/src/content-types/index.ts"],"sourcesContent":["import file from './file';\nimport folder from './folder';\n\nexport const contentTypes = {\n file,\n folder,\n};\n"],"names":["contentTypes","file","folder"],"mappings":";;;MAGaA,
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../server/src/content-types/index.ts"],"sourcesContent":["import file from './file';\nimport folder from './folder';\n\nexport const contentTypes = {\n file,\n folder,\n};\n"],"names":["contentTypes","file","folder"],"mappings":";;;MAGaA,YAAAA,GAAe;AAC1BC,IAAAA,IAAAA;AACAC,IAAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-file.js","sources":["../../../server/src/controllers/admin-file.ts"],"sourcesContent":["import { merge } from 'lodash/fp';\nimport { async } from '@strapi/utils';\n\nimport type { Context } from 'koa';\n\nimport { getService } from '../utils';\nimport { ACTIONS, FILE_MODEL_UID } from '../constants';\nimport { findEntityAndCheckPermissions } from './utils/find-entity-and-check-permissions';\n\nexport default {\n async find(ctx: Context) {\n const {\n state: { userAbility },\n } = ctx;\n\n const defaultQuery = { populate: { folder: true } };\n\n const pm = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n action: ACTIONS.read,\n model: FILE_MODEL_UID,\n });\n\n if (!pm.isAllowed) {\n return ctx.forbidden();\n }\n\n // validate the incoming user query params\n await pm.validateQuery(ctx.query);\n\n const query = await async.pipe(\n // Start by sanitizing the incoming query\n (q) => pm.sanitizeQuery(q),\n // Add the default query which should not be validated or sanitized\n (q) => merge(defaultQuery, q),\n // Add the dynamic filters based on permissions' conditions\n (q) => pm.addPermissionsQueryTo(q)\n )(ctx.query);\n\n const { results: files, pagination } = await getService('upload').findPage(query);\n\n // Sign file urls for private providers\n const signedFiles = await async.map(files, getService('file').signFileUrls);\n\n const sanitizedFiles = await pm.sanitizeOutput(signedFiles);\n\n return { results: sanitizedFiles, pagination };\n },\n\n async findOne(ctx: Context) {\n const {\n state: { userAbility },\n params: { id },\n } = ctx;\n\n const { pm, file } = await findEntityAndCheckPermissions(\n userAbility,\n ACTIONS.read,\n FILE_MODEL_UID,\n id\n );\n\n const signedFile = await getService('file').signFileUrls(file);\n ctx.body = await pm.sanitizeOutput(signedFile);\n },\n\n async destroy(ctx: Context) {\n const { id } = ctx.params;\n const { userAbility } = ctx.state;\n\n const { pm, file } = await findEntityAndCheckPermissions(\n userAbility,\n ACTIONS.update,\n FILE_MODEL_UID,\n id\n );\n\n const [body] = await Promise.all([\n pm.sanitizeOutput(file, { action: ACTIONS.read }),\n getService('upload').remove(file),\n ]);\n\n ctx.body = body;\n },\n\n async getAIMetadataCount(ctx: Context) {\n const { userAbility } = ctx.state;\n\n const pm = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n action: ACTIONS.read,\n model: FILE_MODEL_UID,\n });\n\n if (!pm.isAllowed) {\n return ctx.forbidden();\n }\n\n const aiMetadataService = getService('aiMetadata');\n\n // Check if AI service is enabled\n if (!(await aiMetadataService.isEnabled())) {\n return ctx.badRequest('AI Metadata service is not enabled');\n }\n\n try {\n const { imagesWithoutMetadataCount, totalImages } =\n await aiMetadataService.countImagesWithoutMetadata();\n\n ctx.body = {\n imagesWithoutMetadataCount,\n totalImages,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to get AI metadata count';\n\n strapi.log.error('Failed to get AI metadata count', {\n message,\n error,\n });\n\n ctx.badRequest(message);\n }\n },\n\n async generateAIMetadata(ctx: Context) {\n const { userAbility } = ctx.state;\n\n const pm = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n action: ACTIONS.update,\n model: FILE_MODEL_UID,\n });\n\n if (!pm.isAllowed) {\n return ctx.forbidden();\n }\n\n const aiMetadataService = getService('aiMetadata');\n\n // Check if AI service is enabled\n if (!(await aiMetadataService.isEnabled())) {\n return ctx.badRequest('AI Metadata service is not enabled');\n }\n\n try {\n // Get count first to check if there are images to process\n const result = await aiMetadataService.countImagesWithoutMetadata();\n\n if (result.imagesWithoutMetadataCount === 0) {\n ctx.body = {\n count: 0,\n message: 'No images without metadata found',\n };\n return;\n }\n\n // Create job\n const jobService = getService('aiMetadataJobs');\n const jobId = await jobService.createJob();\n\n // Start async processing (fire and forget)\n aiMetadataService.processExistingFiles(jobId, ctx.state.user).catch((err: Error) => {\n strapi.log.error('AI metadata job failed:', err);\n });\n\n // Return immediately with job ID\n ctx.body = {\n jobId,\n status: 'pending',\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to generate AI metadata';\n const cause = error instanceof Error && error.cause ? String(error.cause) : undefined;\n\n strapi.log.error('AI metadata generation failed in controller', {\n message,\n cause,\n error,\n });\n\n ctx.badRequest(cause ? `${message}: ${cause}` : message);\n }\n },\n\n async getLatestAIMetadataJob(ctx: Context) {\n const jobService = getService('aiMetadataJobs');\n const job = await jobService.getLatestActiveJob();\n\n if (!job) {\n return ctx.notFound('No active job found');\n }\n\n ctx.body = job;\n },\n};\n"],"names":["find","ctx","state","userAbility","defaultQuery","populate","folder","pm","strapi","service","createPermissionsManager","ability","action","ACTIONS","read","model","FILE_MODEL_UID","isAllowed","forbidden","validateQuery","query","async","pipe","q","sanitizeQuery","merge","addPermissionsQueryTo","results","files","pagination","getService","findPage","signedFiles","map","signFileUrls","sanitizedFiles","sanitizeOutput","findOne","params","id","file","findEntityAndCheckPermissions","signedFile","body","destroy","update","Promise","all","remove","getAIMetadataCount","aiMetadataService","isEnabled","badRequest","imagesWithoutMetadataCount","totalImages","countImagesWithoutMetadata","error","message","Error","log","generateAIMetadata","result","count","jobService","jobId","createJob","processExistingFiles","user","catch","err","status","cause","String","undefined","getLatestAIMetadataJob","job","getLatestActiveJob","notFound"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admin-file.js","sources":["../../../server/src/controllers/admin-file.ts"],"sourcesContent":["import { merge } from 'lodash/fp';\nimport { async } from '@strapi/utils';\n\nimport type { Context } from 'koa';\n\nimport { getService } from '../utils';\nimport { ACTIONS, FILE_MODEL_UID } from '../constants';\nimport { findEntityAndCheckPermissions } from './utils/find-entity-and-check-permissions';\n\nexport default {\n async find(ctx: Context) {\n const {\n state: { userAbility },\n } = ctx;\n\n const defaultQuery = { populate: { folder: true } };\n\n const pm = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n action: ACTIONS.read,\n model: FILE_MODEL_UID,\n });\n\n if (!pm.isAllowed) {\n return ctx.forbidden();\n }\n\n // validate the incoming user query params\n await pm.validateQuery(ctx.query);\n\n const query = await async.pipe(\n // Start by sanitizing the incoming query\n (q) => pm.sanitizeQuery(q),\n // Add the default query which should not be validated or sanitized\n (q) => merge(defaultQuery, q),\n // Add the dynamic filters based on permissions' conditions\n (q) => pm.addPermissionsQueryTo(q)\n )(ctx.query);\n\n const { results: files, pagination } = await getService('upload').findPage(query);\n\n // Sign file urls for private providers\n const signedFiles = await async.map(files, getService('file').signFileUrls);\n\n const sanitizedFiles = await pm.sanitizeOutput(signedFiles);\n\n return { results: sanitizedFiles, pagination };\n },\n\n async findOne(ctx: Context) {\n const {\n state: { userAbility },\n params: { id },\n } = ctx;\n\n const { pm, file } = await findEntityAndCheckPermissions(\n userAbility,\n ACTIONS.read,\n FILE_MODEL_UID,\n id\n );\n\n const signedFile = await getService('file').signFileUrls(file);\n ctx.body = await pm.sanitizeOutput(signedFile);\n },\n\n async destroy(ctx: Context) {\n const { id } = ctx.params;\n const { userAbility } = ctx.state;\n\n const { pm, file } = await findEntityAndCheckPermissions(\n userAbility,\n ACTIONS.update,\n FILE_MODEL_UID,\n id\n );\n\n const [body] = await Promise.all([\n pm.sanitizeOutput(file, { action: ACTIONS.read }),\n getService('upload').remove(file),\n ]);\n\n ctx.body = body;\n },\n\n async getAIMetadataCount(ctx: Context) {\n const { userAbility } = ctx.state;\n\n const pm = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n action: ACTIONS.read,\n model: FILE_MODEL_UID,\n });\n\n if (!pm.isAllowed) {\n return ctx.forbidden();\n }\n\n const aiMetadataService = getService('aiMetadata');\n\n // Check if AI service is enabled\n if (!(await aiMetadataService.isEnabled())) {\n return ctx.badRequest('AI Metadata service is not enabled');\n }\n\n try {\n const { imagesWithoutMetadataCount, totalImages } =\n await aiMetadataService.countImagesWithoutMetadata();\n\n ctx.body = {\n imagesWithoutMetadataCount,\n totalImages,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to get AI metadata count';\n\n strapi.log.error('Failed to get AI metadata count', {\n message,\n error,\n });\n\n ctx.badRequest(message);\n }\n },\n\n async generateAIMetadata(ctx: Context) {\n const { userAbility } = ctx.state;\n\n const pm = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n action: ACTIONS.update,\n model: FILE_MODEL_UID,\n });\n\n if (!pm.isAllowed) {\n return ctx.forbidden();\n }\n\n const aiMetadataService = getService('aiMetadata');\n\n // Check if AI service is enabled\n if (!(await aiMetadataService.isEnabled())) {\n return ctx.badRequest('AI Metadata service is not enabled');\n }\n\n try {\n // Get count first to check if there are images to process\n const result = await aiMetadataService.countImagesWithoutMetadata();\n\n if (result.imagesWithoutMetadataCount === 0) {\n ctx.body = {\n count: 0,\n message: 'No images without metadata found',\n };\n return;\n }\n\n // Create job\n const jobService = getService('aiMetadataJobs');\n const jobId = await jobService.createJob();\n\n // Start async processing (fire and forget)\n aiMetadataService.processExistingFiles(jobId, ctx.state.user).catch((err: Error) => {\n strapi.log.error('AI metadata job failed:', err);\n });\n\n // Return immediately with job ID\n ctx.body = {\n jobId,\n status: 'pending',\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to generate AI metadata';\n const cause = error instanceof Error && error.cause ? String(error.cause) : undefined;\n\n strapi.log.error('AI metadata generation failed in controller', {\n message,\n cause,\n error,\n });\n\n ctx.badRequest(cause ? `${message}: ${cause}` : message);\n }\n },\n\n async getLatestAIMetadataJob(ctx: Context) {\n const jobService = getService('aiMetadataJobs');\n const job = await jobService.getLatestActiveJob();\n\n if (!job) {\n return ctx.notFound('No active job found');\n }\n\n ctx.body = job;\n },\n};\n"],"names":["find","ctx","state","userAbility","defaultQuery","populate","folder","pm","strapi","service","createPermissionsManager","ability","action","ACTIONS","read","model","FILE_MODEL_UID","isAllowed","forbidden","validateQuery","query","async","pipe","q","sanitizeQuery","merge","addPermissionsQueryTo","results","files","pagination","getService","findPage","signedFiles","map","signFileUrls","sanitizedFiles","sanitizeOutput","findOne","params","id","file","findEntityAndCheckPermissions","signedFile","body","destroy","update","Promise","all","remove","getAIMetadataCount","aiMetadataService","isEnabled","badRequest","imagesWithoutMetadataCount","totalImages","countImagesWithoutMetadata","error","message","Error","log","generateAIMetadata","result","count","jobService","jobId","createJob","processExistingFiles","user","catch","err","status","cause","String","undefined","getLatestAIMetadataJob","job","getLatestActiveJob","notFound"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { merge } from 'lodash/fp';
|
|
2
2
|
import { async } from '@strapi/utils';
|
|
3
3
|
import { getService } from '../utils/index.mjs';
|
|
4
|
-
import {
|
|
4
|
+
import { FILE_MODEL_UID, ACTIONS } from '../constants.mjs';
|
|
5
5
|
import { findEntityAndCheckPermissions } from './utils/find-entity-and-check-permissions.mjs';
|
|
6
6
|
|
|
7
7
|
var adminFile = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-file.mjs","sources":["../../../server/src/controllers/admin-file.ts"],"sourcesContent":["import { merge } from 'lodash/fp';\nimport { async } from '@strapi/utils';\n\nimport type { Context } from 'koa';\n\nimport { getService } from '../utils';\nimport { ACTIONS, FILE_MODEL_UID } from '../constants';\nimport { findEntityAndCheckPermissions } from './utils/find-entity-and-check-permissions';\n\nexport default {\n async find(ctx: Context) {\n const {\n state: { userAbility },\n } = ctx;\n\n const defaultQuery = { populate: { folder: true } };\n\n const pm = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n action: ACTIONS.read,\n model: FILE_MODEL_UID,\n });\n\n if (!pm.isAllowed) {\n return ctx.forbidden();\n }\n\n // validate the incoming user query params\n await pm.validateQuery(ctx.query);\n\n const query = await async.pipe(\n // Start by sanitizing the incoming query\n (q) => pm.sanitizeQuery(q),\n // Add the default query which should not be validated or sanitized\n (q) => merge(defaultQuery, q),\n // Add the dynamic filters based on permissions' conditions\n (q) => pm.addPermissionsQueryTo(q)\n )(ctx.query);\n\n const { results: files, pagination } = await getService('upload').findPage(query);\n\n // Sign file urls for private providers\n const signedFiles = await async.map(files, getService('file').signFileUrls);\n\n const sanitizedFiles = await pm.sanitizeOutput(signedFiles);\n\n return { results: sanitizedFiles, pagination };\n },\n\n async findOne(ctx: Context) {\n const {\n state: { userAbility },\n params: { id },\n } = ctx;\n\n const { pm, file } = await findEntityAndCheckPermissions(\n userAbility,\n ACTIONS.read,\n FILE_MODEL_UID,\n id\n );\n\n const signedFile = await getService('file').signFileUrls(file);\n ctx.body = await pm.sanitizeOutput(signedFile);\n },\n\n async destroy(ctx: Context) {\n const { id } = ctx.params;\n const { userAbility } = ctx.state;\n\n const { pm, file } = await findEntityAndCheckPermissions(\n userAbility,\n ACTIONS.update,\n FILE_MODEL_UID,\n id\n );\n\n const [body] = await Promise.all([\n pm.sanitizeOutput(file, { action: ACTIONS.read }),\n getService('upload').remove(file),\n ]);\n\n ctx.body = body;\n },\n\n async getAIMetadataCount(ctx: Context) {\n const { userAbility } = ctx.state;\n\n const pm = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n action: ACTIONS.read,\n model: FILE_MODEL_UID,\n });\n\n if (!pm.isAllowed) {\n return ctx.forbidden();\n }\n\n const aiMetadataService = getService('aiMetadata');\n\n // Check if AI service is enabled\n if (!(await aiMetadataService.isEnabled())) {\n return ctx.badRequest('AI Metadata service is not enabled');\n }\n\n try {\n const { imagesWithoutMetadataCount, totalImages } =\n await aiMetadataService.countImagesWithoutMetadata();\n\n ctx.body = {\n imagesWithoutMetadataCount,\n totalImages,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to get AI metadata count';\n\n strapi.log.error('Failed to get AI metadata count', {\n message,\n error,\n });\n\n ctx.badRequest(message);\n }\n },\n\n async generateAIMetadata(ctx: Context) {\n const { userAbility } = ctx.state;\n\n const pm = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n action: ACTIONS.update,\n model: FILE_MODEL_UID,\n });\n\n if (!pm.isAllowed) {\n return ctx.forbidden();\n }\n\n const aiMetadataService = getService('aiMetadata');\n\n // Check if AI service is enabled\n if (!(await aiMetadataService.isEnabled())) {\n return ctx.badRequest('AI Metadata service is not enabled');\n }\n\n try {\n // Get count first to check if there are images to process\n const result = await aiMetadataService.countImagesWithoutMetadata();\n\n if (result.imagesWithoutMetadataCount === 0) {\n ctx.body = {\n count: 0,\n message: 'No images without metadata found',\n };\n return;\n }\n\n // Create job\n const jobService = getService('aiMetadataJobs');\n const jobId = await jobService.createJob();\n\n // Start async processing (fire and forget)\n aiMetadataService.processExistingFiles(jobId, ctx.state.user).catch((err: Error) => {\n strapi.log.error('AI metadata job failed:', err);\n });\n\n // Return immediately with job ID\n ctx.body = {\n jobId,\n status: 'pending',\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to generate AI metadata';\n const cause = error instanceof Error && error.cause ? String(error.cause) : undefined;\n\n strapi.log.error('AI metadata generation failed in controller', {\n message,\n cause,\n error,\n });\n\n ctx.badRequest(cause ? `${message}: ${cause}` : message);\n }\n },\n\n async getLatestAIMetadataJob(ctx: Context) {\n const jobService = getService('aiMetadataJobs');\n const job = await jobService.getLatestActiveJob();\n\n if (!job) {\n return ctx.notFound('No active job found');\n }\n\n ctx.body = job;\n },\n};\n"],"names":["find","ctx","state","userAbility","defaultQuery","populate","folder","pm","strapi","service","createPermissionsManager","ability","action","ACTIONS","read","model","FILE_MODEL_UID","isAllowed","forbidden","validateQuery","query","async","pipe","q","sanitizeQuery","merge","addPermissionsQueryTo","results","files","pagination","getService","findPage","signedFiles","map","signFileUrls","sanitizedFiles","sanitizeOutput","findOne","params","id","file","findEntityAndCheckPermissions","signedFile","body","destroy","update","Promise","all","remove","getAIMetadataCount","aiMetadataService","isEnabled","badRequest","imagesWithoutMetadataCount","totalImages","countImagesWithoutMetadata","error","message","Error","log","generateAIMetadata","result","count","jobService","jobId","createJob","processExistingFiles","user","catch","err","status","cause","String","undefined","getLatestAIMetadataJob","job","getLatestActiveJob","notFound"],"mappings":";;;;;;AASA,gBAAe;AACb,IAAA,MAAMA,MAAKC,GAAY,EAAA;AACrB,QAAA,MAAM,EACJC,KAAO,EAAA,EAAEC,WAAW,EAAE,EACvB,GAAGF,GAAAA;AAEJ,QAAA,MAAMG,YAAe,GAAA;YAAEC,QAAU,EAAA;gBAAEC,MAAQ,EAAA;AAAK;AAAE,SAAA;AAElD,QAAA,MAAMC,KAAKC,MAAOC,CAAAA,OAAO,CAAC,mBAAA,CAAA,CAAqBC,wBAAwB,CAAC;YACtEC,OAASR,EAAAA,WAAAA;AACTS,YAAAA,MAAAA,EAAQC,QAAQC,IAAI;YACpBC,KAAOC,EAAAA;AACT,SAAA,CAAA;QAEA,IAAI,CAACT,EAAGU,CAAAA,SAAS,EAAE;AACjB,YAAA,OAAOhB,IAAIiB,SAAS,EAAA;AACtB;;AAGA,QAAA,MAAMX,EAAGY,CAAAA,aAAa,CAAClB,GAAAA,CAAImB,KAAK,CAAA;AAEhC,QAAA,MAAMA,KAAQ,GAAA,MAAMC,KAAMC,CAAAA,IAAI;AAE5B,QAAA,CAACC,CAAMhB,GAAAA,EAAAA,CAAGiB,aAAa,CAACD;AAExB,QAAA,CAACA,CAAME,GAAAA,KAAAA,CAAMrB,YAAcmB,EAAAA,CAAAA,CAAAA;AAE3B,QAAA,CAACA,IAAMhB,EAAGmB,CAAAA,qBAAqB,CAACH,CAAAA,CAAAA,CAAAA,CAChCtB,IAAImB,KAAK,CAAA;QAEX,MAAM,EAAEO,OAASC,EAAAA,KAAK,EAAEC,UAAU,EAAE,GAAG,MAAMC,UAAAA,CAAW,QAAUC,CAAAA,CAAAA,QAAQ,CAACX,KAAAA,CAAAA;;QAG3E,MAAMY,WAAAA,GAAc,MAAMX,KAAMY,CAAAA,GAAG,CAACL,KAAOE,EAAAA,UAAAA,CAAW,QAAQI,YAAY,CAAA;AAE1E,QAAA,MAAMC,cAAiB,GAAA,MAAM5B,EAAG6B,CAAAA,cAAc,CAACJ,WAAAA,CAAAA;QAE/C,OAAO;YAAEL,OAASQ,EAAAA,cAAAA;AAAgBN,YAAAA;AAAW,SAAA;AAC/C,KAAA;AAEA,IAAA,MAAMQ,SAAQpC,GAAY,EAAA;QACxB,MAAM,EACJC,KAAO,EAAA,EAAEC,WAAW,EAAE,EACtBmC,MAAAA,EAAQ,EAAEC,EAAE,EAAE,EACf,GAAGtC,GAAAA;AAEJ,QAAA,MAAM,EAAEM,EAAE,EAAEiC,IAAI,EAAE,GAAG,MAAMC,6BAAAA,CACzBtC,WACAU,EAAAA,OAAAA,CAAQC,IAAI,EACZE,cACAuB,EAAAA,EAAAA,CAAAA;AAGF,QAAA,MAAMG,UAAa,GAAA,MAAMZ,UAAW,CAAA,MAAA,CAAA,CAAQI,YAAY,CAACM,IAAAA,CAAAA;AACzDvC,QAAAA,GAAAA,CAAI0C,IAAI,GAAG,MAAMpC,EAAAA,CAAG6B,cAAc,CAACM,UAAAA,CAAAA;AACrC,KAAA;AAEA,IAAA,MAAME,SAAQ3C,GAAY,EAAA;AACxB,QAAA,MAAM,EAAEsC,EAAE,EAAE,GAAGtC,IAAIqC,MAAM;AACzB,QAAA,MAAM,EAAEnC,WAAW,EAAE,GAAGF,IAAIC,KAAK;AAEjC,QAAA,MAAM,EAAEK,EAAE,EAAEiC,IAAI,EAAE,GAAG,MAAMC,6BAAAA,CACzBtC,WACAU,EAAAA,OAAAA,CAAQgC,MAAM,EACd7B,cACAuB,EAAAA,EAAAA,CAAAA;AAGF,QAAA,MAAM,CAACI,IAAK,CAAA,GAAG,MAAMG,OAAAA,CAAQC,GAAG,CAAC;YAC/BxC,EAAG6B,CAAAA,cAAc,CAACI,IAAM,EAAA;AAAE5B,gBAAAA,MAAAA,EAAQC,QAAQC;AAAK,aAAA,CAAA;YAC/CgB,UAAW,CAAA,QAAA,CAAA,CAAUkB,MAAM,CAACR,IAAAA;AAC7B,SAAA,CAAA;AAEDvC,QAAAA,GAAAA,CAAI0C,IAAI,GAAGA,IAAAA;AACb,KAAA;AAEA,IAAA,MAAMM,oBAAmBhD,GAAY,EAAA;AACnC,QAAA,MAAM,EAAEE,WAAW,EAAE,GAAGF,IAAIC,KAAK;AAEjC,QAAA,MAAMK,KAAKC,MAAOC,CAAAA,OAAO,CAAC,mBAAA,CAAA,CAAqBC,wBAAwB,CAAC;YACtEC,OAASR,EAAAA,WAAAA;AACTS,YAAAA,MAAAA,EAAQC,QAAQC,IAAI;YACpBC,KAAOC,EAAAA;AACT,SAAA,CAAA;QAEA,IAAI,CAACT,EAAGU,CAAAA,SAAS,EAAE;AACjB,YAAA,OAAOhB,IAAIiB,SAAS,EAAA;AACtB;AAEA,QAAA,MAAMgC,oBAAoBpB,UAAW,CAAA,YAAA,CAAA;;AAGrC,QAAA,IAAI,CAAE,MAAMoB,iBAAkBC,CAAAA,SAAS,EAAK,EAAA;YAC1C,OAAOlD,GAAAA,CAAImD,UAAU,CAAC,oCAAA,CAAA;AACxB;QAEA,IAAI;YACF,MAAM,EAAEC,0BAA0B,EAAEC,WAAW,EAAE,GAC/C,MAAMJ,kBAAkBK,0BAA0B,EAAA;AAEpDtD,YAAAA,GAAAA,CAAI0C,IAAI,GAAG;AACTU,gBAAAA,0BAAAA;AACAC,gBAAAA;AACF,aAAA;AACF,SAAA,CAAE,OAAOE,KAAO,EAAA;AACd,YAAA,MAAMC,OAAUD,GAAAA,KAAAA,YAAiBE,KAAQF,GAAAA,KAAAA,CAAMC,OAAO,GAAG,iCAAA;AAEzDjD,YAAAA,MAAAA,CAAOmD,GAAG,CAACH,KAAK,CAAC,iCAAmC,EAAA;AAClDC,gBAAAA,OAAAA;AACAD,gBAAAA;AACF,aAAA,CAAA;AAEAvD,YAAAA,GAAAA,CAAImD,UAAU,CAACK,OAAAA,CAAAA;AACjB;AACF,KAAA;AAEA,IAAA,MAAMG,oBAAmB3D,GAAY,EAAA;AACnC,QAAA,MAAM,EAAEE,WAAW,EAAE,GAAGF,IAAIC,KAAK;AAEjC,QAAA,MAAMK,KAAKC,MAAOC,CAAAA,OAAO,CAAC,mBAAA,CAAA,CAAqBC,wBAAwB,CAAC;YACtEC,OAASR,EAAAA,WAAAA;AACTS,YAAAA,MAAAA,EAAQC,QAAQgC,MAAM;YACtB9B,KAAOC,EAAAA;AACT,SAAA,CAAA;QAEA,IAAI,CAACT,EAAGU,CAAAA,SAAS,EAAE;AACjB,YAAA,OAAOhB,IAAIiB,SAAS,EAAA;AACtB;AAEA,QAAA,MAAMgC,oBAAoBpB,UAAW,CAAA,YAAA,CAAA;;AAGrC,QAAA,IAAI,CAAE,MAAMoB,iBAAkBC,CAAAA,SAAS,EAAK,EAAA;YAC1C,OAAOlD,GAAAA,CAAImD,UAAU,CAAC,oCAAA,CAAA;AACxB;QAEA,IAAI;;YAEF,MAAMS,MAAAA,GAAS,MAAMX,iBAAAA,CAAkBK,0BAA0B,EAAA;YAEjE,IAAIM,MAAAA,CAAOR,0BAA0B,KAAK,CAAG,EAAA;AAC3CpD,gBAAAA,GAAAA,CAAI0C,IAAI,GAAG;oBACTmB,KAAO,EAAA,CAAA;oBACPL,OAAS,EAAA;AACX,iBAAA;AACA,gBAAA;AACF;;AAGA,YAAA,MAAMM,aAAajC,UAAW,CAAA,gBAAA,CAAA;YAC9B,MAAMkC,KAAAA,GAAQ,MAAMD,UAAAA,CAAWE,SAAS,EAAA;;YAGxCf,iBAAkBgB,CAAAA,oBAAoB,CAACF,KAAAA,EAAO/D,GAAIC,CAAAA,KAAK,CAACiE,IAAI,CAAA,CAAEC,KAAK,CAAC,CAACC,GAAAA,GAAAA;AACnE7D,gBAAAA,MAAAA,CAAOmD,GAAG,CAACH,KAAK,CAAC,yBAA2Ba,EAAAA,GAAAA,CAAAA;AAC9C,aAAA,CAAA;;AAGApE,YAAAA,GAAAA,CAAI0C,IAAI,GAAG;AACTqB,gBAAAA,KAAAA;gBACAM,MAAQ,EAAA;AACV,aAAA;AACF,SAAA,CAAE,OAAOd,KAAO,EAAA;AACd,YAAA,MAAMC,OAAUD,GAAAA,KAAAA,YAAiBE,KAAQF,GAAAA,KAAAA,CAAMC,OAAO,GAAG,gCAAA;YACzD,MAAMc,KAAAA,GAAQf,iBAAiBE,KAASF,IAAAA,KAAAA,CAAMe,KAAK,GAAGC,MAAAA,CAAOhB,KAAMe,CAAAA,KAAK,CAAIE,GAAAA,SAAAA;AAE5EjE,YAAAA,MAAAA,CAAOmD,GAAG,CAACH,KAAK,CAAC,6CAA+C,EAAA;AAC9DC,gBAAAA,OAAAA;AACAc,gBAAAA,KAAAA;AACAf,gBAAAA;AACF,aAAA,CAAA;YAEAvD,GAAImD,CAAAA,UAAU,CAACmB,KAAQ,GAAA,CAAA,EAAGd,QAAQ,EAAE,EAAEc,OAAO,GAAGd,OAAAA,CAAAA;AAClD;AACF,KAAA;AAEA,IAAA,MAAMiB,wBAAuBzE,GAAY,EAAA;AACvC,QAAA,MAAM8D,aAAajC,UAAW,CAAA,gBAAA,CAAA;QAC9B,MAAM6C,GAAAA,GAAM,MAAMZ,UAAAA,CAAWa,kBAAkB,EAAA;AAE/C,QAAA,IAAI,CAACD,GAAK,EAAA;YACR,OAAO1E,GAAAA,CAAI4E,QAAQ,CAAC,qBAAA,CAAA;AACtB;AAEA5E,QAAAA,GAAAA,CAAI0C,IAAI,GAAGgC,GAAAA;AACb;AACF,CAAE;;;;"}
|
|
1
|
+
{"version":3,"file":"admin-file.mjs","sources":["../../../server/src/controllers/admin-file.ts"],"sourcesContent":["import { merge } from 'lodash/fp';\nimport { async } from '@strapi/utils';\n\nimport type { Context } from 'koa';\n\nimport { getService } from '../utils';\nimport { ACTIONS, FILE_MODEL_UID } from '../constants';\nimport { findEntityAndCheckPermissions } from './utils/find-entity-and-check-permissions';\n\nexport default {\n async find(ctx: Context) {\n const {\n state: { userAbility },\n } = ctx;\n\n const defaultQuery = { populate: { folder: true } };\n\n const pm = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n action: ACTIONS.read,\n model: FILE_MODEL_UID,\n });\n\n if (!pm.isAllowed) {\n return ctx.forbidden();\n }\n\n // validate the incoming user query params\n await pm.validateQuery(ctx.query);\n\n const query = await async.pipe(\n // Start by sanitizing the incoming query\n (q) => pm.sanitizeQuery(q),\n // Add the default query which should not be validated or sanitized\n (q) => merge(defaultQuery, q),\n // Add the dynamic filters based on permissions' conditions\n (q) => pm.addPermissionsQueryTo(q)\n )(ctx.query);\n\n const { results: files, pagination } = await getService('upload').findPage(query);\n\n // Sign file urls for private providers\n const signedFiles = await async.map(files, getService('file').signFileUrls);\n\n const sanitizedFiles = await pm.sanitizeOutput(signedFiles);\n\n return { results: sanitizedFiles, pagination };\n },\n\n async findOne(ctx: Context) {\n const {\n state: { userAbility },\n params: { id },\n } = ctx;\n\n const { pm, file } = await findEntityAndCheckPermissions(\n userAbility,\n ACTIONS.read,\n FILE_MODEL_UID,\n id\n );\n\n const signedFile = await getService('file').signFileUrls(file);\n ctx.body = await pm.sanitizeOutput(signedFile);\n },\n\n async destroy(ctx: Context) {\n const { id } = ctx.params;\n const { userAbility } = ctx.state;\n\n const { pm, file } = await findEntityAndCheckPermissions(\n userAbility,\n ACTIONS.update,\n FILE_MODEL_UID,\n id\n );\n\n const [body] = await Promise.all([\n pm.sanitizeOutput(file, { action: ACTIONS.read }),\n getService('upload').remove(file),\n ]);\n\n ctx.body = body;\n },\n\n async getAIMetadataCount(ctx: Context) {\n const { userAbility } = ctx.state;\n\n const pm = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n action: ACTIONS.read,\n model: FILE_MODEL_UID,\n });\n\n if (!pm.isAllowed) {\n return ctx.forbidden();\n }\n\n const aiMetadataService = getService('aiMetadata');\n\n // Check if AI service is enabled\n if (!(await aiMetadataService.isEnabled())) {\n return ctx.badRequest('AI Metadata service is not enabled');\n }\n\n try {\n const { imagesWithoutMetadataCount, totalImages } =\n await aiMetadataService.countImagesWithoutMetadata();\n\n ctx.body = {\n imagesWithoutMetadataCount,\n totalImages,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to get AI metadata count';\n\n strapi.log.error('Failed to get AI metadata count', {\n message,\n error,\n });\n\n ctx.badRequest(message);\n }\n },\n\n async generateAIMetadata(ctx: Context) {\n const { userAbility } = ctx.state;\n\n const pm = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n action: ACTIONS.update,\n model: FILE_MODEL_UID,\n });\n\n if (!pm.isAllowed) {\n return ctx.forbidden();\n }\n\n const aiMetadataService = getService('aiMetadata');\n\n // Check if AI service is enabled\n if (!(await aiMetadataService.isEnabled())) {\n return ctx.badRequest('AI Metadata service is not enabled');\n }\n\n try {\n // Get count first to check if there are images to process\n const result = await aiMetadataService.countImagesWithoutMetadata();\n\n if (result.imagesWithoutMetadataCount === 0) {\n ctx.body = {\n count: 0,\n message: 'No images without metadata found',\n };\n return;\n }\n\n // Create job\n const jobService = getService('aiMetadataJobs');\n const jobId = await jobService.createJob();\n\n // Start async processing (fire and forget)\n aiMetadataService.processExistingFiles(jobId, ctx.state.user).catch((err: Error) => {\n strapi.log.error('AI metadata job failed:', err);\n });\n\n // Return immediately with job ID\n ctx.body = {\n jobId,\n status: 'pending',\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to generate AI metadata';\n const cause = error instanceof Error && error.cause ? String(error.cause) : undefined;\n\n strapi.log.error('AI metadata generation failed in controller', {\n message,\n cause,\n error,\n });\n\n ctx.badRequest(cause ? `${message}: ${cause}` : message);\n }\n },\n\n async getLatestAIMetadataJob(ctx: Context) {\n const jobService = getService('aiMetadataJobs');\n const job = await jobService.getLatestActiveJob();\n\n if (!job) {\n return ctx.notFound('No active job found');\n }\n\n ctx.body = job;\n },\n};\n"],"names":["find","ctx","state","userAbility","defaultQuery","populate","folder","pm","strapi","service","createPermissionsManager","ability","action","ACTIONS","read","model","FILE_MODEL_UID","isAllowed","forbidden","validateQuery","query","async","pipe","q","sanitizeQuery","merge","addPermissionsQueryTo","results","files","pagination","getService","findPage","signedFiles","map","signFileUrls","sanitizedFiles","sanitizeOutput","findOne","params","id","file","findEntityAndCheckPermissions","signedFile","body","destroy","update","Promise","all","remove","getAIMetadataCount","aiMetadataService","isEnabled","badRequest","imagesWithoutMetadataCount","totalImages","countImagesWithoutMetadata","error","message","Error","log","generateAIMetadata","result","count","jobService","jobId","createJob","processExistingFiles","user","catch","err","status","cause","String","undefined","getLatestAIMetadataJob","job","getLatestActiveJob","notFound"],"mappings":"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"}
|