@strapi/upload 5.50.0 → 5.50.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/dist/admin/ai/components/AIAssetCard.js +7 -1
  2. package/dist/admin/ai/components/AIAssetCard.js.map +1 -1
  3. package/dist/admin/ai/components/AIAssetCard.mjs +7 -1
  4. package/dist/admin/ai/components/AIAssetCard.mjs.map +1 -1
  5. package/dist/admin/components/AssetCard/AssetCard.js +6 -0
  6. package/dist/admin/components/AssetCard/AssetCard.js.map +1 -1
  7. package/dist/admin/components/AssetCard/AssetCard.mjs +6 -0
  8. package/dist/admin/components/AssetCard/AssetCard.mjs.map +1 -1
  9. package/dist/admin/components/AssetCard/ImageAssetCard.js +3 -2
  10. package/dist/admin/components/AssetCard/ImageAssetCard.js.map +1 -1
  11. package/dist/admin/components/AssetCard/ImageAssetCard.mjs +3 -2
  12. package/dist/admin/components/AssetCard/ImageAssetCard.mjs.map +1 -1
  13. package/dist/admin/components/EditAssetDialog/EditAssetContent.js +2 -2
  14. package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
  15. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs +2 -2
  16. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
  17. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js +8 -0
  18. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +1 -1
  19. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs +8 -0
  20. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +1 -1
  21. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js +1 -1
  22. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
  23. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs +1 -1
  24. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -1
  25. package/dist/admin/components/TableList/PreviewCell.js +5 -1
  26. package/dist/admin/components/TableList/PreviewCell.js.map +1 -1
  27. package/dist/admin/components/TableList/PreviewCell.mjs +5 -1
  28. package/dist/admin/components/TableList/PreviewCell.mjs.map +1 -1
  29. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -1
  30. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -1
  31. package/dist/admin/future/pages/Assets/AssetsPage.js +125 -122
  32. package/dist/admin/future/pages/Assets/AssetsPage.js.map +1 -1
  33. package/dist/admin/future/pages/Assets/AssetsPage.mjs +125 -122
  34. package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +1 -1
  35. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js +700 -0
  36. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js.map +1 -0
  37. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs +678 -0
  38. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs.map +1 -0
  39. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +132 -15
  40. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -1
  41. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +135 -18
  42. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +1 -1
  43. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js +29 -4
  44. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js.map +1 -1
  45. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.mjs +29 -4
  46. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.mjs.map +1 -1
  47. package/dist/admin/future/pages/Assets/components/AssetDetails/useCropImg.js +211 -0
  48. package/dist/admin/future/pages/Assets/components/AssetDetails/useCropImg.js.map +1 -0
  49. package/dist/admin/future/pages/Assets/components/AssetDetails/useCropImg.mjs +188 -0
  50. package/dist/admin/future/pages/Assets/components/AssetDetails/useCropImg.mjs.map +1 -0
  51. package/dist/admin/future/pages/Assets/components/AssetsGrid.js +53 -4
  52. package/dist/admin/future/pages/Assets/components/AssetsGrid.js.map +1 -1
  53. package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs +54 -5
  54. package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs.map +1 -1
  55. package/dist/admin/future/pages/Assets/components/AssetsTable.js +43 -4
  56. package/dist/admin/future/pages/Assets/components/AssetsTable.js.map +1 -1
  57. package/dist/admin/future/pages/Assets/components/AssetsTable.mjs +44 -5
  58. package/dist/admin/future/pages/Assets/components/AssetsTable.mjs.map +1 -1
  59. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js +195 -0
  60. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js.map +1 -0
  61. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs +192 -0
  62. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs.map +1 -0
  63. package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.js +37 -0
  64. package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.js.map +1 -0
  65. package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.mjs +35 -0
  66. package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.mjs.map +1 -0
  67. package/dist/admin/future/pages/Assets/components/Dnd/dndIds.js +18 -0
  68. package/dist/admin/future/pages/Assets/components/Dnd/dndIds.js.map +1 -0
  69. package/dist/admin/future/pages/Assets/components/Dnd/dndIds.mjs +13 -0
  70. package/dist/admin/future/pages/Assets/components/Dnd/dndIds.mjs.map +1 -0
  71. package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.js +97 -0
  72. package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.js.map +1 -0
  73. package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.mjs +94 -0
  74. package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.mjs.map +1 -0
  75. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.js +13 -4
  76. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.js.map +1 -1
  77. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.mjs +13 -4
  78. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.mjs.map +1 -1
  79. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.js +6 -3
  80. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.js.map +1 -1
  81. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.mjs +6 -3
  82. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.mjs.map +1 -1
  83. package/dist/admin/future/services/api.js +37 -1
  84. package/dist/admin/future/services/api.js.map +1 -1
  85. package/dist/admin/future/services/api.mjs +37 -2
  86. package/dist/admin/future/services/api.mjs.map +1 -1
  87. package/dist/admin/future/services/folders.js +36 -5
  88. package/dist/admin/future/services/folders.js.map +1 -1
  89. package/dist/admin/future/services/folders.mjs +36 -6
  90. package/dist/admin/future/services/folders.mjs.map +1 -1
  91. package/dist/admin/future/utils/buildBulkMovePayload.js +20 -0
  92. package/dist/admin/future/utils/buildBulkMovePayload.js.map +1 -0
  93. package/dist/admin/future/utils/buildBulkMovePayload.mjs +18 -0
  94. package/dist/admin/future/utils/buildBulkMovePayload.mjs.map +1 -0
  95. package/dist/admin/future/utils/canDropItemOnFolder.js +64 -0
  96. package/dist/admin/future/utils/canDropItemOnFolder.js.map +1 -0
  97. package/dist/admin/future/utils/canDropItemOnFolder.mjs +61 -0
  98. package/dist/admin/future/utils/canDropItemOnFolder.mjs.map +1 -0
  99. package/dist/admin/future/utils/getBulkMoveErrorMessage.js +23 -0
  100. package/dist/admin/future/utils/getBulkMoveErrorMessage.js.map +1 -0
  101. package/dist/admin/future/utils/getBulkMoveErrorMessage.mjs +21 -0
  102. package/dist/admin/future/utils/getBulkMoveErrorMessage.mjs.map +1 -0
  103. package/dist/admin/hooks/useAIMetadataJob.js.map +1 -1
  104. package/dist/admin/hooks/useAIMetadataJob.mjs.map +1 -1
  105. package/dist/admin/hooks/useAssets.js.map +1 -1
  106. package/dist/admin/hooks/useAssets.mjs.map +1 -1
  107. package/dist/admin/hooks/useBulkEdit.js.map +1 -1
  108. package/dist/admin/hooks/useBulkEdit.mjs.map +1 -1
  109. package/dist/admin/hooks/useBulkMove.js.map +1 -1
  110. package/dist/admin/hooks/useBulkMove.mjs.map +1 -1
  111. package/dist/admin/hooks/useBulkRemove.js.map +1 -1
  112. package/dist/admin/hooks/useBulkRemove.mjs.map +1 -1
  113. package/dist/admin/hooks/useEditAsset.js.map +1 -1
  114. package/dist/admin/hooks/useEditAsset.mjs.map +1 -1
  115. package/dist/admin/hooks/useEditFolder.js +4 -3
  116. package/dist/admin/hooks/useEditFolder.js.map +1 -1
  117. package/dist/admin/hooks/useEditFolder.mjs +4 -3
  118. package/dist/admin/hooks/useEditFolder.mjs.map +1 -1
  119. package/dist/admin/hooks/useFolder.js.map +1 -1
  120. package/dist/admin/hooks/useFolder.mjs.map +1 -1
  121. package/dist/admin/hooks/useUpload.js.map +1 -1
  122. package/dist/admin/hooks/useUpload.mjs.map +1 -1
  123. package/dist/admin/pages/SettingsPage/SettingsPage.js +1 -1
  124. package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
  125. package/dist/admin/pages/SettingsPage/SettingsPage.mjs +1 -1
  126. package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -1
  127. package/dist/admin/src/components/AssetCard/ImageAssetCard.d.ts +2 -1
  128. package/dist/admin/src/future/pages/Assets/components/AssetDetails/AssetCropEditor.d.ts +10 -0
  129. package/dist/admin/src/future/pages/Assets/components/AssetDetails/useCropImg.d.ts +48 -0
  130. package/dist/admin/src/future/pages/Assets/components/Dnd/AssetsDndProvider.d.ts +12 -0
  131. package/dist/admin/src/future/pages/Assets/components/Dnd/DragOverlayChip.d.ts +6 -0
  132. package/dist/admin/src/future/pages/Assets/components/Dnd/dndIds.d.ts +4 -0
  133. package/dist/admin/src/future/pages/Assets/components/Dnd/useAssetDnd.d.ts +51 -0
  134. package/dist/admin/src/future/services/api.d.ts +24 -6
  135. package/dist/admin/src/future/services/assets.d.ts +1 -1
  136. package/dist/admin/src/future/services/folders.d.ts +12 -2
  137. package/dist/admin/src/future/services/settings.d.ts +1 -1
  138. package/dist/admin/src/future/types/dnd.d.ts +22 -0
  139. package/dist/admin/src/future/utils/buildBulkMovePayload.d.ts +2 -0
  140. package/dist/admin/src/future/utils/canDropItemOnFolder.d.ts +9 -0
  141. package/dist/admin/src/future/utils/getBulkMoveErrorMessage.d.ts +1 -0
  142. package/dist/admin/src/hooks/useAIMetadataJob.d.ts +1 -1
  143. package/dist/admin/src/hooks/useAiAvailability.d.ts +1 -1
  144. package/dist/admin/src/hooks/useBulkEdit.d.ts +14 -14
  145. package/dist/admin/src/hooks/useBulkMove.d.ts +146 -15
  146. package/dist/admin/src/hooks/useBulkRemove.d.ts +186 -15
  147. package/dist/admin/src/hooks/useEditAsset.d.ts +4 -4
  148. package/dist/admin/src/hooks/useEditFolder.d.ts +7 -6
  149. package/dist/admin/src/hooks/useUpload.d.ts +1 -1
  150. package/dist/admin/translations/en.json.js +28 -0
  151. package/dist/admin/translations/en.json.js.map +1 -1
  152. package/dist/admin/translations/en.json.mjs +28 -0
  153. package/dist/admin/translations/en.json.mjs.map +1 -1
  154. package/dist/admin/translations/ko.json.js +183 -1
  155. package/dist/admin/translations/ko.json.js.map +1 -1
  156. package/dist/admin/translations/ko.json.mjs +183 -1
  157. package/dist/admin/translations/ko.json.mjs.map +1 -1
  158. package/dist/admin/translations/pl.json.js +54 -29
  159. package/dist/admin/translations/pl.json.js.map +1 -1
  160. package/dist/admin/translations/pl.json.mjs +54 -29
  161. package/dist/admin/translations/pl.json.mjs.map +1 -1
  162. package/dist/server/controllers/admin-upload.js +3 -2
  163. package/dist/server/controllers/admin-upload.js.map +1 -1
  164. package/dist/server/controllers/admin-upload.mjs +3 -2
  165. package/dist/server/controllers/admin-upload.mjs.map +1 -1
  166. package/dist/server/controllers/content-api.js +6 -5
  167. package/dist/server/controllers/content-api.js.map +1 -1
  168. package/dist/server/controllers/content-api.mjs +6 -5
  169. package/dist/server/controllers/content-api.mjs.map +1 -1
  170. package/dist/server/src/controllers/admin-upload.d.ts.map +1 -1
  171. package/dist/server/src/controllers/content-api.d.ts.map +1 -1
  172. package/dist/server/src/controllers/index.d.ts +1 -1
  173. package/dist/server/src/index.d.ts +11 -11
  174. package/dist/server/src/routes/index.d.ts +1 -1
  175. package/dist/server/src/services/image-manipulation.d.ts +3 -3
  176. package/dist/server/src/services/index.d.ts +9 -9
  177. package/package.json +18 -13
