@strapi/upload 5.55.1 → 5.57.0
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/hooks/useAIMetadataAvailability.js +14 -0
- package/dist/admin/hooks/useAIMetadataAvailability.js.map +1 -0
- package/dist/admin/hooks/useAIMetadataAvailability.mjs +12 -0
- package/dist/admin/hooks/useAIMetadataAvailability.mjs.map +1 -0
- package/dist/admin/hooks/useAIMetadataEnabled.js +7 -5
- package/dist/admin/hooks/useAIMetadataEnabled.js.map +1 -1
- package/dist/admin/hooks/useAIMetadataEnabled.mjs +7 -5
- package/dist/admin/hooks/useAIMetadataEnabled.mjs.map +1 -1
- package/dist/admin/hooks/useTracking.js +4 -10
- package/dist/admin/hooks/useTracking.js.map +1 -1
- package/dist/admin/hooks/useTracking.mjs +5 -10
- package/dist/admin/hooks/useTracking.mjs.map +1 -1
- package/dist/admin/legacy/hooks/useAIMetadataAvailability.js +14 -0
- package/dist/admin/legacy/hooks/useAIMetadataAvailability.js.map +1 -0
- package/dist/admin/legacy/hooks/useAIMetadataAvailability.mjs +12 -0
- package/dist/admin/legacy/hooks/useAIMetadataAvailability.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useAIMetadataEnabled.js +23 -0
- package/dist/admin/legacy/hooks/useAIMetadataEnabled.js.map +1 -0
- package/dist/admin/legacy/hooks/useAIMetadataEnabled.mjs +21 -0
- package/dist/admin/legacy/hooks/useAIMetadataEnabled.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useTracking.js +5 -3
- package/dist/admin/legacy/hooks/useTracking.js.map +1 -1
- package/dist/admin/legacy/hooks/useTracking.mjs +5 -3
- package/dist/admin/legacy/hooks/useTracking.mjs.map +1 -1
- package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.js +2 -1
- package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -1
- package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.mjs +2 -1
- package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -1
- package/dist/admin/legacy/pages/App/MediaLibrary.js +6 -5
- package/dist/admin/legacy/pages/App/MediaLibrary.js.map +1 -1
- package/dist/admin/legacy/pages/App/MediaLibrary.mjs +6 -5
- package/dist/admin/legacy/pages/App/MediaLibrary.mjs.map +1 -1
- package/dist/admin/pages/Assets/AssetsPage.js +24 -12
- package/dist/admin/pages/Assets/AssetsPage.js.map +1 -1
- package/dist/admin/pages/Assets/AssetsPage.mjs +25 -13
- package/dist/admin/pages/Assets/AssetsPage.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetActions.js +326 -0
- package/dist/admin/pages/Assets/components/AssetActions.js.map +1 -0
- package/dist/admin/pages/Assets/components/AssetActions.mjs +324 -0
- package/dist/admin/pages/Assets/components/AssetActions.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/AssetActionsMenu.js +28 -309
- package/dist/admin/pages/Assets/components/AssetActionsMenu.js.map +1 -1
- package/dist/admin/pages/Assets/components/AssetActionsMenu.mjs +31 -312
- package/dist/admin/pages/Assets/components/AssetActionsMenu.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetContextMenu.js +79 -0
- package/dist/admin/pages/Assets/components/AssetContextMenu.js.map +1 -0
- package/dist/admin/pages/Assets/components/AssetContextMenu.mjs +77 -0
- package/dist/admin/pages/Assets/components/AssetContextMenu.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/AssetDetails/AssetCropEditor.js +87 -5
- package/dist/admin/pages/Assets/components/AssetDetails/AssetCropEditor.js.map +1 -1
- package/dist/admin/pages/Assets/components/AssetDetails/AssetCropEditor.mjs +89 -7
- package/dist/admin/pages/Assets/components/AssetDetails/AssetCropEditor.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +3 -3
- package/dist/admin/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -1
- package/dist/admin/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +3 -3
- package/dist/admin/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetDetails/useCropImg.js +62 -5
- package/dist/admin/pages/Assets/components/AssetDetails/useCropImg.js.map +1 -1
- package/dist/admin/pages/Assets/components/AssetDetails/useCropImg.mjs +60 -6
- package/dist/admin/pages/Assets/components/AssetDetails/useCropImg.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsGrid.js +27 -4
- package/dist/admin/pages/Assets/components/AssetsGrid.js.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsGrid.mjs +27 -4
- package/dist/admin/pages/Assets/components/AssetsGrid.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsTable.js +27 -4
- package/dist/admin/pages/Assets/components/AssetsTable.js.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsTable.mjs +27 -4
- package/dist/admin/pages/Assets/components/AssetsTable.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/CursorAnchoredMenu.js +77 -0
- package/dist/admin/pages/Assets/components/CursorAnchoredMenu.js.map +1 -0
- package/dist/admin/pages/Assets/components/CursorAnchoredMenu.mjs +75 -0
- package/dist/admin/pages/Assets/components/CursorAnchoredMenu.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/DeleteItemsDialog.js +4 -2
- package/dist/admin/pages/Assets/components/DeleteItemsDialog.js.map +1 -1
- package/dist/admin/pages/Assets/components/DeleteItemsDialog.mjs +4 -2
- package/dist/admin/pages/Assets/components/DeleteItemsDialog.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/FolderActions.js +139 -0
- package/dist/admin/pages/Assets/components/FolderActions.js.map +1 -0
- package/dist/admin/pages/Assets/components/FolderActions.mjs +137 -0
- package/dist/admin/pages/Assets/components/FolderActions.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/FolderActionsMenu.js +25 -119
- package/dist/admin/pages/Assets/components/FolderActionsMenu.js.map +1 -1
- package/dist/admin/pages/Assets/components/FolderActionsMenu.mjs +27 -121
- package/dist/admin/pages/Assets/components/FolderActionsMenu.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/FolderContextMenu.js +67 -0
- package/dist/admin/pages/Assets/components/FolderContextMenu.js.map +1 -0
- package/dist/admin/pages/Assets/components/FolderContextMenu.mjs +65 -0
- package/dist/admin/pages/Assets/components/FolderContextMenu.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/FolderTree/FolderTree.js +139 -45
- package/dist/admin/pages/Assets/components/FolderTree/FolderTree.js.map +1 -1
- package/dist/admin/pages/Assets/components/FolderTree/FolderTree.mjs +140 -47
- package/dist/admin/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/FolderTree/FolderTreeRowMenu.js +115 -0
- package/dist/admin/pages/Assets/components/FolderTree/FolderTreeRowMenu.js.map +1 -0
- package/dist/admin/pages/Assets/components/FolderTree/FolderTreeRowMenu.mjs +113 -0
- package/dist/admin/pages/Assets/components/FolderTree/FolderTreeRowMenu.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/ItemContextMenu.js +125 -0
- package/dist/admin/pages/Assets/components/ItemContextMenu.js.map +1 -0
- package/dist/admin/pages/Assets/components/ItemContextMenu.mjs +122 -0
- package/dist/admin/pages/Assets/components/ItemContextMenu.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/MainAreaContextMenu.js +88 -63
- package/dist/admin/pages/Assets/components/MainAreaContextMenu.js.map +1 -1
- package/dist/admin/pages/Assets/components/MainAreaContextMenu.mjs +88 -63
- package/dist/admin/pages/Assets/components/MainAreaContextMenu.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/SelectionActions.js +111 -0
- package/dist/admin/pages/Assets/components/SelectionActions.js.map +1 -0
- package/dist/admin/pages/Assets/components/SelectionActions.mjs +109 -0
- package/dist/admin/pages/Assets/components/SelectionActions.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/SelectionContextMenu.js +82 -0
- package/dist/admin/pages/Assets/components/SelectionContextMenu.js.map +1 -0
- package/dist/admin/pages/Assets/components/SelectionContextMenu.mjs +80 -0
- package/dist/admin/pages/Assets/components/SelectionContextMenu.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useAssetSelection.js +10 -0
- package/dist/admin/pages/Assets/hooks/useAssetSelection.js.map +1 -1
- package/dist/admin/pages/Assets/hooks/useAssetSelection.mjs +10 -0
- package/dist/admin/pages/Assets/hooks/useAssetSelection.mjs.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.js +10 -3
- package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs +10 -3
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -1
- package/dist/admin/services/api.js.map +1 -1
- package/dist/admin/services/api.mjs.map +1 -1
- package/dist/admin/src/hooks/useAIMetadataAvailability.d.ts +5 -0
- package/dist/admin/src/hooks/useAIMetadataEnabled.d.ts +5 -3
- package/dist/admin/src/hooks/useTracking.d.ts +0 -7
- package/dist/admin/src/legacy/components/EditAssetDialog/PreviewBox/PreviewComponents.d.ts +2 -2
- package/dist/admin/src/legacy/hooks/useAIMetadataAvailability.d.ts +5 -0
- package/dist/admin/src/legacy/hooks/useAIMetadataEnabled.d.ts +12 -0
- package/dist/admin/src/legacy/hooks/useSettings.d.ts +1 -0
- package/dist/admin/src/pages/Assets/components/ActionsMenuContent.d.ts +2 -2
- package/dist/admin/src/pages/Assets/components/AssetActions.d.ts +70 -0
- package/dist/admin/src/pages/Assets/components/AssetActionsMenu.d.ts +5 -14
- package/dist/admin/src/pages/Assets/components/AssetContextMenu.d.ts +27 -0
- package/dist/admin/src/pages/Assets/components/AssetDetails/useCropImg.d.ts +16 -0
- package/dist/admin/src/pages/Assets/components/CursorAnchoredMenu.d.ts +32 -0
- package/dist/admin/src/pages/Assets/components/FolderActions.d.ts +48 -0
- package/dist/admin/src/pages/Assets/components/FolderActionsMenu.d.ts +4 -8
- package/dist/admin/src/pages/Assets/components/FolderContextMenu.d.ts +21 -0
- package/dist/admin/src/pages/Assets/components/FolderTree/FolderTree.d.ts +5 -1
- package/dist/admin/src/pages/Assets/components/FolderTree/FolderTreeRowMenu.d.ts +25 -0
- package/dist/admin/src/pages/Assets/components/ItemContextMenu.d.ts +53 -0
- package/dist/admin/src/pages/Assets/components/MainAreaContextMenu.d.ts +15 -1
- package/dist/admin/src/pages/Assets/components/SelectionActions.d.ts +40 -0
- package/dist/admin/src/pages/Assets/components/SelectionContextMenu.d.ts +25 -0
- package/dist/admin/src/pages/Assets/hooks/useAssetSelection.d.ts +5 -0
- package/dist/admin/src/utils/mediaLibraryVersion.d.ts +18 -0
- package/dist/admin/translations/en.json.js +9 -3
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +9 -3
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/utils/mediaLibraryVersion.js +24 -0
- package/dist/admin/utils/mediaLibraryVersion.js.map +1 -0
- package/dist/admin/utils/mediaLibraryVersion.mjs +20 -0
- package/dist/admin/utils/mediaLibraryVersion.mjs.map +1 -0
- package/dist/server/bootstrap.js +7 -0
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/server/bootstrap.mjs +7 -0
- package/dist/server/bootstrap.mjs.map +1 -1
- package/dist/server/controllers/admin-file.js +2 -2
- package/dist/server/controllers/admin-file.js.map +1 -1
- package/dist/server/controllers/admin-file.mjs +2 -2
- package/dist/server/controllers/admin-file.mjs.map +1 -1
- package/dist/server/controllers/admin-folder-file.js +51 -4
- package/dist/server/controllers/admin-folder-file.js.map +1 -1
- package/dist/server/controllers/admin-folder-file.mjs +52 -5
- package/dist/server/controllers/admin-folder-file.mjs.map +1 -1
- package/dist/server/controllers/admin-folder.js +5 -5
- package/dist/server/controllers/admin-folder.js.map +1 -1
- package/dist/server/controllers/admin-folder.mjs +5 -5
- package/dist/server/controllers/admin-folder.mjs.map +1 -1
- package/dist/server/controllers/admin-settings.js +2 -1
- package/dist/server/controllers/admin-settings.js.map +1 -1
- package/dist/server/controllers/admin-settings.mjs +2 -1
- package/dist/server/controllers/admin-settings.mjs.map +1 -1
- package/dist/server/controllers/content-api.js +30 -7
- package/dist/server/controllers/content-api.js.map +1 -1
- package/dist/server/controllers/content-api.mjs +30 -7
- package/dist/server/controllers/content-api.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/folder-file.js +4 -4
- package/dist/server/controllers/validation/admin/folder-file.js.map +1 -1
- package/dist/server/controllers/validation/admin/folder-file.mjs +2 -2
- package/dist/server/controllers/validation/admin/folder-file.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/folder.js +3 -4
- package/dist/server/controllers/validation/admin/folder.js.map +1 -1
- package/dist/server/controllers/validation/admin/folder.mjs +3 -4
- package/dist/server/controllers/validation/admin/folder.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/upload.js +1 -2
- package/dist/server/controllers/validation/admin/upload.js.map +1 -1
- package/dist/server/controllers/validation/admin/upload.mjs +1 -2
- package/dist/server/controllers/validation/admin/upload.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/utils.js +1 -2
- package/dist/server/controllers/validation/admin/utils.js.map +1 -1
- package/dist/server/controllers/validation/admin/utils.mjs +1 -2
- package/dist/server/controllers/validation/admin/utils.mjs.map +1 -1
- package/dist/server/errors.js +12 -0
- package/dist/server/errors.js.map +1 -0
- package/dist/server/errors.mjs +10 -0
- package/dist/server/errors.mjs.map +1 -0
- package/dist/server/migrations/unsign-richtext-and-blocks-urls.js +2 -2
- package/dist/server/migrations/unsign-richtext-and-blocks-urls.js.map +1 -1
- package/dist/server/migrations/unsign-richtext-and-blocks-urls.mjs +1 -1
- package/dist/server/migrations/unsign-richtext-and-blocks-urls.mjs.map +1 -1
- package/dist/server/routes/content-api.js +3 -3
- package/dist/server/routes/content-api.js.map +1 -1
- package/dist/server/routes/content-api.mjs +3 -3
- package/dist/server/routes/content-api.mjs.map +1 -1
- package/dist/server/routes/validation/upload.js +8 -0
- package/dist/server/routes/validation/upload.js.map +1 -1
- package/dist/server/routes/validation/upload.mjs +8 -0
- package/dist/server/routes/validation/upload.mjs.map +1 -1
- package/dist/server/services/ai-metadata-provider.js +83 -0
- package/dist/server/services/ai-metadata-provider.js.map +1 -0
- package/dist/server/services/ai-metadata-provider.mjs +61 -0
- package/dist/server/services/ai-metadata-provider.mjs.map +1 -0
- package/dist/server/services/ai-metadata-strapi-managed.js +48 -0
- package/dist/server/services/ai-metadata-strapi-managed.js.map +1 -0
- package/dist/server/services/ai-metadata-strapi-managed.mjs +46 -0
- package/dist/server/services/ai-metadata-strapi-managed.mjs.map +1 -0
- package/dist/server/services/ai-metadata.js +5 -58
- package/dist/server/services/ai-metadata.js.map +1 -1
- package/dist/server/services/ai-metadata.mjs +6 -39
- package/dist/server/services/ai-metadata.mjs.map +1 -1
- package/dist/server/services/api-upload-folder.js +3 -3
- package/dist/server/services/api-upload-folder.js.map +1 -1
- package/dist/server/services/api-upload-folder.mjs +3 -3
- package/dist/server/services/api-upload-folder.mjs.map +1 -1
- package/dist/server/services/extensions/utils.js +19 -15
- package/dist/server/services/extensions/utils.js.map +1 -1
- package/dist/server/services/extensions/utils.mjs +19 -15
- package/dist/server/services/extensions/utils.mjs.map +1 -1
- package/dist/server/services/file.js +2 -2
- package/dist/server/services/file.js.map +1 -1
- package/dist/server/services/file.mjs +1 -1
- package/dist/server/services/file.mjs.map +1 -1
- package/dist/server/services/folder.js +9 -6
- package/dist/server/services/folder.js.map +1 -1
- package/dist/server/services/folder.mjs +9 -6
- package/dist/server/services/folder.mjs.map +1 -1
- package/dist/server/services/index.js +3 -1
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs +3 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/metrics.js +1 -1
- package/dist/server/services/metrics.js.map +1 -1
- package/dist/server/services/metrics.mjs +1 -1
- package/dist/server/services/metrics.mjs.map +1 -1
- package/dist/server/services/provider.js +3 -4
- package/dist/server/services/provider.js.map +1 -1
- package/dist/server/services/provider.mjs +3 -4
- package/dist/server/services/provider.mjs.map +1 -1
- package/dist/server/services/upload.js +5 -6
- package/dist/server/services/upload.js.map +1 -1
- package/dist/server/services/upload.mjs +4 -5
- package/dist/server/services/upload.mjs.map +1 -1
- package/dist/server/services/weekly-metrics.js +2 -2
- package/dist/server/services/weekly-metrics.js.map +1 -1
- package/dist/server/services/weekly-metrics.mjs +2 -2
- package/dist/server/services/weekly-metrics.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-folder-file.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-folder.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-settings.d.ts.map +1 -1
- package/dist/server/src/controllers/content-api.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/admin/folder.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/admin/upload.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/admin/utils.d.ts.map +1 -1
- package/dist/server/src/errors.d.ts +6 -0
- package/dist/server/src/errors.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +6 -1
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/mcp/ambient-instance.d.ts +3 -1
- package/dist/server/src/mcp/ambient-instance.d.ts.map +1 -1
- package/dist/server/src/routes/validation/upload.d.ts +4 -0
- package/dist/server/src/routes/validation/upload.d.ts.map +1 -1
- package/dist/server/src/services/ai-metadata-provider.d.ts +26 -0
- package/dist/server/src/services/ai-metadata-provider.d.ts.map +1 -0
- package/dist/server/src/services/ai-metadata-strapi-managed.d.ts +7 -0
- package/dist/server/src/services/ai-metadata-strapi-managed.d.ts.map +1 -0
- package/dist/server/src/services/ai-metadata.d.ts.map +1 -1
- package/dist/server/src/services/extensions/utils.d.ts +33 -1
- package/dist/server/src/services/extensions/utils.d.ts.map +1 -1
- package/dist/server/src/services/folder.d.ts +5 -2
- package/dist/server/src/services/folder.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +6 -1
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/provider.d.ts.map +1 -1
- package/dist/server/src/services/upload.d.ts.map +1 -1
- package/dist/server/src/utils/images.d.ts +2 -2
- package/dist/server/src/utils/images.d.ts.map +1 -1
- package/dist/server/src/utils/index.d.ts +2 -0
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/server/utils/images.js +6 -7
- package/dist/server/utils/images.js.map +1 -1
- package/dist/server/utils/images.mjs +6 -7
- 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/shared/contracts/settings.d.ts +6 -0
- package/package.json +11 -11
- package/dist/admin/legacy/hooks/useAiAvailability.js +0 -22
- package/dist/admin/legacy/hooks/useAiAvailability.js.map +0 -1
- package/dist/admin/legacy/hooks/useAiAvailability.mjs +0 -20
- package/dist/admin/legacy/hooks/useAiAvailability.mjs.map +0 -1
- package/dist/admin/src/legacy/hooks/useAiAvailability.d.ts +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"weekly-metrics.js","sources":["../../../server/src/services/weekly-metrics.ts"],"sourcesContent":["import { defaultTo } from 'lodash
|
|
1
|
+
{"version":3,"file":"weekly-metrics.js","sources":["../../../server/src/services/weekly-metrics.ts"],"sourcesContent":["import { defaultTo } from 'lodash';\nimport { add } from 'date-fns';\n\nimport type { Core } from '@strapi/types';\n\nimport { getWeeklyCronScheduleAt } from '../utils/cron';\nimport { FOLDER_MODEL_UID, FILE_MODEL_UID } from '../constants';\nimport { getService } from '../utils';\n\ntype MetricStoreValue = {\n lastWeeklyUpdate?: number;\n weeklySchedule?: string;\n};\n\nconst ONE_WEEK = 7 * 24 * 60 * 60 * 1000;\n\nconst getMetricsStoreValue = async (): Promise<MetricStoreValue> => {\n const value = await strapi.store.get({ type: 'plugin', name: 'upload', key: 'metrics' });\n return defaultTo(value, {}) as MetricStoreValue;\n};\nconst setMetricsStoreValue = (value: MetricStoreValue) =>\n strapi.store.set({ type: 'plugin', name: 'upload', key: 'metrics', value });\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n async computeMetrics() {\n // Folder metrics\n // @ts-expect-error - no dynamic types for the metadata\n const pathColName = strapi.db.metadata.get(FOLDER_MODEL_UID).attributes.path.columnName;\n const folderTable = strapi.getModel(FOLDER_MODEL_UID).collectionName;\n\n let keepOnlySlashesSQLString = '??';\n const queryParams = [pathColName];\n for (let i = 0; i < 10; i += 1) {\n keepOnlySlashesSQLString = `REPLACE(${keepOnlySlashesSQLString}, ?, ?)`;\n queryParams.push(String(i), '');\n }\n\n /*\n The following query goal is to count the number of folders with depth 1, depth 2 etc.\n The query returns :\n [\n { depth: 1, occurence: 4 },\n { depth: 2, occurence: 2 },\n { depth: 3, occurence: 5 },\n ]\n\n The query is built as follow:\n 1. In order to get the depth level of a folder:\n - we take their path\n - remove all numbers (by replacing 0123456789 by '', thus the 10 REPLACE in the query)\n - count the remaining `/`, which correspond to their depth (by using LENGTH)\n We now have, for each folder, its depth.\n 2. In order to get the number of folders for each depth:\n - we group them by their depth and use COUNT(*)\n */\n\n const res = (await strapi.db\n .getConnection(folderTable)\n .select(\n strapi.db.connection.raw(\n `LENGTH(${keepOnlySlashesSQLString}) AS depth, COUNT(*) AS occurence`,\n queryParams\n )\n )\n .groupBy('depth')) as Array<{ depth: string; occurence: string }>;\n\n const folderLevelsArray = res.map((map) => ({\n depth: Number(map.depth),\n occurence: Number(map.occurence),\n })); // values can be strings depending on the database\n\n let product = 0;\n let folderNumber = 0;\n let maxDepth = 0;\n for (const folderLevel of folderLevelsArray) {\n product += folderLevel.depth * folderLevel.occurence;\n folderNumber += folderLevel.occurence;\n if (folderLevel.depth > maxDepth) {\n maxDepth = folderLevel.depth;\n }\n }\n const averageDepth = folderNumber !== 0 ? product / folderNumber : 0;\n\n let sumOfDeviation = 0;\n for (const folderLevel of folderLevelsArray) {\n sumOfDeviation += Math.abs(folderLevel.depth - averageDepth) * folderLevel.occurence;\n }\n\n const averageDeviationDepth = folderNumber !== 0 ? sumOfDeviation / folderNumber : 0;\n\n // File metrics\n const assetNumber = await strapi.db.query(FILE_MODEL_UID).count();\n\n return {\n assetNumber,\n folderNumber,\n averageDepth,\n maxDepth,\n averageDeviationDepth,\n };\n },\n\n async sendMetrics() {\n const metrics = await this.computeMetrics();\n await getService('metrics').trackUsage('didSendUploadPropertiesOnceAWeek', {\n groupProperties: { metrics },\n });\n\n const metricsInfoStored = await getMetricsStoreValue();\n await setMetricsStoreValue({ ...metricsInfoStored, lastWeeklyUpdate: new Date().getTime() });\n },\n\n async ensureWeeklyStoredCronSchedule(): Promise<string> {\n const metricsInfoStored = await getMetricsStoreValue();\n const { weeklySchedule: currentSchedule, lastWeeklyUpdate } = metricsInfoStored;\n\n const now = new Date();\n let weeklySchedule = currentSchedule;\n\n if (!weeklySchedule || !lastWeeklyUpdate || lastWeeklyUpdate + ONE_WEEK < now.getTime()) {\n weeklySchedule = getWeeklyCronScheduleAt(add(now, { seconds: 15 }));\n await setMetricsStoreValue({ ...metricsInfoStored, weeklySchedule });\n\n return weeklySchedule;\n }\n\n return weeklySchedule;\n },\n\n async registerCron() {\n const weeklySchedule = await this.ensureWeeklyStoredCronSchedule();\n\n strapi.cron.add({\n uploadWeekly: {\n task: this.sendMetrics.bind(this),\n options: weeklySchedule,\n },\n });\n },\n});\n"],"names":["ONE_WEEK","getMetricsStoreValue","value","strapi","store","get","type","name","key","defaultTo","setMetricsStoreValue","set","computeMetrics","pathColName","db","metadata","FOLDER_MODEL_UID","attributes","path","columnName","folderTable","getModel","collectionName","keepOnlySlashesSQLString","queryParams","i","push","String","res","getConnection","select","connection","raw","groupBy","folderLevelsArray","map","depth","Number","occurence","product","folderNumber","maxDepth","folderLevel","averageDepth","sumOfDeviation","Math","abs","averageDeviationDepth","assetNumber","query","FILE_MODEL_UID","count","sendMetrics","metrics","getService","trackUsage","groupProperties","metricsInfoStored","lastWeeklyUpdate","Date","getTime","ensureWeeklyStoredCronSchedule","weeklySchedule","currentSchedule","now","getWeeklyCronScheduleAt","add","seconds","registerCron","cron","uploadWeekly","task","bind","options"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defaultTo } from 'lodash
|
|
1
|
+
import { defaultTo } from 'lodash';
|
|
2
2
|
import { add } from 'date-fns';
|
|
3
3
|
import { getWeeklyCronScheduleAt } from '../utils/cron.mjs';
|
|
4
4
|
import { FOLDER_MODEL_UID, FILE_MODEL_UID } from '../constants.mjs';
|
|
@@ -11,7 +11,7 @@ const getMetricsStoreValue = async ()=>{
|
|
|
11
11
|
name: 'upload',
|
|
12
12
|
key: 'metrics'
|
|
13
13
|
});
|
|
14
|
-
return defaultTo({}
|
|
14
|
+
return defaultTo(value, {});
|
|
15
15
|
};
|
|
16
16
|
const setMetricsStoreValue = (value)=>strapi.store.set({
|
|
17
17
|
type: 'plugin',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"weekly-metrics.mjs","sources":["../../../server/src/services/weekly-metrics.ts"],"sourcesContent":["import { defaultTo } from 'lodash
|
|
1
|
+
{"version":3,"file":"weekly-metrics.mjs","sources":["../../../server/src/services/weekly-metrics.ts"],"sourcesContent":["import { defaultTo } from 'lodash';\nimport { add } from 'date-fns';\n\nimport type { Core } from '@strapi/types';\n\nimport { getWeeklyCronScheduleAt } from '../utils/cron';\nimport { FOLDER_MODEL_UID, FILE_MODEL_UID } from '../constants';\nimport { getService } from '../utils';\n\ntype MetricStoreValue = {\n lastWeeklyUpdate?: number;\n weeklySchedule?: string;\n};\n\nconst ONE_WEEK = 7 * 24 * 60 * 60 * 1000;\n\nconst getMetricsStoreValue = async (): Promise<MetricStoreValue> => {\n const value = await strapi.store.get({ type: 'plugin', name: 'upload', key: 'metrics' });\n return defaultTo(value, {}) as MetricStoreValue;\n};\nconst setMetricsStoreValue = (value: MetricStoreValue) =>\n strapi.store.set({ type: 'plugin', name: 'upload', key: 'metrics', value });\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n async computeMetrics() {\n // Folder metrics\n // @ts-expect-error - no dynamic types for the metadata\n const pathColName = strapi.db.metadata.get(FOLDER_MODEL_UID).attributes.path.columnName;\n const folderTable = strapi.getModel(FOLDER_MODEL_UID).collectionName;\n\n let keepOnlySlashesSQLString = '??';\n const queryParams = [pathColName];\n for (let i = 0; i < 10; i += 1) {\n keepOnlySlashesSQLString = `REPLACE(${keepOnlySlashesSQLString}, ?, ?)`;\n queryParams.push(String(i), '');\n }\n\n /*\n The following query goal is to count the number of folders with depth 1, depth 2 etc.\n The query returns :\n [\n { depth: 1, occurence: 4 },\n { depth: 2, occurence: 2 },\n { depth: 3, occurence: 5 },\n ]\n\n The query is built as follow:\n 1. In order to get the depth level of a folder:\n - we take their path\n - remove all numbers (by replacing 0123456789 by '', thus the 10 REPLACE in the query)\n - count the remaining `/`, which correspond to their depth (by using LENGTH)\n We now have, for each folder, its depth.\n 2. In order to get the number of folders for each depth:\n - we group them by their depth and use COUNT(*)\n */\n\n const res = (await strapi.db\n .getConnection(folderTable)\n .select(\n strapi.db.connection.raw(\n `LENGTH(${keepOnlySlashesSQLString}) AS depth, COUNT(*) AS occurence`,\n queryParams\n )\n )\n .groupBy('depth')) as Array<{ depth: string; occurence: string }>;\n\n const folderLevelsArray = res.map((map) => ({\n depth: Number(map.depth),\n occurence: Number(map.occurence),\n })); // values can be strings depending on the database\n\n let product = 0;\n let folderNumber = 0;\n let maxDepth = 0;\n for (const folderLevel of folderLevelsArray) {\n product += folderLevel.depth * folderLevel.occurence;\n folderNumber += folderLevel.occurence;\n if (folderLevel.depth > maxDepth) {\n maxDepth = folderLevel.depth;\n }\n }\n const averageDepth = folderNumber !== 0 ? product / folderNumber : 0;\n\n let sumOfDeviation = 0;\n for (const folderLevel of folderLevelsArray) {\n sumOfDeviation += Math.abs(folderLevel.depth - averageDepth) * folderLevel.occurence;\n }\n\n const averageDeviationDepth = folderNumber !== 0 ? sumOfDeviation / folderNumber : 0;\n\n // File metrics\n const assetNumber = await strapi.db.query(FILE_MODEL_UID).count();\n\n return {\n assetNumber,\n folderNumber,\n averageDepth,\n maxDepth,\n averageDeviationDepth,\n };\n },\n\n async sendMetrics() {\n const metrics = await this.computeMetrics();\n await getService('metrics').trackUsage('didSendUploadPropertiesOnceAWeek', {\n groupProperties: { metrics },\n });\n\n const metricsInfoStored = await getMetricsStoreValue();\n await setMetricsStoreValue({ ...metricsInfoStored, lastWeeklyUpdate: new Date().getTime() });\n },\n\n async ensureWeeklyStoredCronSchedule(): Promise<string> {\n const metricsInfoStored = await getMetricsStoreValue();\n const { weeklySchedule: currentSchedule, lastWeeklyUpdate } = metricsInfoStored;\n\n const now = new Date();\n let weeklySchedule = currentSchedule;\n\n if (!weeklySchedule || !lastWeeklyUpdate || lastWeeklyUpdate + ONE_WEEK < now.getTime()) {\n weeklySchedule = getWeeklyCronScheduleAt(add(now, { seconds: 15 }));\n await setMetricsStoreValue({ ...metricsInfoStored, weeklySchedule });\n\n return weeklySchedule;\n }\n\n return weeklySchedule;\n },\n\n async registerCron() {\n const weeklySchedule = await this.ensureWeeklyStoredCronSchedule();\n\n strapi.cron.add({\n uploadWeekly: {\n task: this.sendMetrics.bind(this),\n options: weeklySchedule,\n },\n });\n },\n});\n"],"names":["ONE_WEEK","getMetricsStoreValue","value","strapi","store","get","type","name","key","defaultTo","setMetricsStoreValue","set","computeMetrics","pathColName","db","metadata","FOLDER_MODEL_UID","attributes","path","columnName","folderTable","getModel","collectionName","keepOnlySlashesSQLString","queryParams","i","push","String","res","getConnection","select","connection","raw","groupBy","folderLevelsArray","map","depth","Number","occurence","product","folderNumber","maxDepth","folderLevel","averageDepth","sumOfDeviation","Math","abs","averageDeviationDepth","assetNumber","query","FILE_MODEL_UID","count","sendMetrics","metrics","getService","trackUsage","groupProperties","metricsInfoStored","lastWeeklyUpdate","Date","getTime","ensureWeeklyStoredCronSchedule","weeklySchedule","currentSchedule","now","getWeeklyCronScheduleAt","add","seconds","registerCron","cron","uploadWeekly","task","bind","options"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../server/src/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAM1C,wBAAsB,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../server/src/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAM1C,wBAAsB,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,iBA6DlE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-folder-file.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/admin-folder-file.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;
|
|
1
|
+
{"version":3,"file":"admin-folder-file.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/admin-folder-file.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;oBAaX,OAAO;kBAoFT,OAAO;;AArF7B,wBAwRE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-folder.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/admin-folder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;iBAOd,OAAO;
|
|
1
|
+
{"version":3,"file":"admin-folder.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/admin-folder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;iBAOd,OAAO;cAqCV,OAAO;gBA6BL,OAAO;gBAoBP,OAAO;sBAyBD,OAAO;;AAhHjC,wBAyHE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-settings.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/admin-settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;wBAeP,OAAO;qBAqBV,OAAO;;AAtBhC,
|
|
1
|
+
{"version":3,"file":"admin-settings.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/admin-settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;wBAeP,OAAO;qBAqBV,OAAO;;AAtBhC,wBAwCE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-api.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/content-api.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;yBAU1B,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE;
|
|
1
|
+
{"version":3,"file":"content-api.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/content-api.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;yBAU1B,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE;cAoC/B,OAAO;kBAWH,OAAO;iBAWR,OAAO;iBAgBP,OAAO;wBAeA,OAAO;qBAwBV,OAAO;qBA4CP,OAAO;gBA2CZ,OAAO;;AAxM7B,wBAyNE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folder.d.ts","sourceRoot":"","sources":["../../../../../../server/src/controllers/validation/admin/folder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"folder.d.ts","sourceRoot":"","sources":["../../../../../../server/src/controllers/validation/admin/folder.ts"],"names":[],"mappings":"AAwFA,eAAO,MAAM,oBAAoB,wDAAgD,CAAC;AAClF,eAAO,MAAM,oBAAoB,GAAI,IAAI,MAAM,2DACI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../../../../server/src/controllers/validation/admin/upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAqB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../../../../server/src/controllers/validation/admin/upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAqB,MAAM,eAAe,CAAC;AA8BvD,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAEhB,CAAC;AAEH,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAErB,CAAC;AAEH,QAAA,MAAM,kBAAkB,GAAI,SAAS,EAAE,iBAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAIrD,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,MAAM,MAAM,UAAU,GAClB,GAAG,CAAC,SAAS,CAAC,OAAO,YAAY,CAAC,GAClC,GAAG,CAAC,SAAS,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAe5C,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAuC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../server/src/controllers/validation/admin/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../server/src/controllers/validation/admin/utils.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,YAAY,GAAU,UAAU,MAAM,qBAQ3C,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { errors } from '@strapi/utils';
|
|
2
|
+
declare class FolderContainsUnauthorizedAssetsError extends errors.PolicyError<'FolderContainsUnauthorizedAssetsError'> {
|
|
3
|
+
constructor();
|
|
4
|
+
}
|
|
5
|
+
export { FolderContainsUnauthorizedAssetsError };
|
|
6
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../server/src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,cAAM,qCAAsC,SAAQ,MAAM,CAAC,WAAW,CAAC,uCAAuC,CAAC;;CAI9G;AAED,OAAO,EAAE,qCAAqC,EAAE,CAAC"}
|
|
@@ -373,7 +373,9 @@ declare const _default: () => {
|
|
|
373
373
|
};
|
|
374
374
|
}) => Promise<any>;
|
|
375
375
|
exists: (params?: {}) => Promise<boolean>;
|
|
376
|
-
deleteByIds: (ids?: number[]
|
|
376
|
+
deleteByIds: (ids?: number[], { validateFiles }?: {
|
|
377
|
+
validateFiles?: (files: import("./types").File[]) => Promise<void>;
|
|
378
|
+
}) => Promise<{
|
|
377
379
|
folders: any[];
|
|
378
380
|
totalFolderNumber: number;
|
|
379
381
|
totalFileNumber: number;
|
|
@@ -477,6 +479,9 @@ declare const _default: () => {
|
|
|
477
479
|
deleteJob(jobId: number): Promise<void>;
|
|
478
480
|
getLatestActiveJob(): Promise<import("./services/ai-metadata-jobs").AIMetadataJob | null>;
|
|
479
481
|
};
|
|
482
|
+
aiMetadataProvider: ({ strapi, }: {
|
|
483
|
+
strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
|
|
484
|
+
}) => import("./services/ai-metadata-provider").AiMetadataProviderService;
|
|
480
485
|
};
|
|
481
486
|
};
|
|
482
487
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;;;;;;;;;;;;;;;;;;gCAKxC,CAAC;oCAAmC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;;;;;;;;;;;;;;;;;;gCAKxC,CAAC;oCAAmC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAW2yG,CAAC;mBAAe,CAAC;qBAAqB,CAAC;oBAAoB,CAAC;mCAAmC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAA/e,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AATl8F,wBAQG"}
|
|
@@ -41,7 +41,9 @@ export declare const getFolderService: (strapi: Core.Strapi) => {
|
|
|
41
41
|
};
|
|
42
42
|
}) => Promise<any>;
|
|
43
43
|
exists: (params?: {}) => Promise<boolean>;
|
|
44
|
-
deleteByIds: (ids?: number[]
|
|
44
|
+
deleteByIds: (ids?: number[], { validateFiles }?: {
|
|
45
|
+
validateFiles?: (files: import("../types").File[]) => Promise<void>;
|
|
46
|
+
}) => Promise<{
|
|
45
47
|
folders: any[];
|
|
46
48
|
totalFolderNumber: number;
|
|
47
49
|
totalFileNumber: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ambient-instance.d.ts","sourceRoot":"","sources":["../../../../server/src/mcp/ambient-instance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAI1C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,IAAI,CAAC,MAAM,SASxD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,IAAI,CAAC,MAAM
|
|
1
|
+
{"version":3,"file":"ambient-instance.d.ts","sourceRoot":"","sources":["../../../../server/src/mcp/ambient-instance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAI1C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,IAAI,CAAC,MAAM,SASxD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,IAAI,CAAC,MAAM;;;;;;;;;;;;;;;;cACisB,CAAC;;;;;;;;;;;;;CADjqB,CAAC"}
|
|
@@ -115,6 +115,10 @@ export declare class UploadRouteValidator extends AbstractRouteValidator {
|
|
|
115
115
|
* File ID parameter validation
|
|
116
116
|
*/
|
|
117
117
|
get fileId(): z.ZodNumber;
|
|
118
|
+
/**
|
|
119
|
+
* Content API file lookup parameter: a numeric id or a documentId
|
|
120
|
+
*/
|
|
121
|
+
get fileIdOrDocumentId(): z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
118
122
|
/**
|
|
119
123
|
* Upload request body schema for single file uploads
|
|
120
124
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../../../server/src/routes/validation/upload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC;AAExC;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,sBAAsB;IAC9D,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;gBAErB,MAAM,EAAE,IAAI,CAAC,MAAM;IAKtC;;;OAGG;IACH,IAAI,IAAI;;;;;;;;;;;;;;;;;;;;;;;sBAyBP;IAED;;OAEG;IACH,IAAI,KAAK;;;;;;;;;;;;;;;;;;;;;;;uBAER;IAED;;;;;;OAMG;IACH,IAAI,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAoBjB;IAED;;OAEG;IACH,IAAI,MAAM,gBAET;IAED;;OAEG;IACH,IAAI,UAAU;;;;;;sBAUb;IAED;;OAEG;IACH,IAAI,eAAe;;;;;;sBAYlB;CAIF"}
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../../../server/src/routes/validation/upload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC;AAExC;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,sBAAsB;IAC9D,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;gBAErB,MAAM,EAAE,IAAI,CAAC,MAAM;IAKtC;;;OAGG;IACH,IAAI,IAAI;;;;;;;;;;;;;;;;;;;;;;;sBAyBP;IAED;;OAEG;IACH,IAAI,KAAK;;;;;;;;;;;;;;;;;;;;;;;uBAER;IAED;;;;;;OAMG;IACH,IAAI,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAoBjB;IAED;;OAEG;IACH,IAAI,MAAM,gBAET;IAED;;OAEG;IACH,IAAI,kBAAkB,oDAErB;IAED;;OAEG;IACH,IAAI,UAAU;;;;;;sBAUb;IAED;;OAEG;IACH,IAAI,eAAe;;;;;;sBAYlB;CAIF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Core, Modules } from '@strapi/types';
|
|
2
|
+
export type GenerateMetadataParams = {
|
|
3
|
+
images: Blob[];
|
|
4
|
+
};
|
|
5
|
+
export type GenerateMetadataResult = {
|
|
6
|
+
results: Array<{
|
|
7
|
+
altText: string;
|
|
8
|
+
caption: string;
|
|
9
|
+
}>;
|
|
10
|
+
};
|
|
11
|
+
export type AiMetadataProvider = Modules.AI.AiProvider & {
|
|
12
|
+
generateMetadata: (params: GenerateMetadataParams) => Promise<GenerateMetadataResult>;
|
|
13
|
+
};
|
|
14
|
+
export interface AiMetadataProviderService {
|
|
15
|
+
hasProvider(): boolean;
|
|
16
|
+
registerProvider(params: {
|
|
17
|
+
provider: AiMetadataProvider;
|
|
18
|
+
}): void;
|
|
19
|
+
registerStrapiManagedProvider(): void;
|
|
20
|
+
generateMetadata(params: GenerateMetadataParams): Promise<GenerateMetadataResult>;
|
|
21
|
+
}
|
|
22
|
+
declare const createAIMetadataProviderService: ({ strapi, }: {
|
|
23
|
+
strapi: Core.Strapi;
|
|
24
|
+
}) => AiMetadataProviderService;
|
|
25
|
+
export { createAIMetadataProviderService };
|
|
26
|
+
//# sourceMappingURL=ai-metadata-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-metadata-provider.d.ts","sourceRoot":"","sources":["../../../../server/src/services/ai-metadata-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAKnD,MAAM,MAAM,sBAAsB,GAAG;IAAE,MAAM,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC;AAExD,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,EAAE,CAAC,UAAU,GAAG;IACvD,gBAAgB,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACvF,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,WAAW,IAAI,OAAO,CAAC;IACvB,gBAAgB,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,kBAAkB,CAAA;KAAE,GAAG,IAAI,CAAC;IACjE,6BAA6B,IAAI,IAAI,CAAC;IACtC,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACnF;AAaD,QAAA,MAAM,+BAA+B,GAAI,aAEtC;IACD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACrB,KAAG,yBAoEH,CAAC;AAEF,OAAO,EAAE,+BAA+B,EAAE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Core } from '@strapi/types';
|
|
2
|
+
import type { AiMetadataProvider } from './ai-metadata-provider';
|
|
3
|
+
declare const createStrapiManagedAiMetadataProvider: ({ strapi, }: {
|
|
4
|
+
strapi: Core.Strapi;
|
|
5
|
+
}) => AiMetadataProvider;
|
|
6
|
+
export { createStrapiManagedAiMetadataProvider };
|
|
7
|
+
//# sourceMappingURL=ai-metadata-strapi-managed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-metadata-strapi-managed.d.ts","sourceRoot":"","sources":["../../../../server/src/services/ai-metadata-strapi-managed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,QAAA,MAAM,qCAAqC,GAAI,aAE5C;IACD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACrB,KAAG,kBAkDH,CAAC;AAEF,OAAO,EAAE,qCAAqC,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-metadata.d.ts","sourceRoot":"","sources":["../../../../server/src/services/ai-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-metadata.d.ts","sourceRoot":"","sources":["../../../../server/src/services/ai-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAa,IAAI,EAAE,MAAM,UAAU,CAAC;AAQ3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,UAAU,CAAC;AAoBjE,QAAA,MAAM,uBAAuB,GAAI,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE;;;;;;IAyChE;;;OAGG;qCAEM,IAAI,EAAE,mBACI,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,QAC7D;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;IAoC/B;;OAEG;gCAC+B,MAAM,QAAQ;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoDvF;;;;;;;;;;;;;OAaG;8BAEQ,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,QACzB;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAC5B,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAqElC;;OAEG;wBACuB,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;CAiDjG,CAAC;AAEF,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -40,7 +40,39 @@ declare const mapBlocksImages: (value: unknown, mapImage: (image: File) => Promi
|
|
|
40
40
|
* sets on the file and on each format. The node carries a full file object, so
|
|
41
41
|
* the ownership check is made with it rather than with a URL derived stand in.
|
|
42
42
|
*/
|
|
43
|
-
declare const unsignImage: (image: File, cache?: SignCache) => Promise<
|
|
43
|
+
declare const unsignImage: (image: File, cache?: SignCache) => Promise<{
|
|
44
|
+
id: number;
|
|
45
|
+
name: string;
|
|
46
|
+
alternativeText?: string | null;
|
|
47
|
+
caption?: string | null;
|
|
48
|
+
focalPoint?: import("../../types").FocalPoint | null;
|
|
49
|
+
width?: number;
|
|
50
|
+
height?: number;
|
|
51
|
+
formats?: Record<string, unknown>;
|
|
52
|
+
hash: string;
|
|
53
|
+
ext?: string;
|
|
54
|
+
mime?: string;
|
|
55
|
+
size?: number;
|
|
56
|
+
sizeInBytes?: number;
|
|
57
|
+
url?: string;
|
|
58
|
+
previewUrl?: string;
|
|
59
|
+
path?: string | null;
|
|
60
|
+
provider?: string;
|
|
61
|
+
provider_metadata?: Record<string, unknown>;
|
|
62
|
+
folder?: number | null;
|
|
63
|
+
folderPath?: string;
|
|
64
|
+
related?: {
|
|
65
|
+
id: string | number;
|
|
66
|
+
__type: string;
|
|
67
|
+
__pivot: {
|
|
68
|
+
field: string;
|
|
69
|
+
};
|
|
70
|
+
}[];
|
|
71
|
+
createdAt?: string;
|
|
72
|
+
updatedAt?: string;
|
|
73
|
+
createdBy?: number;
|
|
74
|
+
updatedBy?: number;
|
|
75
|
+
}>;
|
|
44
76
|
/**
|
|
45
77
|
*
|
|
46
78
|
* Iterate through an entity manager result
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../server/src/services/extensions/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../server/src/services/extensions/utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAU,GAAG,EAAE,MAAM,eAAe,CAAC;AAKjD,OAAO,KAAK,EAAU,IAAI,EAAE,MAAM,aAAa,CAAC;AAahD;;;;;;;;GAQG;AACH,KAAK,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AAErD,QAAA,MAAM,eAAe,QAAO,SAAsB,CAAC;AAiKnD;;;;;;;;;;GAUG;AACH,QAAA,MAAM,cAAc,GAAU,KAAK,MAAM,EAAE,OAAO,SAAS,oBAa1D,CAAC;AAKF;;;GAGG;AACH,QAAA,MAAM,eAAe,GAAU,OAAO,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,qBAgCtF,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,eAAe,GACnB,OAAO,OAAO,EACd,UAAU,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,KACvC,OAAO,CAAC,OAAO,CAsBjB,CAAC;AAgBF;;;;;;GAMG;AACH,QAAA,MAAM,WAAW,GAAU,OAAO,IAAI,EAAE,QAAO,SAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuC3E,CAAC;AAkEF;;;;;;;;;;GAUG;AACH,QAAA,MAAM,eAAe,GACnB,QAAQ,GAAG,EACX,KAAK,GAAG,CAAC,MAAM,EACf,QAAO,SAA6B,iBAoBrC,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,iBAAiB,GACrB,MAAM,GAAG,EACT,KAAK,GAAG,CAAC,MAAM,EACf,QAAO,SAA6B,iBAcrC,CAAC;AAEF,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,cAAc,EACd,WAAW,GACZ,CAAC"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import type { Folder } from '../types';
|
|
1
|
+
import type { File, Folder } from '../types';
|
|
2
2
|
type FolderNode = Partial<Folder> & {
|
|
3
3
|
children: FolderNode[];
|
|
4
4
|
};
|
|
5
|
+
type DeleteByIdsOptions = {
|
|
6
|
+
validateFiles?: (files: File[]) => Promise<void>;
|
|
7
|
+
};
|
|
5
8
|
declare const _default: {
|
|
6
9
|
create: (folderData: Pick<Folder, "name" | "parent">, opts?: {
|
|
7
10
|
user: {
|
|
@@ -9,7 +12,7 @@ declare const _default: {
|
|
|
9
12
|
};
|
|
10
13
|
}) => Promise<any>;
|
|
11
14
|
exists: (params?: {}) => Promise<boolean>;
|
|
12
|
-
deleteByIds: (ids?: number[]) => Promise<{
|
|
15
|
+
deleteByIds: (ids?: number[], { validateFiles }?: DeleteByIdsOptions) => Promise<{
|
|
13
16
|
folders: any[];
|
|
14
17
|
totalFolderNumber: number;
|
|
15
18
|
totalFileNumber: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folder.d.ts","sourceRoot":"","sources":["../../../../server/src/services/folder.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"folder.d.ts","sourceRoot":"","sources":["../../../../server/src/services/folder.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAQ7C,KAAK,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG;IAClC,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD,CAAC;;yBA0BY,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,SACpC;QAAE,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAA;KAAE;;wBAuBV,MAAM,EAAE,sBAA0B,kBAAkB;;;;;iBAmD9E,MAAM,qBAIP;QACD,IAAI,EAAE,MAAM,CAAC;QACb;;;WAGG;QACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,YACS;QAAE,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAA;KAAE;+BA/GL,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC;;;;;;AA6R9D,wBAOE"}
|
|
@@ -88,7 +88,9 @@ export declare const services: {
|
|
|
88
88
|
};
|
|
89
89
|
}) => Promise<any>;
|
|
90
90
|
exists: (params?: {}) => Promise<boolean>;
|
|
91
|
-
deleteByIds: (ids?: number[]
|
|
91
|
+
deleteByIds: (ids?: number[], { validateFiles }?: {
|
|
92
|
+
validateFiles?: (files: import("../types").File[]) => Promise<void>;
|
|
93
|
+
}) => Promise<{
|
|
92
94
|
folders: any[];
|
|
93
95
|
totalFolderNumber: number;
|
|
94
96
|
totalFileNumber: number;
|
|
@@ -192,5 +194,8 @@ export declare const services: {
|
|
|
192
194
|
deleteJob(jobId: number): Promise<void>;
|
|
193
195
|
getLatestActiveJob(): Promise<import("./ai-metadata-jobs").AIMetadataJob | null>;
|
|
194
196
|
};
|
|
197
|
+
aiMetadataProvider: ({ strapi, }: {
|
|
198
|
+
strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
|
|
199
|
+
}) => import("./ai-metadata-provider").AiMetadataProviderService;
|
|
195
200
|
};
|
|
196
201
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/services/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/services/index.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;iBAcg6F,CAAC;eAAe,CAAC;iBAAqB,CAAC;gBAAoB,CAAC;+BAAmC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAA/e,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CADtiF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../server/src/services/provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../server/src/services/provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAU,IAAI,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;yBAExC,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE;wBACvB,cAAc;iBAKrB,cAAc;qBAsBV,cAAc,WAAW,IAAI;;AA5BtD,wBA2DG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../../server/src/services/upload.ts"],"names":[],"mappings":"AAMA,OAAO,EAML,UAAU,IAAI,eAAe,EAC9B,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../../server/src/services/upload.ts"],"names":[],"mappings":"AAMA,OAAO,EAML,UAAU,IAAI,eAAe,EAC9B,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,IAAI,EAAO,MAAM,eAAe,CAAC;AAK/C,OAAO,KAAK,EAAU,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAEzE,KAAK,IAAI,GAAG;IACV,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1B,KAAK,aAAa,GAAG;IACnB,IAAI,CAAC,EAAE,IAAI,CAAC;CACb,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,KAAK,CAAC,EAAE,EAAE,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;yBAoBc,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE;+CAsErB;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,aAChE,OAAO,CAAC,QAAQ,CAAC,UACpB;QACL,KAAK,CAAC,EAAE,EAAE,CAAC;QACX,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,KACA,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;+BA2GxC;QACD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,KAAK,EAAE,SAAS,EAAE,CAAC;KACpB,SACM,aAAa;yBAiMhB,EAAE,0DACkD,QAAQ,SACzD,aAAa;kBA4BhB,EAAE,kBACU;QAAE,IAAI,EAAE;YAAE,QAAQ,EAAE,QAAQ,CAAA;SAAE,GAAG,KAAK,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,SAClE,aAAa;kBAsHK,EAAE;uBAgBE,GAAG,KAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;uBAS1B,GAAG;;;;;;;;;+BAyDK,GAAG;;;;mBA4Cd,IAAI;;;;;;;yBAiCE,QAAQ;;;;;8BAoBT,iBAAiB;IAqBhD;;;OAGG;6BAlfgC,cAAc;8BA0Db,cAAc,WAAW,IAAI;gCA7SnC,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,aAAa,OAAO,CAAC,CAAC,CAAC;;AAK/E,wBAquBE"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Core } from '@strapi/types';
|
|
2
2
|
import { InputFile } from '../types';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Fetches every input file as a Blob, in order. Sequential on purpose (same as before).
|
|
5
5
|
*/
|
|
6
|
-
export declare function
|
|
6
|
+
export declare function fetchImagesAsBlobs(files: InputFile[], serverAbsoluteUrl: string, logger: Core.Strapi['log']): Promise<Blob[]>;
|
|
7
7
|
//# sourceMappingURL=images.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../../../../server/src/utils/images.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AA0BrC;;GAEG;AACH,wBAAsB,
|
|
1
|
+
{"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../../../../server/src/utils/images.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AA0BrC;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,SAAS,EAAE,EAClB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GACzB,OAAO,CAAC,IAAI,EAAE,CAAC,CAQjB"}
|
|
@@ -10,6 +10,7 @@ import type metrics from '../services/metrics';
|
|
|
10
10
|
import type extensions from '../services/extensions';
|
|
11
11
|
import type { createAIMetadataService } from '../services/ai-metadata';
|
|
12
12
|
import type { createAIMetadataJobsService } from '../services/ai-metadata-jobs';
|
|
13
|
+
import type { createAIMetadataProviderService } from '../services/ai-metadata-provider';
|
|
13
14
|
type Services = {
|
|
14
15
|
upload: ReturnType<typeof upload>;
|
|
15
16
|
'image-manipulation': typeof imageManipulation;
|
|
@@ -22,6 +23,7 @@ type Services = {
|
|
|
22
23
|
extensions: typeof extensions;
|
|
23
24
|
aiMetadata: ReturnType<typeof createAIMetadataService>;
|
|
24
25
|
aiMetadataJobs: ReturnType<typeof createAIMetadataJobsService>;
|
|
26
|
+
aiMetadataProvider: ReturnType<typeof createAIMetadataProviderService>;
|
|
25
27
|
};
|
|
26
28
|
export declare const getService: <TName extends keyof Services>(name: TName, strapiInstance?: Core.Strapi) => Services[TName];
|
|
27
29
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,iBAAiB,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,eAAe,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,kBAAkB,CAAC;AACzC,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,iBAAiB,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,eAAe,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,kBAAkB,CAAC;AACzC,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AAExF,KAAK,QAAQ,GAAG;IACd,MAAM,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC;IAClC,oBAAoB,EAAE,OAAO,iBAAiB,CAAC;IAC/C,QAAQ,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;IACtC,MAAM,EAAE,OAAO,MAAM,CAAC;IACtB,IAAI,EAAE,OAAO,IAAI,CAAC;IAClB,aAAa,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;IAChD,OAAO,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;IACpC,mBAAmB,EAAE,OAAO,eAAe,CAAC;IAC5C,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,UAAU,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;IACvD,cAAc,EAAE,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC;IAC/D,kBAAkB,EAAE,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAAC;CACxE,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,KAAK,SAAS,MAAM,QAAQ,EACrD,MAAM,KAAK,EACX,iBAAgB,IAAI,CAAC,MAAe,KACnC,QAAQ,CAAC,KAAK,CAEhB,CAAC"}
|
|
@@ -21,15 +21,14 @@
|
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
25
|
-
*/ async function
|
|
26
|
-
const
|
|
24
|
+
* Fetches every input file as a Blob, in order. Sequential on purpose (same as before).
|
|
25
|
+
*/ async function fetchImagesAsBlobs(files, serverAbsoluteUrl, logger) {
|
|
26
|
+
const blobs = [];
|
|
27
27
|
for (const file of files){
|
|
28
|
-
|
|
29
|
-
formData.append('files', blob);
|
|
28
|
+
blobs.push(await fetchImageAsBlob(file, serverAbsoluteUrl, logger));
|
|
30
29
|
}
|
|
31
|
-
return
|
|
30
|
+
return blobs;
|
|
32
31
|
}
|
|
33
32
|
|
|
34
|
-
exports.
|
|
33
|
+
exports.fetchImagesAsBlobs = fetchImagesAsBlobs;
|
|
35
34
|
//# sourceMappingURL=images.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"images.js","sources":["../../../server/src/utils/images.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { InputFile } from '../types';\n\n/**\n * Fetches an image from a URL and returns it as a Blob\n */\nasync function fetchImageAsBlob(\n file: InputFile,\n serverAbsoluteUrl: string,\n logger: Core.Strapi['log']\n): Promise<Blob> {\n const fullUrl = file.provider === 'local' ? serverAbsoluteUrl + file.filepath : file.filepath;\n\n const resp = await fetch(fullUrl);\n if (!resp.ok) {\n logger.error('Failed to fetch image', {\n fullUrl,\n status: resp.status,\n statusText: resp.statusText,\n });\n throw new Error(`Failed to fetch image from URL: ${fullUrl} (${resp.status})`);\n }\n\n const arrayBuffer = await resp.arrayBuffer();\n return new Blob([arrayBuffer], { type: file.mimetype || undefined });\n}\n\n/**\n *
|
|
1
|
+
{"version":3,"file":"images.js","sources":["../../../server/src/utils/images.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { InputFile } from '../types';\n\n/**\n * Fetches an image from a URL and returns it as a Blob\n */\nasync function fetchImageAsBlob(\n file: InputFile,\n serverAbsoluteUrl: string,\n logger: Core.Strapi['log']\n): Promise<Blob> {\n const fullUrl = file.provider === 'local' ? serverAbsoluteUrl + file.filepath : file.filepath;\n\n const resp = await fetch(fullUrl);\n if (!resp.ok) {\n logger.error('Failed to fetch image', {\n fullUrl,\n status: resp.status,\n statusText: resp.statusText,\n });\n throw new Error(`Failed to fetch image from URL: ${fullUrl} (${resp.status})`);\n }\n\n const arrayBuffer = await resp.arrayBuffer();\n return new Blob([arrayBuffer], { type: file.mimetype || undefined });\n}\n\n/**\n * Fetches every input file as a Blob, in order. Sequential on purpose (same as before).\n */\nexport async function fetchImagesAsBlobs(\n files: InputFile[],\n serverAbsoluteUrl: string,\n logger: Core.Strapi['log']\n): Promise<Blob[]> {\n const blobs: Blob[] = [];\n\n for (const file of files) {\n blobs.push(await fetchImageAsBlob(file, serverAbsoluteUrl, logger));\n }\n\n return blobs;\n}\n"],"names":["fetchImageAsBlob","file","serverAbsoluteUrl","logger","fullUrl","provider","filepath","resp","fetch","ok","error","status","statusText","Error","arrayBuffer","Blob","type","mimetype","undefined","fetchImagesAsBlobs","files","blobs","push"],"mappings":";;AAGA;;AAEC,IACD,eAAeA,gBAAAA,CACbC,IAAe,EACfC,iBAAyB,EACzBC,MAA0B,EAAA;IAE1B,MAAMC,OAAAA,GAAUH,IAAAA,CAAKI,QAAQ,KAAK,OAAA,GAAUH,oBAAoBD,IAAAA,CAAKK,QAAQ,GAAGL,IAAAA,CAAKK,QAAQ;IAE7F,MAAMC,IAAAA,GAAO,MAAMC,KAAAA,CAAMJ,OAAAA,CAAAA;IACzB,IAAI,CAACG,IAAAA,CAAKE,EAAE,EAAE;QACZN,MAAAA,CAAOO,KAAK,CAAC,uBAAA,EAAyB;AACpCN,YAAAA,OAAAA;AACAO,YAAAA,MAAAA,EAAQJ,KAAKI,MAAM;AACnBC,YAAAA,UAAAA,EAAYL,KAAKK;AACnB,SAAA,CAAA;AACA,QAAA,MAAM,IAAIC,KAAAA,CAAM,CAAC,gCAAgC,EAAET,OAAAA,CAAQ,EAAE,EAAEG,IAAAA,CAAKI,MAAM,CAAC,CAAC,CAAC,CAAA;AAC/E,IAAA;IAEA,MAAMG,WAAAA,GAAc,MAAMP,IAAAA,CAAKO,WAAW,EAAA;AAC1C,IAAA,OAAO,IAAIC,IAAAA,CAAK;AAACD,QAAAA;KAAY,EAAE;QAAEE,IAAAA,EAAMf,IAAAA,CAAKgB,QAAQ,IAAIC;AAAU,KAAA,CAAA;AACpE;AAEA;;AAEC,IACM,eAAeC,kBAAAA,CACpBC,KAAkB,EAClBlB,iBAAyB,EACzBC,MAA0B,EAAA;AAE1B,IAAA,MAAMkB,QAAgB,EAAE;IAExB,KAAK,MAAMpB,QAAQmB,KAAAA,CAAO;AACxBC,QAAAA,KAAAA,CAAMC,IAAI,CAAC,MAAMtB,gBAAAA,CAAiBC,MAAMC,iBAAAA,EAAmBC,MAAAA,CAAAA,CAAAA;AAC7D,IAAA;IAEA,OAAOkB,KAAAA;AACT;;;;"}
|
|
@@ -19,15 +19,14 @@
|
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
23
|
-
*/ async function
|
|
24
|
-
const
|
|
22
|
+
* Fetches every input file as a Blob, in order. Sequential on purpose (same as before).
|
|
23
|
+
*/ async function fetchImagesAsBlobs(files, serverAbsoluteUrl, logger) {
|
|
24
|
+
const blobs = [];
|
|
25
25
|
for (const file of files){
|
|
26
|
-
|
|
27
|
-
formData.append('files', blob);
|
|
26
|
+
blobs.push(await fetchImageAsBlob(file, serverAbsoluteUrl, logger));
|
|
28
27
|
}
|
|
29
|
-
return
|
|
28
|
+
return blobs;
|
|
30
29
|
}
|
|
31
30
|
|
|
32
|
-
export {
|
|
31
|
+
export { fetchImagesAsBlobs };
|
|
33
32
|
//# sourceMappingURL=images.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"images.mjs","sources":["../../../server/src/utils/images.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { InputFile } from '../types';\n\n/**\n * Fetches an image from a URL and returns it as a Blob\n */\nasync function fetchImageAsBlob(\n file: InputFile,\n serverAbsoluteUrl: string,\n logger: Core.Strapi['log']\n): Promise<Blob> {\n const fullUrl = file.provider === 'local' ? serverAbsoluteUrl + file.filepath : file.filepath;\n\n const resp = await fetch(fullUrl);\n if (!resp.ok) {\n logger.error('Failed to fetch image', {\n fullUrl,\n status: resp.status,\n statusText: resp.statusText,\n });\n throw new Error(`Failed to fetch image from URL: ${fullUrl} (${resp.status})`);\n }\n\n const arrayBuffer = await resp.arrayBuffer();\n return new Blob([arrayBuffer], { type: file.mimetype || undefined });\n}\n\n/**\n *
|
|
1
|
+
{"version":3,"file":"images.mjs","sources":["../../../server/src/utils/images.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { InputFile } from '../types';\n\n/**\n * Fetches an image from a URL and returns it as a Blob\n */\nasync function fetchImageAsBlob(\n file: InputFile,\n serverAbsoluteUrl: string,\n logger: Core.Strapi['log']\n): Promise<Blob> {\n const fullUrl = file.provider === 'local' ? serverAbsoluteUrl + file.filepath : file.filepath;\n\n const resp = await fetch(fullUrl);\n if (!resp.ok) {\n logger.error('Failed to fetch image', {\n fullUrl,\n status: resp.status,\n statusText: resp.statusText,\n });\n throw new Error(`Failed to fetch image from URL: ${fullUrl} (${resp.status})`);\n }\n\n const arrayBuffer = await resp.arrayBuffer();\n return new Blob([arrayBuffer], { type: file.mimetype || undefined });\n}\n\n/**\n * Fetches every input file as a Blob, in order. Sequential on purpose (same as before).\n */\nexport async function fetchImagesAsBlobs(\n files: InputFile[],\n serverAbsoluteUrl: string,\n logger: Core.Strapi['log']\n): Promise<Blob[]> {\n const blobs: Blob[] = [];\n\n for (const file of files) {\n blobs.push(await fetchImageAsBlob(file, serverAbsoluteUrl, logger));\n }\n\n return blobs;\n}\n"],"names":["fetchImageAsBlob","file","serverAbsoluteUrl","logger","fullUrl","provider","filepath","resp","fetch","ok","error","status","statusText","Error","arrayBuffer","Blob","type","mimetype","undefined","fetchImagesAsBlobs","files","blobs","push"],"mappings":"AAGA;;AAEC,IACD,eAAeA,gBAAAA,CACbC,IAAe,EACfC,iBAAyB,EACzBC,MAA0B,EAAA;IAE1B,MAAMC,OAAAA,GAAUH,IAAAA,CAAKI,QAAQ,KAAK,OAAA,GAAUH,oBAAoBD,IAAAA,CAAKK,QAAQ,GAAGL,IAAAA,CAAKK,QAAQ;IAE7F,MAAMC,IAAAA,GAAO,MAAMC,KAAAA,CAAMJ,OAAAA,CAAAA;IACzB,IAAI,CAACG,IAAAA,CAAKE,EAAE,EAAE;QACZN,MAAAA,CAAOO,KAAK,CAAC,uBAAA,EAAyB;AACpCN,YAAAA,OAAAA;AACAO,YAAAA,MAAAA,EAAQJ,KAAKI,MAAM;AACnBC,YAAAA,UAAAA,EAAYL,KAAKK;AACnB,SAAA,CAAA;AACA,QAAA,MAAM,IAAIC,KAAAA,CAAM,CAAC,gCAAgC,EAAET,OAAAA,CAAQ,EAAE,EAAEG,IAAAA,CAAKI,MAAM,CAAC,CAAC,CAAC,CAAA;AAC/E,IAAA;IAEA,MAAMG,WAAAA,GAAc,MAAMP,IAAAA,CAAKO,WAAW,EAAA;AAC1C,IAAA,OAAO,IAAIC,IAAAA,CAAK;AAACD,QAAAA;KAAY,EAAE;QAAEE,IAAAA,EAAMf,IAAAA,CAAKgB,QAAQ,IAAIC;AAAU,KAAA,CAAA;AACpE;AAEA;;AAEC,IACM,eAAeC,kBAAAA,CACpBC,KAAkB,EAClBlB,iBAAyB,EACzBC,MAA0B,EAAA;AAE1B,IAAA,MAAMkB,QAAgB,EAAE;IAExB,KAAK,MAAMpB,QAAQmB,KAAAA,CAAO;AACxBC,QAAAA,KAAAA,CAAMC,IAAI,CAAC,MAAMtB,gBAAAA,CAAiBC,MAAMC,iBAAAA,EAAmBC,MAAAA,CAAAA,CAAAA;AAC7D,IAAA;IAEA,OAAOkB,KAAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../server/src/utils/index.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport type upload from '../services/upload';\nimport type imageManipulation from '../services/image-manipulation';\nimport type apiUploadFolder from '../services/api-upload-folder';\nimport type provider from '../services/provider';\nimport type folder from '../services/folder';\nimport type file from '../services/file';\nimport type weeklyMetrics from '../services/weekly-metrics';\nimport type metrics from '../services/metrics';\nimport type extensions from '../services/extensions';\nimport type { createAIMetadataService } from '../services/ai-metadata';\nimport type { createAIMetadataJobsService } from '../services/ai-metadata-jobs';\n\ntype Services = {\n upload: ReturnType<typeof upload>;\n 'image-manipulation': typeof imageManipulation;\n provider: ReturnType<typeof provider>;\n folder: typeof folder;\n file: typeof file;\n weeklyMetrics: ReturnType<typeof weeklyMetrics>;\n metrics: ReturnType<typeof metrics>;\n 'api-upload-folder': typeof apiUploadFolder;\n extensions: typeof extensions;\n aiMetadata: ReturnType<typeof createAIMetadataService>;\n aiMetadataJobs: ReturnType<typeof createAIMetadataJobsService>;\n};\n\nexport const getService = <TName extends keyof Services>(\n name: TName,\n strapiInstance: Core.Strapi = strapi\n): Services[TName] => {\n return strapiInstance.plugin('upload').service<Services[TName]>(name);\n};\n"],"names":["getService","name","strapiInstance","strapi","plugin","service"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../server/src/utils/index.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport type upload from '../services/upload';\nimport type imageManipulation from '../services/image-manipulation';\nimport type apiUploadFolder from '../services/api-upload-folder';\nimport type provider from '../services/provider';\nimport type folder from '../services/folder';\nimport type file from '../services/file';\nimport type weeklyMetrics from '../services/weekly-metrics';\nimport type metrics from '../services/metrics';\nimport type extensions from '../services/extensions';\nimport type { createAIMetadataService } from '../services/ai-metadata';\nimport type { createAIMetadataJobsService } from '../services/ai-metadata-jobs';\nimport type { createAIMetadataProviderService } from '../services/ai-metadata-provider';\n\ntype Services = {\n upload: ReturnType<typeof upload>;\n 'image-manipulation': typeof imageManipulation;\n provider: ReturnType<typeof provider>;\n folder: typeof folder;\n file: typeof file;\n weeklyMetrics: ReturnType<typeof weeklyMetrics>;\n metrics: ReturnType<typeof metrics>;\n 'api-upload-folder': typeof apiUploadFolder;\n extensions: typeof extensions;\n aiMetadata: ReturnType<typeof createAIMetadataService>;\n aiMetadataJobs: ReturnType<typeof createAIMetadataJobsService>;\n aiMetadataProvider: ReturnType<typeof createAIMetadataProviderService>;\n};\n\nexport const getService = <TName extends keyof Services>(\n name: TName,\n strapiInstance: Core.Strapi = strapi\n): Services[TName] => {\n return strapiInstance.plugin('upload').service<Services[TName]>(name);\n};\n"],"names":["getService","name","strapiInstance","strapi","plugin","service"],"mappings":";;AA8BO,MAAMA,UAAAA,GAAa,CACxBC,IAAAA,EACAC,iBAA8BC,MAAM,GAAA;AAEpC,IAAA,OAAOD,cAAAA,CAAeE,MAAM,CAAC,QAAA,CAAA,CAAUC,OAAO,CAAkBJ,IAAAA,CAAAA;AAClE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../server/src/utils/index.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport type upload from '../services/upload';\nimport type imageManipulation from '../services/image-manipulation';\nimport type apiUploadFolder from '../services/api-upload-folder';\nimport type provider from '../services/provider';\nimport type folder from '../services/folder';\nimport type file from '../services/file';\nimport type weeklyMetrics from '../services/weekly-metrics';\nimport type metrics from '../services/metrics';\nimport type extensions from '../services/extensions';\nimport type { createAIMetadataService } from '../services/ai-metadata';\nimport type { createAIMetadataJobsService } from '../services/ai-metadata-jobs';\n\ntype Services = {\n upload: ReturnType<typeof upload>;\n 'image-manipulation': typeof imageManipulation;\n provider: ReturnType<typeof provider>;\n folder: typeof folder;\n file: typeof file;\n weeklyMetrics: ReturnType<typeof weeklyMetrics>;\n metrics: ReturnType<typeof metrics>;\n 'api-upload-folder': typeof apiUploadFolder;\n extensions: typeof extensions;\n aiMetadata: ReturnType<typeof createAIMetadataService>;\n aiMetadataJobs: ReturnType<typeof createAIMetadataJobsService>;\n};\n\nexport const getService = <TName extends keyof Services>(\n name: TName,\n strapiInstance: Core.Strapi = strapi\n): Services[TName] => {\n return strapiInstance.plugin('upload').service<Services[TName]>(name);\n};\n"],"names":["getService","name","strapiInstance","strapi","plugin","service"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../server/src/utils/index.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport type upload from '../services/upload';\nimport type imageManipulation from '../services/image-manipulation';\nimport type apiUploadFolder from '../services/api-upload-folder';\nimport type provider from '../services/provider';\nimport type folder from '../services/folder';\nimport type file from '../services/file';\nimport type weeklyMetrics from '../services/weekly-metrics';\nimport type metrics from '../services/metrics';\nimport type extensions from '../services/extensions';\nimport type { createAIMetadataService } from '../services/ai-metadata';\nimport type { createAIMetadataJobsService } from '../services/ai-metadata-jobs';\nimport type { createAIMetadataProviderService } from '../services/ai-metadata-provider';\n\ntype Services = {\n upload: ReturnType<typeof upload>;\n 'image-manipulation': typeof imageManipulation;\n provider: ReturnType<typeof provider>;\n folder: typeof folder;\n file: typeof file;\n weeklyMetrics: ReturnType<typeof weeklyMetrics>;\n metrics: ReturnType<typeof metrics>;\n 'api-upload-folder': typeof apiUploadFolder;\n extensions: typeof extensions;\n aiMetadata: ReturnType<typeof createAIMetadataService>;\n aiMetadataJobs: ReturnType<typeof createAIMetadataJobsService>;\n aiMetadataProvider: ReturnType<typeof createAIMetadataProviderService>;\n};\n\nexport const getService = <TName extends keyof Services>(\n name: TName,\n strapiInstance: Core.Strapi = strapi\n): Services[TName] => {\n return strapiInstance.plugin('upload').service<Services[TName]>(name);\n};\n"],"names":["getService","name","strapiInstance","strapi","plugin","service"],"mappings":"AA8BO,MAAMA,UAAAA,GAAa,CACxBC,IAAAA,EACAC,iBAA8BC,MAAM,GAAA;AAEpC,IAAA,OAAOD,cAAAA,CAAeE,MAAM,CAAC,QAAA,CAAA,CAAUC,OAAO,CAAkBJ,IAAAA,CAAAA;AAClE;;;;"}
|
|
@@ -18,6 +18,12 @@ export interface Settings {
|
|
|
18
18
|
* ignores it on updates.
|
|
19
19
|
*/
|
|
20
20
|
concurrentUploadRequests?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Read-only echo: whether an AI metadata provider is registered (Strapi-managed or custom).
|
|
23
|
+
* Not part of the stored settings; the server appends it to GET responses and ignores it
|
|
24
|
+
* on updates.
|
|
25
|
+
*/
|
|
26
|
+
aiMetadataAvailable?: boolean;
|
|
21
27
|
};
|
|
22
28
|
}
|
|
23
29
|
export type SettingsData = Settings['data'];
|