@strapi/upload 5.52.2 → 5.52.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/AssetCard/AssetCard.js +1 -0
- package/dist/admin/components/AssetCard/AssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/AssetCard.mjs +1 -0
- package/dist/admin/components/AssetCard/AssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/AssetCardBase.js +1 -0
- package/dist/admin/components/AssetCard/AssetCardBase.js.map +1 -1
- package/dist/admin/components/AssetCard/AssetCardBase.mjs +1 -0
- package/dist/admin/components/AssetCard/AssetCardBase.mjs.map +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.js +1 -0
- package/dist/admin/components/AssetCard/ImageAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.mjs +1 -0
- package/dist/admin/components/AssetCard/ImageAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.js +1 -0
- package/dist/admin/components/AssetCard/UploadingAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.mjs +1 -0
- package/dist/admin/components/AssetCard/UploadingAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.js +1 -0
- package/dist/admin/components/AssetCard/VideoAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.mjs +1 -0
- package/dist/admin/components/AssetCard/VideoAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.js +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js +1 -0
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js.map +1 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs +1 -0
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs.map +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js +1 -0
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs +1 -0
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js +1 -0
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs +1 -0
- 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 +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js +1 -0
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs.map +1 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js +1 -0
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js.map +1 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs +1 -0
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs.map +1 -1
- package/dist/admin/components/FilterList/FilterList.js +2 -2
- package/dist/admin/components/FilterList/FilterList.js.map +1 -1
- package/dist/admin/components/FilterList/FilterList.mjs +2 -2
- package/dist/admin/components/FilterList/FilterList.mjs.map +1 -1
- package/dist/admin/components/FilterPopover/FilterPopover.js +4 -4
- package/dist/admin/components/FilterPopover/FilterPopover.js.map +1 -1
- package/dist/admin/components/FilterPopover/FilterPopover.mjs +4 -4
- package/dist/admin/components/FilterPopover/FilterPopover.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js +4 -10
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs +4 -10
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs.map +1 -1
- package/dist/admin/components/SortPicker/SortPicker.js +1 -0
- package/dist/admin/components/SortPicker/SortPicker.js.map +1 -1
- package/dist/admin/components/SortPicker/SortPicker.mjs +1 -0
- package/dist/admin/components/SortPicker/SortPicker.mjs.map +1 -1
- package/dist/admin/components/TableList/CellContent.js +1 -0
- package/dist/admin/components/TableList/CellContent.js.map +1 -1
- package/dist/admin/components/TableList/CellContent.mjs +1 -0
- package/dist/admin/components/TableList/CellContent.mjs.map +1 -1
- package/dist/admin/components/TableList/PreviewCell.js +1 -0
- package/dist/admin/components/TableList/PreviewCell.js.map +1 -1
- package/dist/admin/components/TableList/PreviewCell.mjs +1 -0
- package/dist/admin/components/TableList/PreviewCell.mjs.map +1 -1
- package/dist/admin/components/TableList/TableList.js +1 -0
- package/dist/admin/components/TableList/TableList.js.map +1 -1
- package/dist/admin/components/TableList/TableList.mjs +1 -0
- package/dist/admin/components/TableList/TableList.mjs.map +1 -1
- package/dist/admin/components/TableList/TableRows.js +1 -0
- package/dist/admin/components/TableList/TableRows.js.map +1 -1
- package/dist/admin/components/TableList/TableRows.mjs +1 -0
- package/dist/admin/components/TableList/TableRows.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js +1 -0
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs +1 -0
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +9 -21
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs +9 -21
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js +1 -0
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs +1 -0
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js +1 -0
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs +1 -0
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +1 -1
- package/dist/admin/constants.js +1 -0
- package/dist/admin/constants.js.map +1 -1
- package/dist/admin/constants.mjs +1 -0
- package/dist/admin/constants.mjs.map +1 -1
- package/dist/admin/future/components/Drawer.js +11 -0
- package/dist/admin/future/components/Drawer.js.map +1 -1
- package/dist/admin/future/components/Drawer.mjs +11 -0
- package/dist/admin/future/components/Drawer.mjs.map +1 -1
- package/dist/admin/future/components/UploadProgressDialog.js +46 -12
- package/dist/admin/future/components/UploadProgressDialog.js.map +1 -1
- package/dist/admin/future/components/UploadProgressDialog.mjs +47 -13
- package/dist/admin/future/components/UploadProgressDialog.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.js +11 -0
- package/dist/admin/future/pages/Assets/AssetsPage.js.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.mjs +11 -0
- package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.js +4 -1
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.mjs +4 -1
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +29 -9
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +31 -11
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js +7 -5
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs +7 -5
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.js +47 -28
- package/dist/admin/future/pages/Assets/components/AssetsTable.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs +48 -29
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.js +85 -9
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs +87 -11
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js +21 -3
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs +21 -3
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js +4 -3
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs +5 -4
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js +40 -2
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs +40 -2
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useListFilters.js +5 -5
- package/dist/admin/future/pages/Assets/hooks/useListFilters.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useListFilters.mjs +6 -6
- package/dist/admin/future/pages/Assets/hooks/useListFilters.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useListSort.js +10 -10
- package/dist/admin/future/pages/Assets/hooks/useListSort.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useListSort.mjs +11 -11
- package/dist/admin/future/pages/Assets/hooks/useListSort.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.js +86 -0
- package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.js.map +1 -0
- package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.mjs +83 -0
- package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/utils/renderedKeys.js +19 -0
- package/dist/admin/future/pages/Assets/utils/renderedKeys.js.map +1 -0
- package/dist/admin/future/pages/Assets/utils/renderedKeys.mjs +17 -0
- package/dist/admin/future/pages/Assets/utils/renderedKeys.mjs.map +1 -0
- package/dist/admin/future/services/api.js +19 -6
- package/dist/admin/future/services/api.js.map +1 -1
- package/dist/admin/future/services/api.mjs +19 -6
- package/dist/admin/future/services/api.mjs.map +1 -1
- package/dist/admin/future/store/uploadProgress.js +55 -2
- package/dist/admin/future/store/uploadProgress.js.map +1 -1
- package/dist/admin/future/store/uploadProgress.mjs +53 -3
- package/dist/admin/future/store/uploadProgress.mjs.map +1 -1
- package/dist/admin/index.js +1 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -0
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.js +1 -0
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs +1 -0
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs.map +1 -1
- package/dist/admin/pages/App/MediaLibrary.js +7 -9
- package/dist/admin/pages/App/MediaLibrary.js.map +1 -1
- package/dist/admin/pages/App/MediaLibrary.mjs +8 -10
- package/dist/admin/pages/App/MediaLibrary.mjs.map +1 -1
- package/dist/admin/pages/App/components/BulkActions.js +1 -0
- package/dist/admin/pages/App/components/BulkActions.js.map +1 -1
- package/dist/admin/pages/App/components/BulkActions.mjs +1 -0
- package/dist/admin/pages/App/components/BulkActions.mjs.map +1 -1
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.js +1 -0
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.js.map +1 -1
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.mjs +1 -0
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.mjs.map +1 -1
- package/dist/admin/pages/App/components/Filters.js +8 -8
- package/dist/admin/pages/App/components/Filters.js.map +1 -1
- package/dist/admin/pages/App/components/Filters.mjs +9 -9
- package/dist/admin/pages/App/components/Filters.mjs.map +1 -1
- package/dist/admin/pages/App/components/Header.js +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/src/future/pages/Assets/components/AssetsGrid.d.ts +4 -1
- package/dist/admin/src/future/pages/Assets/components/AssetsTable.d.ts +4 -1
- package/dist/admin/src/future/pages/Assets/components/BulkActionsBar.d.ts +8 -1
- package/dist/admin/src/future/pages/Assets/utils/mergeUploadedAssets.d.ts +35 -0
- package/dist/admin/src/future/pages/Assets/utils/renderedKeys.d.ts +19 -0
- package/dist/admin/src/future/store/uploadProgress.d.ts +51 -0
- package/dist/admin/src/utils/index.d.ts +1 -0
- package/dist/admin/src/utils/rawFileToAsset.d.ts +2 -2
- package/dist/admin/src/utils/resolveFileMime.d.ts +13 -0
- package/dist/admin/translations/en.json.js +4 -1
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +4 -1
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/utils/getFolderURL.js +2 -1
- package/dist/admin/utils/getFolderURL.js.map +1 -1
- package/dist/admin/utils/getFolderURL.mjs +2 -1
- package/dist/admin/utils/getFolderURL.mjs.map +1 -1
- package/dist/admin/utils/rawFileToAsset.js +5 -3
- package/dist/admin/utils/rawFileToAsset.js.map +1 -1
- package/dist/admin/utils/rawFileToAsset.mjs +5 -3
- package/dist/admin/utils/rawFileToAsset.mjs.map +1 -1
- package/dist/admin/utils/resolveFileMime.js +69 -0
- package/dist/admin/utils/resolveFileMime.js.map +1 -0
- package/dist/admin/utils/resolveFileMime.mjs +64 -0
- package/dist/admin/utils/resolveFileMime.mjs.map +1 -0
- package/dist/admin/utils/urlsToAssets.js +8 -4
- package/dist/admin/utils/urlsToAssets.js.map +1 -1
- package/dist/admin/utils/urlsToAssets.mjs +8 -4
- package/dist/admin/utils/urlsToAssets.mjs.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rawFileToAsset.js","sources":["../../../admin/src/utils/rawFileToAsset.ts"],"sourcesContent":["import { AssetSource } from '../constants';\n\nimport { typeFromMime } from './typeFromMime';\n\nimport type { RawFile } from '../../../shared/contracts/files';\n\nexport const rawFileToAsset = (rawFile: RawFile, assetSource: AssetSource) => {\n return {\n size: rawFile.size / 1000,\n createdAt: new Date(rawFile.lastModified).toISOString(),\n name: rawFile.name,\n source: assetSource,\n type: typeFromMime(
|
|
1
|
+
{"version":3,"file":"rawFileToAsset.js","sources":["../../../admin/src/utils/rawFileToAsset.ts"],"sourcesContent":["import { AssetSource } from '../constants';\n\nimport { resolveFileMime } from './resolveFileMime';\nimport { typeFromMime } from './typeFromMime';\n\nimport type { RawFile } from '../../../shared/contracts/files';\n\nexport const rawFileToAsset = async (rawFile: RawFile, assetSource: AssetSource) => {\n const mime = await resolveFileMime(rawFile.type, rawFile);\n\n return {\n size: rawFile.size / 1000,\n createdAt: new Date(rawFile.lastModified).toISOString(),\n name: rawFile.name,\n source: assetSource,\n type: typeFromMime(mime),\n url: URL.createObjectURL(rawFile),\n ext: rawFile.name.split('.').pop(),\n mime,\n rawFile,\n isLocal: true,\n };\n};\n"],"names":["rawFileToAsset","rawFile","assetSource","mime","resolveFileMime","type","size","createdAt","Date","lastModified","toISOString","name","source","typeFromMime","url","URL","createObjectURL","ext","split","pop","isLocal"],"mappings":";;;;;AAOO,MAAMA,cAAAA,GAAiB,OAAOC,OAAAA,EAAkBC,WAAAA,GAAAA;AACrD,IAAA,MAAMC,IAAAA,GAAO,MAAMC,+BAAAA,CAAgBH,OAAAA,CAAQI,IAAI,EAAEJ,OAAAA,CAAAA;IAEjD,OAAO;QACLK,IAAAA,EAAML,OAAAA,CAAQK,IAAI,GAAG,IAAA;AACrBC,QAAAA,SAAAA,EAAW,IAAIC,IAAAA,CAAKP,OAAAA,CAAQQ,YAAY,EAAEC,WAAW,EAAA;AACrDC,QAAAA,IAAAA,EAAMV,QAAQU,IAAI;QAClBC,MAAAA,EAAQV,WAAAA;AACRG,QAAAA,IAAAA,EAAMQ,yBAAAA,CAAaV,IAAAA,CAAAA;QACnBW,GAAAA,EAAKC,GAAAA,CAAIC,eAAe,CAACf,OAAAA,CAAAA;AACzBgB,QAAAA,GAAAA,EAAKhB,QAAQU,IAAI,CAACO,KAAK,CAAC,KAAKC,GAAG,EAAA;AAChChB,QAAAA,IAAAA;AACAF,QAAAA,OAAAA;QACAmB,OAAAA,EAAS;AACX,KAAA;AACF;;;;"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
+
import { resolveFileMime } from './resolveFileMime.mjs';
|
|
1
2
|
import { typeFromMime } from './typeFromMime.mjs';
|
|
2
3
|
|
|
3
|
-
const rawFileToAsset = (rawFile, assetSource)=>{
|
|
4
|
+
const rawFileToAsset = async (rawFile, assetSource)=>{
|
|
5
|
+
const mime = await resolveFileMime(rawFile.type, rawFile);
|
|
4
6
|
return {
|
|
5
7
|
size: rawFile.size / 1000,
|
|
6
8
|
createdAt: new Date(rawFile.lastModified).toISOString(),
|
|
7
9
|
name: rawFile.name,
|
|
8
10
|
source: assetSource,
|
|
9
|
-
type: typeFromMime(
|
|
11
|
+
type: typeFromMime(mime),
|
|
10
12
|
url: URL.createObjectURL(rawFile),
|
|
11
13
|
ext: rawFile.name.split('.').pop(),
|
|
12
|
-
mime
|
|
14
|
+
mime,
|
|
13
15
|
rawFile,
|
|
14
16
|
isLocal: true
|
|
15
17
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rawFileToAsset.mjs","sources":["../../../admin/src/utils/rawFileToAsset.ts"],"sourcesContent":["import { AssetSource } from '../constants';\n\nimport { typeFromMime } from './typeFromMime';\n\nimport type { RawFile } from '../../../shared/contracts/files';\n\nexport const rawFileToAsset = (rawFile: RawFile, assetSource: AssetSource) => {\n return {\n size: rawFile.size / 1000,\n createdAt: new Date(rawFile.lastModified).toISOString(),\n name: rawFile.name,\n source: assetSource,\n type: typeFromMime(
|
|
1
|
+
{"version":3,"file":"rawFileToAsset.mjs","sources":["../../../admin/src/utils/rawFileToAsset.ts"],"sourcesContent":["import { AssetSource } from '../constants';\n\nimport { resolveFileMime } from './resolveFileMime';\nimport { typeFromMime } from './typeFromMime';\n\nimport type { RawFile } from '../../../shared/contracts/files';\n\nexport const rawFileToAsset = async (rawFile: RawFile, assetSource: AssetSource) => {\n const mime = await resolveFileMime(rawFile.type, rawFile);\n\n return {\n size: rawFile.size / 1000,\n createdAt: new Date(rawFile.lastModified).toISOString(),\n name: rawFile.name,\n source: assetSource,\n type: typeFromMime(mime),\n url: URL.createObjectURL(rawFile),\n ext: rawFile.name.split('.').pop(),\n mime,\n rawFile,\n isLocal: true,\n };\n};\n"],"names":["rawFileToAsset","rawFile","assetSource","mime","resolveFileMime","type","size","createdAt","Date","lastModified","toISOString","name","source","typeFromMime","url","URL","createObjectURL","ext","split","pop","isLocal"],"mappings":";;;AAOO,MAAMA,cAAAA,GAAiB,OAAOC,OAAAA,EAAkBC,WAAAA,GAAAA;AACrD,IAAA,MAAMC,IAAAA,GAAO,MAAMC,eAAAA,CAAgBH,OAAAA,CAAQI,IAAI,EAAEJ,OAAAA,CAAAA;IAEjD,OAAO;QACLK,IAAAA,EAAML,OAAAA,CAAQK,IAAI,GAAG,IAAA;AACrBC,QAAAA,SAAAA,EAAW,IAAIC,IAAAA,CAAKP,OAAAA,CAAQQ,YAAY,EAAEC,WAAW,EAAA;AACrDC,QAAAA,IAAAA,EAAMV,QAAQU,IAAI;QAClBC,MAAAA,EAAQV,WAAAA;AACRG,QAAAA,IAAAA,EAAMQ,YAAAA,CAAaV,IAAAA,CAAAA;QACnBW,GAAAA,EAAKC,GAAAA,CAAIC,eAAe,CAACf,OAAAA,CAAAA;AACzBgB,QAAAA,GAAAA,EAAKhB,QAAQU,IAAI,CAACO,KAAK,CAAC,KAAKC,GAAG,EAAA;AAChChB,QAAAA,IAAAA;AACAF,QAAAA,OAAAA;QACAmB,OAAAA,EAAS;AACX,KAAA;AACF;;;;"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const GENERIC_MIMES = new Set([
|
|
4
|
+
'',
|
|
5
|
+
'application/octet-stream'
|
|
6
|
+
]);
|
|
7
|
+
/**
|
|
8
|
+
* Same byte window currently used by server MIME validation (`readFileChunk(..., 4100)`).
|
|
9
|
+
* Magic-number detection only needs the start of the file.
|
|
10
|
+
*/ const FILE_TYPE_SNIFF_BYTES = 4100;
|
|
11
|
+
const normalizeDeclaredMime = (mime)=>(mime ?? '').trim().split(';')[0].trim();
|
|
12
|
+
const isGenericMime = (mime)=>{
|
|
13
|
+
const declared = normalizeDeclaredMime(mime);
|
|
14
|
+
return !declared || GENERIC_MIMES.has(declared.toLowerCase());
|
|
15
|
+
};
|
|
16
|
+
const readBlobBytes = async (blob)=>{
|
|
17
|
+
const chunk = typeof blob.slice === 'function' ? blob.slice(0, FILE_TYPE_SNIFF_BYTES) : blob;
|
|
18
|
+
if (typeof chunk.arrayBuffer === 'function') {
|
|
19
|
+
return new Uint8Array(await chunk.arrayBuffer());
|
|
20
|
+
}
|
|
21
|
+
// jsdom's Blob.slice() result has no arrayBuffer(); FileReader works in browsers and tests.
|
|
22
|
+
return new Promise((resolve, reject)=>{
|
|
23
|
+
const reader = new FileReader();
|
|
24
|
+
reader.onload = ()=>{
|
|
25
|
+
resolve(new Uint8Array(reader.result));
|
|
26
|
+
};
|
|
27
|
+
reader.onerror = ()=>{
|
|
28
|
+
reject(reader.error ?? new Error('Failed to read file'));
|
|
29
|
+
};
|
|
30
|
+
reader.readAsArrayBuffer(chunk);
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Detect MIME from file bytes with file-type.
|
|
35
|
+
* The admin normalizes declared MIME values more permissively; server validation remains authoritative.
|
|
36
|
+
* Returns undefined when the blob cannot be read or the type is unknown.
|
|
37
|
+
*/ const detectMimeFromBlob = async (blob)=>{
|
|
38
|
+
try {
|
|
39
|
+
const buffer = await readBlobBytes(blob);
|
|
40
|
+
// Browser/core build — do not pull the Node `file-type` entry into the admin bundle.
|
|
41
|
+
const { fileTypeFromBuffer } = await import('file-type/core');
|
|
42
|
+
const result = await fileTypeFromBuffer(buffer);
|
|
43
|
+
return result?.mime;
|
|
44
|
+
} catch {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* When the browser MIME is missing or generic, sniff the file contents.
|
|
50
|
+
* If there is no blob (library assets) or detection fails, keep the declared type.
|
|
51
|
+
*/ const resolveFileMime = async (mime, blob)=>{
|
|
52
|
+
const declared = normalizeDeclaredMime(mime);
|
|
53
|
+
if (declared && !isGenericMime(declared)) {
|
|
54
|
+
return declared;
|
|
55
|
+
}
|
|
56
|
+
if (blob) {
|
|
57
|
+
const detected = await detectMimeFromBlob(blob);
|
|
58
|
+
if (detected) {
|
|
59
|
+
return detected;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return declared;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
exports.detectMimeFromBlob = detectMimeFromBlob;
|
|
66
|
+
exports.isGenericMime = isGenericMime;
|
|
67
|
+
exports.normalizeDeclaredMime = normalizeDeclaredMime;
|
|
68
|
+
exports.resolveFileMime = resolveFileMime;
|
|
69
|
+
//# sourceMappingURL=resolveFileMime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveFileMime.js","sources":["../../../admin/src/utils/resolveFileMime.ts"],"sourcesContent":["const GENERIC_MIMES = new Set(['', 'application/octet-stream']);\n\n/**\n * Same byte window currently used by server MIME validation (`readFileChunk(..., 4100)`).\n * Magic-number detection only needs the start of the file.\n */\nconst FILE_TYPE_SNIFF_BYTES = 4100;\n\nexport const normalizeDeclaredMime = (mime?: string | null): string =>\n (mime ?? '').trim().split(';')[0].trim();\n\nexport const isGenericMime = (mime?: string | null): boolean => {\n const declared = normalizeDeclaredMime(mime);\n\n return !declared || GENERIC_MIMES.has(declared.toLowerCase());\n};\n\nconst readBlobBytes = async (blob: Blob): Promise<Uint8Array> => {\n const chunk = typeof blob.slice === 'function' ? blob.slice(0, FILE_TYPE_SNIFF_BYTES) : blob;\n\n if (typeof chunk.arrayBuffer === 'function') {\n return new Uint8Array(await chunk.arrayBuffer());\n }\n\n // jsdom's Blob.slice() result has no arrayBuffer(); FileReader works in browsers and tests.\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = () => {\n resolve(new Uint8Array(reader.result as ArrayBuffer));\n };\n reader.onerror = () => {\n reject(reader.error ?? new Error('Failed to read file'));\n };\n reader.readAsArrayBuffer(chunk);\n });\n};\n\n/**\n * Detect MIME from file bytes with file-type.\n * The admin normalizes declared MIME values more permissively; server validation remains authoritative.\n * Returns undefined when the blob cannot be read or the type is unknown.\n */\nexport const detectMimeFromBlob = async (blob: Blob): Promise<string | undefined> => {\n try {\n const buffer = await readBlobBytes(blob);\n // Browser/core build — do not pull the Node `file-type` entry into the admin bundle.\n const { fileTypeFromBuffer } = await import('file-type/core');\n const result = await fileTypeFromBuffer(buffer);\n\n return result?.mime;\n } catch {\n return undefined;\n }\n};\n\n/**\n * When the browser MIME is missing or generic, sniff the file contents.\n * If there is no blob (library assets) or detection fails, keep the declared type.\n */\nexport const resolveFileMime = async (\n mime?: string | null,\n blob?: Blob | null\n): Promise<string> => {\n const declared = normalizeDeclaredMime(mime);\n\n if (declared && !isGenericMime(declared)) {\n return declared;\n }\n\n if (blob) {\n const detected = await detectMimeFromBlob(blob);\n\n if (detected) {\n return detected;\n }\n }\n\n return declared;\n};\n"],"names":["GENERIC_MIMES","Set","FILE_TYPE_SNIFF_BYTES","normalizeDeclaredMime","mime","trim","split","isGenericMime","declared","has","toLowerCase","readBlobBytes","blob","chunk","slice","arrayBuffer","Uint8Array","Promise","resolve","reject","reader","FileReader","onload","result","onerror","error","Error","readAsArrayBuffer","detectMimeFromBlob","buffer","fileTypeFromBuffer","undefined","resolveFileMime","detected"],"mappings":";;AAAA,MAAMA,aAAAA,GAAgB,IAAIC,GAAAA,CAAI;AAAC,IAAA,EAAA;AAAI,IAAA;AAA2B,CAAA,CAAA;AAE9D;;;AAGC,IACD,MAAMC,qBAAAA,GAAwB,IAAA;MAEjBC,qBAAAA,GAAwB,CAACC,OACpC,CAACA,QAAQ,EAAC,EAAGC,IAAI,EAAA,CAAGC,KAAK,CAAC,GAAA,CAAI,CAAC,CAAA,CAAE,CAACD,IAAI;AAEjC,MAAME,gBAAgB,CAACH,IAAAA,GAAAA;AAC5B,IAAA,MAAMI,WAAWL,qBAAAA,CAAsBC,IAAAA,CAAAA;AAEvC,IAAA,OAAO,CAACI,QAAAA,IAAYR,aAAAA,CAAcS,GAAG,CAACD,SAASE,WAAW,EAAA,CAAA;AAC5D;AAEA,MAAMC,gBAAgB,OAAOC,IAAAA,GAAAA;IAC3B,MAAMC,KAAAA,GAAQ,OAAOD,IAAAA,CAAKE,KAAK,KAAK,aAAaF,IAAAA,CAAKE,KAAK,CAAC,CAAA,EAAGZ,qBAAAA,CAAAA,GAAyBU,IAAAA;AAExF,IAAA,IAAI,OAAOC,KAAAA,CAAME,WAAW,KAAK,UAAA,EAAY;AAC3C,QAAA,OAAO,IAAIC,UAAAA,CAAW,MAAMH,KAAAA,CAAME,WAAW,EAAA,CAAA;AAC/C,IAAA;;IAGA,OAAO,IAAIE,OAAAA,CAAQ,CAACC,OAAAA,EAASC,MAAAA,GAAAA;AAC3B,QAAA,MAAMC,SAAS,IAAIC,UAAAA,EAAAA;AAEnBD,QAAAA,MAAAA,CAAOE,MAAM,GAAG,IAAA;YACdJ,OAAAA,CAAQ,IAAIF,UAAAA,CAAWI,MAAAA,CAAOG,MAAM,CAAA,CAAA;AACtC,QAAA,CAAA;AACAH,QAAAA,MAAAA,CAAOI,OAAO,GAAG,IAAA;AACfL,YAAAA,MAAAA,CAAOC,MAAAA,CAAOK,KAAK,IAAI,IAAIC,KAAAA,CAAM,qBAAA,CAAA,CAAA;AACnC,QAAA,CAAA;AACAN,QAAAA,MAAAA,CAAOO,iBAAiB,CAACd,KAAAA,CAAAA;AAC3B,IAAA,CAAA,CAAA;AACF,CAAA;AAEA;;;;IAKO,MAAMe,kBAAAA,GAAqB,OAAOhB,IAAAA,GAAAA;IACvC,IAAI;QACF,MAAMiB,MAAAA,GAAS,MAAMlB,aAAAA,CAAcC,IAAAA,CAAAA;;AAEnC,QAAA,MAAM,EAAEkB,kBAAkB,EAAE,GAAG,MAAM,OAAO,gBAAA,CAAA;QAC5C,MAAMP,MAAAA,GAAS,MAAMO,kBAAAA,CAAmBD,MAAAA,CAAAA;AAExC,QAAA,OAAON,MAAAA,EAAQnB,IAAAA;AACjB,IAAA,CAAA,CAAE,OAAM;QACN,OAAO2B,SAAAA;AACT,IAAA;AACF;AAEA;;;AAGC,IACM,MAAMC,eAAAA,GAAkB,OAC7B5B,IAAAA,EACAQ,IAAAA,GAAAA;AAEA,IAAA,MAAMJ,WAAWL,qBAAAA,CAAsBC,IAAAA,CAAAA;IAEvC,IAAII,QAAAA,IAAY,CAACD,aAAAA,CAAcC,QAAAA,CAAAA,EAAW;QACxC,OAAOA,QAAAA;AACT,IAAA;AAEA,IAAA,IAAII,IAAAA,EAAM;QACR,MAAMqB,QAAAA,GAAW,MAAML,kBAAAA,CAAmBhB,IAAAA,CAAAA;AAE1C,QAAA,IAAIqB,QAAAA,EAAU;YACZ,OAAOA,QAAAA;AACT,QAAA;AACF,IAAA;IAEA,OAAOzB,QAAAA;AACT;;;;;;;"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
const GENERIC_MIMES = new Set([
|
|
2
|
+
'',
|
|
3
|
+
'application/octet-stream'
|
|
4
|
+
]);
|
|
5
|
+
/**
|
|
6
|
+
* Same byte window currently used by server MIME validation (`readFileChunk(..., 4100)`).
|
|
7
|
+
* Magic-number detection only needs the start of the file.
|
|
8
|
+
*/ const FILE_TYPE_SNIFF_BYTES = 4100;
|
|
9
|
+
const normalizeDeclaredMime = (mime)=>(mime ?? '').trim().split(';')[0].trim();
|
|
10
|
+
const isGenericMime = (mime)=>{
|
|
11
|
+
const declared = normalizeDeclaredMime(mime);
|
|
12
|
+
return !declared || GENERIC_MIMES.has(declared.toLowerCase());
|
|
13
|
+
};
|
|
14
|
+
const readBlobBytes = async (blob)=>{
|
|
15
|
+
const chunk = typeof blob.slice === 'function' ? blob.slice(0, FILE_TYPE_SNIFF_BYTES) : blob;
|
|
16
|
+
if (typeof chunk.arrayBuffer === 'function') {
|
|
17
|
+
return new Uint8Array(await chunk.arrayBuffer());
|
|
18
|
+
}
|
|
19
|
+
// jsdom's Blob.slice() result has no arrayBuffer(); FileReader works in browsers and tests.
|
|
20
|
+
return new Promise((resolve, reject)=>{
|
|
21
|
+
const reader = new FileReader();
|
|
22
|
+
reader.onload = ()=>{
|
|
23
|
+
resolve(new Uint8Array(reader.result));
|
|
24
|
+
};
|
|
25
|
+
reader.onerror = ()=>{
|
|
26
|
+
reject(reader.error ?? new Error('Failed to read file'));
|
|
27
|
+
};
|
|
28
|
+
reader.readAsArrayBuffer(chunk);
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Detect MIME from file bytes with file-type.
|
|
33
|
+
* The admin normalizes declared MIME values more permissively; server validation remains authoritative.
|
|
34
|
+
* Returns undefined when the blob cannot be read or the type is unknown.
|
|
35
|
+
*/ const detectMimeFromBlob = async (blob)=>{
|
|
36
|
+
try {
|
|
37
|
+
const buffer = await readBlobBytes(blob);
|
|
38
|
+
// Browser/core build — do not pull the Node `file-type` entry into the admin bundle.
|
|
39
|
+
const { fileTypeFromBuffer } = await import('file-type/core');
|
|
40
|
+
const result = await fileTypeFromBuffer(buffer);
|
|
41
|
+
return result?.mime;
|
|
42
|
+
} catch {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* When the browser MIME is missing or generic, sniff the file contents.
|
|
48
|
+
* If there is no blob (library assets) or detection fails, keep the declared type.
|
|
49
|
+
*/ const resolveFileMime = async (mime, blob)=>{
|
|
50
|
+
const declared = normalizeDeclaredMime(mime);
|
|
51
|
+
if (declared && !isGenericMime(declared)) {
|
|
52
|
+
return declared;
|
|
53
|
+
}
|
|
54
|
+
if (blob) {
|
|
55
|
+
const detected = await detectMimeFromBlob(blob);
|
|
56
|
+
if (detected) {
|
|
57
|
+
return detected;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return declared;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export { detectMimeFromBlob, isGenericMime, normalizeDeclaredMime, resolveFileMime };
|
|
64
|
+
//# sourceMappingURL=resolveFileMime.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveFileMime.mjs","sources":["../../../admin/src/utils/resolveFileMime.ts"],"sourcesContent":["const GENERIC_MIMES = new Set(['', 'application/octet-stream']);\n\n/**\n * Same byte window currently used by server MIME validation (`readFileChunk(..., 4100)`).\n * Magic-number detection only needs the start of the file.\n */\nconst FILE_TYPE_SNIFF_BYTES = 4100;\n\nexport const normalizeDeclaredMime = (mime?: string | null): string =>\n (mime ?? '').trim().split(';')[0].trim();\n\nexport const isGenericMime = (mime?: string | null): boolean => {\n const declared = normalizeDeclaredMime(mime);\n\n return !declared || GENERIC_MIMES.has(declared.toLowerCase());\n};\n\nconst readBlobBytes = async (blob: Blob): Promise<Uint8Array> => {\n const chunk = typeof blob.slice === 'function' ? blob.slice(0, FILE_TYPE_SNIFF_BYTES) : blob;\n\n if (typeof chunk.arrayBuffer === 'function') {\n return new Uint8Array(await chunk.arrayBuffer());\n }\n\n // jsdom's Blob.slice() result has no arrayBuffer(); FileReader works in browsers and tests.\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = () => {\n resolve(new Uint8Array(reader.result as ArrayBuffer));\n };\n reader.onerror = () => {\n reject(reader.error ?? new Error('Failed to read file'));\n };\n reader.readAsArrayBuffer(chunk);\n });\n};\n\n/**\n * Detect MIME from file bytes with file-type.\n * The admin normalizes declared MIME values more permissively; server validation remains authoritative.\n * Returns undefined when the blob cannot be read or the type is unknown.\n */\nexport const detectMimeFromBlob = async (blob: Blob): Promise<string | undefined> => {\n try {\n const buffer = await readBlobBytes(blob);\n // Browser/core build — do not pull the Node `file-type` entry into the admin bundle.\n const { fileTypeFromBuffer } = await import('file-type/core');\n const result = await fileTypeFromBuffer(buffer);\n\n return result?.mime;\n } catch {\n return undefined;\n }\n};\n\n/**\n * When the browser MIME is missing or generic, sniff the file contents.\n * If there is no blob (library assets) or detection fails, keep the declared type.\n */\nexport const resolveFileMime = async (\n mime?: string | null,\n blob?: Blob | null\n): Promise<string> => {\n const declared = normalizeDeclaredMime(mime);\n\n if (declared && !isGenericMime(declared)) {\n return declared;\n }\n\n if (blob) {\n const detected = await detectMimeFromBlob(blob);\n\n if (detected) {\n return detected;\n }\n }\n\n return declared;\n};\n"],"names":["GENERIC_MIMES","Set","FILE_TYPE_SNIFF_BYTES","normalizeDeclaredMime","mime","trim","split","isGenericMime","declared","has","toLowerCase","readBlobBytes","blob","chunk","slice","arrayBuffer","Uint8Array","Promise","resolve","reject","reader","FileReader","onload","result","onerror","error","Error","readAsArrayBuffer","detectMimeFromBlob","buffer","fileTypeFromBuffer","undefined","resolveFileMime","detected"],"mappings":"AAAA,MAAMA,aAAAA,GAAgB,IAAIC,GAAAA,CAAI;AAAC,IAAA,EAAA;AAAI,IAAA;AAA2B,CAAA,CAAA;AAE9D;;;AAGC,IACD,MAAMC,qBAAAA,GAAwB,IAAA;MAEjBC,qBAAAA,GAAwB,CAACC,OACpC,CAACA,QAAQ,EAAC,EAAGC,IAAI,EAAA,CAAGC,KAAK,CAAC,GAAA,CAAI,CAAC,CAAA,CAAE,CAACD,IAAI;AAEjC,MAAME,gBAAgB,CAACH,IAAAA,GAAAA;AAC5B,IAAA,MAAMI,WAAWL,qBAAAA,CAAsBC,IAAAA,CAAAA;AAEvC,IAAA,OAAO,CAACI,QAAAA,IAAYR,aAAAA,CAAcS,GAAG,CAACD,SAASE,WAAW,EAAA,CAAA;AAC5D;AAEA,MAAMC,gBAAgB,OAAOC,IAAAA,GAAAA;IAC3B,MAAMC,KAAAA,GAAQ,OAAOD,IAAAA,CAAKE,KAAK,KAAK,aAAaF,IAAAA,CAAKE,KAAK,CAAC,CAAA,EAAGZ,qBAAAA,CAAAA,GAAyBU,IAAAA;AAExF,IAAA,IAAI,OAAOC,KAAAA,CAAME,WAAW,KAAK,UAAA,EAAY;AAC3C,QAAA,OAAO,IAAIC,UAAAA,CAAW,MAAMH,KAAAA,CAAME,WAAW,EAAA,CAAA;AAC/C,IAAA;;IAGA,OAAO,IAAIE,OAAAA,CAAQ,CAACC,OAAAA,EAASC,MAAAA,GAAAA;AAC3B,QAAA,MAAMC,SAAS,IAAIC,UAAAA,EAAAA;AAEnBD,QAAAA,MAAAA,CAAOE,MAAM,GAAG,IAAA;YACdJ,OAAAA,CAAQ,IAAIF,UAAAA,CAAWI,MAAAA,CAAOG,MAAM,CAAA,CAAA;AACtC,QAAA,CAAA;AACAH,QAAAA,MAAAA,CAAOI,OAAO,GAAG,IAAA;AACfL,YAAAA,MAAAA,CAAOC,MAAAA,CAAOK,KAAK,IAAI,IAAIC,KAAAA,CAAM,qBAAA,CAAA,CAAA;AACnC,QAAA,CAAA;AACAN,QAAAA,MAAAA,CAAOO,iBAAiB,CAACd,KAAAA,CAAAA;AAC3B,IAAA,CAAA,CAAA;AACF,CAAA;AAEA;;;;IAKO,MAAMe,kBAAAA,GAAqB,OAAOhB,IAAAA,GAAAA;IACvC,IAAI;QACF,MAAMiB,MAAAA,GAAS,MAAMlB,aAAAA,CAAcC,IAAAA,CAAAA;;AAEnC,QAAA,MAAM,EAAEkB,kBAAkB,EAAE,GAAG,MAAM,OAAO,gBAAA,CAAA;QAC5C,MAAMP,MAAAA,GAAS,MAAMO,kBAAAA,CAAmBD,MAAAA,CAAAA;AAExC,QAAA,OAAON,MAAAA,EAAQnB,IAAAA;AACjB,IAAA,CAAA,CAAE,OAAM;QACN,OAAO2B,SAAAA;AACT,IAAA;AACF;AAEA;;;AAGC,IACM,MAAMC,eAAAA,GAAkB,OAC7B5B,IAAAA,EACAQ,IAAAA,GAAAA;AAEA,IAAA,MAAMJ,WAAWL,qBAAAA,CAAsBC,IAAAA,CAAAA;IAEvC,IAAII,QAAAA,IAAY,CAACD,aAAAA,CAAcC,QAAAA,CAAAA,EAAW;QACxC,OAAOA,QAAAA;AACT,IAAA;AAEA,IAAA,IAAII,IAAAA,EAAM;QACR,MAAMqB,QAAAA,GAAW,MAAML,kBAAAA,CAAmBhB,IAAAA,CAAAA;AAE1C,QAAA,IAAIqB,QAAAA,EAAU;YACZ,OAAOA,QAAAA;AACT,QAAA;AACF,IAAA;IAEA,OAAOzB,QAAAA;AACT;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var resolveFileMime = require('./resolveFileMime.js');
|
|
3
4
|
var typeFromMime = require('./typeFromMime.js');
|
|
4
5
|
|
|
5
6
|
function getFilenameFromURL(url) {
|
|
@@ -22,15 +23,18 @@ const urlsToAssets = async (urls)=>{
|
|
|
22
23
|
}));
|
|
23
24
|
// Retrieve the assets metadata
|
|
24
25
|
const assetsResults = await Promise.all(assetPromises);
|
|
25
|
-
const assets = assetsResults.map((fullFilledAsset)=>
|
|
26
|
+
const assets = await Promise.all(assetsResults.map(async (fullFilledAsset)=>{
|
|
27
|
+
const mime = await resolveFileMime.resolveFileMime(fullFilledAsset.mime, fullFilledAsset.rawFile);
|
|
28
|
+
return {
|
|
26
29
|
source: 'url',
|
|
27
30
|
name: fullFilledAsset.name,
|
|
28
|
-
type: typeFromMime.typeFromMime(
|
|
31
|
+
type: typeFromMime.typeFromMime(mime),
|
|
29
32
|
url: fullFilledAsset.url,
|
|
30
33
|
ext: fullFilledAsset.url.split('.').pop(),
|
|
31
|
-
mime:
|
|
34
|
+
mime: mime || undefined,
|
|
32
35
|
rawFile: fullFilledAsset.rawFile
|
|
33
|
-
}
|
|
36
|
+
};
|
|
37
|
+
}));
|
|
34
38
|
return assets;
|
|
35
39
|
};
|
|
36
40
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlsToAssets.js","sources":["../../../admin/src/utils/urlsToAssets.ts"],"sourcesContent":["import { FileWithRawFile } from '../components/UploadAssetDialog/AddAssetStep/AddAssetStep';\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[]): Promise<FileWithRawFile[]> => {\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
|
|
1
|
+
{"version":3,"file":"urlsToAssets.js","sources":["../../../admin/src/utils/urlsToAssets.ts"],"sourcesContent":["import { FileWithRawFile } from '../components/UploadAssetDialog/AddAssetStep/AddAssetStep';\n\nimport { resolveFileMime } from './resolveFileMime';\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[]): Promise<FileWithRawFile[]> => {\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 = await Promise.all(\n assetsResults.map(async (fullFilledAsset) => {\n const mime = await resolveFileMime(fullFilledAsset.mime, fullFilledAsset.rawFile);\n\n return {\n source: 'url' as const,\n name: fullFilledAsset.name,\n type: typeFromMime(mime),\n url: fullFilledAsset.url,\n ext: fullFilledAsset.url.split('.').pop(),\n mime: mime || undefined,\n rawFile: fullFilledAsset.rawFile,\n };\n })\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","resolveFileMime","source","typeFromMime","ext"],"mappings":";;;;;AAKA,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;IAExC,MAAMkB,MAAAA,GAAS,MAAMF,OAAAA,CAAQC,GAAG,CAC9BF,aAAAA,CAAcd,GAAG,CAAC,OAAOkB,eAAAA,GAAAA;AACvB,QAAA,MAAMN,OAAO,MAAMO,+BAAAA,CAAgBD,gBAAgBN,IAAI,EAAEM,gBAAgBL,OAAO,CAAA;QAEhF,OAAO;YACLO,MAAAA,EAAQ,KAAA;AACRT,YAAAA,IAAAA,EAAMO,gBAAgBP,IAAI;AAC1BJ,YAAAA,IAAAA,EAAMc,yBAAAA,CAAaT,IAAAA,CAAAA;AACnBpB,YAAAA,GAAAA,EAAK0B,gBAAgB1B,GAAG;AACxB8B,YAAAA,GAAAA,EAAKJ,gBAAgB1B,GAAG,CAACG,KAAK,CAAC,KAAKC,GAAG,EAAA;AACvCgB,YAAAA,IAAAA,EAAMA,IAAAA,IAAQF,SAAAA;AACdG,YAAAA,OAAAA,EAASK,gBAAgBL;AAC3B,SAAA;AACF,IAAA,CAAA,CAAA,CAAA;IAGF,OAAOI,MAAAA;AACT;;;;"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resolveFileMime } from './resolveFileMime.mjs';
|
|
1
2
|
import { typeFromMime } from './typeFromMime.mjs';
|
|
2
3
|
|
|
3
4
|
function getFilenameFromURL(url) {
|
|
@@ -20,15 +21,18 @@ const urlsToAssets = async (urls)=>{
|
|
|
20
21
|
}));
|
|
21
22
|
// Retrieve the assets metadata
|
|
22
23
|
const assetsResults = await Promise.all(assetPromises);
|
|
23
|
-
const assets = assetsResults.map((fullFilledAsset)=>
|
|
24
|
+
const assets = await Promise.all(assetsResults.map(async (fullFilledAsset)=>{
|
|
25
|
+
const mime = await resolveFileMime(fullFilledAsset.mime, fullFilledAsset.rawFile);
|
|
26
|
+
return {
|
|
24
27
|
source: 'url',
|
|
25
28
|
name: fullFilledAsset.name,
|
|
26
|
-
type: typeFromMime(
|
|
29
|
+
type: typeFromMime(mime),
|
|
27
30
|
url: fullFilledAsset.url,
|
|
28
31
|
ext: fullFilledAsset.url.split('.').pop(),
|
|
29
|
-
mime:
|
|
32
|
+
mime: mime || undefined,
|
|
30
33
|
rawFile: fullFilledAsset.rawFile
|
|
31
|
-
}
|
|
34
|
+
};
|
|
35
|
+
}));
|
|
32
36
|
return assets;
|
|
33
37
|
};
|
|
34
38
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlsToAssets.mjs","sources":["../../../admin/src/utils/urlsToAssets.ts"],"sourcesContent":["import { FileWithRawFile } from '../components/UploadAssetDialog/AddAssetStep/AddAssetStep';\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[]): Promise<FileWithRawFile[]> => {\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
|
|
1
|
+
{"version":3,"file":"urlsToAssets.mjs","sources":["../../../admin/src/utils/urlsToAssets.ts"],"sourcesContent":["import { FileWithRawFile } from '../components/UploadAssetDialog/AddAssetStep/AddAssetStep';\n\nimport { resolveFileMime } from './resolveFileMime';\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[]): Promise<FileWithRawFile[]> => {\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 = await Promise.all(\n assetsResults.map(async (fullFilledAsset) => {\n const mime = await resolveFileMime(fullFilledAsset.mime, fullFilledAsset.rawFile);\n\n return {\n source: 'url' as const,\n name: fullFilledAsset.name,\n type: typeFromMime(mime),\n url: fullFilledAsset.url,\n ext: fullFilledAsset.url.split('.').pop(),\n mime: mime || undefined,\n rawFile: fullFilledAsset.rawFile,\n };\n })\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","resolveFileMime","source","typeFromMime","ext"],"mappings":";;;AAKA,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;IAExC,MAAMkB,MAAAA,GAAS,MAAMF,OAAAA,CAAQC,GAAG,CAC9BF,aAAAA,CAAcd,GAAG,CAAC,OAAOkB,eAAAA,GAAAA;AACvB,QAAA,MAAMN,OAAO,MAAMO,eAAAA,CAAgBD,gBAAgBN,IAAI,EAAEM,gBAAgBL,OAAO,CAAA;QAEhF,OAAO;YACLO,MAAAA,EAAQ,KAAA;AACRT,YAAAA,IAAAA,EAAMO,gBAAgBP,IAAI;AAC1BJ,YAAAA,IAAAA,EAAMc,YAAAA,CAAaT,IAAAA,CAAAA;AACnBpB,YAAAA,GAAAA,EAAK0B,gBAAgB1B,GAAG;AACxB8B,YAAAA,GAAAA,EAAKJ,gBAAgB1B,GAAG,CAACG,KAAK,CAAC,KAAKC,GAAG,EAAA;AACvCgB,YAAAA,IAAAA,EAAMA,IAAAA,IAAQF,SAAAA;AACdG,YAAAA,OAAAA,EAASK,gBAAgBL;AAC3B,SAAA;AACF,IAAA,CAAA,CAAA,CAAA;IAGF,OAAOI,MAAAA;AACT;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/upload",
|
|
3
|
-
"version": "5.52.
|
|
3
|
+
"version": "5.52.3",
|
|
4
4
|
"description": "Makes it easy to upload images and files to your Strapi Application.",
|
|
5
5
|
"homepage": "https://strapi.io",
|
|
6
6
|
"bugs": {
|
|
@@ -74,11 +74,11 @@
|
|
|
74
74
|
"@radix-ui/react-dialog": "1.0.5",
|
|
75
75
|
"@radix-ui/react-toggle-group": "1.1.11",
|
|
76
76
|
"@reduxjs/toolkit": "1.9.7",
|
|
77
|
-
"@strapi/database": "5.52.
|
|
77
|
+
"@strapi/database": "5.52.3",
|
|
78
78
|
"@strapi/design-system": "2.2.4",
|
|
79
79
|
"@strapi/icons": "2.2.4",
|
|
80
|
-
"@strapi/provider-upload-local": "5.52.
|
|
81
|
-
"@strapi/utils": "5.52.
|
|
80
|
+
"@strapi/provider-upload-local": "5.52.3",
|
|
81
|
+
"@strapi/utils": "5.52.3",
|
|
82
82
|
"byte-size": "8.1.1",
|
|
83
83
|
"cropperjs": "1.6.2",
|
|
84
84
|
"date-fns": "2.30.0",
|
|
@@ -102,8 +102,8 @@
|
|
|
102
102
|
"zod": "4.4.3"
|
|
103
103
|
},
|
|
104
104
|
"devDependencies": {
|
|
105
|
-
"@strapi/admin": "5.52.
|
|
106
|
-
"@strapi/types": "5.52.
|
|
105
|
+
"@strapi/admin": "5.52.3",
|
|
106
|
+
"@strapi/types": "5.52.3",
|
|
107
107
|
"@testing-library/dom": "10.4.1",
|
|
108
108
|
"@testing-library/jest-dom": "6.9.1",
|
|
109
109
|
"@testing-library/react": "16.3.2",
|