@@ -1 +1 @@
1
- {"version":3,"file":"content-api.js","sources":["../../../server/src/controllers/content-api.ts"],"sourcesContent":["import _ from 'lodash';\nimport utils, { async, errors } from '@strapi/utils';\n\nimport type { Context } from 'koa';\nimport type { Core } from '@strapi/types';\n\nimport { getService } from '../utils';\nimport { FILE_MODEL_UID } from '../constants';\nimport { validateUploadBody } from './validation/content-api/upload';\nimport { FileInfo } from '../types';\nimport { prepareUploadRequest } from '../utils/mime-validation';\n\nconst { ValidationError } = utils.errors;\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const sanitizeOutput = async (data: unknown | unknown[], ctx: Context) => {\n const schema = strapi.getModel(FILE_MODEL_UID);\n const { auth } = ctx.state;\n\n return strapi.contentAPI.sanitize.output(data, schema, { auth });\n };\n\n const validateQuery = async (data: Record<string, unknown>, ctx: Context) => {\n const schema = strapi.getModel(FILE_MODEL_UID);\n const { auth, route } = ctx.state;\n\n return strapi.contentAPI.validate.query(data, schema, { auth, route });\n };\n\n const sanitizeQuery = async (data: Record<string, unknown>, ctx: Context) => {\n const schema = strapi.getModel(FILE_MODEL_UID);\n const { auth, route } = ctx.state;\n\n return strapi.contentAPI.sanitize.query(data, schema, { auth, route });\n };\n\n return {\n async find(ctx: Context) {\n await validateQuery(ctx.query, ctx);\n const sanitizedQuery = await sanitizeQuery(ctx.query, ctx);\n\n const files = await getService('upload').findMany(sanitizedQuery);\n\n const signedFiles = await async.map(files, getService('file').signFileUrls);\n\n ctx.body = await sanitizeOutput(signedFiles, ctx);\n },\n\n async findPage(ctx: Context) {\n await validateQuery(ctx.query, ctx);\n const sanitizedQuery = await sanitizeQuery(ctx.query, ctx);\n\n const { results, pagination } = await getService('upload').findAndCountPage(sanitizedQuery);\n\n const data = await sanitizeOutput(results, ctx);\n\n ctx.body = { data, meta: { pagination } };\n },\n\n async findOne(ctx: Context) {\n const {\n params: { id },\n } = ctx;\n\n await validateQuery(ctx.query, ctx);\n const sanitizedQuery = await sanitizeQuery(ctx.query, ctx);\n\n const file = await getService('upload').findOne(id, sanitizedQuery.populate!);\n\n if (!file) {\n return ctx.notFound('file.notFound');\n }\n\n const signedFile = await getService('file').signFileUrls(file);\n\n ctx.body = await sanitizeOutput(signedFile, ctx);\n },\n\n async destroy(ctx: Context) {\n const {\n params: { id },\n } = ctx;\n\n const file = await getService('upload').findOne(id);\n\n if (!file) {\n return ctx.notFound('file.notFound');\n }\n\n await getService('upload').remove(file);\n\n const signedFile = await getService('file').signFileUrls(file);\n\n ctx.body = await sanitizeOutput(signedFile, ctx);\n },\n\n async updateFileInfo(ctx: Context) {\n const {\n query: { id },\n request: { body },\n } = ctx;\n const data = await validateUploadBody(body);\n\n if (!id || (typeof id !== 'string' && typeof id !== 'number')) {\n throw new ValidationError('File id is required and must be a single value');\n }\n\n const result = await getService('upload').updateFileInfo(id, data.fileInfo as any);\n\n const signedResult = await getService('file').signFileUrls(result);\n\n ctx.body = await sanitizeOutput(signedResult, ctx);\n },\n\n async replaceFile(ctx: Context) {\n const {\n query: { id },\n request: { body, files: { files: filesInput } = {} },\n } = ctx;\n\n const {\n validFiles,\n filteredBody,\n errors: validationErrors,\n } = await prepareUploadRequest(filesInput, body, strapi);\n if (validFiles.length === 0) {\n throw new errors.ValidationError(validationErrors[0].message);\n }\n\n // cannot replace with more than one file\n if (Array.isArray(filesInput)) {\n throw new ValidationError('Cannot replace a file with multiple ones');\n }\n\n if (!id || (typeof id !== 'string' && typeof id !== 'number')) {\n throw new ValidationError('File id is required and must be a single value');\n }\n\n const data = (await validateUploadBody(filteredBody)) as { fileInfo: FileInfo };\n\n const replacedFiles = await getService('upload').replace(id, { data, file: validFiles[0] });\n\n const signedFiles = await getService('file').signFileUrls(replacedFiles);\n\n ctx.body = await sanitizeOutput(signedFiles, ctx);\n },\n\n async uploadFiles(ctx: Context) {\n const {\n request: { body, files: { files: filesInput } = {} },\n } = ctx;\n\n const {\n validFiles,\n filteredBody,\n errors: validationErrors,\n } = await prepareUploadRequest(filesInput, body, strapi);\n if (validFiles.length === 0) {\n throw new errors.ValidationError(validationErrors[0].message);\n }\n\n const isMultipleFiles = validFiles.length > 1;\n const data: any = await validateUploadBody(filteredBody, isMultipleFiles);\n\n const apiUploadFolderService = getService('api-upload-folder');\n\n const apiUploadFolder = await apiUploadFolderService.getAPIUploadFolder();\n\n if (isMultipleFiles) {\n data.fileInfo = data.fileInfo || [];\n data.fileInfo = validFiles.map((_f, i) => ({\n ...data.fileInfo[i],\n folder: apiUploadFolder.id,\n }));\n } else {\n data.fileInfo = { ...data.fileInfo, folder: apiUploadFolder.id };\n }\n\n const uploadedFiles = await getService('upload').upload({\n data,\n files: validFiles,\n });\n\n const signedFiles = await async.map(uploadedFiles as any[], getService('file').signFileUrls);\n\n ctx.body = await sanitizeOutput(signedFiles, ctx);\n ctx.status = 201;\n },\n\n // TODO: split into multiple endpoints\n async upload(ctx: Context) {\n const {\n query: { id },\n request: { files: { files } = {} },\n } = ctx;\n\n if (_.isEmpty(files) || (!Array.isArray(files) && files.size === 0)) {\n if (id) {\n return this.updateFileInfo(ctx);\n }\n\n throw new ValidationError('Files are empty');\n }\n\n await (id ? this.replaceFile : this.uploadFiles)(ctx);\n },\n };\n};\n"],"names":["ValidationError","utils","errors","strapi","sanitizeOutput","data","ctx","schema","getModel","FILE_MODEL_UID","auth","state","contentAPI","sanitize","output","validateQuery","route","validate","query","sanitizeQuery","find","sanitizedQuery","files","getService","findMany","signedFiles","async","map","signFileUrls","body","findPage","results","pagination","findAndCountPage","meta","findOne","params","id","file","populate","notFound","signedFile","destroy","remove","updateFileInfo","request","validateUploadBody","result","fileInfo","signedResult","replaceFile","filesInput","validFiles","filteredBody","validationErrors","prepareUploadRequest","length","message","Array","isArray","replacedFiles","replace","uploadFiles","isMultipleFiles","apiUploadFolderService","apiUploadFolder","getAPIUploadFolder","_f","i","folder","uploadedFiles","upload","status","_","isEmpty","size"],"mappings":"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"}
1
+ {"version":3,"file":"content-api.js","sources":["../../../server/src/controllers/content-api.ts"],"sourcesContent":["import _ from 'lodash';\nimport utils, { async, errors } from '@strapi/utils';\n\nimport type { Context } from 'koa';\nimport type { Core } from '@strapi/types';\n\nimport { getService } from '../utils';\nimport { FILE_MODEL_UID } from '../constants';\nimport { validateUploadBody } from './validation/content-api/upload';\nimport { FileInfo } from '../types';\nimport { prepareUploadRequest } from '../utils/mime-validation';\n\nconst { ValidationError } = utils.errors;\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const sanitizeOutput = async (data: unknown | unknown[], ctx: Context) => {\n const schema = strapi.getModel(FILE_MODEL_UID);\n const { auth } = ctx.state;\n\n return strapi.contentAPI.sanitize.output(data, schema, { auth });\n };\n\n const validateQuery = async (data: Record<string, unknown>, ctx: Context) => {\n const schema = strapi.getModel(FILE_MODEL_UID);\n const { auth, route } = ctx.state;\n\n return strapi.contentAPI.validate.query(data, schema, { auth, route });\n };\n\n const sanitizeQuery = async (data: Record<string, unknown>, ctx: Context) => {\n const schema = strapi.getModel(FILE_MODEL_UID);\n const { auth, route } = ctx.state;\n\n return strapi.contentAPI.sanitize.query(data, schema, { auth, route });\n };\n\n return {\n async find(ctx: Context) {\n await validateQuery(ctx.query, ctx);\n const sanitizedQuery = await sanitizeQuery(ctx.query, ctx);\n\n const files = await getService('upload').findMany(sanitizedQuery);\n\n const signedFiles = await async.map(files, getService('file').signFileUrls);\n\n ctx.body = await sanitizeOutput(signedFiles, ctx);\n },\n\n async findPage(ctx: Context) {\n await validateQuery(ctx.query, ctx);\n const sanitizedQuery = await sanitizeQuery(ctx.query, ctx);\n\n const { results, pagination } = await getService('upload').findAndCountPage(sanitizedQuery);\n\n const data = await sanitizeOutput(results, ctx);\n\n ctx.body = { data, meta: { pagination } };\n },\n\n async findOne(ctx: Context) {\n const {\n params: { id },\n } = ctx;\n\n await validateQuery(ctx.query, ctx);\n const sanitizedQuery = await sanitizeQuery(ctx.query, ctx);\n\n const file = await getService('upload').findOne(id, sanitizedQuery.populate!);\n\n if (!file) {\n return ctx.notFound('file.notFound');\n }\n\n const signedFile = await getService('file').signFileUrls(file);\n\n ctx.body = await sanitizeOutput(signedFile, ctx);\n },\n\n async destroy(ctx: Context) {\n const {\n params: { id },\n } = ctx;\n\n const file = await getService('upload').findOne(id);\n\n if (!file) {\n return ctx.notFound('file.notFound');\n }\n\n await getService('upload').remove(file);\n\n const signedFile = await getService('file').signFileUrls(file);\n\n ctx.body = await sanitizeOutput(signedFile, ctx);\n },\n\n async updateFileInfo(ctx: Context) {\n const {\n query: { id },\n request: { body },\n } = ctx;\n const data = await validateUploadBody(body);\n\n if (!id || (typeof id !== 'string' && typeof id !== 'number')) {\n throw new ValidationError('File id is required and must be a single value');\n }\n\n const result = await getService('upload').updateFileInfo(id, data.fileInfo as any);\n\n const signedResult = await getService('file').signFileUrls(result);\n\n ctx.body = await sanitizeOutput(signedResult, ctx);\n },\n\n async replaceFile(ctx: Context) {\n const {\n query: { id },\n request: { body, files: { files: filesInput } = {} },\n } = ctx;\n\n // cannot replace with more than one file\n if (Array.isArray(filesInput) && filesInput.length > 1) {\n throw new ValidationError('Cannot replace a file with multiple ones');\n }\n\n const files = Array.isArray(filesInput) ? filesInput[0] : filesInput;\n\n const {\n validFiles,\n filteredBody,\n errors: validationErrors,\n } = await prepareUploadRequest(files, body, strapi);\n if (validFiles.length === 0) {\n throw new errors.ValidationError(validationErrors[0].message);\n }\n\n if (!id || (typeof id !== 'string' && typeof id !== 'number')) {\n throw new ValidationError('File id is required and must be a single value');\n }\n\n const data = (await validateUploadBody(filteredBody)) as { fileInfo: FileInfo };\n\n const replacedFiles = await getService('upload').replace(id, { data, file: validFiles[0] });\n\n const signedFiles = await getService('file').signFileUrls(replacedFiles);\n\n ctx.body = await sanitizeOutput(signedFiles, ctx);\n },\n\n async uploadFiles(ctx: Context) {\n const {\n request: { body, files: { files: filesInput } = {} },\n } = ctx;\n\n const {\n validFiles,\n filteredBody,\n errors: validationErrors,\n } = await prepareUploadRequest(filesInput, body, strapi);\n if (validFiles.length === 0) {\n throw new errors.ValidationError(validationErrors[0].message);\n }\n\n const isMultipleFiles = validFiles.length > 1;\n const data: any = await validateUploadBody(filteredBody, isMultipleFiles);\n\n const apiUploadFolderService = getService('api-upload-folder');\n\n const apiUploadFolder = await apiUploadFolderService.getAPIUploadFolder();\n\n if (isMultipleFiles) {\n data.fileInfo = data.fileInfo || [];\n data.fileInfo = validFiles.map((_f, i) => ({\n ...data.fileInfo[i],\n folder: apiUploadFolder.id,\n }));\n } else {\n data.fileInfo = { ...data.fileInfo, folder: apiUploadFolder.id };\n }\n\n const uploadedFiles = await getService('upload').upload({\n data,\n files: validFiles,\n });\n\n const signedFiles = await async.map(uploadedFiles as any[], getService('file').signFileUrls);\n\n ctx.body = await sanitizeOutput(signedFiles, ctx);\n ctx.status = 201;\n },\n\n // TODO: split into multiple endpoints\n async upload(ctx: Context) {\n const {\n query: { id },\n request: { files: { files } = {} },\n } = ctx;\n\n if (_.isEmpty(files) || (!Array.isArray(files) && files.size === 0)) {\n if (id) {\n return this.updateFileInfo(ctx);\n }\n\n throw new ValidationError('Files are empty');\n }\n\n await (id ? this.replaceFile : this.uploadFiles)(ctx);\n },\n };\n};\n"],"names":["ValidationError","utils","errors","strapi","sanitizeOutput","data","ctx","schema","getModel","FILE_MODEL_UID","auth","state","contentAPI","sanitize","output","validateQuery","route","validate","query","sanitizeQuery","find","sanitizedQuery","files","getService","findMany","signedFiles","async","map","signFileUrls","body","findPage","results","pagination","findAndCountPage","meta","findOne","params","id","file","populate","notFound","signedFile","destroy","remove","updateFileInfo","request","validateUploadBody","result","fileInfo","signedResult","replaceFile","filesInput","Array","isArray","length","validFiles","filteredBody","validationErrors","prepareUploadRequest","message","replacedFiles","replace","uploadFiles","isMultipleFiles","apiUploadFolderService","apiUploadFolder","getAPIUploadFolder","_f","i","folder","uploadedFiles","upload","status","_","isEmpty","size"],"mappings":"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"}
@@ -83,14 +83,15 @@ var contentApi = (({ strapi })=>{
83
83
  },
84
84
  async replaceFile (ctx) {
85
85
  const { query: { id }, request: { body, files: { files: filesInput } = {} } } = ctx;
86
- const { validFiles, filteredBody, errors: validationErrors } = await prepareUploadRequest(filesInput, body, strapi);
87
- if (validFiles.length === 0) {
88
- throw new errors.ValidationError(validationErrors[0].message);
89
- }
90
86
  // cannot replace with more than one file
91
- if (Array.isArray(filesInput)) {
87
+ if (Array.isArray(filesInput) && filesInput.length > 1) {
92
88
  throw new ValidationError('Cannot replace a file with multiple ones');
93
89
  }
90
+ const files = Array.isArray(filesInput) ? filesInput[0] : filesInput;
91
+ const { validFiles, filteredBody, errors: validationErrors } = await prepareUploadRequest(files, body, strapi);
92
+ if (validFiles.length === 0) {
93
+ throw new errors.ValidationError(validationErrors[0].message);
94
+ }
94
95
  if (!id || typeof id !== 'string' && typeof id !== 'number') {
95
96
  throw new ValidationError('File id is required and must be a single value');
96
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"content-api.mjs","sources":["../../../server/src/controllers/content-api.ts"],"sourcesContent":["import _ from 'lodash';\nimport utils, { async, errors } from '@strapi/utils';\n\nimport type { Context } from 'koa';\nimport type { Core } from '@strapi/types';\n\nimport { getService } from '../utils';\nimport { FILE_MODEL_UID } from '../constants';\nimport { validateUploadBody } from './validation/content-api/upload';\nimport { FileInfo } from '../types';\nimport { prepareUploadRequest } from '../utils/mime-validation';\n\nconst { ValidationError } = utils.errors;\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const sanitizeOutput = async (data: unknown | unknown[], ctx: Context) => {\n const schema = strapi.getModel(FILE_MODEL_UID);\n const { auth } = ctx.state;\n\n return strapi.contentAPI.sanitize.output(data, schema, { auth });\n };\n\n const validateQuery = async (data: Record<string, unknown>, ctx: Context) => {\n const schema = strapi.getModel(FILE_MODEL_UID);\n const { auth, route } = ctx.state;\n\n return strapi.contentAPI.validate.query(data, schema, { auth, route });\n };\n\n const sanitizeQuery = async (data: Record<string, unknown>, ctx: Context) => {\n const schema = strapi.getModel(FILE_MODEL_UID);\n const { auth, route } = ctx.state;\n\n return strapi.contentAPI.sanitize.query(data, schema, { auth, route });\n };\n\n return {\n async find(ctx: Context) {\n await validateQuery(ctx.query, ctx);\n const sanitizedQuery = await sanitizeQuery(ctx.query, ctx);\n\n const files = await getService('upload').findMany(sanitizedQuery);\n\n const signedFiles = await async.map(files, getService('file').signFileUrls);\n\n ctx.body = await sanitizeOutput(signedFiles, ctx);\n },\n\n async findPage(ctx: Context) {\n await validateQuery(ctx.query, ctx);\n const sanitizedQuery = await sanitizeQuery(ctx.query, ctx);\n\n const { results, pagination } = await getService('upload').findAndCountPage(sanitizedQuery);\n\n const data = await sanitizeOutput(results, ctx);\n\n ctx.body = { data, meta: { pagination } };\n },\n\n async findOne(ctx: Context) {\n const {\n params: { id },\n } = ctx;\n\n await validateQuery(ctx.query, ctx);\n const sanitizedQuery = await sanitizeQuery(ctx.query, ctx);\n\n const file = await getService('upload').findOne(id, sanitizedQuery.populate!);\n\n if (!file) {\n return ctx.notFound('file.notFound');\n }\n\n const signedFile = await getService('file').signFileUrls(file);\n\n ctx.body = await sanitizeOutput(signedFile, ctx);\n },\n\n async destroy(ctx: Context) {\n const {\n params: { id },\n } = ctx;\n\n const file = await getService('upload').findOne(id);\n\n if (!file) {\n return ctx.notFound('file.notFound');\n }\n\n await getService('upload').remove(file);\n\n const signedFile = await getService('file').signFileUrls(file);\n\n ctx.body = await sanitizeOutput(signedFile, ctx);\n },\n\n async updateFileInfo(ctx: Context) {\n const {\n query: { id },\n request: { body },\n } = ctx;\n const data = await validateUploadBody(body);\n\n if (!id || (typeof id !== 'string' && typeof id !== 'number')) {\n throw new ValidationError('File id is required and must be a single value');\n }\n\n const result = await getService('upload').updateFileInfo(id, data.fileInfo as any);\n\n const signedResult = await getService('file').signFileUrls(result);\n\n ctx.body = await sanitizeOutput(signedResult, ctx);\n },\n\n async replaceFile(ctx: Context) {\n const {\n query: { id },\n request: { body, files: { files: filesInput } = {} },\n } = ctx;\n\n const {\n validFiles,\n filteredBody,\n errors: validationErrors,\n } = await prepareUploadRequest(filesInput, body, strapi);\n if (validFiles.length === 0) {\n throw new errors.ValidationError(validationErrors[0].message);\n }\n\n // cannot replace with more than one file\n if (Array.isArray(filesInput)) {\n throw new ValidationError('Cannot replace a file with multiple ones');\n }\n\n if (!id || (typeof id !== 'string' && typeof id !== 'number')) {\n throw new ValidationError('File id is required and must be a single value');\n }\n\n const data = (await validateUploadBody(filteredBody)) as { fileInfo: FileInfo };\n\n const replacedFiles = await getService('upload').replace(id, { data, file: validFiles[0] });\n\n const signedFiles = await getService('file').signFileUrls(replacedFiles);\n\n ctx.body = await sanitizeOutput(signedFiles, ctx);\n },\n\n async uploadFiles(ctx: Context) {\n const {\n request: { body, files: { files: filesInput } = {} },\n } = ctx;\n\n const {\n validFiles,\n filteredBody,\n errors: validationErrors,\n } = await prepareUploadRequest(filesInput, body, strapi);\n if (validFiles.length === 0) {\n throw new errors.ValidationError(validationErrors[0].message);\n }\n\n const isMultipleFiles = validFiles.length > 1;\n const data: any = await validateUploadBody(filteredBody, isMultipleFiles);\n\n const apiUploadFolderService = getService('api-upload-folder');\n\n const apiUploadFolder = await apiUploadFolderService.getAPIUploadFolder();\n\n if (isMultipleFiles) {\n data.fileInfo = data.fileInfo || [];\n data.fileInfo = validFiles.map((_f, i) => ({\n ...data.fileInfo[i],\n folder: apiUploadFolder.id,\n }));\n } else {\n data.fileInfo = { ...data.fileInfo, folder: apiUploadFolder.id };\n }\n\n const uploadedFiles = await getService('upload').upload({\n data,\n files: validFiles,\n });\n\n const signedFiles = await async.map(uploadedFiles as any[], getService('file').signFileUrls);\n\n ctx.body = await sanitizeOutput(signedFiles, ctx);\n ctx.status = 201;\n },\n\n // TODO: split into multiple endpoints\n async upload(ctx: Context) {\n const {\n query: { id },\n request: { files: { files } = {} },\n } = ctx;\n\n if (_.isEmpty(files) || (!Array.isArray(files) && files.size === 0)) {\n if (id) {\n return this.updateFileInfo(ctx);\n }\n\n throw new ValidationError('Files are empty');\n }\n\n await (id ? this.replaceFile : this.uploadFiles)(ctx);\n },\n };\n};\n"],"names":["ValidationError","utils","errors","strapi","sanitizeOutput","data","ctx","schema","getModel","FILE_MODEL_UID","auth","state","contentAPI","sanitize","output","validateQuery","route","validate","query","sanitizeQuery","find","sanitizedQuery","files","getService","findMany","signedFiles","async","map","signFileUrls","body","findPage","results","pagination","findAndCountPage","meta","findOne","params","id","file","populate","notFound","signedFile","destroy","remove","updateFileInfo","request","validateUploadBody","result","fileInfo","signedResult","replaceFile","filesInput","validFiles","filteredBody","validationErrors","prepareUploadRequest","length","message","Array","isArray","replacedFiles","replace","uploadFiles","isMultipleFiles","apiUploadFolderService","apiUploadFolder","getAPIUploadFolder","_f","i","folder","uploadedFiles","upload","status","_","isEmpty","size"],"mappings":"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"}
1
+ {"version":3,"file":"content-api.mjs","sources":["../../../server/src/controllers/content-api.ts"],"sourcesContent":["import _ from 'lodash';\nimport utils, { async, errors } from '@strapi/utils';\n\nimport type { Context } from 'koa';\nimport type { Core } from '@strapi/types';\n\nimport { getService } from '../utils';\nimport { FILE_MODEL_UID } from '../constants';\nimport { validateUploadBody } from './validation/content-api/upload';\nimport { FileInfo } from '../types';\nimport { prepareUploadRequest } from '../utils/mime-validation';\n\nconst { ValidationError } = utils.errors;\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const sanitizeOutput = async (data: unknown | unknown[], ctx: Context) => {\n const schema = strapi.getModel(FILE_MODEL_UID);\n const { auth } = ctx.state;\n\n return strapi.contentAPI.sanitize.output(data, schema, { auth });\n };\n\n const validateQuery = async (data: Record<string, unknown>, ctx: Context) => {\n const schema = strapi.getModel(FILE_MODEL_UID);\n const { auth, route } = ctx.state;\n\n return strapi.contentAPI.validate.query(data, schema, { auth, route });\n };\n\n const sanitizeQuery = async (data: Record<string, unknown>, ctx: Context) => {\n const schema = strapi.getModel(FILE_MODEL_UID);\n const { auth, route } = ctx.state;\n\n return strapi.contentAPI.sanitize.query(data, schema, { auth, route });\n };\n\n return {\n async find(ctx: Context) {\n await validateQuery(ctx.query, ctx);\n const sanitizedQuery = await sanitizeQuery(ctx.query, ctx);\n\n const files = await getService('upload').findMany(sanitizedQuery);\n\n const signedFiles = await async.map(files, getService('file').signFileUrls);\n\n ctx.body = await sanitizeOutput(signedFiles, ctx);\n },\n\n async findPage(ctx: Context) {\n await validateQuery(ctx.query, ctx);\n const sanitizedQuery = await sanitizeQuery(ctx.query, ctx);\n\n const { results, pagination } = await getService('upload').findAndCountPage(sanitizedQuery);\n\n const data = await sanitizeOutput(results, ctx);\n\n ctx.body = { data, meta: { pagination } };\n },\n\n async findOne(ctx: Context) {\n const {\n params: { id },\n } = ctx;\n\n await validateQuery(ctx.query, ctx);\n const sanitizedQuery = await sanitizeQuery(ctx.query, ctx);\n\n const file = await getService('upload').findOne(id, sanitizedQuery.populate!);\n\n if (!file) {\n return ctx.notFound('file.notFound');\n }\n\n const signedFile = await getService('file').signFileUrls(file);\n\n ctx.body = await sanitizeOutput(signedFile, ctx);\n },\n\n async destroy(ctx: Context) {\n const {\n params: { id },\n } = ctx;\n\n const file = await getService('upload').findOne(id);\n\n if (!file) {\n return ctx.notFound('file.notFound');\n }\n\n await getService('upload').remove(file);\n\n const signedFile = await getService('file').signFileUrls(file);\n\n ctx.body = await sanitizeOutput(signedFile, ctx);\n },\n\n async updateFileInfo(ctx: Context) {\n const {\n query: { id },\n request: { body },\n } = ctx;\n const data = await validateUploadBody(body);\n\n if (!id || (typeof id !== 'string' && typeof id !== 'number')) {\n throw new ValidationError('File id is required and must be a single value');\n }\n\n const result = await getService('upload').updateFileInfo(id, data.fileInfo as any);\n\n const signedResult = await getService('file').signFileUrls(result);\n\n ctx.body = await sanitizeOutput(signedResult, ctx);\n },\n\n async replaceFile(ctx: Context) {\n const {\n query: { id },\n request: { body, files: { files: filesInput } = {} },\n } = ctx;\n\n // cannot replace with more than one file\n if (Array.isArray(filesInput) && filesInput.length > 1) {\n throw new ValidationError('Cannot replace a file with multiple ones');\n }\n\n const files = Array.isArray(filesInput) ? filesInput[0] : filesInput;\n\n const {\n validFiles,\n filteredBody,\n errors: validationErrors,\n } = await prepareUploadRequest(files, body, strapi);\n if (validFiles.length === 0) {\n throw new errors.ValidationError(validationErrors[0].message);\n }\n\n if (!id || (typeof id !== 'string' && typeof id !== 'number')) {\n throw new ValidationError('File id is required and must be a single value');\n }\n\n const data = (await validateUploadBody(filteredBody)) as { fileInfo: FileInfo };\n\n const replacedFiles = await getService('upload').replace(id, { data, file: validFiles[0] });\n\n const signedFiles = await getService('file').signFileUrls(replacedFiles);\n\n ctx.body = await sanitizeOutput(signedFiles, ctx);\n },\n\n async uploadFiles(ctx: Context) {\n const {\n request: { body, files: { files: filesInput } = {} },\n } = ctx;\n\n const {\n validFiles,\n filteredBody,\n errors: validationErrors,\n } = await prepareUploadRequest(filesInput, body, strapi);\n if (validFiles.length === 0) {\n throw new errors.ValidationError(validationErrors[0].message);\n }\n\n const isMultipleFiles = validFiles.length > 1;\n const data: any = await validateUploadBody(filteredBody, isMultipleFiles);\n\n const apiUploadFolderService = getService('api-upload-folder');\n\n const apiUploadFolder = await apiUploadFolderService.getAPIUploadFolder();\n\n if (isMultipleFiles) {\n data.fileInfo = data.fileInfo || [];\n data.fileInfo = validFiles.map((_f, i) => ({\n ...data.fileInfo[i],\n folder: apiUploadFolder.id,\n }));\n } else {\n data.fileInfo = { ...data.fileInfo, folder: apiUploadFolder.id };\n }\n\n const uploadedFiles = await getService('upload').upload({\n data,\n files: validFiles,\n });\n\n const signedFiles = await async.map(uploadedFiles as any[], getService('file').signFileUrls);\n\n ctx.body = await sanitizeOutput(signedFiles, ctx);\n ctx.status = 201;\n },\n\n // TODO: split into multiple endpoints\n async upload(ctx: Context) {\n const {\n query: { id },\n request: { files: { files } = {} },\n } = ctx;\n\n if (_.isEmpty(files) || (!Array.isArray(files) && files.size === 0)) {\n if (id) {\n return this.updateFileInfo(ctx);\n }\n\n throw new ValidationError('Files are empty');\n }\n\n await (id ? this.replaceFile : this.uploadFiles)(ctx);\n },\n };\n};\n"],"names":["ValidationError","utils","errors","strapi","sanitizeOutput","data","ctx","schema","getModel","FILE_MODEL_UID","auth","state","contentAPI","sanitize","output","validateQuery","route","validate","query","sanitizeQuery","find","sanitizedQuery","files","getService","findMany","signedFiles","async","map","signFileUrls","body","findPage","results","pagination","findAndCountPage","meta","findOne","params","id","file","populate","notFound","signedFile","destroy","remove","updateFileInfo","request","validateUploadBody","result","fileInfo","signedResult","replaceFile","filesInput","Array","isArray","length","validFiles","filteredBody","validationErrors","prepareUploadRequest","message","replacedFiles","replace","uploadFiles","isMultipleFiles","apiUploadFolderService","apiUploadFolder","getAPIUploadFolder","_f","i","folder","uploadedFiles","upload","status","_","isEmpty","size"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"admin-upload.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/admin-upload.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;4BAWH,OAAO;wBA+BX,OAAO;qBA6BV,OAAO;qBAyDP,OAAO;IA0E9B;;;;;;;;OAQG;6BAC4B,OAAO;IAsEtC;;;;;;;;;;;OAWG;iCACgC,OAAO;gBAmIxB,OAAO;;AA9Z3B,wBA8aE"}
1
+ {"version":3,"file":"admin-upload.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/admin-upload.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;4BAWH,OAAO;wBA+BX,OAAO;qBA6BV,OAAO;qBA2DP,OAAO;IA0E9B;;;;;;;;OAQG;6BAC4B,OAAO;IAsEtC;;;;;;;;;;;OAWG;iCACgC,OAAO;gBAmIxB,OAAO;;AAha3B,wBAgbE"}
@@ -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;cAuB/B,OAAO;kBAWH,OAAO;iBAWR,OAAO;iBAmBP,OAAO;wBAkBA,OAAO;qBAkBV,OAAO;qBAiCP,OAAO;gBA2CZ,OAAO;;AAhL7B,wBAiME"}
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;cAuB/B,OAAO;kBAWH,OAAO;iBAWR,OAAO;iBAmBP,OAAO;wBAkBA,OAAO;qBAkBV,OAAO;qBAmCP,OAAO;gBA2CZ,OAAO;;AAlL7B,wBAmME"}
@@ -32,7 +32,7 @@ export declare const controllers: {
32
32
  upload(ctx: import("koa").Context): Promise<void>;
33
33
  };
34
34
  'content-api': ({ strapi }: {
35
- strapi: import("@strapi/types/dist/core").Strapi;
35
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
36
36
  }) => {
37
37
  find(ctx: import("koa").Context): Promise<void>;
38
38
  findPage(ctx: import("koa").Context): Promise<void>;
@@ -38,7 +38,7 @@ declare const _default: () => {
38
38
  };
39
39
  'content-api': () => {
40
40
  type: "content-api";
41
- routes: import("@strapi/types/dist/core").RouteInput[];
41
+ routes: import("@strapi/types/dist/core/route.js").RouteInput[];
42
42
  };
43
43
  viewConfiguration: {
44
44
  type: string;
@@ -91,7 +91,7 @@ declare const _default: () => {
91
91
  upload(ctx: import("koa").Context): Promise<void>;
92
92
  };
93
93
  'content-api': ({ strapi }: {
94
- strapi: import("@strapi/types/dist/core").Strapi;
94
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
95
95
  }) => {
96
96
  find(ctx: import("koa").Context): Promise<void>;
97
97
  findPage(ctx: import("koa").Context): Promise<void>;
@@ -282,14 +282,14 @@ declare const _default: () => {
282
282
  };
283
283
  services: {
284
284
  provider: ({ strapi }: {
285
- strapi: import("@strapi/types/dist/core").Strapi;
285
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
286
286
  }) => {
287
287
  checkFileSize(file: import("./types").UploadableFile): Promise<void>;
288
288
  upload(file: import("./types").UploadableFile): Promise<void>;
289
289
  replace(newFile: import("./types").UploadableFile, oldFile: import("./types").File): Promise<void>;
290
290
  };
291
291
  upload: ({ strapi }: {
292
- strapi: import("@strapi/types/dist/core").Strapi;
292
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
293
293
  }) => {
294
294
  formatFileInfo: ({ filename, type, size }: {
295
295
  filename: string;
@@ -390,7 +390,7 @@ declare const _default: () => {
390
390
  fetchUrlToInputFile: (url: string, tmpWorkingDirectory: string, sizeLimit?: number) => Promise<import("./services/file").FetchUrlResult>;
391
391
  };
392
392
  weeklyMetrics: ({ strapi }: {
393
- strapi: import("@strapi/types/dist/core").Strapi;
393
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
394
394
  }) => {
395
395
  computeMetrics(): Promise<{
396
396
  assetNumber: number;
@@ -404,16 +404,16 @@ declare const _default: () => {
404
404
  registerCron(): Promise<void>;
405
405
  };
406
406
  metrics: ({ strapi }: {
407
- strapi: import("@strapi/types/dist/core").Strapi;
407
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
408
408
  }) => {
409
409
  trackUsage(event: string, properties?: Record<string, any>): Promise<boolean>;
410
410
  sendUploadPluginMetrics(): Promise<void>;
411
411
  };
412
412
  'image-manipulation': {
413
413
  isFaultyImage: (file: import("./types").UploadableFile) => Promise<unknown>;
414
- isOptimizableImage: (file: import("./types").UploadableFile) => Promise<boolean | undefined>;
415
- isResizableImage: (file: import("./types").UploadableFile) => Promise<boolean | undefined>;
416
- isImage: (file: import("./types").UploadableFile) => Promise<boolean | undefined>;
414
+ isOptimizableImage: (file: import("./types").UploadableFile) => Promise<boolean>;
415
+ isResizableImage: (file: import("./types").UploadableFile) => Promise<boolean>;
416
+ isImage: (file: import("./types").UploadableFile) => Promise<boolean>;
417
417
  getDimensions: (file: import("./types").UploadableFile) => Promise<{
418
418
  width: number | null;
419
419
  height: number | null;
@@ -433,7 +433,7 @@ declare const _default: () => {
433
433
  signFileUrlsOnDocumentService: () => Promise<void>;
434
434
  };
435
435
  aiMetadata: ({ strapi }: {
436
- strapi: import("@strapi/types/dist/core").Strapi;
436
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
437
437
  }) => {
438
438
  isEnabled(): Promise<boolean>;
439
439
  countImagesWithoutMetadata(): Promise<{
@@ -455,7 +455,7 @@ declare const _default: () => {
455
455
  } | null>>;
456
456
  };
457
457
  aiMetadataJobs: ({ strapi }: {
458
- strapi: import("@strapi/types/dist/core").Strapi;
458
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
459
459
  }) => {
460
460
  createJob(): Promise<number>;
461
461
  getJob(jobId: number): Promise<import("./services/ai-metadata-jobs").AIMetadataJob | null>;
@@ -17,7 +17,7 @@ export declare const routes: {
17
17
  };
18
18
  'content-api': () => {
19
19
  type: "content-api";
20
- routes: import("@strapi/types/dist/core").RouteInput[];
20
+ routes: import("@strapi/types/dist/core/route.js").RouteInput[];
21
21
  };
22
22
  viewConfiguration: {
23
23
  type: string;
@@ -10,9 +10,9 @@ declare module 'sharp' {
10
10
  }
11
11
  declare const _default: {
12
12
  isFaultyImage: (file: UploadableFile) => Promise<unknown>;
13
- isOptimizableImage: (file: UploadableFile) => Promise<boolean | undefined>;
14
- isResizableImage: (file: UploadableFile) => Promise<boolean | undefined>;
15
- isImage: (file: UploadableFile) => Promise<boolean | undefined>;
13
+ isOptimizableImage: (file: UploadableFile) => Promise<boolean>;
14
+ isResizableImage: (file: UploadableFile) => Promise<boolean>;
15
+ isImage: (file: UploadableFile) => Promise<boolean>;
16
16
  getDimensions: (file: UploadableFile) => Promise<Dimensions>;
17
17
  generateResponsiveFormats: (file: UploadableFile) => Promise<{
18
18
  key: string;
@@ -1,13 +1,13 @@
1
1
  export declare const services: {
2
2
  provider: ({ strapi }: {
3
- strapi: import("@strapi/types/dist/core").Strapi;
3
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
4
4
  }) => {
5
5
  checkFileSize(file: import("../types").UploadableFile): Promise<void>;
6
6
  upload(file: import("../types").UploadableFile): Promise<void>;
7
7
  replace(newFile: import("../types").UploadableFile, oldFile: import("../types").File): Promise<void>;
8
8
  };
9
9
  upload: ({ strapi }: {
10
- strapi: import("@strapi/types/dist/core").Strapi;
10
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
11
11
  }) => {
12
12
  formatFileInfo: ({ filename, type, size }: {
13
13
  filename: string;
@@ -108,7 +108,7 @@ export declare const services: {
108
108
  fetchUrlToInputFile: (url: string, tmpWorkingDirectory: string, sizeLimit?: number) => Promise<import("./file").FetchUrlResult>;
109
109
  };
110
110
  weeklyMetrics: ({ strapi }: {
111
- strapi: import("@strapi/types/dist/core").Strapi;
111
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
112
112
  }) => {
113
113
  computeMetrics(): Promise<{
114
114
  assetNumber: number;
@@ -122,16 +122,16 @@ export declare const services: {
122
122
  registerCron(): Promise<void>;
123
123
  };
124
124
  metrics: ({ strapi }: {
125
- strapi: import("@strapi/types/dist/core").Strapi;
125
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
126
126
  }) => {
127
127
  trackUsage(event: string, properties?: Record<string, any>): Promise<boolean>;
128
128
  sendUploadPluginMetrics(): Promise<void>;
129
129
  };
130
130
  'image-manipulation': {
131
131
  isFaultyImage: (file: import("../types").UploadableFile) => Promise<unknown>;
132
- isOptimizableImage: (file: import("../types").UploadableFile) => Promise<boolean | undefined>;
133
- isResizableImage: (file: import("../types").UploadableFile) => Promise<boolean | undefined>;
134
- isImage: (file: import("../types").UploadableFile) => Promise<boolean | undefined>;
132
+ isOptimizableImage: (file: import("../types").UploadableFile) => Promise<boolean>;
133
+ isResizableImage: (file: import("../types").UploadableFile) => Promise<boolean>;
134
+ isImage: (file: import("../types").UploadableFile) => Promise<boolean>;
135
135
  getDimensions: (file: import("../types").UploadableFile) => Promise<{
136
136
  width: number | null;
137
137
  height: number | null;
@@ -151,7 +151,7 @@ export declare const services: {
151
151
  signFileUrlsOnDocumentService: () => Promise<void>;
152
152
  };
153
153
  aiMetadata: ({ strapi }: {
154
- strapi: import("@strapi/types/dist/core").Strapi;
154
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
155
155
  }) => {
156
156
  isEnabled(): Promise<boolean>;
157
157
  countImagesWithoutMetadata(): Promise<{
@@ -173,7 +173,7 @@ export declare const services: {
173
173
  } | null>>;
174
174
  };
175
175
  aiMetadataJobs: ({ strapi }: {
176
- strapi: import("@strapi/types/dist/core").Strapi;
176
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
177
177
  }) => {
178
178
  createJob(): Promise<number>;
179
179
  getJob(jobId: number): Promise<import("./ai-metadata-jobs").AIMetadataJob | null>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/upload",
3
- "version": "5.50.0",
3
+ "version": "5.50.2",
4
4
  "description": "Makes it easy to upload images and files to your Strapi Application.",
5
5
  "homepage": "https://strapi.io",
6
6
  "bugs": {
@@ -59,30 +59,31 @@
59
59
  "build:types:server": "run -T tsc -p server/tsconfig.build.json --emitDeclarationOnly",
60
60
  "build:types:admin": "run -T tsc -p admin/tsconfig.build.json --emitDeclarationOnly",
61
61
  "clean": "run -T rimraf dist",
62
- "lint": "run -T eslint .",
62
+ "lint": "run -T eslint . --max-warnings=0",
63
63
  "test:front": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js",
64
64
  "test:unit": "run -T jest",
65
- "test:ts:back": "run -T tsc --noEmit -p server/tsconfig.json",
65
+ "test:ts:back": "run -T tsc -p server/tsconfig.json",
66
66
  "test:ts:front": "run -T tsc -p admin/tsconfig.json",
67
67
  "test:front:watch": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js --watch",
68
68
  "test:unit:watch": "run -T jest --watch",
69
69
  "watch": "run -T rollup -c -w"
70
70
  },
71
71
  "dependencies": {
72
+ "@dnd-kit/core": "6.3.1",
72
73
  "@mux/mux-player-react": "3.1.0",
73
74
  "@radix-ui/react-dialog": "1.0.5",
74
75
  "@radix-ui/react-toggle-group": "1.1.11",
75
76
  "@reduxjs/toolkit": "1.9.7",
76
- "@strapi/database": "5.50.0",
77
- "@strapi/design-system": "2.2.1",
78
- "@strapi/icons": "2.2.1",
79
- "@strapi/provider-upload-local": "5.50.0",
80
- "@strapi/utils": "5.50.0",
77
+ "@strapi/database": "5.50.2",
78
+ "@strapi/design-system": "2.2.3",
79
+ "@strapi/icons": "2.2.3",
80
+ "@strapi/provider-upload-local": "5.50.2",
81
+ "@strapi/utils": "5.50.2",
81
82
  "byte-size": "8.1.1",
82
83
  "cropperjs": "1.6.1",
83
84
  "date-fns": "2.30.0",
84
85
  "file-type": "21.3.4",
85
- "formik": "2.4.5",
86
+ "formik": "2.4.9",
86
87
  "fs-extra": "11.3.4",
87
88
  "immer": "9.0.21",
88
89
  "koa-range": "0.3.0",
@@ -90,28 +91,32 @@
90
91
  "lodash": "4.18.1",
91
92
  "mime-types": "2.1.35",
92
93
  "prop-types": "^15.8.1",
93
- "qs": "6.15.2",
94
+ "qs": "6.15.3",
94
95
  "react-dnd": "16.0.1",
95
96
  "react-intl": "6.6.2",
96
97
  "react-query": "3.39.3",
97
98
  "react-redux": "8.1.3",
98
99
  "react-select": "5.8.0",
99
- "sharp": "0.33.5",
100
+ "sharp": "0.34.5",
100
101
  "yup": "0.32.9",
101
102
  "zod": "3.25.67"
102
103
  },
103
104
  "devDependencies": {
104
- "@strapi/admin": "5.50.0",
105
- "@strapi/types": "5.50.0",
105
+ "@strapi/admin": "5.50.2",
106
+ "@strapi/types": "5.50.2",
106
107
  "@testing-library/dom": "10.4.1",
108
+ "@testing-library/jest-dom": "6.9.1",
107
109
  "@testing-library/react": "16.3.2",
108
110
  "@testing-library/user-event": "14.6.1",
109
111
  "@types/byte-size": "8.1.2",
110
112
  "@types/fs-extra": "11.0.4",
113
+ "@types/jest": "29.5.2",
111
114
  "@types/koa": "2.15.2",
112
115
  "@types/koa-range": "0.3.5",
113
116
  "@types/koa-static": "4.0.2",
117
+ "@types/node": "20.19.41",
114
118
  "formidable": "3.5.4",
119
+ "jest": "29.6.0",
115
120
  "koa": "2.16.4",
116
121
  "koa-body": "6.0.1",
117
122
  "msw": "2.13.4",