@strapi/upload 5.12.1 → 5.12.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (866) hide show
  1. package/dist/admin/components/AssetCard/AssetCard.js +59 -0
  2. package/dist/admin/components/AssetCard/AssetCard.js.map +1 -0
  3. package/dist/admin/components/AssetCard/AssetCard.mjs +57 -0
  4. package/dist/admin/components/AssetCard/AssetCard.mjs.map +1 -0
  5. package/dist/admin/components/AssetCard/AssetCardBase.js +130 -0
  6. package/dist/admin/components/AssetCard/AssetCardBase.js.map +1 -0
  7. package/dist/admin/components/AssetCard/AssetCardBase.mjs +128 -0
  8. package/dist/admin/components/AssetCard/AssetCardBase.mjs.map +1 -0
  9. package/dist/admin/components/AssetCard/AudioAssetCard.js +40 -0
  10. package/dist/admin/components/AssetCard/AudioAssetCard.js.map +1 -0
  11. package/dist/admin/components/AssetCard/AudioAssetCard.mjs +38 -0
  12. package/dist/admin/components/AssetCard/AudioAssetCard.mjs.map +1 -0
  13. package/dist/admin/components/AssetCard/AudioPreview.js +17 -0
  14. package/dist/admin/components/AssetCard/AudioPreview.js.map +1 -0
  15. package/dist/admin/components/AssetCard/AudioPreview.mjs +15 -0
  16. package/dist/admin/components/AssetCard/AudioPreview.mjs.map +1 -0
  17. package/dist/admin/components/AssetCard/DocAssetCard.js +61 -0
  18. package/dist/admin/components/AssetCard/DocAssetCard.js.map +1 -0
  19. package/dist/admin/components/AssetCard/DocAssetCard.mjs +59 -0
  20. package/dist/admin/components/AssetCard/DocAssetCard.mjs.map +1 -0
  21. package/dist/admin/components/AssetCard/ImageAssetCard.js +37 -0
  22. package/dist/admin/components/AssetCard/ImageAssetCard.js.map +1 -0
  23. package/dist/admin/components/AssetCard/ImageAssetCard.mjs +35 -0
  24. package/dist/admin/components/AssetCard/ImageAssetCard.mjs.map +1 -0
  25. package/dist/admin/components/AssetCard/UploadingAssetCard.js +152 -0
  26. package/dist/admin/components/AssetCard/UploadingAssetCard.js.map +1 -0
  27. package/dist/admin/components/AssetCard/UploadingAssetCard.mjs +131 -0
  28. package/dist/admin/components/AssetCard/UploadingAssetCard.mjs.map +1 -0
  29. package/dist/admin/components/AssetCard/VideoAssetCard.js +72 -0
  30. package/dist/admin/components/AssetCard/VideoAssetCard.js.map +1 -0
  31. package/dist/admin/components/AssetCard/VideoAssetCard.mjs +51 -0
  32. package/dist/admin/components/AssetCard/VideoAssetCard.mjs.map +1 -0
  33. package/dist/admin/components/AssetCard/VideoPreview.js +50 -0
  34. package/dist/admin/components/AssetCard/VideoPreview.js.map +1 -0
  35. package/dist/admin/components/AssetCard/VideoPreview.mjs +48 -0
  36. package/dist/admin/components/AssetCard/VideoPreview.mjs.map +1 -0
  37. package/dist/admin/components/AssetDialog/AssetDialog.js +321 -0
  38. package/dist/admin/components/AssetDialog/AssetDialog.js.map +1 -0
  39. package/dist/admin/components/AssetDialog/AssetDialog.mjs +299 -0
  40. package/dist/admin/components/AssetDialog/AssetDialog.mjs.map +1 -0
  41. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js +313 -0
  42. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -0
  43. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs +311 -0
  44. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -0
  45. package/dist/admin/components/AssetDialog/BrowseStep/Filters.js +70 -0
  46. package/dist/admin/components/AssetDialog/BrowseStep/Filters.js.map +1 -0
  47. package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs +49 -0
  48. package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs.map +1 -0
  49. package/dist/admin/components/AssetDialog/BrowseStep/PageSize.js +58 -0
  50. package/dist/admin/components/AssetDialog/BrowseStep/PageSize.js.map +1 -0
  51. package/dist/admin/components/AssetDialog/BrowseStep/PageSize.mjs +56 -0
  52. package/dist/admin/components/AssetDialog/BrowseStep/PageSize.mjs.map +1 -0
  53. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.js +55 -0
  54. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.js.map +1 -0
  55. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.mjs +33 -0
  56. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.mjs.map +1 -0
  57. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.js +378 -0
  58. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.js.map +1 -0
  59. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.mjs +376 -0
  60. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.mjs.map +1 -0
  61. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js +102 -0
  62. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -0
  63. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs +81 -0
  64. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +1 -0
  65. package/dist/admin/components/AssetDialog/BrowseStep/utils/isSelectable.js +14 -0
  66. package/dist/admin/components/AssetDialog/BrowseStep/utils/isSelectable.js.map +1 -0
  67. package/dist/admin/components/AssetDialog/BrowseStep/utils/isSelectable.mjs +12 -0
  68. package/dist/admin/components/AssetDialog/BrowseStep/utils/isSelectable.mjs.map +1 -0
  69. package/dist/admin/components/AssetDialog/DialogFooter.js +31 -0
  70. package/dist/admin/components/AssetDialog/DialogFooter.js.map +1 -0
  71. package/dist/admin/components/AssetDialog/DialogFooter.mjs +29 -0
  72. package/dist/admin/components/AssetDialog/DialogFooter.mjs.map +1 -0
  73. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js +60 -0
  74. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js.map +1 -0
  75. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs +58 -0
  76. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs.map +1 -0
  77. package/dist/admin/components/AssetGridList/AssetGridList.js +72 -0
  78. package/dist/admin/components/AssetGridList/AssetGridList.js.map +1 -0
  79. package/dist/admin/components/AssetGridList/AssetGridList.mjs +70 -0
  80. package/dist/admin/components/AssetGridList/AssetGridList.mjs.map +1 -0
  81. package/dist/admin/components/AssetGridList/Draggable.js +65 -0
  82. package/dist/admin/components/AssetGridList/Draggable.js.map +1 -0
  83. package/dist/admin/components/AssetGridList/Draggable.mjs +44 -0
  84. package/dist/admin/components/AssetGridList/Draggable.mjs.map +1 -0
  85. package/dist/admin/components/Breadcrumbs/Breadcrumbs.js +49 -0
  86. package/dist/admin/components/Breadcrumbs/Breadcrumbs.js.map +1 -0
  87. package/dist/admin/components/Breadcrumbs/Breadcrumbs.mjs +47 -0
  88. package/dist/admin/components/Breadcrumbs/Breadcrumbs.mjs.map +1 -0
  89. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js +89 -0
  90. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +1 -0
  91. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs +68 -0
  92. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs.map +1 -0
  93. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js +154 -0
  94. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -0
  95. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs +152 -0
  96. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -0
  97. package/dist/admin/components/ContextInfo/ContextInfo.js +44 -0
  98. package/dist/admin/components/ContextInfo/ContextInfo.js.map +1 -0
  99. package/dist/admin/components/ContextInfo/ContextInfo.mjs +42 -0
  100. package/dist/admin/components/ContextInfo/ContextInfo.mjs.map +1 -0
  101. package/dist/admin/components/CopyLinkButton/CopyLinkButton.js +43 -0
  102. package/dist/admin/components/CopyLinkButton/CopyLinkButton.js.map +1 -0
  103. package/dist/admin/components/CopyLinkButton/CopyLinkButton.mjs +41 -0
  104. package/dist/admin/components/CopyLinkButton/CopyLinkButton.mjs.map +1 -0
  105. package/dist/admin/components/EditAssetDialog/DialogHeader.js +20 -0
  106. package/dist/admin/components/EditAssetDialog/DialogHeader.js.map +1 -0
  107. package/dist/admin/components/EditAssetDialog/DialogHeader.mjs +18 -0
  108. package/dist/admin/components/EditAssetDialog/DialogHeader.mjs.map +1 -0
  109. package/dist/admin/components/EditAssetDialog/EditAssetContent.js +403 -0
  110. package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -0
  111. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs +380 -0
  112. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -0
  113. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js +127 -0
  114. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -0
  115. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs +106 -0
  116. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +1 -0
  117. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js +111 -0
  118. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js.map +1 -0
  119. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs +109 -0
  120. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs.map +1 -0
  121. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +260 -0
  122. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -0
  123. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +239 -0
  124. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -0
  125. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.js +75 -0
  126. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.js.map +1 -0
  127. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.mjs +68 -0
  128. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.mjs.map +1 -0
  129. package/dist/admin/components/EditAssetDialog/RemoveAssetDialog.js +27 -0
  130. package/dist/admin/components/EditAssetDialog/RemoveAssetDialog.js.map +1 -0
  131. package/dist/admin/components/EditAssetDialog/RemoveAssetDialog.mjs +25 -0
  132. package/dist/admin/components/EditAssetDialog/RemoveAssetDialog.mjs.map +1 -0
  133. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js +79 -0
  134. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -0
  135. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs +58 -0
  136. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs.map +1 -0
  137. package/dist/admin/components/EditFolderDialog/EditFolderDialog.js +336 -0
  138. package/dist/admin/components/EditFolderDialog/EditFolderDialog.js.map +1 -0
  139. package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs +313 -0
  140. package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs.map +1 -0
  141. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js +29 -0
  142. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js.map +1 -0
  143. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs +27 -0
  144. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs.map +1 -0
  145. package/dist/admin/components/EditFolderDialog/RemoveFolderDialog.js +18 -0
  146. package/dist/admin/components/EditFolderDialog/RemoveFolderDialog.js.map +1 -0
  147. package/dist/admin/components/EditFolderDialog/RemoveFolderDialog.mjs +16 -0
  148. package/dist/admin/components/EditFolderDialog/RemoveFolderDialog.mjs.map +1 -0
  149. package/dist/admin/components/EmptyAssets/EmptyAssetGrid.js +31 -0
  150. package/dist/admin/components/EmptyAssets/EmptyAssetGrid.js.map +1 -0
  151. package/dist/admin/components/EmptyAssets/EmptyAssetGrid.mjs +29 -0
  152. package/dist/admin/components/EmptyAssets/EmptyAssetGrid.mjs.map +1 -0
  153. package/dist/admin/components/EmptyAssets/EmptyAssets.js +53 -0
  154. package/dist/admin/components/EmptyAssets/EmptyAssets.js.map +1 -0
  155. package/dist/admin/components/EmptyAssets/EmptyAssets.mjs +51 -0
  156. package/dist/admin/components/EmptyAssets/EmptyAssets.mjs.map +1 -0
  157. package/dist/admin/components/FilterList/FilterList.js +74 -0
  158. package/dist/admin/components/FilterList/FilterList.js.map +1 -0
  159. package/dist/admin/components/FilterList/FilterList.mjs +72 -0
  160. package/dist/admin/components/FilterList/FilterList.mjs.map +1 -0
  161. package/dist/admin/components/FilterList/FilterTag.js +50 -0
  162. package/dist/admin/components/FilterList/FilterTag.js.map +1 -0
  163. package/dist/admin/components/FilterList/FilterTag.mjs +48 -0
  164. package/dist/admin/components/FilterList/FilterTag.mjs.map +1 -0
  165. package/dist/admin/components/FilterPopover/FilterPopover.js +275 -0
  166. package/dist/admin/components/FilterPopover/FilterPopover.js.map +1 -0
  167. package/dist/admin/components/FilterPopover/FilterPopover.mjs +254 -0
  168. package/dist/admin/components/FilterPopover/FilterPopover.mjs.map +1 -0
  169. package/dist/admin/components/FilterPopover/FilterValueInput.js +39 -0
  170. package/dist/admin/components/FilterPopover/FilterValueInput.js.map +1 -0
  171. package/dist/admin/components/FilterPopover/FilterValueInput.mjs +37 -0
  172. package/dist/admin/components/FilterPopover/FilterValueInput.mjs.map +1 -0
  173. package/dist/admin/components/FilterPopover/utils/getFilterList.js +114 -0
  174. package/dist/admin/components/FilterPopover/utils/getFilterList.js.map +1 -0
  175. package/dist/admin/components/FilterPopover/utils/getFilterList.mjs +112 -0
  176. package/dist/admin/components/FilterPopover/utils/getFilterList.mjs.map +1 -0
  177. package/dist/admin/components/FolderCard/FolderCard/FolderCard.js +125 -0
  178. package/dist/admin/components/FolderCard/FolderCard/FolderCard.js.map +1 -0
  179. package/dist/admin/components/FolderCard/FolderCard/FolderCard.mjs +104 -0
  180. package/dist/admin/components/FolderCard/FolderCard/FolderCard.mjs.map +1 -0
  181. package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.js +26 -0
  182. package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.js.map +1 -0
  183. package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.mjs +24 -0
  184. package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.mjs.map +1 -0
  185. package/dist/admin/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.js +40 -0
  186. package/dist/admin/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.js.map +1 -0
  187. package/dist/admin/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.mjs +38 -0
  188. package/dist/admin/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.mjs.map +1 -0
  189. package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.js +20 -0
  190. package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.js.map +1 -0
  191. package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.mjs +18 -0
  192. package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.mjs.map +1 -0
  193. package/dist/admin/components/FolderCard/contexts/FolderCard.js +12 -0
  194. package/dist/admin/components/FolderCard/contexts/FolderCard.js.map +1 -0
  195. package/dist/admin/components/FolderCard/contexts/FolderCard.mjs +9 -0
  196. package/dist/admin/components/FolderCard/contexts/FolderCard.mjs.map +1 -0
  197. package/dist/admin/components/FolderGridList/FolderGridList.js +29 -0
  198. package/dist/admin/components/FolderGridList/FolderGridList.js.map +1 -0
  199. package/dist/admin/components/FolderGridList/FolderGridList.mjs +27 -0
  200. package/dist/admin/components/FolderGridList/FolderGridList.mjs.map +1 -0
  201. package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.js +71 -0
  202. package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.js.map +1 -0
  203. package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.mjs +50 -0
  204. package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.mjs.map +1 -0
  205. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js +78 -0
  206. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +1 -0
  207. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs +76 -0
  208. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +1 -0
  209. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js +52 -0
  210. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js.map +1 -0
  211. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs +50 -0
  212. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs.map +1 -0
  213. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js +112 -0
  214. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js.map +1 -0
  215. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs +91 -0
  216. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs.map +1 -0
  217. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js +116 -0
  218. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +1 -0
  219. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs +95 -0
  220. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs.map +1 -0
  221. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js +216 -0
  222. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -0
  223. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs +195 -0
  224. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -0
  225. package/dist/admin/components/SelectTree/Option.js +70 -0
  226. package/dist/admin/components/SelectTree/Option.js.map +1 -0
  227. package/dist/admin/components/SelectTree/Option.mjs +68 -0
  228. package/dist/admin/components/SelectTree/Option.mjs.map +1 -0
  229. package/dist/admin/components/SelectTree/SelectTree.js +276 -0
  230. package/dist/admin/components/SelectTree/SelectTree.js.map +1 -0
  231. package/dist/admin/components/SelectTree/SelectTree.mjs +255 -0
  232. package/dist/admin/components/SelectTree/SelectTree.mjs.map +1 -0
  233. package/dist/admin/components/SelectTree/utils/flattenTree.js +19 -0
  234. package/dist/admin/components/SelectTree/utils/flattenTree.js.map +1 -0
  235. package/dist/admin/components/SelectTree/utils/flattenTree.mjs +17 -0
  236. package/dist/admin/components/SelectTree/utils/flattenTree.mjs.map +1 -0
  237. package/dist/admin/components/SelectTree/utils/getOpenValues.js +24 -0
  238. package/dist/admin/components/SelectTree/utils/getOpenValues.js.map +1 -0
  239. package/dist/admin/components/SelectTree/utils/getOpenValues.mjs +22 -0
  240. package/dist/admin/components/SelectTree/utils/getOpenValues.mjs.map +1 -0
  241. package/dist/admin/components/SelectTree/utils/getValuesToClose.js +12 -0
  242. package/dist/admin/components/SelectTree/utils/getValuesToClose.js.map +1 -0
  243. package/dist/admin/components/SelectTree/utils/getValuesToClose.mjs +10 -0
  244. package/dist/admin/components/SelectTree/utils/getValuesToClose.mjs.map +1 -0
  245. package/dist/admin/components/SortPicker/SortPicker.js +39 -0
  246. package/dist/admin/components/SortPicker/SortPicker.js.map +1 -0
  247. package/dist/admin/components/SortPicker/SortPicker.mjs +37 -0
  248. package/dist/admin/components/SortPicker/SortPicker.mjs.map +1 -0
  249. package/dist/admin/components/TableList/CellContent.js +76 -0
  250. package/dist/admin/components/TableList/CellContent.js.map +1 -0
  251. package/dist/admin/components/TableList/CellContent.mjs +74 -0
  252. package/dist/admin/components/TableList/CellContent.mjs.map +1 -0
  253. package/dist/admin/components/TableList/PreviewCell.js +82 -0
  254. package/dist/admin/components/TableList/PreviewCell.js.map +1 -0
  255. package/dist/admin/components/TableList/PreviewCell.mjs +80 -0
  256. package/dist/admin/components/TableList/PreviewCell.mjs.map +1 -0
  257. package/dist/admin/components/TableList/TableList.js +99 -0
  258. package/dist/admin/components/TableList/TableList.js.map +1 -0
  259. package/dist/admin/components/TableList/TableList.mjs +97 -0
  260. package/dist/admin/components/TableList/TableList.mjs.map +1 -0
  261. package/dist/admin/components/TableList/TableRows.js +101 -0
  262. package/dist/admin/components/TableList/TableRows.js.map +1 -0
  263. package/dist/admin/components/TableList/TableRows.mjs +99 -0
  264. package/dist/admin/components/TableList/TableRows.mjs.map +1 -0
  265. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js +84 -0
  266. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js.map +1 -0
  267. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs +82 -0
  268. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs.map +1 -0
  269. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +203 -0
  270. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -0
  271. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs +182 -0
  272. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -0
  273. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js +127 -0
  274. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -0
  275. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs +106 -0
  276. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -0
  277. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js +206 -0
  278. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -0
  279. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs +185 -0
  280. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +1 -0
  281. package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.js +129 -0
  282. package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.js.map +1 -0
  283. package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.mjs +108 -0
  284. package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.mjs.map +1 -0
  285. package/dist/admin/components/UploadProgress/UploadProgress.js +88 -0
  286. package/dist/admin/components/UploadProgress/UploadProgress.js.map +1 -0
  287. package/dist/admin/components/UploadProgress/UploadProgress.mjs +86 -0
  288. package/dist/admin/components/UploadProgress/UploadProgress.mjs.map +1 -0
  289. package/dist/admin/constants.js +205 -0
  290. package/dist/admin/constants.js.map +1 -0
  291. package/dist/admin/constants.mjs +198 -0
  292. package/dist/admin/constants.mjs.map +1 -0
  293. package/dist/admin/hooks/useAssets.js +124 -0
  294. package/dist/admin/hooks/useAssets.js.map +1 -0
  295. package/dist/admin/hooks/useAssets.mjs +103 -0
  296. package/dist/admin/hooks/useAssets.mjs.map +1 -0
  297. package/dist/admin/hooks/useBulkMove.js +79 -0
  298. package/dist/admin/hooks/useBulkMove.js.map +1 -0
  299. package/dist/admin/hooks/useBulkMove.mjs +77 -0
  300. package/dist/admin/hooks/useBulkMove.mjs.map +1 -0
  301. package/dist/admin/hooks/useBulkRemove.js +79 -0
  302. package/dist/admin/hooks/useBulkRemove.js.map +1 -0
  303. package/dist/admin/hooks/useBulkRemove.mjs +77 -0
  304. package/dist/admin/hooks/useBulkRemove.mjs.map +1 -0
  305. package/dist/admin/hooks/useConfig.js +57 -0
  306. package/dist/admin/hooks/useConfig.js.map +1 -0
  307. package/dist/admin/hooks/useConfig.mjs +55 -0
  308. package/dist/admin/hooks/useConfig.mjs.map +1 -0
  309. package/dist/admin/hooks/useCropImg.js +96 -0
  310. package/dist/admin/hooks/useCropImg.js.map +1 -0
  311. package/dist/admin/hooks/useCropImg.mjs +75 -0
  312. package/dist/admin/hooks/useCropImg.mjs.map +1 -0
  313. package/dist/admin/hooks/useEditAsset.js +114 -0
  314. package/dist/admin/hooks/useEditAsset.js.map +1 -0
  315. package/dist/admin/hooks/useEditAsset.mjs +93 -0
  316. package/dist/admin/hooks/useEditAsset.mjs.map +1 -0
  317. package/dist/admin/hooks/useEditFolder.js +44 -0
  318. package/dist/admin/hooks/useEditFolder.js.map +1 -0
  319. package/dist/admin/hooks/useEditFolder.mjs +42 -0
  320. package/dist/admin/hooks/useEditFolder.mjs.map +1 -0
  321. package/dist/admin/hooks/useFolder.js +58 -0
  322. package/dist/admin/hooks/useFolder.js.map +1 -0
  323. package/dist/admin/hooks/useFolder.mjs +56 -0
  324. package/dist/admin/hooks/useFolder.mjs.map +1 -0
  325. package/dist/admin/hooks/useFolderStructure.js +53 -0
  326. package/dist/admin/hooks/useFolderStructure.js.map +1 -0
  327. package/dist/admin/hooks/useFolderStructure.mjs +51 -0
  328. package/dist/admin/hooks/useFolderStructure.mjs.map +1 -0
  329. package/dist/admin/hooks/useFolders.js +107 -0
  330. package/dist/admin/hooks/useFolders.js.map +1 -0
  331. package/dist/admin/hooks/useFolders.mjs +86 -0
  332. package/dist/admin/hooks/useFolders.mjs.map +1 -0
  333. package/dist/admin/hooks/useMediaLibraryPermissions.js +16 -0
  334. package/dist/admin/hooks/useMediaLibraryPermissions.js.map +1 -0
  335. package/dist/admin/hooks/useMediaLibraryPermissions.mjs +14 -0
  336. package/dist/admin/hooks/useMediaLibraryPermissions.mjs.map +1 -0
  337. package/dist/admin/hooks/useModalQueryParams.js +138 -0
  338. package/dist/admin/hooks/useModalQueryParams.js.map +1 -0
  339. package/dist/admin/hooks/useModalQueryParams.mjs +117 -0
  340. package/dist/admin/hooks/useModalQueryParams.mjs.map +1 -0
  341. package/dist/admin/hooks/usePersistentState.js +31 -0
  342. package/dist/admin/hooks/usePersistentState.js.map +1 -0
  343. package/dist/admin/hooks/usePersistentState.mjs +29 -0
  344. package/dist/admin/hooks/usePersistentState.mjs.map +1 -0
  345. package/dist/admin/hooks/useRemoveAsset.js +53 -0
  346. package/dist/admin/hooks/useRemoveAsset.js.map +1 -0
  347. package/dist/admin/hooks/useRemoveAsset.mjs +51 -0
  348. package/dist/admin/hooks/useRemoveAsset.mjs.map +1 -0
  349. package/dist/admin/hooks/useSelectionState.js +85 -0
  350. package/dist/admin/hooks/useSelectionState.js.map +1 -0
  351. package/dist/admin/hooks/useSelectionState.mjs +64 -0
  352. package/dist/admin/hooks/useSelectionState.mjs.map +1 -0
  353. package/dist/admin/hooks/useUpload.js +86 -0
  354. package/dist/admin/hooks/useUpload.js.map +1 -0
  355. package/dist/admin/hooks/useUpload.mjs +65 -0
  356. package/dist/admin/hooks/useUpload.mjs.map +1 -0
  357. package/dist/admin/hooks/utils/renameKeys.js +12 -0
  358. package/dist/admin/hooks/utils/renameKeys.js.map +1 -0
  359. package/dist/admin/hooks/utils/renameKeys.mjs +10 -0
  360. package/dist/admin/hooks/utils/renameKeys.mjs.map +1 -0
  361. package/dist/admin/index.js +104 -22
  362. package/dist/admin/index.js.map +1 -1
  363. package/dist/admin/index.mjs +105 -21
  364. package/dist/admin/index.mjs.map +1 -1
  365. package/dist/admin/package.json.js +161 -0
  366. package/dist/admin/package.json.js.map +1 -0
  367. package/dist/admin/package.json.mjs +143 -0
  368. package/dist/admin/package.json.mjs.map +1 -0
  369. package/dist/admin/pages/App/App.js +94 -0
  370. package/dist/admin/pages/App/App.js.map +1 -0
  371. package/dist/admin/pages/App/App.mjs +73 -0
  372. package/dist/admin/pages/App/App.mjs.map +1 -0
  373. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js +142 -0
  374. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -0
  375. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs +121 -0
  376. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -0
  377. package/dist/admin/pages/App/ConfigureTheView/components/Settings.js +108 -0
  378. package/dist/admin/pages/App/ConfigureTheView/components/Settings.js.map +1 -0
  379. package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs +106 -0
  380. package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs.map +1 -0
  381. package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.js +10 -0
  382. package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.js.map +1 -0
  383. package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.mjs +7 -0
  384. package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.mjs.map +1 -0
  385. package/dist/admin/pages/App/ConfigureTheView/state/actions.js +16 -0
  386. package/dist/admin/pages/App/ConfigureTheView/state/actions.js.map +1 -0
  387. package/dist/admin/pages/App/ConfigureTheView/state/actions.mjs +13 -0
  388. package/dist/admin/pages/App/ConfigureTheView/state/actions.mjs.map +1 -0
  389. package/dist/admin/pages/App/ConfigureTheView/state/init.js +17 -0
  390. package/dist/admin/pages/App/ConfigureTheView/state/init.js.map +1 -0
  391. package/dist/admin/pages/App/ConfigureTheView/state/init.mjs +14 -0
  392. package/dist/admin/pages/App/ConfigureTheView/state/init.mjs.map +1 -0
  393. package/dist/admin/pages/App/ConfigureTheView/state/reducer.js +40 -0
  394. package/dist/admin/pages/App/ConfigureTheView/state/reducer.js.map +1 -0
  395. package/dist/admin/pages/App/ConfigureTheView/state/reducer.mjs +38 -0
  396. package/dist/admin/pages/App/ConfigureTheView/state/reducer.mjs.map +1 -0
  397. package/dist/admin/pages/App/MediaLibrary/MediaLibrary.js +453 -0
  398. package/dist/admin/pages/App/MediaLibrary/MediaLibrary.js.map +1 -0
  399. package/dist/admin/pages/App/MediaLibrary/MediaLibrary.mjs +432 -0
  400. package/dist/admin/pages/App/MediaLibrary/MediaLibrary.mjs.map +1 -0
  401. package/dist/admin/pages/App/MediaLibrary/components/BulkActions.js +49 -0
  402. package/dist/admin/pages/App/MediaLibrary/components/BulkActions.js.map +1 -0
  403. package/dist/admin/pages/App/MediaLibrary/components/BulkActions.mjs +47 -0
  404. package/dist/admin/pages/App/MediaLibrary/components/BulkActions.mjs.map +1 -0
  405. package/dist/admin/pages/App/MediaLibrary/components/BulkDeleteButton.js +38 -0
  406. package/dist/admin/pages/App/MediaLibrary/components/BulkDeleteButton.js.map +1 -0
  407. package/dist/admin/pages/App/MediaLibrary/components/BulkDeleteButton.mjs +36 -0
  408. package/dist/admin/pages/App/MediaLibrary/components/BulkDeleteButton.mjs.map +1 -0
  409. package/dist/admin/pages/App/MediaLibrary/components/BulkMoveButton.js +61 -0
  410. package/dist/admin/pages/App/MediaLibrary/components/BulkMoveButton.js.map +1 -0
  411. package/dist/admin/pages/App/MediaLibrary/components/BulkMoveButton.mjs +40 -0
  412. package/dist/admin/pages/App/MediaLibrary/components/BulkMoveButton.mjs.map +1 -0
  413. package/dist/admin/pages/App/MediaLibrary/components/EmptyOrNoPermissions.js +66 -0
  414. package/dist/admin/pages/App/MediaLibrary/components/EmptyOrNoPermissions.js.map +1 -0
  415. package/dist/admin/pages/App/MediaLibrary/components/EmptyOrNoPermissions.mjs +64 -0
  416. package/dist/admin/pages/App/MediaLibrary/components/EmptyOrNoPermissions.mjs.map +1 -0
  417. package/dist/admin/pages/App/MediaLibrary/components/Filters.js +94 -0
  418. package/dist/admin/pages/App/MediaLibrary/components/Filters.js.map +1 -0
  419. package/dist/admin/pages/App/MediaLibrary/components/Filters.mjs +73 -0
  420. package/dist/admin/pages/App/MediaLibrary/components/Filters.mjs.map +1 -0
  421. package/dist/admin/pages/App/MediaLibrary/components/Header.js +76 -0
  422. package/dist/admin/pages/App/MediaLibrary/components/Header.js.map +1 -0
  423. package/dist/admin/pages/App/MediaLibrary/components/Header.mjs +74 -0
  424. package/dist/admin/pages/App/MediaLibrary/components/Header.mjs.map +1 -0
  425. package/dist/admin/{chunks/SettingsPage-DcdF16oj.js → pages/SettingsPage/SettingsPage.js} +18 -67
  426. package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -0
  427. package/dist/admin/{chunks/SettingsPage-kY2dZHnP.mjs → pages/SettingsPage/SettingsPage.mjs} +6 -55
  428. package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -0
  429. package/dist/admin/pages/SettingsPage/init.js +8 -0
  430. package/dist/admin/pages/SettingsPage/init.js.map +1 -0
  431. package/dist/admin/pages/SettingsPage/init.mjs +6 -0
  432. package/dist/admin/pages/SettingsPage/init.mjs.map +1 -0
  433. package/dist/admin/pages/SettingsPage/reducer.js +43 -0
  434. package/dist/admin/pages/SettingsPage/reducer.js.map +1 -0
  435. package/dist/admin/pages/SettingsPage/reducer.mjs +40 -0
  436. package/dist/admin/pages/SettingsPage/reducer.mjs.map +1 -0
  437. package/dist/admin/pluginId.js +8 -0
  438. package/dist/admin/pluginId.js.map +1 -0
  439. package/dist/admin/pluginId.mjs +6 -0
  440. package/dist/admin/pluginId.mjs.map +1 -0
  441. package/dist/admin/{chunks/ca-pCOhKIn8.js → translations/ca.json.js} +2 -2
  442. package/dist/admin/translations/ca.json.js.map +1 -0
  443. package/dist/admin/{chunks/ca-Bi4qskZD.mjs → translations/ca.json.mjs} +1 -1
  444. package/dist/admin/translations/ca.json.mjs.map +1 -0
  445. package/dist/admin/{chunks/de-DUjKLmOP.js → translations/de.json.js} +2 -2
  446. package/dist/admin/translations/de.json.js.map +1 -0
  447. package/dist/admin/{chunks/de-BlbX8Dl_.mjs → translations/de.json.mjs} +1 -1
  448. package/dist/admin/translations/de.json.mjs.map +1 -0
  449. package/dist/admin/{chunks/dk-DSsspA0e.js → translations/dk.json.js} +2 -2
  450. package/dist/admin/translations/dk.json.js.map +1 -0
  451. package/dist/admin/{chunks/dk-C2ydE6A7.mjs → translations/dk.json.mjs} +1 -1
  452. package/dist/admin/translations/dk.json.mjs.map +1 -0
  453. package/dist/admin/{chunks/en-UjETkewz.js → translations/en.json.js} +2 -2
  454. package/dist/admin/translations/en.json.js.map +1 -0
  455. package/dist/admin/{chunks/en-Bw_Cb2IV.mjs → translations/en.json.mjs} +1 -1
  456. package/dist/admin/translations/en.json.mjs.map +1 -0
  457. package/dist/admin/{chunks/es-qAL8YcZz.js → translations/es.json.js} +2 -2
  458. package/dist/admin/translations/es.json.js.map +1 -0
  459. package/dist/admin/{chunks/es-CiEgbw0k.mjs → translations/es.json.mjs} +1 -1
  460. package/dist/admin/translations/es.json.mjs.map +1 -0
  461. package/dist/admin/{chunks/fr-BL0Uyj6j.js → translations/fr.json.js} +2 -2
  462. package/dist/admin/translations/fr.json.js.map +1 -0
  463. package/dist/admin/{chunks/fr-CwRt2FJu.mjs → translations/fr.json.mjs} +1 -1
  464. package/dist/admin/translations/fr.json.mjs.map +1 -0
  465. package/dist/admin/{chunks/he-BAmhVpfZ.js → translations/he.json.js} +2 -2
  466. package/dist/admin/translations/he.json.js.map +1 -0
  467. package/dist/admin/{chunks/he-DdpYNQdt.mjs → translations/he.json.mjs} +1 -1
  468. package/dist/admin/translations/he.json.mjs.map +1 -0
  469. package/dist/admin/{chunks/it-_NQZYepl.js → translations/it.json.js} +2 -2
  470. package/dist/admin/translations/it.json.js.map +1 -0
  471. package/dist/admin/{chunks/it-Be4kgSNB.mjs → translations/it.json.mjs} +1 -1
  472. package/dist/admin/translations/it.json.mjs.map +1 -0
  473. package/dist/admin/{chunks/ja-B75QiyXf.js → translations/ja.json.js} +2 -2
  474. package/dist/admin/translations/ja.json.js.map +1 -0
  475. package/dist/admin/{chunks/ja-U1NhT0bU.mjs → translations/ja.json.mjs} +1 -1
  476. package/dist/admin/translations/ja.json.mjs.map +1 -0
  477. package/dist/admin/{chunks/ko-BOvUcJqv.js → translations/ko.json.js} +2 -2
  478. package/dist/admin/translations/ko.json.js.map +1 -0
  479. package/dist/admin/{chunks/ko-BciqXefq.mjs → translations/ko.json.mjs} +1 -1
  480. package/dist/admin/translations/ko.json.mjs.map +1 -0
  481. package/dist/admin/{chunks/ms-B7Zl6Lm9.js → translations/ms.json.js} +2 -2
  482. package/dist/admin/translations/ms.json.js.map +1 -0
  483. package/dist/admin/{chunks/ms-D-8McNeg.mjs → translations/ms.json.mjs} +1 -1
  484. package/dist/admin/translations/ms.json.mjs.map +1 -0
  485. package/dist/admin/{chunks/pl-cYDYHOEf.js → translations/pl.json.js} +2 -2
  486. package/dist/admin/translations/pl.json.js.map +1 -0
  487. package/dist/admin/{chunks/pl-DdUYocl5.mjs → translations/pl.json.mjs} +1 -1
  488. package/dist/admin/translations/pl.json.mjs.map +1 -0
  489. package/dist/admin/{chunks/pt-BR-D1u_azCM.js → translations/pt-BR.json.js} +2 -2
  490. package/dist/admin/translations/pt-BR.json.js.map +1 -0
  491. package/dist/admin/{chunks/pt-BR-Demjoq41.mjs → translations/pt-BR.json.mjs} +1 -1
  492. package/dist/admin/translations/pt-BR.json.mjs.map +1 -0
  493. package/dist/admin/{chunks/pt-L2DZeTPL.js → translations/pt.json.js} +2 -2
  494. package/dist/admin/translations/pt.json.js.map +1 -0
  495. package/dist/admin/{chunks/pt-D8is2LpS.mjs → translations/pt.json.mjs} +1 -1
  496. package/dist/admin/translations/pt.json.mjs.map +1 -0
  497. package/dist/admin/{chunks/ru-Uxbk_WWv.js → translations/ru.json.js} +2 -2
  498. package/dist/admin/translations/ru.json.js.map +1 -0
  499. package/dist/admin/{chunks/ru-CGgHRTey.mjs → translations/ru.json.mjs} +1 -1
  500. package/dist/admin/translations/ru.json.mjs.map +1 -0
  501. package/dist/admin/{chunks/sk-BlLP5HAX.js → translations/sk.json.js} +2 -2
  502. package/dist/admin/translations/sk.json.js.map +1 -0
  503. package/dist/admin/{chunks/sk-xtSwaPXq.mjs → translations/sk.json.mjs} +1 -1
  504. package/dist/admin/translations/sk.json.mjs.map +1 -0
  505. package/dist/admin/{chunks/th-DNxPLegS.js → translations/th.json.js} +2 -2
  506. package/dist/admin/translations/th.json.js.map +1 -0
  507. package/dist/admin/{chunks/th-BOpLVfmg.mjs → translations/th.json.mjs} +1 -1
  508. package/dist/admin/translations/th.json.mjs.map +1 -0
  509. package/dist/admin/{chunks/tr-DWgXG75k.js → translations/tr.json.js} +2 -2
  510. package/dist/admin/translations/tr.json.js.map +1 -0
  511. package/dist/admin/{chunks/tr-BmAPh-f1.mjs → translations/tr.json.mjs} +1 -1
  512. package/dist/admin/translations/tr.json.mjs.map +1 -0
  513. package/dist/admin/{chunks/uk-Cfm1dM3v.js → translations/uk.json.js} +2 -2
  514. package/dist/admin/translations/uk.json.js.map +1 -0
  515. package/dist/admin/{chunks/uk-DPZD6U8g.mjs → translations/uk.json.mjs} +1 -1
  516. package/dist/admin/translations/uk.json.mjs.map +1 -0
  517. package/dist/admin/{chunks/zh-Hans-B8qxMQIl.js → translations/zh-Hans.json.js} +2 -2
  518. package/dist/admin/{chunks/ca-Bi4qskZD.mjs.map → translations/zh-Hans.json.js.map} +1 -1
  519. package/dist/admin/{chunks/zh-Hans-B1GabBRx.mjs → translations/zh-Hans.json.mjs} +1 -1
  520. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -0
  521. package/dist/admin/{chunks/zh-MemsyMV6.js → translations/zh.json.js} +2 -2
  522. package/dist/admin/translations/zh.json.js.map +1 -0
  523. package/dist/admin/{chunks/zh-BIl0qgBy.mjs → translations/zh.json.mjs} +1 -1
  524. package/dist/admin/translations/zh.json.mjs.map +1 -0
  525. package/dist/admin/utils/appendSearchParamsToUrl.js +17 -0
  526. package/dist/admin/utils/appendSearchParamsToUrl.js.map +1 -0
  527. package/dist/admin/utils/appendSearchParamsToUrl.mjs +15 -0
  528. package/dist/admin/utils/appendSearchParamsToUrl.mjs.map +1 -0
  529. package/dist/admin/utils/containsAssetFilter.js +18 -0
  530. package/dist/admin/utils/containsAssetFilter.js.map +1 -0
  531. package/dist/admin/utils/containsAssetFilter.mjs +16 -0
  532. package/dist/admin/utils/containsAssetFilter.mjs.map +1 -0
  533. package/dist/admin/utils/createAssetUrl.js +14 -0
  534. package/dist/admin/utils/createAssetUrl.js.map +1 -0
  535. package/dist/admin/utils/createAssetUrl.mjs +12 -0
  536. package/dist/admin/utils/createAssetUrl.mjs.map +1 -0
  537. package/dist/admin/utils/displayedFilters.js +52 -0
  538. package/dist/admin/utils/displayedFilters.js.map +1 -0
  539. package/dist/admin/utils/displayedFilters.mjs +50 -0
  540. package/dist/admin/utils/displayedFilters.mjs.map +1 -0
  541. package/dist/admin/utils/downloadFile.js +13 -0
  542. package/dist/admin/utils/downloadFile.js.map +1 -0
  543. package/dist/admin/utils/downloadFile.mjs +11 -0
  544. package/dist/admin/utils/downloadFile.mjs.map +1 -0
  545. package/dist/admin/utils/findRecursiveFolderByValue.js +17 -0
  546. package/dist/admin/utils/findRecursiveFolderByValue.js.map +1 -0
  547. package/dist/admin/utils/findRecursiveFolderByValue.mjs +15 -0
  548. package/dist/admin/utils/findRecursiveFolderByValue.mjs.map +1 -0
  549. package/dist/admin/utils/formatBytes.js +17 -0
  550. package/dist/admin/utils/formatBytes.js.map +1 -0
  551. package/dist/admin/utils/formatBytes.mjs +15 -0
  552. package/dist/admin/utils/formatBytes.mjs.map +1 -0
  553. package/dist/admin/utils/formatDuration.js +15 -0
  554. package/dist/admin/utils/formatDuration.js.map +1 -0
  555. package/dist/admin/utils/formatDuration.mjs +13 -0
  556. package/dist/admin/utils/formatDuration.mjs.map +1 -0
  557. package/dist/admin/utils/getAPIInnerErrors.js +26 -0
  558. package/dist/admin/utils/getAPIInnerErrors.js.map +1 -0
  559. package/dist/admin/utils/getAPIInnerErrors.mjs +24 -0
  560. package/dist/admin/utils/getAPIInnerErrors.mjs.map +1 -0
  561. package/dist/admin/utils/getAllowedFiles.js +25 -0
  562. package/dist/admin/utils/getAllowedFiles.js.map +1 -0
  563. package/dist/admin/utils/getAllowedFiles.mjs +23 -0
  564. package/dist/admin/utils/getAllowedFiles.mjs.map +1 -0
  565. package/dist/admin/utils/getBreadcrumbDataCM.js +36 -0
  566. package/dist/admin/utils/getBreadcrumbDataCM.js.map +1 -0
  567. package/dist/admin/utils/getBreadcrumbDataCM.mjs +34 -0
  568. package/dist/admin/utils/getBreadcrumbDataCM.mjs.map +1 -0
  569. package/dist/admin/utils/getBreadcrumbDataML.js +40 -0
  570. package/dist/admin/utils/getBreadcrumbDataML.js.map +1 -0
  571. package/dist/admin/utils/getBreadcrumbDataML.mjs +38 -0
  572. package/dist/admin/utils/getBreadcrumbDataML.mjs.map +1 -0
  573. package/dist/admin/utils/getFileExtension.js +6 -0
  574. package/dist/admin/utils/getFileExtension.js.map +1 -0
  575. package/dist/admin/utils/getFileExtension.mjs +4 -0
  576. package/dist/admin/utils/getFileExtension.mjs.map +1 -0
  577. package/dist/admin/utils/getFolderParents.js +26 -0
  578. package/dist/admin/utils/getFolderParents.js.map +1 -0
  579. package/dist/admin/utils/getFolderParents.mjs +24 -0
  580. package/dist/admin/utils/getFolderParents.mjs.map +1 -0
  581. package/dist/admin/utils/getFolderURL.js +20 -0
  582. package/dist/admin/utils/getFolderURL.js.map +1 -0
  583. package/dist/admin/utils/getFolderURL.mjs +18 -0
  584. package/dist/admin/utils/getFolderURL.mjs.map +1 -0
  585. package/dist/admin/utils/getTrad.js +8 -0
  586. package/dist/admin/utils/getTrad.js.map +1 -0
  587. package/dist/admin/utils/getTrad.mjs +6 -0
  588. package/dist/admin/utils/getTrad.mjs.map +1 -0
  589. package/dist/admin/utils/moveElement.js +16 -0
  590. package/dist/admin/utils/moveElement.js.map +1 -0
  591. package/dist/admin/utils/moveElement.mjs +14 -0
  592. package/dist/admin/utils/moveElement.mjs.map +1 -0
  593. package/dist/admin/utils/normalizeAPIError.js +55 -0
  594. package/dist/admin/utils/normalizeAPIError.js.map +1 -0
  595. package/dist/admin/utils/normalizeAPIError.mjs +53 -0
  596. package/dist/admin/utils/normalizeAPIError.mjs.map +1 -0
  597. package/dist/admin/utils/prefixFileUrlWithBackendUrl.js +8 -0
  598. package/dist/admin/utils/prefixFileUrlWithBackendUrl.js.map +1 -0
  599. package/dist/admin/utils/prefixFileUrlWithBackendUrl.mjs +6 -0
  600. package/dist/admin/utils/prefixFileUrlWithBackendUrl.mjs.map +1 -0
  601. package/dist/admin/utils/prefixPluginTranslations.js +14 -0
  602. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  603. package/dist/admin/utils/prefixPluginTranslations.mjs +12 -0
  604. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  605. package/dist/admin/utils/rawFileToAsset.js +21 -0
  606. package/dist/admin/utils/rawFileToAsset.js.map +1 -0
  607. package/dist/admin/utils/rawFileToAsset.mjs +19 -0
  608. package/dist/admin/utils/rawFileToAsset.mjs.map +1 -0
  609. package/dist/admin/utils/toSingularTypes.js +11 -0
  610. package/dist/admin/utils/toSingularTypes.js.map +1 -0
  611. package/dist/admin/utils/toSingularTypes.mjs +9 -0
  612. package/dist/admin/utils/toSingularTypes.mjs.map +1 -0
  613. package/dist/admin/utils/typeFromMime.js +19 -0
  614. package/dist/admin/utils/typeFromMime.js.map +1 -0
  615. package/dist/admin/utils/typeFromMime.mjs +17 -0
  616. package/dist/admin/utils/typeFromMime.mjs.map +1 -0
  617. package/dist/admin/utils/urlYupSchema.js +72 -0
  618. package/dist/admin/utils/urlYupSchema.js.map +1 -0
  619. package/dist/admin/utils/urlYupSchema.mjs +51 -0
  620. package/dist/admin/utils/urlYupSchema.mjs.map +1 -0
  621. package/dist/admin/utils/urlsToAssets.js +39 -0
  622. package/dist/admin/utils/urlsToAssets.js.map +1 -0
  623. package/dist/admin/utils/urlsToAssets.mjs +37 -0
  624. package/dist/admin/utils/urlsToAssets.mjs.map +1 -0
  625. package/dist/server/bootstrap.js +98 -0
  626. package/dist/server/bootstrap.js.map +1 -0
  627. package/dist/server/bootstrap.mjs +96 -0
  628. package/dist/server/bootstrap.mjs.map +1 -0
  629. package/dist/server/config.js +14 -0
  630. package/dist/server/config.js.map +1 -0
  631. package/dist/server/config.mjs +12 -0
  632. package/dist/server/config.mjs.map +1 -0
  633. package/dist/server/constants.js +35 -0
  634. package/dist/server/constants.js.map +1 -0
  635. package/dist/server/constants.mjs +28 -0
  636. package/dist/server/constants.mjs.map +1 -0
  637. package/dist/server/content-types/file.js +155 -0
  638. package/dist/server/content-types/file.js.map +1 -0
  639. package/dist/server/content-types/file.mjs +153 -0
  640. package/dist/server/content-types/file.mjs.map +1 -0
  641. package/dist/server/content-types/folder.js +78 -0
  642. package/dist/server/content-types/folder.js.map +1 -0
  643. package/dist/server/content-types/folder.mjs +76 -0
  644. package/dist/server/content-types/folder.mjs.map +1 -0
  645. package/dist/server/content-types/index.js +12 -0
  646. package/dist/server/content-types/index.js.map +1 -0
  647. package/dist/server/content-types/index.mjs +10 -0
  648. package/dist/server/content-types/index.mjs.map +1 -0
  649. package/dist/server/controllers/admin-file.js +61 -0
  650. package/dist/server/controllers/admin-file.js.map +1 -0
  651. package/dist/server/controllers/admin-file.mjs +59 -0
  652. package/dist/server/controllers/admin-file.mjs.map +1 -0
  653. package/dist/server/controllers/admin-folder-file.js +189 -0
  654. package/dist/server/controllers/admin-folder-file.js.map +1 -0
  655. package/dist/server/controllers/admin-folder-file.mjs +187 -0
  656. package/dist/server/controllers/admin-folder-file.mjs.map +1 -0
  657. package/dist/server/controllers/admin-folder.js +104 -0
  658. package/dist/server/controllers/admin-folder.js.map +1 -0
  659. package/dist/server/controllers/admin-folder.mjs +102 -0
  660. package/dist/server/controllers/admin-folder.mjs.map +1 -0
  661. package/dist/server/controllers/admin-settings.js +32 -0
  662. package/dist/server/controllers/admin-settings.js.map +1 -0
  663. package/dist/server/controllers/admin-settings.mjs +30 -0
  664. package/dist/server/controllers/admin-settings.mjs.map +1 -0
  665. package/dist/server/controllers/admin-upload.js +88 -0
  666. package/dist/server/controllers/admin-upload.js.map +1 -0
  667. package/dist/server/controllers/admin-upload.mjs +86 -0
  668. package/dist/server/controllers/admin-upload.mjs.map +1 -0
  669. package/dist/server/controllers/content-api.js +122 -0
  670. package/dist/server/controllers/content-api.js.map +1 -0
  671. package/dist/server/controllers/content-api.mjs +120 -0
  672. package/dist/server/controllers/content-api.mjs.map +1 -0
  673. package/dist/server/controllers/index.js +22 -0
  674. package/dist/server/controllers/index.js.map +1 -0
  675. package/dist/server/controllers/index.mjs +20 -0
  676. package/dist/server/controllers/index.mjs.map +1 -0
  677. package/dist/server/controllers/utils/find-entity-and-check-permissions.js +38 -0
  678. package/dist/server/controllers/utils/find-entity-and-check-permissions.js.map +1 -0
  679. package/dist/server/controllers/utils/find-entity-and-check-permissions.mjs +36 -0
  680. package/dist/server/controllers/utils/find-entity-and-check-permissions.mjs.map +1 -0
  681. package/dist/server/controllers/utils/folders.js +6 -0
  682. package/dist/server/controllers/utils/folders.js.map +1 -0
  683. package/dist/server/controllers/utils/folders.mjs +4 -0
  684. package/dist/server/controllers/utils/folders.mjs.map +1 -0
  685. package/dist/server/controllers/validation/admin/configureView.js +13 -0
  686. package/dist/server/controllers/validation/admin/configureView.js.map +1 -0
  687. package/dist/server/controllers/validation/admin/configureView.mjs +11 -0
  688. package/dist/server/controllers/validation/admin/configureView.mjs.map +1 -0
  689. package/dist/server/controllers/validation/admin/folder-file.js +88 -0
  690. package/dist/server/controllers/validation/admin/folder-file.js.map +1 -0
  691. package/dist/server/controllers/validation/admin/folder-file.mjs +85 -0
  692. package/dist/server/controllers/validation/admin/folder-file.mjs.map +1 -0
  693. package/dist/server/controllers/validation/admin/folder.js +69 -0
  694. package/dist/server/controllers/validation/admin/folder.js.map +1 -0
  695. package/dist/server/controllers/validation/admin/folder.mjs +66 -0
  696. package/dist/server/controllers/validation/admin/folder.mjs.map +1 -0
  697. package/dist/server/controllers/validation/admin/settings.js +13 -0
  698. package/dist/server/controllers/validation/admin/settings.js.map +1 -0
  699. package/dist/server/controllers/validation/admin/settings.mjs +11 -0
  700. package/dist/server/controllers/validation/admin/settings.mjs.map +1 -0
  701. package/dist/server/controllers/validation/admin/upload.js +35 -0
  702. package/dist/server/controllers/validation/admin/upload.js.map +1 -0
  703. package/dist/server/controllers/validation/admin/upload.mjs +33 -0
  704. package/dist/server/controllers/validation/admin/upload.mjs.map +1 -0
  705. package/dist/server/controllers/validation/admin/utils.js +17 -0
  706. package/dist/server/controllers/validation/admin/utils.js.map +1 -0
  707. package/dist/server/controllers/validation/admin/utils.mjs +15 -0
  708. package/dist/server/controllers/validation/admin/utils.mjs.map +1 -0
  709. package/dist/server/controllers/validation/content-api/upload.js +24 -0
  710. package/dist/server/controllers/validation/content-api/upload.js.map +1 -0
  711. package/dist/server/controllers/validation/content-api/upload.mjs +22 -0
  712. package/dist/server/controllers/validation/content-api/upload.mjs.map +1 -0
  713. package/dist/server/controllers/view-configuration.js +28 -0
  714. package/dist/server/controllers/view-configuration.js.map +1 -0
  715. package/dist/server/controllers/view-configuration.mjs +26 -0
  716. package/dist/server/controllers/view-configuration.mjs.map +1 -0
  717. package/dist/server/documentation/content-api.json.js +290 -0
  718. package/dist/server/documentation/content-api.json.js.map +1 -0
  719. package/dist/server/documentation/content-api.json.mjs +284 -0
  720. package/dist/server/documentation/content-api.json.mjs.map +1 -0
  721. package/dist/server/{chunks/graphql-CwNPX8zo.js → graphql.js} +3 -16
  722. package/dist/server/graphql.js.map +1 -0
  723. package/dist/server/{chunks/graphql-K9HaGS9d.mjs → graphql.mjs} +2 -15
  724. package/dist/server/graphql.mjs.map +1 -0
  725. package/dist/server/index.js +17 -16
  726. package/dist/server/index.js.map +1 -1
  727. package/dist/server/index.mjs +19 -14
  728. package/dist/server/index.mjs.map +1 -1
  729. package/dist/server/middlewares/upload.js +38 -0
  730. package/dist/server/middlewares/upload.js.map +1 -0
  731. package/dist/server/middlewares/upload.mjs +36 -0
  732. package/dist/server/middlewares/upload.mjs.map +1 -0
  733. package/dist/server/register.js +88 -0
  734. package/dist/server/register.js.map +1 -0
  735. package/dist/server/register.mjs +86 -0
  736. package/dist/server/register.mjs.map +1 -0
  737. package/dist/server/routes/admin.js +236 -0
  738. package/dist/server/routes/admin.js.map +1 -0
  739. package/dist/server/routes/admin.mjs +234 -0
  740. package/dist/server/routes/admin.mjs.map +1 -0
  741. package/dist/server/routes/content-api.js +30 -0
  742. package/dist/server/routes/content-api.js.map +1 -0
  743. package/dist/server/routes/content-api.mjs +28 -0
  744. package/dist/server/routes/content-api.mjs.map +1 -0
  745. package/dist/server/routes/index.js +14 -0
  746. package/dist/server/routes/index.js.map +1 -0
  747. package/dist/server/routes/index.mjs +12 -0
  748. package/dist/server/routes/index.mjs.map +1 -0
  749. package/dist/server/routes/view-configuration.js +40 -0
  750. package/dist/server/routes/view-configuration.js.map +1 -0
  751. package/dist/server/routes/view-configuration.mjs +38 -0
  752. package/dist/server/routes/view-configuration.mjs.map +1 -0
  753. package/dist/server/services/api-upload-folder.js +52 -0
  754. package/dist/server/services/api-upload-folder.js.map +1 -0
  755. package/dist/server/services/api-upload-folder.mjs +50 -0
  756. package/dist/server/services/api-upload-folder.mjs.map +1 -0
  757. package/dist/server/services/extensions/index.js +40 -0
  758. package/dist/server/services/extensions/index.js.map +1 -0
  759. package/dist/server/services/extensions/index.mjs +38 -0
  760. package/dist/server/services/extensions/index.mjs.map +1 -0
  761. package/dist/server/services/extensions/utils.js +53 -0
  762. package/dist/server/services/extensions/utils.js.map +1 -0
  763. package/dist/server/services/extensions/utils.mjs +51 -0
  764. package/dist/server/services/extensions/utils.mjs.map +1 -0
  765. package/dist/server/services/file.js +57 -0
  766. package/dist/server/services/file.js.map +1 -0
  767. package/dist/server/services/file.mjs +55 -0
  768. package/dist/server/services/file.mjs.map +1 -0
  769. package/dist/server/services/folder.js +275 -0
  770. package/dist/server/services/folder.js.map +1 -0
  771. package/dist/server/services/folder.mjs +273 -0
  772. package/dist/server/services/folder.mjs.map +1 -0
  773. package/dist/server/services/image-manipulation.js +255 -0
  774. package/dist/server/services/image-manipulation.js.map +1 -0
  775. package/dist/server/services/image-manipulation.mjs +253 -0
  776. package/dist/server/services/image-manipulation.mjs.map +1 -0
  777. package/dist/server/services/index.js +26 -0
  778. package/dist/server/services/index.js.map +1 -0
  779. package/dist/server/services/index.mjs +24 -0
  780. package/dist/server/services/index.mjs.map +1 -0
  781. package/dist/server/services/metrics.js +19 -0
  782. package/dist/server/services/metrics.js.map +1 -0
  783. package/dist/server/services/metrics.mjs +17 -0
  784. package/dist/server/services/metrics.mjs.map +1 -0
  785. package/dist/server/services/provider.js +33 -0
  786. package/dist/server/services/provider.js.map +1 -0
  787. package/dist/server/services/provider.mjs +31 -0
  788. package/dist/server/services/provider.mjs.map +1 -0
  789. package/dist/server/services/upload.js +445 -0
  790. package/dist/server/services/upload.js.map +1 -0
  791. package/dist/server/services/upload.mjs +443 -0
  792. package/dist/server/services/upload.mjs.map +1 -0
  793. package/dist/server/services/weekly-metrics.js +127 -0
  794. package/dist/server/services/weekly-metrics.js.map +1 -0
  795. package/dist/server/services/weekly-metrics.mjs +125 -0
  796. package/dist/server/services/weekly-metrics.mjs.map +1 -0
  797. package/dist/server/utils/cron.js +6 -0
  798. package/dist/server/utils/cron.js.map +1 -0
  799. package/dist/server/utils/cron.mjs +4 -0
  800. package/dist/server/utils/cron.mjs.map +1 -0
  801. package/dist/server/utils/index.js +8 -0
  802. package/dist/server/utils/index.js.map +1 -0
  803. package/dist/server/utils/index.mjs +6 -0
  804. package/dist/server/utils/index.mjs.map +1 -0
  805. package/package.json +5 -5
  806. package/dist/admin/chunks/App-G8sLZSN0.js +0 -993
  807. package/dist/admin/chunks/App-G8sLZSN0.js.map +0 -1
  808. package/dist/admin/chunks/App-h5xGw9X8.mjs +0 -972
  809. package/dist/admin/chunks/App-h5xGw9X8.mjs.map +0 -1
  810. package/dist/admin/chunks/ConfigureTheView-CO72K73d.mjs +0 -276
  811. package/dist/admin/chunks/ConfigureTheView-CO72K73d.mjs.map +0 -1
  812. package/dist/admin/chunks/ConfigureTheView-D9XLMDtA.js +0 -297
  813. package/dist/admin/chunks/ConfigureTheView-D9XLMDtA.js.map +0 -1
  814. package/dist/admin/chunks/SettingsPage-DcdF16oj.js.map +0 -1
  815. package/dist/admin/chunks/SettingsPage-kY2dZHnP.mjs.map +0 -1
  816. package/dist/admin/chunks/ca-pCOhKIn8.js.map +0 -1
  817. package/dist/admin/chunks/de-BlbX8Dl_.mjs.map +0 -1
  818. package/dist/admin/chunks/de-DUjKLmOP.js.map +0 -1
  819. package/dist/admin/chunks/dk-C2ydE6A7.mjs.map +0 -1
  820. package/dist/admin/chunks/dk-DSsspA0e.js.map +0 -1
  821. package/dist/admin/chunks/en-Bw_Cb2IV.mjs.map +0 -1
  822. package/dist/admin/chunks/en-UjETkewz.js.map +0 -1
  823. package/dist/admin/chunks/es-CiEgbw0k.mjs.map +0 -1
  824. package/dist/admin/chunks/es-qAL8YcZz.js.map +0 -1
  825. package/dist/admin/chunks/fr-BL0Uyj6j.js.map +0 -1
  826. package/dist/admin/chunks/fr-CwRt2FJu.mjs.map +0 -1
  827. package/dist/admin/chunks/he-BAmhVpfZ.js.map +0 -1
  828. package/dist/admin/chunks/he-DdpYNQdt.mjs.map +0 -1
  829. package/dist/admin/chunks/index-BUqiOq3Y.mjs +0 -7349
  830. package/dist/admin/chunks/index-BUqiOq3Y.mjs.map +0 -1
  831. package/dist/admin/chunks/index-DDQjAhM2.js +0 -7406
  832. package/dist/admin/chunks/index-DDQjAhM2.js.map +0 -1
  833. package/dist/admin/chunks/it-Be4kgSNB.mjs.map +0 -1
  834. package/dist/admin/chunks/it-_NQZYepl.js.map +0 -1
  835. package/dist/admin/chunks/ja-B75QiyXf.js.map +0 -1
  836. package/dist/admin/chunks/ja-U1NhT0bU.mjs.map +0 -1
  837. package/dist/admin/chunks/ko-BOvUcJqv.js.map +0 -1
  838. package/dist/admin/chunks/ko-BciqXefq.mjs.map +0 -1
  839. package/dist/admin/chunks/ms-B7Zl6Lm9.js.map +0 -1
  840. package/dist/admin/chunks/ms-D-8McNeg.mjs.map +0 -1
  841. package/dist/admin/chunks/pl-DdUYocl5.mjs.map +0 -1
  842. package/dist/admin/chunks/pl-cYDYHOEf.js.map +0 -1
  843. package/dist/admin/chunks/pt-BR-D1u_azCM.js.map +0 -1
  844. package/dist/admin/chunks/pt-BR-Demjoq41.mjs.map +0 -1
  845. package/dist/admin/chunks/pt-D8is2LpS.mjs.map +0 -1
  846. package/dist/admin/chunks/pt-L2DZeTPL.js.map +0 -1
  847. package/dist/admin/chunks/ru-CGgHRTey.mjs.map +0 -1
  848. package/dist/admin/chunks/ru-Uxbk_WWv.js.map +0 -1
  849. package/dist/admin/chunks/sk-BlLP5HAX.js.map +0 -1
  850. package/dist/admin/chunks/sk-xtSwaPXq.mjs.map +0 -1
  851. package/dist/admin/chunks/th-BOpLVfmg.mjs.map +0 -1
  852. package/dist/admin/chunks/th-DNxPLegS.js.map +0 -1
  853. package/dist/admin/chunks/tr-BmAPh-f1.mjs.map +0 -1
  854. package/dist/admin/chunks/tr-DWgXG75k.js.map +0 -1
  855. package/dist/admin/chunks/uk-Cfm1dM3v.js.map +0 -1
  856. package/dist/admin/chunks/uk-DPZD6U8g.mjs.map +0 -1
  857. package/dist/admin/chunks/zh-BIl0qgBy.mjs.map +0 -1
  858. package/dist/admin/chunks/zh-Hans-B1GabBRx.mjs.map +0 -1
  859. package/dist/admin/chunks/zh-Hans-B8qxMQIl.js.map +0 -1
  860. package/dist/admin/chunks/zh-MemsyMV6.js.map +0 -1
  861. package/dist/server/chunks/graphql-CwNPX8zo.js.map +0 -1
  862. package/dist/server/chunks/graphql-K9HaGS9d.mjs.map +0 -1
  863. package/dist/server/chunks/index-BzVus140.mjs +0 -3161
  864. package/dist/server/chunks/index-BzVus140.mjs.map +0 -1
  865. package/dist/server/chunks/index-D2QOphAI.js +0 -3164
  866. package/dist/server/chunks/index-D2QOphAI.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-BzVus140.mjs","sources":["../../../server/src/middlewares/upload.ts","../../../server/src/register.ts","../../../server/src/utils/index.ts","../../../server/src/constants.ts","../../../server/src/bootstrap.ts","../../../server/src/content-types/file.ts","../../../server/src/content-types/folder.ts","../../../server/src/content-types/index.ts","../../../server/src/services/provider.ts","../../../server/src/services/upload.ts","../../../server/src/services/image-manipulation.ts","../../../server/src/services/folder.ts","../../../server/src/services/file.ts","../../../server/src/utils/cron.ts","../../../server/src/services/weekly-metrics.ts","../../../server/src/services/metrics.ts","../../../server/src/services/api-upload-folder.ts","../../../server/src/services/extensions/utils.ts","../../../server/src/services/extensions/index.ts","../../../server/src/services/index.ts","../../../server/src/routes/admin.ts","../../../server/src/routes/content-api.ts","../../../server/src/routes/view-configuration.ts","../../../server/src/routes/index.ts","../../../server/src/config.ts","../../../server/src/controllers/utils/find-entity-and-check-permissions.ts","../../../server/src/controllers/admin-file.ts","../../../server/src/controllers/validation/admin/utils.ts","../../../server/src/controllers/utils/folders.ts","../../../server/src/controllers/validation/admin/folder.ts","../../../server/src/controllers/admin-folder.ts","../../../server/src/controllers/validation/admin/folder-file.ts","../../../server/src/controllers/admin-folder-file.ts","../../../server/src/controllers/validation/admin/settings.ts","../../../server/src/controllers/admin-settings.ts","../../../server/src/controllers/validation/admin/upload.ts","../../../server/src/controllers/admin-upload.ts","../../../server/src/controllers/validation/content-api/upload.ts","../../../server/src/controllers/content-api.ts","../../../server/src/controllers/validation/admin/configureView.ts","../../../server/src/controllers/view-configuration.ts","../../../server/src/controllers/index.ts","../../../server/src/index.ts"],"sourcesContent":["import range from 'koa-range';\nimport koaStatic from 'koa-static';\n\nimport type { Core } from '@strapi/types';\n\n/**\n * Programmatic upload middleware. We do not want to expose it in the plugin\n */\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n strapi.server.app.on('error', (err) => {\n if (err.code === 'EPIPE') {\n // when serving audio or video the browsers sometimes close the connection to go to range requests instead.\n // This causes koa to emit a write EPIPE error. We can ignore it.\n // Right now this ignores it globally and we cannot do much more because it is how koa handles it.\n return;\n }\n\n strapi.server.app.onerror(err);\n });\n\n const localServerConfig = strapi.config.get('plugin::upload.providerOptions.localServer', {});\n\n strapi.server.routes([\n {\n method: 'GET',\n path: '/uploads/(.*)',\n handler: [range, koaStatic(strapi.dirs.static.public, { defer: true, ...localServerConfig })],\n config: { auth: false },\n },\n ]);\n};\n","import _ from 'lodash';\n\nimport { errors, file } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\n\nimport registerUploadMiddleware from './middlewares/upload';\nimport spec from '../../documentation/content-api.json';\nimport type { Config, File, InputFile } from './types';\n\nconst { PayloadTooLargeError } = errors;\nconst { bytesToHumanReadable, kbytesToBytes } = file;\n\n/**\n * Register upload plugin\n */\nexport async function register({ strapi }: { strapi: Core.Strapi }) {\n strapi.plugin('upload').provider = createProvider(strapi.config.get<Config>('plugin::upload'));\n\n await registerUploadMiddleware({ strapi });\n\n if (strapi.plugin('graphql')) {\n const { installGraphqlExtension } = await import('./graphql.js');\n installGraphqlExtension({ strapi });\n }\n\n if (strapi.plugin('documentation')) {\n strapi\n .plugin('documentation')\n .service('override')\n .registerOverride(spec, {\n pluginOrigin: 'upload',\n excludeFromGeneration: ['upload'],\n });\n }\n}\n\nconst createProvider = (config: Config) => {\n const { providerOptions, actionOptions = {} } = config;\n\n const providerName = _.toLower(config.provider);\n let provider;\n\n let modulePath;\n try {\n modulePath = require.resolve(`@strapi/provider-upload-${providerName}`);\n } catch (error) {\n if (\n typeof error === 'object' &&\n error !== null &&\n 'code' in error &&\n error.code === 'MODULE_NOT_FOUND'\n ) {\n modulePath = providerName;\n } else {\n throw error;\n }\n }\n\n try {\n provider = require(modulePath);\n } catch (err) {\n const newError = new Error(`Could not load upload provider \"${providerName}\".`);\n\n if (err instanceof Error) {\n newError.stack = err.stack;\n }\n\n throw newError;\n }\n\n const providerInstance = provider.init(providerOptions);\n\n if (!providerInstance.delete) {\n throw new Error(`The upload provider \"${providerName}\" doesn't implement the delete method.`);\n }\n\n if (!providerInstance.upload && !providerInstance.uploadStream) {\n throw new Error(\n `The upload provider \"${providerName}\" doesn't implement the uploadStream nor the upload method.`\n );\n }\n\n if (!providerInstance.uploadStream) {\n process.emitWarning(\n `The upload provider \"${providerName}\" doesn't implement the uploadStream function. Strapi will fallback on the upload method. Some performance issues may occur.`\n );\n }\n\n const wrappedProvider = _.mapValues(providerInstance, (method, methodName) => {\n return async (file: File, options = actionOptions[methodName]) =>\n providerInstance[methodName](file, options);\n });\n\n return Object.assign(Object.create(baseProvider), wrappedProvider);\n};\n\nconst baseProvider = {\n extend(obj: unknown) {\n Object.assign(this, obj);\n },\n checkFileSize(file: InputFile, { sizeLimit }: { sizeLimit: number }) {\n if (sizeLimit && kbytesToBytes(file.size) > sizeLimit) {\n throw new PayloadTooLargeError(\n `${file.originalFilename} exceeds size limit of ${bytesToHumanReadable(sizeLimit)}.`\n );\n }\n },\n getSignedUrl(file: File) {\n return file;\n },\n isPrivate() {\n return false;\n },\n};\n","import 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';\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};\n\nexport const getService = <TName extends keyof Services>(name: TName): Services[TName] => {\n return strapi.plugin('upload').service<Services[TName]>(name);\n};\n","const ACTIONS = {\n read: 'plugin::upload.read',\n readSettings: 'plugin::upload.settings.read',\n create: 'plugin::upload.assets.create',\n update: 'plugin::upload.assets.update',\n download: 'plugin::upload.assets.download',\n copyLink: 'plugin::upload.assets.copy-link',\n configureView: 'plugin::upload.configure-view',\n};\n\nconst ALLOWED_SORT_STRINGS = [\n 'createdAt:DESC',\n 'createdAt:ASC',\n 'name:ASC',\n 'name:DESC',\n 'updatedAt:DESC',\n 'updatedAt:ASC',\n];\n\nconst ALLOWED_WEBHOOK_EVENTS = {\n MEDIA_CREATE: 'media.create',\n MEDIA_UPDATE: 'media.update',\n MEDIA_DELETE: 'media.delete',\n};\n\nconst FOLDER_MODEL_UID = 'plugin::upload.folder';\nconst FILE_MODEL_UID = 'plugin::upload.file';\nconst API_UPLOAD_FOLDER_BASE_NAME = 'API Uploads';\n\nexport {\n ACTIONS,\n FOLDER_MODEL_UID,\n FILE_MODEL_UID,\n API_UPLOAD_FOLDER_BASE_NAME,\n ALLOWED_SORT_STRINGS,\n ALLOWED_WEBHOOK_EVENTS,\n};\n","import type { Core } from '@strapi/types';\n\nimport { getService } from './utils';\nimport { ALLOWED_SORT_STRINGS, ALLOWED_WEBHOOK_EVENTS } from './constants';\n\nexport async function bootstrap({ strapi }: { strapi: Core.Strapi }) {\n const defaultConfig = {\n settings: {\n sizeOptimization: true,\n responsiveDimensions: true,\n autoOrientation: false,\n },\n view_configuration: {\n pageSize: 10,\n sort: ALLOWED_SORT_STRINGS[0],\n },\n };\n\n for (const [key, defaultValue] of Object.entries(defaultConfig)) {\n // set plugin store\n const configurator = strapi.store!({ type: 'plugin', name: 'upload', key });\n\n const config = await configurator.get({});\n if (\n config &&\n Object.keys(defaultValue).every((key) => Object.prototype.hasOwnProperty.call(config, key))\n ) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n // if the config does not exist or does not have all the required keys\n // set from the defaultValue ensuring all required settings are present\n await configurator.set({\n value: Object.assign(defaultValue, config || {}),\n });\n }\n\n await registerPermissionActions();\n await registerWebhookEvents();\n\n await getService('weeklyMetrics').registerCron();\n getService('metrics').sendUploadPluginMetrics();\n\n getService('extensions').signFileUrlsOnDocumentService();\n}\n\nconst registerWebhookEvents = async () =>\n Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {\n strapi.get('webhookStore').addAllowedEvent(key, value);\n });\n\nconst registerPermissionActions = async () => {\n const actions = [\n {\n section: 'plugins',\n displayName: 'Access the Media Library',\n uid: 'read',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Create (upload)',\n uid: 'assets.create',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Update (crop, details, replace) + delete',\n uid: 'assets.update',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Download',\n uid: 'assets.download',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Copy link',\n uid: 'assets.copy-link',\n subCategory: 'assets',\n pluginName: 'upload',\n },\n {\n section: 'plugins',\n displayName: 'Configure view',\n uid: 'configure-view',\n pluginName: 'upload',\n },\n {\n section: 'settings',\n displayName: 'Access the Media Library settings page',\n uid: 'settings.read',\n category: 'media library',\n pluginName: 'upload',\n },\n ];\n\n await strapi.service('admin::permission').actionProvider.registerMany(actions);\n};\n","import type { Struct } from '@strapi/types';\n\nimport { FOLDER_MODEL_UID } from '../constants';\n\nexport default {\n schema: {\n collectionName: 'files',\n info: {\n singularName: 'file',\n pluralName: 'files',\n displayName: 'File',\n description: '',\n },\n options: {},\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n name: {\n type: 'string',\n configurable: false,\n required: true,\n },\n alternativeText: {\n type: 'string',\n configurable: false,\n },\n caption: {\n type: 'string',\n configurable: false,\n },\n width: {\n type: 'integer',\n configurable: false,\n },\n height: {\n type: 'integer',\n configurable: false,\n },\n formats: {\n type: 'json',\n configurable: false,\n },\n hash: {\n type: 'string',\n configurable: false,\n required: true,\n },\n ext: {\n type: 'string',\n configurable: false,\n },\n mime: {\n type: 'string',\n configurable: false,\n required: true,\n },\n size: {\n type: 'decimal',\n configurable: false,\n required: true,\n },\n url: {\n type: 'string',\n configurable: false,\n required: true,\n },\n previewUrl: {\n type: 'string',\n configurable: false,\n },\n provider: {\n type: 'string',\n configurable: false,\n required: true,\n },\n provider_metadata: {\n type: 'json',\n configurable: false,\n },\n related: {\n type: 'relation',\n relation: 'morphToMany',\n configurable: false,\n },\n folder: {\n type: 'relation',\n relation: 'manyToOne',\n target: FOLDER_MODEL_UID,\n inversedBy: 'files',\n private: true,\n },\n folderPath: {\n type: 'string',\n minLength: 1,\n required: true,\n private: true,\n searchable: false,\n },\n },\n // experimental feature:\n indexes: [\n {\n name: 'upload_files_folder_path_index',\n columns: ['folder_path'],\n type: null,\n },\n {\n name: `upload_files_created_at_index`,\n columns: ['created_at'],\n type: null,\n },\n {\n name: `upload_files_updated_at_index`,\n columns: ['updated_at'],\n type: null,\n },\n {\n name: `upload_files_name_index`,\n columns: ['name'],\n type: null,\n },\n {\n name: `upload_files_size_index`,\n columns: ['size'],\n type: null,\n },\n {\n name: `upload_files_ext_index`,\n columns: ['ext'],\n type: null,\n },\n ],\n } satisfies Partial<Struct.CollectionTypeSchema>,\n};\n","import type { Struct } from '@strapi/types';\n\nimport { FOLDER_MODEL_UID, FILE_MODEL_UID } from '../constants';\n\nexport default {\n schema: {\n collectionName: 'upload_folders',\n info: {\n singularName: 'folder',\n pluralName: 'folders',\n displayName: 'Folder',\n },\n options: {},\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n name: {\n type: 'string',\n minLength: 1,\n required: true,\n },\n pathId: {\n type: 'integer',\n unique: true,\n required: true,\n },\n parent: {\n type: 'relation',\n relation: 'manyToOne',\n target: FOLDER_MODEL_UID,\n inversedBy: 'children',\n },\n children: {\n type: 'relation',\n relation: 'oneToMany',\n target: FOLDER_MODEL_UID,\n mappedBy: 'parent',\n },\n files: {\n type: 'relation',\n relation: 'oneToMany',\n target: FILE_MODEL_UID,\n mappedBy: 'folder',\n },\n path: {\n type: 'string',\n minLength: 1,\n required: true,\n },\n },\n // experimental feature:\n indexes: [\n {\n name: 'upload_folders_path_id_index',\n columns: ['path_id'],\n type: 'unique',\n },\n {\n name: 'upload_folders_path_index',\n columns: ['path'],\n type: 'unique',\n },\n ],\n } satisfies Partial<Struct.CollectionTypeSchema>,\n};\n","import file from './file';\nimport folder from './folder';\n\nexport const contentTypes = {\n file,\n folder,\n};\n","import { isFunction } from 'lodash/fp';\nimport { file as fileUtils } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\n\nimport { Config, UploadableFile } from '../types';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n async checkFileSize(file: UploadableFile) {\n const { sizeLimit } = strapi.config.get<Config>('plugin::upload');\n await strapi.plugin('upload').provider.checkFileSize(file, { sizeLimit });\n },\n\n async upload(file: UploadableFile) {\n if (isFunction(strapi.plugin('upload').provider.uploadStream)) {\n file.stream = file.getStream();\n await strapi.plugin('upload').provider.uploadStream(file);\n\n delete file.stream;\n\n if ('filepath' in file) {\n delete file.filepath;\n }\n } else {\n file.buffer = await fileUtils.streamToBuffer(file.getStream());\n await strapi.plugin('upload').provider.upload(file);\n\n delete file.buffer;\n\n if ('filepath' in file) {\n delete file.filepath;\n }\n }\n },\n});\n","import os from 'os';\nimport path from 'path';\nimport crypto from 'crypto';\nimport fs from 'fs';\nimport fse from 'fs-extra';\nimport _ from 'lodash';\nimport { extension } from 'mime-types';\nimport {\n sanitize,\n strings,\n contentTypes as contentTypesUtils,\n errors,\n file as fileUtils,\n} from '@strapi/utils';\n\nimport type { Core, UID } from '@strapi/types';\n\nimport { FILE_MODEL_UID, ALLOWED_WEBHOOK_EVENTS } from '../constants';\nimport { getService } from '../utils';\n\nimport type { Config, File, InputFile, UploadableFile, FileInfo } from '../types';\nimport type { ViewConfiguration } from '../controllers/validation/admin/configureView';\nimport type { Settings } from '../controllers/validation/admin/settings';\n\ntype User = {\n id: string | number;\n};\n\ntype ID = string | number;\n\ntype CommonOptions = {\n user?: User;\n};\n\ntype Metas = {\n refId?: ID;\n ref?: string;\n field?: string;\n path?: string;\n tmpWorkingDirectory?: string;\n};\n\nconst { UPDATED_BY_ATTRIBUTE, CREATED_BY_ATTRIBUTE } = contentTypesUtils.constants;\nconst { MEDIA_CREATE, MEDIA_UPDATE, MEDIA_DELETE } = ALLOWED_WEBHOOK_EVENTS;\n\nconst { ApplicationError, NotFoundError } = errors;\nconst { bytesToKbytes } = fileUtils;\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const randomSuffix = () => crypto.randomBytes(5).toString('hex');\n\n const generateFileName = (name: string) => {\n const baseName = strings.nameToSlug(name, { separator: '_', lowercase: false });\n\n return `${baseName}_${randomSuffix()}`;\n };\n\n const sendMediaMetrics = (data: Pick<File, 'caption' | 'alternativeText'>) => {\n if (_.has(data, 'caption') && !_.isEmpty(data.caption)) {\n strapi.telemetry.send('didSaveMediaWithCaption');\n }\n\n if (_.has(data, 'alternativeText') && !_.isEmpty(data.alternativeText)) {\n strapi.telemetry.send('didSaveMediaWithAlternativeText');\n }\n };\n\n const createAndAssignTmpWorkingDirectoryToFiles = async (\n files: InputFile | InputFile[]\n ): Promise<string> => {\n const tmpWorkingDirectory = await fse.mkdtemp(path.join(os.tmpdir(), 'strapi-upload-'));\n\n if (Array.isArray(files)) {\n files.forEach((file) => {\n file.tmpWorkingDirectory = tmpWorkingDirectory;\n });\n } else {\n files.tmpWorkingDirectory = tmpWorkingDirectory;\n }\n\n return tmpWorkingDirectory;\n };\n\n function filenameReservedRegex() {\n // eslint-disable-next-line no-control-regex\n return /[<>:\"/\\\\|?*\\u0000-\\u001F]/g;\n }\n\n function windowsReservedNameRegex() {\n return /^(con|prn|aux|nul|com\\d|lpt\\d)$/i;\n }\n\n /**\n * Copied from https://github.com/sindresorhus/valid-filename package\n */\n function isValidFilename(string: string) {\n if (!string || string.length > 255) {\n return false;\n }\n if (filenameReservedRegex().test(string) || windowsReservedNameRegex().test(string)) {\n return false;\n }\n if (string === '.' || string === '..') {\n return false;\n }\n return true;\n }\n\n async function emitEvent(event: string, data: Record<string, any>) {\n const modelDef = strapi.getModel(FILE_MODEL_UID);\n const sanitizedData = await sanitize.sanitizers.defaultSanitizeOutput(\n {\n schema: modelDef,\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n },\n data\n );\n\n strapi.eventHub.emit(event, { media: sanitizedData });\n }\n\n async function formatFileInfo(\n { filename, type, size }: { filename: string; type: string; size: number },\n fileInfo: Partial<FileInfo> = {},\n metas: {\n refId?: ID;\n ref?: string;\n field?: string;\n path?: string;\n tmpWorkingDirectory?: string;\n } = {}\n ): Promise<Omit<UploadableFile, 'getStream'>> {\n const fileService = getService('file');\n\n if (!isValidFilename(filename)) {\n throw new ApplicationError('File name contains invalid characters');\n }\n\n let ext = path.extname(filename);\n if (!ext) {\n ext = `.${extension(type)}`;\n }\n const usedName = (fileInfo.name || filename).normalize();\n const basename = path.basename(usedName, ext);\n\n // Prevent null characters in file name\n if (!isValidFilename(filename)) {\n throw new ApplicationError('File name contains invalid characters');\n }\n\n const entity: Omit<UploadableFile, 'getStream'> = {\n name: usedName,\n alternativeText: fileInfo.alternativeText,\n caption: fileInfo.caption,\n folder: fileInfo.folder,\n folderPath: await fileService.getFolderPath(fileInfo.folder),\n hash: generateFileName(basename),\n ext,\n mime: type,\n size: bytesToKbytes(size),\n sizeInBytes: size,\n };\n\n const { refId, ref, field } = metas;\n\n if (refId && ref && field) {\n entity.related = [\n {\n id: refId,\n __type: ref,\n __pivot: { field },\n },\n ];\n }\n\n if (metas.path) {\n entity.path = metas.path;\n }\n\n if (metas.tmpWorkingDirectory) {\n entity.tmpWorkingDirectory = metas.tmpWorkingDirectory;\n }\n\n return entity;\n }\n\n async function enhanceAndValidateFile(\n file: InputFile,\n fileInfo: FileInfo,\n metas?: Metas\n ): Promise<UploadableFile> {\n const currentFile = (await formatFileInfo(\n {\n filename: file.originalFilename ?? 'unamed',\n type: file.mimetype ?? 'application/octet-stream',\n size: file.size,\n },\n fileInfo,\n {\n ...metas,\n tmpWorkingDirectory: file.tmpWorkingDirectory,\n }\n )) as UploadableFile;\n\n currentFile.filepath = file.filepath;\n currentFile.getStream = () => fs.createReadStream(file.filepath);\n\n const { optimize, isImage, isFaultyImage, isOptimizableImage } = strapi\n .plugin('upload')\n .service('image-manipulation');\n\n if (await isImage(currentFile)) {\n if (await isFaultyImage(currentFile)) {\n throw new ApplicationError('File is not a valid image');\n }\n if (await isOptimizableImage(currentFile)) {\n return optimize(currentFile);\n }\n }\n\n return currentFile;\n }\n\n async function upload(\n {\n data,\n files,\n }: {\n data: Record<string, unknown>;\n files: InputFile | InputFile[];\n },\n opts?: CommonOptions\n ) {\n const { user } = opts ?? {};\n // create temporary folder to store files for stream manipulation\n const tmpWorkingDirectory = await createAndAssignTmpWorkingDirectoryToFiles(files);\n\n let uploadedFiles: any[] = [];\n\n try {\n const { fileInfo, ...metas } = data;\n\n const fileArray = Array.isArray(files) ? files : [files];\n const fileInfoArray = Array.isArray(fileInfo) ? fileInfo : [fileInfo];\n\n const doUpload = async (file: InputFile, fileInfo: FileInfo) => {\n const fileData = await enhanceAndValidateFile(file, fileInfo, metas);\n return uploadFileAndPersist(fileData, { user });\n };\n\n uploadedFiles = await Promise.all(\n fileArray.map((file, idx) => doUpload(file, fileInfoArray[idx] || {}))\n );\n } finally {\n // delete temporary folder\n await fse.remove(tmpWorkingDirectory);\n }\n\n return uploadedFiles;\n }\n\n /**\n * When uploading an image, an additional thumbnail is generated.\n * Also, if there are responsive formats defined, another set of images will be generated too.\n *\n * @param {*} fileData\n */\n async function uploadImage(fileData: UploadableFile) {\n const { getDimensions, generateThumbnail, generateResponsiveFormats, isResizableImage } =\n getService('image-manipulation');\n\n // Store width and height of the original image\n const { width, height } = await getDimensions(fileData);\n\n // Make sure this is assigned before calling any upload\n // That way it can mutate the width and height\n _.assign(fileData, {\n width,\n height,\n });\n\n // For performance reasons, all uploads are wrapped in a single Promise.all\n const uploadThumbnail = async (thumbnailFile: UploadableFile) => {\n await getService('provider').upload(thumbnailFile);\n _.set(fileData, 'formats.thumbnail', thumbnailFile);\n };\n\n // Generate thumbnail and responsive formats\n const uploadResponsiveFormat = async (format: { key: string; file: UploadableFile }) => {\n const { key, file } = format;\n await getService('provider').upload(file);\n _.set(fileData, ['formats', key], file);\n };\n\n const uploadPromises: Promise<void>[] = [];\n\n // Upload image\n uploadPromises.push(getService('provider').upload(fileData));\n\n // Generate & Upload thumbnail and responsive formats\n if (await isResizableImage(fileData)) {\n const thumbnailFile = await generateThumbnail(fileData);\n if (thumbnailFile) {\n uploadPromises.push(uploadThumbnail(thumbnailFile));\n }\n\n const formats = await generateResponsiveFormats(fileData);\n if (Array.isArray(formats) && formats.length > 0) {\n for (const format of formats) {\n // eslint-disable-next-line no-continue\n if (!format) continue;\n uploadPromises.push(uploadResponsiveFormat(format));\n }\n }\n }\n // Wait for all uploads to finish\n await Promise.all(uploadPromises);\n }\n\n /**\n * Upload a file. If it is an image it will generate a thumbnail\n * and responsive formats (if enabled).\n */\n async function uploadFileAndPersist(fileData: UploadableFile, opts?: CommonOptions) {\n const { user } = opts ?? {};\n\n const config = strapi.config.get<Config>('plugin::upload');\n const { isImage } = getService('image-manipulation');\n\n await getService('provider').checkFileSize(fileData);\n\n if (await isImage(fileData)) {\n await uploadImage(fileData);\n } else {\n await getService('provider').upload(fileData);\n }\n\n _.set(fileData, 'provider', config.provider);\n\n // Persist file(s)\n return add(fileData, { user });\n }\n\n async function updateFileInfo(\n id: ID,\n { name, alternativeText, caption, folder }: FileInfo,\n opts?: CommonOptions\n ) {\n const { user } = opts ?? {};\n\n const dbFile = await findOne(id);\n\n if (!dbFile) {\n throw new NotFoundError();\n }\n\n const fileService = getService('file');\n\n const newName = _.isNil(name) ? dbFile.name : name;\n const newInfos = {\n name: newName,\n alternativeText: _.isNil(alternativeText) ? dbFile.alternativeText : alternativeText,\n caption: _.isNil(caption) ? dbFile.caption : caption,\n folder: _.isUndefined(folder) ? dbFile.folder : folder,\n folderPath: _.isUndefined(folder) ? dbFile.path : await fileService.getFolderPath(folder),\n };\n\n return update(id, newInfos, { user });\n }\n\n async function replace(\n id: ID,\n { data, file }: { data: { fileInfo: FileInfo }; file: InputFile },\n opts?: CommonOptions\n ) {\n const { user } = opts ?? {};\n\n const config = strapi.config.get<Config>('plugin::upload');\n\n const { isImage } = getService('image-manipulation');\n\n const dbFile = await findOne(id);\n if (!dbFile) {\n throw new NotFoundError();\n }\n\n // create temporary folder to store files for stream manipulation\n const tmpWorkingDirectory = await createAndAssignTmpWorkingDirectoryToFiles(file);\n\n let fileData: UploadableFile;\n\n try {\n const { fileInfo } = data;\n fileData = await enhanceAndValidateFile(file, fileInfo);\n\n // keep a constant hash and extension so the file url doesn't change when the file is replaced\n _.assign(fileData, {\n hash: dbFile.hash,\n ext: dbFile.ext,\n });\n\n // execute delete function of the provider\n if (dbFile.provider === config.provider) {\n await strapi.plugin('upload').provider.delete(dbFile);\n\n if (dbFile.formats) {\n await Promise.all(\n Object.keys(dbFile.formats).map((key) => {\n return strapi.plugin('upload').provider.delete(dbFile.formats[key]);\n })\n );\n }\n }\n\n // clear old formats\n _.set(fileData, 'formats', {});\n\n if (await isImage(fileData)) {\n await uploadImage(fileData);\n } else {\n await getService('provider').upload(fileData);\n }\n\n _.set(fileData, 'provider', config.provider);\n } finally {\n // delete temporary folder\n await fse.remove(tmpWorkingDirectory);\n }\n\n return update(id, fileData, { user });\n }\n\n async function update(id: ID, values: Partial<File>, opts?: CommonOptions) {\n const { user } = opts ?? {};\n\n const fileValues = { ...values };\n if (user) {\n Object.assign(fileValues, {\n [UPDATED_BY_ATTRIBUTE]: user.id,\n });\n }\n\n sendMediaMetrics(fileValues);\n\n const res = await strapi.db.query(FILE_MODEL_UID).update({ where: { id }, data: fileValues });\n\n await emitEvent(MEDIA_UPDATE, res);\n\n return res;\n }\n\n async function add(values: any, opts?: CommonOptions) {\n const { user } = opts ?? {};\n\n const fileValues = { ...values };\n if (user) {\n Object.assign(fileValues, {\n [UPDATED_BY_ATTRIBUTE]: user.id,\n [CREATED_BY_ATTRIBUTE]: user.id,\n });\n }\n\n sendMediaMetrics(fileValues);\n\n const res = await strapi.db.query(FILE_MODEL_UID).create({ data: fileValues });\n\n await emitEvent(MEDIA_CREATE, res);\n\n return res;\n }\n\n function findOne(id: ID, populate = {}) {\n const query = strapi.get('query-params').transform(FILE_MODEL_UID, {\n populate,\n });\n\n return strapi.db.query(FILE_MODEL_UID).findOne({\n where: { id },\n ...query,\n });\n }\n\n function findMany(query: any = {}): Promise<File[]> {\n return strapi.db\n .query(FILE_MODEL_UID)\n .findMany(strapi.get('query-params').transform(FILE_MODEL_UID, query));\n }\n\n function findPage(query: any = {}) {\n return strapi.db\n .query(FILE_MODEL_UID)\n .findPage(strapi.get('query-params').transform(FILE_MODEL_UID, query));\n }\n\n async function remove(file: File) {\n const config = strapi.config.get<Config>('plugin::upload');\n\n // execute delete function of the provider\n if (file.provider === config.provider) {\n await strapi.plugin('upload').provider.delete(file);\n\n if (file.formats) {\n const keys = Object.keys(file.formats);\n\n await Promise.all(\n keys.map((key) => {\n return strapi.plugin('upload').provider.delete(file.formats![key]);\n })\n );\n }\n }\n\n const media = await strapi.db.query(FILE_MODEL_UID).findOne({\n where: { id: file.id },\n });\n\n await emitEvent(MEDIA_DELETE, media);\n\n return strapi.db.query(FILE_MODEL_UID).delete({ where: { id: file.id } });\n }\n\n async function getSettings() {\n const res = await strapi.store!({ type: 'plugin', name: 'upload', key: 'settings' }).get({});\n\n return res as Settings | null;\n }\n\n function setSettings(value: Settings) {\n if (value.responsiveDimensions === true) {\n strapi.telemetry.send('didEnableResponsiveDimensions');\n } else {\n strapi.telemetry.send('didDisableResponsiveDimensions');\n }\n\n return strapi.store!({ type: 'plugin', name: 'upload', key: 'settings' }).set({ value });\n }\n\n async function getConfiguration() {\n const res = await strapi.store!({\n type: 'plugin',\n name: 'upload',\n key: 'view_configuration',\n }).get({});\n\n return res as ViewConfiguration | null;\n }\n\n function setConfiguration(value: ViewConfiguration) {\n return strapi.store!({ type: 'plugin', name: 'upload', key: 'view_configuration' }).set({\n value,\n });\n }\n\n return {\n formatFileInfo,\n upload,\n updateFileInfo,\n replace,\n findOne,\n findMany,\n findPage,\n remove,\n getSettings,\n setSettings,\n getConfiguration,\n setConfiguration,\n\n /**\n * exposed for testing only\n * @internal\n */\n _uploadImage: uploadImage,\n };\n};\n","import fs from 'fs';\nimport { join } from 'path';\nimport sharp from 'sharp';\nimport { file as fileUtils } from '@strapi/utils';\n\nimport { getService } from '../utils';\n\nimport type { UploadableFile } from '../types';\n\ntype Dimensions = {\n width: number | null;\n height: number | null;\n};\n\nconst { bytesToKbytes } = fileUtils;\n\nconst FORMATS_TO_RESIZE = ['jpeg', 'png', 'webp', 'tiff', 'gif'];\nconst FORMATS_TO_PROCESS = ['jpeg', 'png', 'webp', 'tiff', 'svg', 'gif', 'avif'];\nconst FORMATS_TO_OPTIMIZE = ['jpeg', 'png', 'webp', 'tiff', 'avif'];\n\nconst isOptimizableFormat = (\n format: string | undefined\n): format is 'jpeg' | 'png' | 'webp' | 'tiff' | 'avif' =>\n format !== undefined && FORMATS_TO_OPTIMIZE.includes(format);\n\nconst writeStreamToFile = (stream: NodeJS.ReadWriteStream, path: string) =>\n new Promise((resolve, reject) => {\n const writeStream = fs.createWriteStream(path);\n // Reject promise if there is an error with the provided stream\n stream.on('error', reject);\n stream.pipe(writeStream);\n writeStream.on('close', resolve);\n writeStream.on('error', reject);\n });\n\nconst getMetadata = (file: UploadableFile): Promise<sharp.Metadata> => {\n if (!file.filepath) {\n return new Promise((resolve, reject) => {\n const pipeline = sharp();\n pipeline.metadata().then(resolve).catch(reject);\n file.getStream().pipe(pipeline);\n });\n }\n\n return sharp(file.filepath).metadata();\n};\n\nconst getDimensions = async (file: UploadableFile): Promise<Dimensions> => {\n const { width = null, height = null } = await getMetadata(file);\n\n return { width, height };\n};\n\nconst THUMBNAIL_RESIZE_OPTIONS = {\n width: 245,\n height: 156,\n fit: 'inside',\n} satisfies sharp.ResizeOptions;\n\nconst resizeFileTo = async (\n file: UploadableFile,\n options: sharp.ResizeOptions,\n {\n name,\n hash,\n }: {\n name: string;\n hash: string;\n }\n) => {\n const filePath = file.tmpWorkingDirectory ? join(file.tmpWorkingDirectory, hash) : hash;\n\n let newInfo;\n if (!file.filepath) {\n const transform = sharp()\n .resize(options)\n .on('info', (info) => {\n newInfo = info;\n });\n\n await writeStreamToFile(file.getStream().pipe(transform), filePath);\n } else {\n newInfo = await sharp(file.filepath).resize(options).toFile(filePath);\n }\n\n const { width, height, size } = newInfo ?? {};\n\n const newFile: UploadableFile = {\n name,\n hash,\n ext: file.ext,\n mime: file.mime,\n filepath: filePath,\n path: file.path || null,\n getStream: () => fs.createReadStream(filePath),\n };\n\n Object.assign(newFile, {\n width,\n height,\n size: size ? bytesToKbytes(size) : 0,\n sizeInBytes: size,\n });\n return newFile;\n};\n\nconst generateThumbnail = async (file: UploadableFile) => {\n if (\n file.width &&\n file.height &&\n (file.width > THUMBNAIL_RESIZE_OPTIONS.width || file.height > THUMBNAIL_RESIZE_OPTIONS.height)\n ) {\n return resizeFileTo(file, THUMBNAIL_RESIZE_OPTIONS, {\n name: `thumbnail_${file.name}`,\n hash: `thumbnail_${file.hash}`,\n });\n }\n\n return null;\n};\n\n/**\n * Optimize image by:\n * - auto orienting image based on EXIF data\n * - reduce image quality\n *\n */\nconst optimize = async (file: UploadableFile) => {\n const { sizeOptimization = false, autoOrientation = false } =\n (await getService('upload').getSettings()) ?? {};\n\n const { format, size } = await getMetadata(file);\n\n if ((sizeOptimization || autoOrientation) && isOptimizableFormat(format)) {\n let transformer;\n if (!file.filepath) {\n transformer = sharp();\n } else {\n transformer = sharp(file.filepath);\n }\n // reduce image quality\n transformer[format]({ quality: sizeOptimization ? 80 : 100 });\n // rotate image based on EXIF data\n if (autoOrientation) {\n transformer.rotate();\n }\n const filePath = file.tmpWorkingDirectory\n ? join(file.tmpWorkingDirectory, `optimized-${file.hash}`)\n : `optimized-${file.hash}`;\n\n let newInfo;\n if (!file.filepath) {\n transformer.on('info', (info) => {\n newInfo = info;\n });\n\n await writeStreamToFile(file.getStream().pipe(transformer), filePath);\n } else {\n newInfo = await transformer.toFile(filePath);\n }\n\n const { width: newWidth, height: newHeight, size: newSize } = newInfo ?? {};\n\n const newFile = { ...file };\n\n newFile.getStream = () => fs.createReadStream(filePath);\n newFile.filepath = filePath;\n\n if (newSize && size && newSize > size) {\n // Ignore optimization if output is bigger than original\n return file;\n }\n\n return Object.assign(newFile, {\n width: newWidth,\n height: newHeight,\n size: newSize ? bytesToKbytes(newSize) : 0,\n sizeInBytes: newSize,\n });\n }\n\n return file;\n};\n\nconst DEFAULT_BREAKPOINTS = {\n large: 1000,\n medium: 750,\n small: 500,\n};\n\nconst getBreakpoints = () =>\n strapi.config.get<Record<string, number>>('plugin::upload.breakpoints', DEFAULT_BREAKPOINTS);\n\nconst generateResponsiveFormats = async (file: UploadableFile) => {\n const { responsiveDimensions = false } = (await getService('upload').getSettings()) ?? {};\n\n if (!responsiveDimensions) return [];\n\n const originalDimensions = await getDimensions(file);\n\n const breakpoints = getBreakpoints();\n return Promise.all(\n Object.keys(breakpoints).map((key) => {\n const breakpoint = breakpoints[key];\n\n if (breakpointSmallerThan(breakpoint, originalDimensions)) {\n return generateBreakpoint(key, { file, breakpoint });\n }\n\n return undefined;\n })\n );\n};\n\nconst generateBreakpoint = async (\n key: string,\n { file, breakpoint }: { file: UploadableFile; breakpoint: number }\n) => {\n const newFile = await resizeFileTo(\n file,\n {\n width: breakpoint,\n height: breakpoint,\n fit: 'inside',\n },\n {\n name: `${key}_${file.name}`,\n hash: `${key}_${file.hash}`,\n }\n );\n return {\n key,\n file: newFile,\n };\n};\n\nconst breakpointSmallerThan = (breakpoint: number, { width, height }: Dimensions) => {\n return breakpoint < (width ?? 0) || breakpoint < (height ?? 0);\n};\n\n/**\n * Applies a simple image transformation to see if the image is faulty/corrupted.\n */\nconst isFaultyImage = async (file: UploadableFile) => {\n if (!file.filepath) {\n return new Promise((resolve, reject) => {\n const pipeline = sharp();\n pipeline.stats().then(resolve).catch(reject);\n file.getStream().pipe(pipeline);\n });\n }\n\n try {\n await sharp(file.filepath).stats();\n return false;\n } catch (e) {\n return true;\n }\n};\n\nconst isOptimizableImage = async (file: UploadableFile) => {\n let format;\n try {\n const metadata = await getMetadata(file);\n format = metadata.format;\n } catch (e) {\n // throw when the file is not a supported image\n return false;\n }\n return format && FORMATS_TO_OPTIMIZE.includes(format);\n};\n\nconst isResizableImage = async (file: UploadableFile) => {\n let format;\n try {\n const metadata = await getMetadata(file);\n format = metadata.format;\n } catch (e) {\n // throw when the file is not a supported image\n return false;\n }\n return format && FORMATS_TO_RESIZE.includes(format);\n};\n\nconst isImage = async (file: UploadableFile) => {\n let format;\n try {\n const metadata = await getMetadata(file);\n format = metadata.format;\n } catch (e) {\n // throw when the file is not a supported image\n return false;\n }\n return format && FORMATS_TO_PROCESS.includes(format);\n};\n\nexport default {\n isFaultyImage,\n isOptimizableImage,\n isResizableImage,\n isImage,\n getDimensions,\n generateResponsiveFormats,\n generateThumbnail,\n optimize,\n};\n","import { sortBy, map, isUndefined } from 'lodash/fp';\nimport { strings, setCreatorFields } from '@strapi/utils';\nimport { FOLDER_MODEL_UID, FILE_MODEL_UID } from '../constants';\nimport { getService } from '../utils';\n\nimport type { File, Folder } from '../types';\n\ntype FolderMap = {\n [key: string]: Partial<Folder> & {\n children: FolderNode[];\n };\n};\n\ntype FolderNode = Partial<Folder> & {\n children: FolderNode[];\n};\n\nconst setPathIdAndPath = async (folder: Pick<Folder, 'parent'>) => {\n const { max } = await strapi.db\n .queryBuilder(FOLDER_MODEL_UID)\n .max('pathId')\n .first()\n .execute<{ max: number }>();\n\n const pathId = max + 1;\n let parentPath = '/';\n if (folder.parent) {\n const parentFolder = await strapi.db\n .query(FOLDER_MODEL_UID)\n .findOne({ where: { id: folder.parent } });\n\n parentPath = parentFolder.path;\n }\n\n return Object.assign(folder, {\n pathId,\n path: strings.joinBy('/', parentPath, `${pathId}`),\n });\n};\n\nconst create = async (\n folderData: Pick<Folder, 'name' | 'parent'>,\n opts?: { user: { id: string | number } }\n) => {\n const folderService = getService('folder');\n\n const { user } = opts || {};\n\n let enrichedFolder = await folderService.setPathIdAndPath(folderData);\n if (user) {\n enrichedFolder = await setCreatorFields({ user })(enrichedFolder);\n }\n\n const folder = await strapi.db.query(FOLDER_MODEL_UID).create({ data: enrichedFolder });\n\n strapi.eventHub.emit('media-folder.create', { folder });\n\n return folder;\n};\n\n/**\n * Recursively delete folders and included files\n * @param ids ids of the folders to delete\n * @returns {Promise<Object[]>}\n */\nconst deleteByIds = async (ids = []) => {\n const folders = await strapi.db.query(FOLDER_MODEL_UID).findMany({ where: { id: { $in: ids } } });\n if (folders.length === 0) {\n return {\n folders: [],\n totalFolderNumber: 0,\n totalFileNumber: 0,\n };\n }\n\n const pathsToDelete = map('path', folders);\n\n // delete files\n const filesToDelete = await strapi.db.query(FILE_MODEL_UID).findMany({\n where: {\n $or: pathsToDelete.flatMap((path) => [\n { folderPath: { $eq: path } },\n { folderPath: { $startsWith: `${path}/` } },\n ]),\n },\n });\n\n await Promise.all(filesToDelete.map((file: File) => getService('upload').remove(file)));\n\n // delete folders and subfolders\n const { count: totalFolderNumber } = await strapi.db.query(FOLDER_MODEL_UID).deleteMany({\n where: {\n $or: pathsToDelete.flatMap((path) => [\n { path: { $eq: path } },\n { path: { $startsWith: `${path}/` } },\n ]),\n },\n });\n\n strapi.eventHub.emit('media-folder.delete', { folders });\n\n return {\n folders,\n totalFolderNumber,\n totalFileNumber: filesToDelete.length,\n };\n};\n\n/**\n * Update name and location of a folder and its belonging folders and files\n */\nconst update = async (\n id: number,\n {\n name,\n parent,\n }: {\n name: string;\n parent: number | null;\n },\n { user }: { user: { id: string | number } }\n) => {\n // only name is updated\n if (isUndefined(parent)) {\n const existingFolder = await strapi.db.query(FOLDER_MODEL_UID).findOne({ where: { id } });\n\n if (!existingFolder) {\n return undefined;\n }\n\n const newFolder = setCreatorFields({ user, isEdition: true })({ name, parent });\n\n if (isUndefined(parent)) {\n const folder = await strapi.db\n .query(FOLDER_MODEL_UID)\n .update({ where: { id }, data: newFolder });\n\n return folder;\n }\n // location is updated => using transaction\n } else {\n const trx = await strapi.db.transaction();\n try {\n // fetch existing folder\n const existingFolder = await strapi.db\n .queryBuilder(FOLDER_MODEL_UID)\n .select(['pathId', 'path'])\n .where({ id })\n .transacting(trx.get())\n .forUpdate()\n .first()\n .execute<Folder>();\n\n // update parent folder (delete + insert; upsert not possible)\n // @ts-expect-error - no dynamic types\n const { joinTable } = strapi.db.metadata.get(FOLDER_MODEL_UID).attributes.parent;\n await strapi.db\n .queryBuilder(joinTable.name)\n .transacting(trx.get())\n .delete()\n .where({ [joinTable.joinColumn.name]: id })\n .execute();\n\n if (parent !== null) {\n await strapi.db\n .queryBuilder(joinTable.name)\n .transacting(trx.get())\n .insert({ [joinTable.inverseJoinColumn.name]: parent, [joinTable.joinColumn.name]: id })\n .where({ [joinTable.joinColumn.name]: id })\n .execute();\n }\n\n // fetch destinationFolder path\n let destinationFolderPath = '/';\n if (parent !== null) {\n const destinationFolder = await strapi.db\n .queryBuilder(FOLDER_MODEL_UID)\n .select('path')\n .where({ id: parent })\n .transacting(trx.get())\n .first()\n .execute<Folder>();\n destinationFolderPath = destinationFolder.path;\n }\n\n const folderTable = strapi.getModel(FOLDER_MODEL_UID).collectionName;\n const fileTable = strapi.getModel(FILE_MODEL_UID).collectionName;\n const folderPathColumnName =\n // @ts-expect-error - no dynamic types\n strapi.db.metadata.get(FILE_MODEL_UID).attributes.folderPath.columnName;\n // @ts-expect-error - no dynamic types\n const pathColumnName = strapi.db.metadata.get(FOLDER_MODEL_UID).attributes.path.columnName;\n\n // update folders below\n await strapi.db\n .getConnection(folderTable)\n .transacting(trx.get())\n .where(pathColumnName, existingFolder.path)\n .orWhere(pathColumnName, 'like', `${existingFolder.path}/%`)\n .update(\n pathColumnName,\n strapi.db.connection.raw('REPLACE(??, ?, ?)', [\n pathColumnName,\n existingFolder.path,\n strings.joinBy('/', destinationFolderPath, `${existingFolder.pathId}`),\n ])\n );\n\n // update files below\n await strapi.db\n .getConnection(fileTable)\n .transacting(trx.get())\n .where(folderPathColumnName, existingFolder.path)\n .orWhere(folderPathColumnName, 'like', `${existingFolder.path}/%`)\n .update(\n folderPathColumnName,\n strapi.db.connection.raw('REPLACE(??, ?, ?)', [\n folderPathColumnName,\n existingFolder.path,\n strings.joinBy('/', destinationFolderPath, `${existingFolder.pathId}`),\n ])\n );\n\n await trx.commit();\n } catch (e) {\n await trx.rollback();\n throw e;\n }\n\n // update less critical information (name + updatedBy)\n const newFolder = setCreatorFields({ user, isEdition: true })({ name });\n\n const folder = await strapi.db\n .query(FOLDER_MODEL_UID)\n .update({ where: { id }, data: newFolder });\n\n strapi.eventHub.emit('media-folder.update', { folder });\n return folder;\n }\n};\n\n/**\n * Check if a folder exists in database\n * @param params query params to find the folder\n * @returns {Promise<boolean>}\n */\nconst exists = async (params = {}) => {\n const count = await strapi.db.query(FOLDER_MODEL_UID).count({ where: params });\n return count > 0;\n};\n\n/**\n * Returns the nested structure of folders\n * @returns {Promise<array>}\n */\nconst getStructure = async () => {\n // @ts-expect-error - no dynamic types\n const { joinTable } = strapi.db.metadata.get(FOLDER_MODEL_UID).attributes.parent;\n const qb = strapi.db.queryBuilder(FOLDER_MODEL_UID);\n const alias = qb.getAlias();\n const folders = (await qb\n .select(['id', 'name', `${alias}.${joinTable.inverseJoinColumn.name} as parent`])\n .join({\n alias,\n referencedTable: joinTable.name,\n referencedColumn: joinTable.joinColumn.name,\n rootColumn: joinTable.joinColumn.referencedColumn,\n rootTable: qb.alias,\n })\n .execute({ mapResults: false })) as Folder[];\n\n const folderMap: FolderMap = {\n null: { children: [] },\n };\n\n folders.forEach((f) => {\n folderMap[f.id] = { ...f, children: [] };\n });\n\n folders.forEach((f) => {\n const parentId = f.parent || 'null';\n\n if (!folderMap[parentId]) {\n folderMap[parentId] = { children: [] };\n }\n\n folderMap[parentId].children.push(folderMap[f.id]);\n folderMap[parentId].children = sortBy('name', folderMap[parentId].children);\n delete folderMap[f.id].parent;\n });\n\n return folderMap.null.children;\n};\n\nexport default {\n create,\n exists,\n deleteByIds,\n update,\n setPathIdAndPath,\n getStructure,\n};\n","import { cloneDeep } from 'lodash/fp';\nimport { async } from '@strapi/utils';\n\nimport { FOLDER_MODEL_UID, FILE_MODEL_UID } from '../constants';\nimport { getService } from '../utils';\n\nimport { Config, type File } from '../types';\n\nconst getFolderPath = async (folderId?: number | null) => {\n if (!folderId) return '/';\n\n const parentFolder = await strapi.db.query(FOLDER_MODEL_UID).findOne({ where: { id: folderId } });\n\n return parentFolder.path;\n};\n\nconst deleteByIds = async (ids: number[] = []) => {\n const filesToDelete = await strapi.db\n .query(FILE_MODEL_UID)\n .findMany({ where: { id: { $in: ids } } });\n\n await Promise.all(filesToDelete.map((file: File) => getService('upload').remove(file)));\n\n return filesToDelete;\n};\n\nconst signFileUrls = async (file: File) => {\n const { provider } = strapi.plugins.upload;\n const { provider: providerConfig } = strapi.config.get<Config>('plugin::upload');\n const isPrivate = await provider.isPrivate();\n file.isUrlSigned = false;\n\n // Check file provider and if provider is private\n if (file.provider !== providerConfig || !isPrivate) {\n return file;\n }\n\n const signUrl = async (file: File) => {\n const signedUrl = await provider.getSignedUrl(file);\n file.url = signedUrl.url;\n file.isUrlSigned = true;\n };\n\n const signedFile = cloneDeep(file);\n\n // Sign each file format\n await signUrl(signedFile);\n if (file.formats) {\n await async.map(Object.values(signedFile.formats ?? {}), signUrl);\n }\n\n return signedFile;\n};\n\nexport default { getFolderPath, deleteByIds, signFileUrls };\n","const getWeeklyCronScheduleAt = (date: Date) =>\n `${date.getSeconds()} ${date.getMinutes()} ${date.getHours()} * * ${date.getDay()}`;\n\nexport { getWeeklyCronScheduleAt };\n","import { defaultTo } from 'lodash/fp';\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';\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 strapi.telemetry.send('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","import type { Core } from '@strapi/types';\n\nconst getProviderName = () => strapi.config.get('plugin::upload.provider', 'local');\nconst isProviderPrivate = async () => strapi.plugin('upload').provider.isPrivate();\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n async sendUploadPluginMetrics() {\n const uploadProvider = getProviderName();\n const privateProvider = await isProviderPrivate();\n\n strapi.telemetry.send('didInitializePluginUpload', {\n groupProperties: {\n uploadProvider,\n privateProvider,\n },\n });\n },\n});\n","import { isNil, get } from 'lodash/fp';\nimport { getService } from '../utils';\nimport { FOLDER_MODEL_UID, API_UPLOAD_FOLDER_BASE_NAME } from '../constants';\n\nconst getStore = () => strapi.store({ type: 'plugin', name: 'upload', key: 'api-folder' });\n\nconst createApiUploadFolder = async () => {\n let name = API_UPLOAD_FOLDER_BASE_NAME;\n const folderService = getService('folder');\n\n let exists = true;\n let index = 1;\n while (exists) {\n exists = await folderService.exists({ name, parent: null });\n if (exists) {\n name = `${API_UPLOAD_FOLDER_BASE_NAME} (${index})`;\n index += 1;\n }\n }\n\n const folder = await folderService.create({ name });\n\n await getStore().set({ value: { id: folder.id } });\n\n return folder;\n};\n\nconst getAPIUploadFolder = async () => {\n const storeValue = await getStore().get({});\n const folderId = get('id', storeValue);\n\n const folder = folderId\n ? await strapi.db.query(FOLDER_MODEL_UID).findOne({ where: { id: folderId } })\n : null;\n\n return isNil(folder) ? createApiUploadFolder() : folder;\n};\n\nexport default {\n getAPIUploadFolder,\n};\n","import { async, traverseEntity } from '@strapi/utils';\n\nimport type { Schema, UID } from '@strapi/types';\n\nimport { getService } from '../../utils';\n\nimport type { File } from '../../types';\n\ntype SignEntityMediaVisitor = (\n args: {\n key: string;\n value: unknown;\n attribute: Schema.Attribute.AnyAttribute;\n },\n utils: {\n set: (key: string, value: unknown) => void;\n }\n) => Promise<void>;\n\nfunction isFile(value: unknown, attribute: Schema.Attribute.AnyAttribute): value is File {\n if (!value || attribute.type !== 'media') {\n return false;\n }\n\n return true;\n}\n\n/**\n * Visitor function to sign media URLs\n */\nconst signEntityMediaVisitor: SignEntityMediaVisitor = async (\n { key, value, attribute },\n { set }\n) => {\n const { signFileUrls } = getService('file');\n\n if (!attribute) {\n return;\n }\n\n if (attribute.type !== 'media') {\n return;\n }\n\n if (isFile(value, attribute)) {\n // If the attribute is repeatable sign each file\n if (attribute.multiple) {\n const signedFiles = await async.map(value, signFileUrls);\n set(key, signedFiles);\n return;\n }\n\n // If the attribute is not repeatable only sign a single file\n const signedFile = await signFileUrls(value);\n set(key, signedFile);\n }\n};\n\n/**\n *\n * Iterate through an entity manager result\n * Check which modelAttributes are media and pre sign the image URLs\n * if they are from the current upload provider\n *\n * @param {Object} entity\n * @param {Object} modelAttributes\n * @returns\n */\nconst signEntityMedia = async (entity: any, uid: UID.Schema) => {\n const model = strapi.getModel(uid);\n return traverseEntity(\n // @ts-expect-error - FIXME: fix traverseEntity using wrong types\n signEntityMediaVisitor,\n { schema: model, getModel: strapi.getModel.bind(strapi) },\n entity\n );\n};\n\nexport { signEntityMedia };\n","import { async } from '@strapi/utils';\nimport { signEntityMedia } from './utils';\n\nconst signFileUrlsOnDocumentService = async () => {\n const { provider } = strapi.plugins.upload;\n const isPrivate = await provider.isPrivate();\n\n // We only need to sign the file urls if the provider is private\n if (!isPrivate) {\n return;\n }\n\n strapi.documents.use(async (ctx, next) => {\n const uid = ctx.uid;\n const result: any = await next();\n\n if (ctx.action === 'findMany') {\n // Shape: [ entry ]\n return async.map(result, (entry: any) => signEntityMedia(entry, uid));\n }\n\n if (\n ctx.action === 'findFirst' ||\n ctx.action === 'findOne' ||\n ctx.action === 'create' ||\n ctx.action === 'update'\n ) {\n // Shape: entry\n return signEntityMedia(result, uid);\n }\n\n if (\n ctx.action === 'delete' ||\n ctx.action === 'clone' ||\n ctx.action === 'publish' ||\n ctx.action === 'unpublish' ||\n ctx.action === 'discardDraft'\n ) {\n // Shape: { entries: [ entry ] }\n // ...\n return {\n ...result,\n entries: await async.map(result.entries, (entry: any) => signEntityMedia(entry, uid)),\n };\n }\n\n return result;\n });\n};\n\nexport default {\n signFileUrlsOnDocumentService,\n};\n","import provider from './provider';\nimport upload from './upload';\nimport imageManipulation from './image-manipulation';\nimport folder from './folder';\nimport file from './file';\nimport weeklyMetrics from './weekly-metrics';\nimport metrics from './metrics';\nimport apiUploadFolder from './api-upload-folder';\nimport extensions from './extensions';\n\nexport const services = {\n provider,\n upload,\n folder,\n file,\n weeklyMetrics,\n metrics,\n 'image-manipulation': imageManipulation,\n 'api-upload-folder': apiUploadFolder,\n extensions,\n};\n","export const routes = {\n type: 'admin',\n routes: [\n {\n method: 'GET',\n path: '/settings',\n handler: 'admin-settings.getSettings',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::upload.settings.read'],\n },\n },\n ],\n },\n },\n {\n method: 'PUT',\n path: '/settings',\n handler: 'admin-settings.updateSettings',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::upload.settings.read'],\n },\n },\n ],\n },\n },\n {\n method: 'POST',\n path: '/',\n handler: 'admin-upload.upload',\n config: {\n policies: ['admin::isAuthenticatedAdmin'],\n },\n },\n {\n method: 'GET',\n path: '/files',\n handler: 'admin-file.find',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::upload.read'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/files/:id',\n handler: 'admin-file.findOne',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::upload.read'],\n },\n },\n ],\n },\n },\n {\n method: 'DELETE',\n path: '/files/:id',\n handler: 'admin-file.destroy',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::upload.assets.update'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/folders/:id',\n handler: 'admin-folder.findOne',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::upload.read'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/folders',\n handler: 'admin-folder.find',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::upload.read'],\n },\n },\n ],\n },\n },\n {\n method: 'POST',\n path: '/folders',\n handler: 'admin-folder.create',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::upload.assets.create'],\n },\n },\n ],\n },\n },\n {\n method: 'PUT',\n path: '/folders/:id',\n handler: 'admin-folder.update',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::upload.assets.update'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/folder-structure',\n handler: 'admin-folder.getStructure',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::upload.read'],\n },\n },\n ],\n },\n },\n {\n method: 'POST',\n path: '/actions/bulk-delete',\n handler: 'admin-folder-file.deleteMany',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::upload.assets.update'],\n },\n },\n ],\n },\n },\n {\n method: 'POST',\n path: '/actions/bulk-move',\n handler: 'admin-folder-file.moveMany',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::upload.assets.update'],\n },\n },\n ],\n },\n },\n ],\n};\n","export const routes = {\n type: 'content-api',\n routes: [\n {\n method: 'POST',\n path: '/',\n handler: 'content-api.upload',\n },\n {\n method: 'GET',\n path: '/files',\n handler: 'content-api.find',\n },\n {\n method: 'GET',\n path: '/files/:id',\n handler: 'content-api.findOne',\n },\n {\n method: 'DELETE',\n path: '/files/:id',\n handler: 'content-api.destroy',\n },\n ],\n};\n","import { ACTIONS } from '../constants';\n\nexport const routes = {\n type: 'admin',\n routes: [\n {\n method: 'GET',\n path: '/configuration',\n handler: 'view-configuration.findViewConfiguration',\n config: {\n policies: ['admin::isAuthenticatedAdmin'],\n },\n },\n {\n method: 'PUT',\n path: '/configuration',\n handler: 'view-configuration.updateViewConfiguration',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: [ACTIONS.configureView],\n },\n },\n ],\n },\n },\n ],\n};\n","import { routes as admin } from './admin';\nimport { routes as contentApi } from './content-api';\nimport { routes as viewConfiguration } from './view-configuration';\n\nexport const routes = {\n admin,\n 'content-api': contentApi,\n viewConfiguration,\n};\n","export const config = {\n default: {\n enabled: true,\n provider: 'local',\n sizeLimit: 1000000000, // 1GB\n actionOptions: {},\n },\n validator() {},\n};\n","import _ from 'lodash';\nimport { errors, contentTypes as contentTypesUtils } from '@strapi/utils';\nimport { getService } from '../../utils';\n\nconst findEntityAndCheckPermissions = async (\n ability: unknown,\n action: string,\n model: string,\n id: string | number\n) => {\n const file = await getService('upload').findOne(id, [\n contentTypesUtils.constants.CREATED_BY_ATTRIBUTE,\n 'folder',\n ]);\n\n if (_.isNil(file)) {\n throw new errors.NotFoundError();\n }\n\n const pm = strapi\n .service('admin::permission')\n .createPermissionsManager({ ability, action, model });\n\n const creatorId = _.get(file, [contentTypesUtils.constants.CREATED_BY_ATTRIBUTE, 'id']);\n const author = creatorId\n ? await strapi.service('admin::user').findOne(creatorId, ['roles'])\n : null;\n\n const fileWithRoles = _.set(_.cloneDeep(file), 'createdBy', author);\n\n if (pm.ability.cannot(pm.action, pm.toSubject(fileWithRoles))) {\n throw new errors.ForbiddenError();\n }\n\n return { pm, file };\n};\n\nexport { findEntityAndCheckPermissions };\n","import { merge } from 'lodash/fp';\nimport { async } from '@strapi/utils';\n\nimport type { Context } from 'koa';\n\nimport { getService } from '../utils';\nimport { ACTIONS, FILE_MODEL_UID } from '../constants';\nimport { findEntityAndCheckPermissions } from './utils/find-entity-and-check-permissions';\n\nexport default {\n async find(ctx: Context) {\n const {\n state: { userAbility },\n } = ctx;\n\n const defaultQuery = { populate: { folder: true } };\n\n const pm = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n action: ACTIONS.read,\n model: FILE_MODEL_UID,\n });\n\n if (!pm.isAllowed) {\n return ctx.forbidden();\n }\n\n // validate the incoming user query params\n await pm.validateQuery(ctx.query);\n\n const query = await async.pipe(\n // Start by sanitizing the incoming query\n (q) => pm.sanitizeQuery(q),\n // Add the default query which should not be validated or sanitized\n (q) => merge(defaultQuery, q),\n // Add the dynamic filters based on permissions' conditions\n (q) => pm.addPermissionsQueryTo(q)\n )(ctx.query);\n\n const { results: files, pagination } = await getService('upload').findPage(query);\n\n // Sign file urls for private providers\n const signedFiles = await async.map(files, getService('file').signFileUrls);\n\n const sanitizedFiles = await pm.sanitizeOutput(signedFiles);\n\n return { results: sanitizedFiles, pagination };\n },\n\n async findOne(ctx: Context) {\n const {\n state: { userAbility },\n params: { id },\n } = ctx;\n\n const { pm, file } = await findEntityAndCheckPermissions(\n userAbility,\n ACTIONS.read,\n FILE_MODEL_UID,\n id\n );\n\n const signedFile = await getService('file').signFileUrls(file);\n ctx.body = await pm.sanitizeOutput(signedFile);\n },\n\n async destroy(ctx: Context) {\n const { id } = ctx.params;\n const { userAbility } = ctx.state;\n\n const { pm, file } = await findEntityAndCheckPermissions(\n userAbility,\n ACTIONS.update,\n FILE_MODEL_UID,\n id\n );\n\n const [body] = await Promise.all([\n pm.sanitizeOutput(file, { action: ACTIONS.read }),\n getService('upload').remove(file),\n ]);\n\n ctx.body = body;\n },\n};\n","import { isNil } from 'lodash/fp';\nimport { getService } from '../../../utils';\n\nconst folderExists = async (folderId: number) => {\n if (isNil(folderId)) {\n return true;\n }\n\n const exists = await getService('folder').exists({ id: folderId });\n\n return exists;\n};\n\nexport { folderExists };\n","import { Folder } from '../../types';\n\nconst isFolderOrChild = (folderOrChild: Folder, folder: Folder) =>\n folderOrChild.path === folder.path || folderOrChild.path.startsWith(`${folder.path}/`);\n\nexport { isFolderOrChild };\n","import { isUndefined, get, isNil } from 'lodash/fp';\nimport { yup, validateYupSchema } from '@strapi/utils';\nimport { getService } from '../../../utils';\nimport { FOLDER_MODEL_UID } from '../../../constants';\nimport { folderExists } from './utils';\nimport { isFolderOrChild } from '../../utils/folders';\n\nconst NO_SLASH_REGEX = /^[^/]+$/;\nconst NO_SPACES_AROUND = /^(?! ).+(?<! )$/;\n\nconst isNameUniqueInFolder = (id?: number): yup.TestFunction<string | undefined> => {\n return async function test(name?: string) {\n const { exists } = getService('folder');\n const filters: Record<string, unknown> = { name, parent: this.parent.parent || null };\n if (id) {\n filters.id = { $ne: id };\n\n if (isUndefined(name)) {\n const existingFolder = await strapi.db.query(FOLDER_MODEL_UID).findOne({ where: { id } });\n filters.name = get('name', existingFolder);\n }\n }\n\n const doesExist = await exists(filters);\n return !doesExist;\n };\n};\n\nconst validateCreateFolderSchema = yup\n .object()\n .shape({\n name: yup\n .string()\n .min(1)\n .matches(NO_SLASH_REGEX, 'name cannot contain slashes')\n .matches(NO_SPACES_AROUND, 'name cannot start or end with a whitespace')\n .required()\n .test('is-folder-unique', 'A folder with this name already exists', isNameUniqueInFolder()),\n parent: yup\n .strapiID()\n .nullable()\n .test('folder-exists', 'parent folder does not exist', folderExists),\n })\n .noUnknown()\n .required();\n\nconst validateUpdateFolderSchema = (id: number) =>\n yup\n .object()\n .shape({\n name: yup\n .string()\n .min(1)\n .matches(NO_SLASH_REGEX, 'name cannot contain slashes')\n .matches(NO_SPACES_AROUND, 'name cannot start or end with a whitespace')\n .test(\n 'is-folder-unique',\n 'A folder with this name already exists',\n isNameUniqueInFolder(id)\n ),\n parent: yup\n .strapiID()\n .nullable()\n .test('folder-exists', 'parent folder does not exist', folderExists)\n .test(\n 'dont-move-inside-self',\n 'folder cannot be moved inside itself',\n async function test(parent) {\n if (isNil(parent)) return true;\n\n const destinationFolder = await strapi.db.query(FOLDER_MODEL_UID).findOne({\n select: ['path'],\n where: { id: parent },\n });\n\n const currentFolder = await strapi.db.query(FOLDER_MODEL_UID).findOne({\n select: ['path'],\n where: { id },\n });\n\n if (!destinationFolder || !currentFolder) return true;\n\n return !isFolderOrChild(destinationFolder, currentFolder);\n }\n ),\n })\n .noUnknown()\n .required();\n\nexport const validateCreateFolder = validateYupSchema(validateCreateFolderSchema);\nexport const validateUpdateFolder = (id: number) =>\n validateYupSchema(validateUpdateFolderSchema(id));\n","import { defaultsDeep } from 'lodash/fp';\n\nimport type { Context } from 'koa';\n\nimport { getService } from '../utils';\nimport { FOLDER_MODEL_UID } from '../constants';\nimport { validateCreateFolder, validateUpdateFolder } from './validation/admin/folder';\n\nexport default {\n async findOne(ctx: Context) {\n const { id } = ctx.params;\n\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: FOLDER_MODEL_UID,\n });\n\n await permissionsManager.validateQuery(ctx.query);\n const query = await permissionsManager.sanitizeQuery(ctx.query);\n\n const { results } = await strapi.db.query(FOLDER_MODEL_UID).findPage(\n strapi.get('query-params').transform(\n FOLDER_MODEL_UID,\n defaultsDeep(\n {\n filters: { id },\n populate: {\n children: {\n count: true,\n },\n files: {\n count: true,\n },\n },\n },\n query\n )\n )\n );\n\n if (results.length === 0) {\n return ctx.notFound('folder not found');\n }\n\n ctx.body = {\n data: await permissionsManager.sanitizeOutput(results[0]),\n };\n },\n\n async find(ctx: Context) {\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: FOLDER_MODEL_UID,\n });\n\n await permissionsManager.validateQuery(ctx.query);\n const query = await permissionsManager.sanitizeQuery(ctx.query);\n\n const results = await strapi.db.query(FOLDER_MODEL_UID).findMany(\n strapi.get('query-params').transform(\n FOLDER_MODEL_UID,\n defaultsDeep(\n {\n populate: {\n children: {\n count: true,\n },\n files: {\n count: true,\n },\n },\n },\n query\n )\n )\n );\n\n ctx.body = {\n data: await permissionsManager.sanitizeOutput(results),\n };\n },\n async create(ctx: Context) {\n const { user } = ctx.state;\n const { body } = ctx.request;\n\n await validateCreateFolder(body);\n\n const folderService = getService('folder');\n\n const folder = await folderService.create(body, { user });\n\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: FOLDER_MODEL_UID,\n });\n\n ctx.created({\n data: await permissionsManager.sanitizeOutput(folder),\n });\n },\n\n async update(ctx: Context) {\n const { id } = ctx.params;\n const { user } = ctx.state;\n const { body } = ctx.request;\n\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: FOLDER_MODEL_UID,\n });\n\n await validateUpdateFolder(id)(body);\n\n const folderService = getService('folder');\n\n const updatedFolder = await folderService.update(id, body, { user });\n\n if (!updatedFolder) {\n return ctx.notFound('folder not found');\n }\n\n ctx.body = {\n data: await permissionsManager.sanitizeOutput(updatedFolder),\n };\n },\n\n async getStructure(ctx: Context) {\n const { getStructure } = getService('folder');\n\n const structure = await getStructure();\n\n ctx.body = {\n data: structure,\n };\n },\n};\n","import { intersection, map, isEmpty } from 'lodash/fp';\nimport { yup, validateYupSchema } from '@strapi/utils';\nimport { FOLDER_MODEL_UID } from '../../../constants';\nimport { folderExists } from './utils';\nimport { isFolderOrChild } from '../../utils/folders';\n\nimport type { Folder } from '../../../types';\n\nconst validateDeleteManyFoldersFilesSchema = yup\n .object()\n .shape({\n fileIds: yup.array().of(yup.strapiID().required()),\n folderIds: yup.array().of(yup.strapiID().required()),\n })\n .noUnknown()\n .required();\n\nconst validateStructureMoveManyFoldersFilesSchema = yup\n .object()\n .shape({\n destinationFolderId: yup\n .strapiID()\n .nullable()\n .defined()\n .test('folder-exists', 'destination folder does not exist', folderExists),\n fileIds: yup.array().of(yup.strapiID().required()),\n folderIds: yup.array().of(yup.strapiID().required()),\n })\n .noUnknown()\n .required();\n\nconst validateDuplicatesMoveManyFoldersFilesSchema = yup\n .object()\n .test('are-folders-unique', 'some folders already exist', async function areFoldersUnique(value) {\n const { folderIds, destinationFolderId } = value;\n if (isEmpty(folderIds)) return true;\n\n const folders = await strapi.db.query(FOLDER_MODEL_UID).findMany({\n select: ['name'],\n where: { id: { $in: folderIds } },\n });\n\n const existingFolders = await strapi.db.query(FOLDER_MODEL_UID).findMany({\n select: ['name'],\n where: { parent: { id: destinationFolderId } },\n });\n\n const duplicatedNames = intersection(map('name', folders), map('name', existingFolders));\n if (duplicatedNames.length > 0) {\n return this.createError({\n message: `some folders already exists: ${duplicatedNames.join(', ')}`,\n });\n }\n\n return true;\n });\n\nconst validateMoveFoldersNotInsideThemselvesSchema = yup\n .object()\n .test(\n 'dont-move-inside-self',\n 'folders cannot be moved inside themselves or one of its children',\n async function validateMoveFoldersNotInsideThemselves(value) {\n const { folderIds, destinationFolderId } = value;\n if (destinationFolderId === null || isEmpty(folderIds)) return true;\n\n const destinationFolder = await strapi.db.query(FOLDER_MODEL_UID).findOne({\n select: ['path'],\n where: { id: destinationFolderId },\n });\n\n const folders: Folder[] = await strapi.db.query(FOLDER_MODEL_UID).findMany({\n select: ['name', 'path'],\n where: { id: { $in: folderIds } },\n });\n\n const unmovableFoldersNames = folders\n .filter((folder) => isFolderOrChild(destinationFolder, folder))\n .map((f) => f.name);\n\n if (unmovableFoldersNames.length > 0) {\n return this.createError({\n message: `folders cannot be moved inside themselves or one of its children: ${unmovableFoldersNames.join(\n ', '\n )}`,\n });\n }\n\n return true;\n }\n );\n\nexport const validateDeleteManyFoldersFiles = validateYupSchema(\n validateDeleteManyFoldersFilesSchema\n);\n\nexport async function validateMoveManyFoldersFiles(body: unknown) {\n await validateYupSchema(validateStructureMoveManyFoldersFilesSchema)(body);\n await validateYupSchema(validateDuplicatesMoveManyFoldersFilesSchema)(body);\n await validateYupSchema(validateMoveFoldersNotInsideThemselvesSchema)(body);\n}\n","import { strings } from '@strapi/utils';\n\nimport type { Context } from 'koa';\n\nimport { getService } from '../utils';\nimport { ACTIONS, FOLDER_MODEL_UID, FILE_MODEL_UID } from '../constants';\nimport {\n validateDeleteManyFoldersFiles,\n validateMoveManyFoldersFiles,\n} from './validation/admin/folder-file';\n\nimport type { File, Folder } from '../types';\n\nexport default {\n async deleteMany(ctx: Context) {\n const { body } = ctx.request;\n const {\n state: { userAbility },\n } = ctx;\n\n const pmFolder = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: FOLDER_MODEL_UID,\n });\n\n const pmFile = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n action: ACTIONS.read,\n model: FILE_MODEL_UID,\n });\n\n await validateDeleteManyFoldersFiles(body);\n\n const fileService = getService('file');\n const folderService = getService('folder');\n\n const deletedFiles = await fileService.deleteByIds(body.fileIds);\n const {\n folders: deletedFolders,\n totalFolderNumber,\n totalFileNumber,\n } = await folderService.deleteByIds(body.folderIds);\n\n if (deletedFiles.length + deletedFolders.length > 1) {\n strapi.telemetry.send('didBulkDeleteMediaLibraryElements', {\n eventProperties: {\n rootFolderNumber: deletedFolders.length,\n rootAssetNumber: deletedFiles.length,\n totalFolderNumber,\n totalAssetNumber: totalFileNumber + deletedFiles.length,\n },\n });\n }\n\n ctx.body = {\n data: {\n files: await pmFile.sanitizeOutput(deletedFiles),\n folders: await pmFolder.sanitizeOutput(deletedFolders),\n },\n };\n },\n async moveMany(ctx: Context) {\n const { body } = ctx.request;\n const {\n state: { userAbility },\n } = ctx;\n\n const pmFolder = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: FOLDER_MODEL_UID,\n });\n\n const pmFile = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n action: ACTIONS.read,\n model: FILE_MODEL_UID,\n });\n\n await validateMoveManyFoldersFiles(body);\n const { folderIds = [], fileIds = [], destinationFolderId } = body;\n\n let totalFolderNumber = 0;\n let totalFileNumber = 0;\n\n const trx = await strapi.db.transaction();\n try {\n // fetch folders\n const existingFolders = await strapi.db\n .queryBuilder(FOLDER_MODEL_UID)\n .select(['id', 'pathId', 'path'])\n .where({ id: { $in: folderIds } })\n .transacting(trx.get())\n .forUpdate()\n .execute<Folder[]>();\n\n // fetch files\n const existingFiles = await strapi.db\n .queryBuilder(FILE_MODEL_UID)\n .select(['id'])\n .where({ id: { $in: fileIds } })\n .transacting(trx.get())\n .forUpdate()\n .execute<File[]>();\n\n // fetch destinationFolder path\n let destinationFolderPath = '/';\n if (destinationFolderId !== null) {\n const destinationFolder = await strapi.db\n .queryBuilder(FOLDER_MODEL_UID)\n .select('path')\n .where({ id: destinationFolderId })\n .transacting(trx.get())\n .first()\n .execute<Folder>();\n destinationFolderPath = destinationFolder.path;\n }\n\n const fileTable = strapi.getModel(FILE_MODEL_UID).collectionName;\n const folderTable = strapi.getModel(FOLDER_MODEL_UID).collectionName;\n const folderPathColName =\n // @ts-expect-error - no dynamic typings for the models\n strapi.db.metadata.get(FILE_MODEL_UID).attributes.folderPath.columnName;\n // @ts-expect-error - no dynamic typings for the models\n const pathColName = strapi.db.metadata.get(FOLDER_MODEL_UID).attributes.path.columnName;\n\n if (existingFolders.length > 0) {\n // update folders' parent relation\n // @ts-expect-error - no dynamic typings for the models\n const { joinTable } = strapi.db.metadata.get(FOLDER_MODEL_UID).attributes.parent;\n await strapi.db\n .queryBuilder(joinTable.name)\n .transacting(trx.get())\n .delete()\n .where({ [joinTable.joinColumn.name]: { $in: folderIds } })\n .execute();\n\n if (destinationFolderId !== null) {\n await strapi.db\n .queryBuilder(joinTable.name)\n .transacting(trx.get())\n .insert(\n existingFolders.map((folder) => ({\n [joinTable.inverseJoinColumn.name]: destinationFolderId,\n [joinTable.joinColumn.name]: folder.id,\n }))\n )\n .execute();\n }\n\n for (const existingFolder of existingFolders) {\n let replaceQuery;\n switch (strapi.db.dialect.client) {\n case 'sqlite':\n replaceQuery = '? || SUBSTRING(??, ?)';\n break;\n case 'postgres':\n replaceQuery = 'CONCAT(?::TEXT, SUBSTRING(??, ?::INTEGER))';\n break;\n default:\n replaceQuery = 'CONCAT(?, SUBSTRING(??, ?))';\n }\n\n // update path for folders themselves & folders below\n totalFolderNumber = await strapi.db\n .getConnection(folderTable)\n .transacting(trx.get())\n .where(pathColName, existingFolder.path)\n .orWhere(pathColName, 'like', `${existingFolder.path}/%`)\n .update(\n pathColName,\n strapi.db.connection.raw(replaceQuery, [\n strings.joinBy('/', destinationFolderPath, `${existingFolder.pathId}`),\n pathColName,\n existingFolder.path.length + 1,\n ])\n );\n\n // update path of files below\n totalFileNumber = await strapi.db\n .getConnection(fileTable)\n .transacting(trx.get())\n .where(folderPathColName, existingFolder.path)\n .orWhere(folderPathColName, 'like', `${existingFolder.path}/%`)\n .update(\n folderPathColName,\n strapi.db.connection.raw(replaceQuery, [\n strings.joinBy('/', destinationFolderPath, `${existingFolder.pathId}`),\n folderPathColName,\n existingFolder.path.length + 1,\n ])\n );\n }\n }\n\n if (existingFiles.length > 0) {\n // update files' folder relation (delete + insert; upsert not possible)\n // @ts-expect-error - no dynamic typings for the models\n const fileJoinTable = strapi.db.metadata.get(FILE_MODEL_UID).attributes.folder.joinTable;\n await strapi.db\n .queryBuilder(fileJoinTable.name)\n .transacting(trx.get())\n .delete()\n .where({ [fileJoinTable.joinColumn.name]: { $in: fileIds } })\n .execute();\n\n if (destinationFolderId !== null) {\n await strapi.db\n .queryBuilder(fileJoinTable.name)\n .transacting(trx.get())\n .insert(\n existingFiles.map((file) => ({\n [fileJoinTable.inverseJoinColumn.name]: destinationFolderId,\n [fileJoinTable.joinColumn.name]: file.id,\n }))\n )\n .execute();\n }\n\n // update files main fields (path + updatedBy)\n await strapi.db\n .getConnection(fileTable)\n .transacting(trx.get())\n .whereIn('id', fileIds)\n .update(folderPathColName, destinationFolderPath);\n }\n\n await trx.commit();\n } catch (e) {\n await trx.rollback();\n throw e;\n }\n\n const updatedFolders = await strapi.db.query(FOLDER_MODEL_UID).findMany({\n where: { id: { $in: folderIds } },\n });\n\n const updatedFiles = await strapi.db.query(FILE_MODEL_UID).findMany({\n where: { id: { $in: fileIds } },\n });\n\n strapi.telemetry.send('didBulkMoveMediaLibraryElements', {\n eventProperties: {\n rootFolderNumber: updatedFolders.length,\n rootAssetNumber: updatedFiles.length,\n totalFolderNumber,\n totalAssetNumber: totalFileNumber + updatedFiles.length,\n },\n });\n\n ctx.body = {\n data: {\n files: await pmFile.sanitizeOutput(updatedFiles),\n folders: await pmFolder.sanitizeOutput(updatedFolders),\n },\n };\n },\n};\n","import { yup, validateYupSchema } from '@strapi/utils';\n\nconst settingsSchema = yup.object({\n sizeOptimization: yup.boolean().required(),\n responsiveDimensions: yup.boolean().required(),\n autoOrientation: yup.boolean(),\n});\n\nexport default validateYupSchema(settingsSchema);\n\nexport type Settings = yup.InferType<typeof settingsSchema>;\n","import type { Context } from 'koa';\n\nimport { getService } from '../utils';\nimport { ACTIONS, FILE_MODEL_UID } from '../constants';\nimport validateSettings from './validation/admin/settings';\n\nexport default {\n async updateSettings(ctx: Context) {\n const {\n request: { body },\n state: { userAbility },\n } = ctx;\n\n if (userAbility.cannot(ACTIONS.readSettings, FILE_MODEL_UID)) {\n return ctx.forbidden();\n }\n\n const data = await validateSettings(body);\n\n await getService('upload').setSettings(data);\n\n ctx.body = { data };\n },\n\n async getSettings(ctx: Context) {\n const {\n state: { userAbility },\n } = ctx;\n\n if (userAbility.cannot(ACTIONS.readSettings, FILE_MODEL_UID)) {\n return ctx.forbidden();\n }\n\n const data = await getService('upload').getSettings();\n\n ctx.body = { data };\n },\n};\n","import { yup, validateYupSchema } from '@strapi/utils';\nimport { isNil } from 'lodash/fp';\nimport { getService } from '../../../utils';\n\nconst fileInfoSchema = yup.object({\n name: yup.string().nullable(),\n alternativeText: yup.string().nullable(),\n caption: yup.string().nullable(),\n folder: yup\n .strapiID()\n .nullable()\n .test('folder-exists', 'the folder does not exist', async (folderId) => {\n if (isNil(folderId)) {\n return true;\n }\n\n const exists = await getService('folder').exists({ id: folderId });\n\n return exists;\n }),\n});\n\nconst uploadSchema = yup.object({\n fileInfo: fileInfoSchema,\n});\n\nconst multiUploadSchema = yup.object({\n fileInfo: yup.array().of(fileInfoSchema),\n});\n\nconst validateUploadBody = (data = {}, isMulti = false) => {\n const schema = isMulti ? multiUploadSchema : uploadSchema;\n\n return validateYupSchema(schema, { strict: false })(data);\n};\n\nexport { validateUploadBody };\n\nexport type UploadBody =\n | yup.InferType<typeof uploadSchema>\n | yup.InferType<typeof multiUploadSchema>;\n","import _ from 'lodash';\nimport { errors, async } from '@strapi/utils';\n\nimport type { Context } from 'koa';\n\nimport { getService } from '../utils';\nimport { ACTIONS, FILE_MODEL_UID } from '../constants';\nimport { validateUploadBody } from './validation/admin/upload';\nimport { findEntityAndCheckPermissions } from './utils/find-entity-and-check-permissions';\nimport { FileInfo } from '../types';\n\nexport default {\n async updateFileInfo(ctx: Context) {\n const {\n state: { userAbility, user },\n query: { id },\n request: { body },\n } = ctx;\n\n if (typeof id !== 'string') {\n throw new errors.ValidationError('File id is required');\n }\n\n const uploadService = getService('upload');\n const { pm } = await findEntityAndCheckPermissions(\n userAbility,\n ACTIONS.update,\n FILE_MODEL_UID,\n id\n );\n\n const data = await validateUploadBody(body);\n\n const file = await uploadService.updateFileInfo(id, data.fileInfo as any, { user });\n\n ctx.body = await pm.sanitizeOutput(file, { action: ACTIONS.read });\n },\n\n async replaceFile(ctx: Context) {\n const {\n state: { userAbility, user },\n query: { id },\n request: { body, files: { files } = {} },\n } = ctx;\n\n if (typeof id !== 'string') {\n throw new errors.ValidationError('File id is required');\n }\n\n const uploadService = getService('upload');\n const { pm } = await findEntityAndCheckPermissions(\n userAbility,\n ACTIONS.update,\n FILE_MODEL_UID,\n id\n );\n\n if (Array.isArray(files)) {\n throw new errors.ApplicationError('Cannot replace a file with multiple ones');\n }\n\n const data = (await validateUploadBody(body)) as { fileInfo: FileInfo };\n const replacedFile = await uploadService.replace(id, { data, file: files }, { user });\n\n // Sign file urls for private providers\n const signedFile = await getService('file').signFileUrls(replacedFile);\n\n ctx.body = await pm.sanitizeOutput(signedFile, { action: ACTIONS.read });\n },\n\n async uploadFiles(ctx: Context) {\n const {\n state: { userAbility, user },\n request: { body, files: { files } = {} },\n } = ctx;\n\n const uploadService = getService('upload');\n const pm = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n action: ACTIONS.create,\n model: FILE_MODEL_UID,\n });\n\n if (!pm.isAllowed) {\n return ctx.forbidden();\n }\n\n const data = await validateUploadBody(body);\n const uploadedFiles = await uploadService.upload({ data, files }, { user });\n\n // Sign file urls for private providers\n const signedFiles = await async.map(uploadedFiles, getService('file').signFileUrls);\n\n ctx.body = await pm.sanitizeOutput(signedFiles, { action: ACTIONS.read });\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 errors.ApplicationError('Files are empty');\n }\n\n await (id ? this.replaceFile : this.uploadFiles)(ctx);\n },\n};\n","import { yup, validateYupSchema } from '@strapi/utils';\n\nconst fileInfoSchema = yup\n .object({\n name: yup.string().nullable(),\n alternativeText: yup.string().nullable(),\n caption: yup.string().nullable(),\n })\n .noUnknown();\n\nconst uploadSchema = yup.object({\n fileInfo: fileInfoSchema,\n});\n\nconst multiUploadSchema = yup.object({\n fileInfo: yup.array().of(fileInfoSchema),\n});\n\nconst validateUploadBody = (data = {}, isMulti = false) => {\n const schema = isMulti ? multiUploadSchema : uploadSchema;\n\n return validateYupSchema(schema, { strict: false })(data);\n};\n\nexport { validateUploadBody };\n\nexport type UploadBody =\n | yup.InferType<typeof uploadSchema>\n | yup.InferType<typeof multiUploadSchema>;\n","import _ from 'lodash';\nimport utils 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';\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 } = ctx.state;\n\n return strapi.contentAPI.validate.query(data, schema, { auth });\n };\n\n const sanitizeQuery = async (data: Record<string, unknown>, ctx: Context) => {\n const schema = strapi.getModel(FILE_MODEL_UID);\n const { auth } = ctx.state;\n\n return strapi.contentAPI.sanitize.query(data, schema, { auth });\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 ctx.body = await sanitizeOutput(files, ctx);\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 ctx.body = await sanitizeOutput(file, 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 ctx.body = await sanitizeOutput(file, 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 ctx.body = await sanitizeOutput(result, ctx);\n },\n\n async replaceFile(ctx: Context) {\n const {\n query: { id },\n request: { body, files: { files } = {} },\n } = ctx;\n\n // cannot replace with more than one file\n if (Array.isArray(files)) {\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(body)) as { fileInfo: FileInfo };\n\n const replacedFiles = await getService('upload').replace(id, { data, file: files });\n\n ctx.body = await sanitizeOutput(replacedFiles, ctx);\n },\n\n async uploadFiles(ctx: Context) {\n const {\n request: { body, files: { files } = {} },\n } = ctx;\n\n const data: any = await validateUploadBody(body, Array.isArray(files));\n\n const apiUploadFolderService = getService('api-upload-folder');\n\n const apiUploadFolder = await apiUploadFolderService.getAPIUploadFolder();\n\n if (Array.isArray(files)) {\n data.fileInfo = data.fileInfo || [];\n data.fileInfo = files.map((_f, i) => ({ ...data.fileInfo[i], folder: apiUploadFolder.id }));\n } else {\n data.fileInfo = { ...data.fileInfo, folder: apiUploadFolder.id };\n }\n\n const uploadedFiles = await getService('upload').upload({\n data,\n files,\n });\n\n ctx.body = await sanitizeOutput(uploadedFiles as any, 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","import { yup, validateYupSchema } from '@strapi/utils';\nimport { ALLOWED_SORT_STRINGS } from '../../../constants';\n\nconst configSchema = yup.object({\n pageSize: yup.number().required(),\n sort: yup.mixed().oneOf(ALLOWED_SORT_STRINGS),\n});\n\nexport const validateViewConfiguration = validateYupSchema(configSchema);\n\nexport type ViewConfiguration = yup.InferType<typeof configSchema>;\n","import type { Context } from 'koa';\n\nimport { getService } from '../utils';\nimport { ACTIONS } from '../constants';\nimport { validateViewConfiguration } from './validation/admin/configureView';\n\nexport default {\n async updateViewConfiguration(ctx: Context) {\n const {\n request: { body },\n state: { userAbility },\n } = ctx;\n\n if (userAbility.cannot(ACTIONS.configureView)) {\n return ctx.forbidden();\n }\n\n const data = await validateViewConfiguration(body);\n\n await getService('upload').setConfiguration(data);\n\n ctx.body = { data };\n },\n\n async findViewConfiguration(ctx: Context) {\n const data = await getService('upload').getConfiguration();\n\n ctx.body = { data };\n },\n};\n","import adminFile from './admin-file';\nimport adminFolder from './admin-folder';\nimport adminFolderFile from './admin-folder-file';\nimport adminSettings from './admin-settings';\nimport adminUpload from './admin-upload';\nimport contentApi from './content-api';\nimport viewConfiguration from './view-configuration';\n\nexport const controllers = {\n 'admin-file': adminFile,\n 'admin-folder': adminFolder,\n 'admin-folder-file': adminFolderFile,\n 'admin-settings': adminSettings,\n 'admin-upload': adminUpload,\n 'content-api': contentApi,\n 'view-configuration': viewConfiguration,\n};\n","import type {} from 'koa-body';\nimport type {} from '@strapi/types';\n\nimport { register } from './register';\nimport { bootstrap } from './bootstrap';\nimport { contentTypes } from './content-types';\nimport { services } from './services';\nimport { routes } from './routes';\nimport { config } from './config';\nimport { controllers } from './controllers';\n\nexport default () => ({\n register,\n bootstrap,\n config,\n routes,\n controllers,\n contentTypes,\n services,\n});\n"],"names":["strapi","server","app","on","err","code","onerror","localServerConfig","config","get","routes","method","path","handler","range","koaStatic","dirs","static","public","defer","auth","PayloadTooLargeError","errors","bytesToHumanReadable","kbytesToBytes","file","register","plugin","provider","createProvider","registerUploadMiddleware","installGraphqlExtension","service","registerOverride","spec","pluginOrigin","excludeFromGeneration","providerOptions","actionOptions","providerName","_","toLower","modulePath","require","resolve","error","newError","Error","stack","providerInstance","init","delete","upload","uploadStream","process","emitWarning","wrappedProvider","mapValues","methodName","options","Object","assign","create","baseProvider","extend","obj","checkFileSize","sizeLimit","size","originalFilename","getSignedUrl","isPrivate","getService","name","ACTIONS","read","readSettings","update","download","copyLink","configureView","ALLOWED_SORT_STRINGS","ALLOWED_WEBHOOK_EVENTS","MEDIA_CREATE","MEDIA_UPDATE","MEDIA_DELETE","FOLDER_MODEL_UID","FILE_MODEL_UID","API_UPLOAD_FOLDER_BASE_NAME","bootstrap","defaultConfig","settings","sizeOptimization","responsiveDimensions","autoOrientation","view_configuration","pageSize","sort","key","defaultValue","entries","configurator","store","type","keys","every","prototype","hasOwnProperty","call","set","value","registerPermissionActions","registerWebhookEvents","registerCron","sendUploadPluginMetrics","signFileUrlsOnDocumentService","forEach","addAllowedEvent","actions","section","displayName","uid","pluginName","subCategory","category","actionProvider","registerMany","schema","collectionName","info","singularName","pluralName","description","pluginOptions","visible","attributes","configurable","required","alternativeText","caption","width","height","formats","hash","ext","mime","url","previewUrl","provider_metadata","related","relation","folder","target","inversedBy","private","folderPath","minLength","searchable","indexes","columns","pathId","unique","parent","children","mappedBy","files","contentTypes","isFunction","stream","getStream","filepath","buffer","fileUtils","streamToBuffer","UPDATED_BY_ATTRIBUTE","CREATED_BY_ATTRIBUTE","contentTypesUtils","constants","ApplicationError","NotFoundError","bytesToKbytes","randomSuffix","crypto","randomBytes","toString","generateFileName","baseName","strings","nameToSlug","separator","lowercase","sendMediaMetrics","data","has","isEmpty","telemetry","send","createAndAssignTmpWorkingDirectoryToFiles","tmpWorkingDirectory","fse","mkdtemp","join","os","tmpdir","Array","isArray","filenameReservedRegex","windowsReservedNameRegex","isValidFilename","string","length","test","emitEvent","event","modelDef","getModel","sanitizedData","sanitize","sanitizers","defaultSanitizeOutput","eventHub","emit","media","formatFileInfo","filename","fileInfo","metas","fileService","extname","extension","usedName","normalize","basename","entity","getFolderPath","sizeInBytes","refId","ref","field","id","__type","__pivot","enhanceAndValidateFile","currentFile","mimetype","fs","createReadStream","optimize","isImage","isFaultyImage","isOptimizableImage","opts","user","uploadedFiles","fileArray","fileInfoArray","doUpload","fileData","uploadFileAndPersist","Promise","all","map","idx","remove","uploadImage","getDimensions","generateThumbnail","generateResponsiveFormats","isResizableImage","uploadThumbnail","thumbnailFile","uploadResponsiveFormat","format","uploadPromises","push","add","updateFileInfo","dbFile","findOne","newName","isNil","newInfos","isUndefined","replace","values","fileValues","res","db","query","where","populate","transform","findMany","findPage","getSettings","setSettings","getConfiguration","setConfiguration","_uploadImage","FORMATS_TO_RESIZE","FORMATS_TO_PROCESS","FORMATS_TO_OPTIMIZE","isOptimizableFormat","undefined","includes","writeStreamToFile","reject","writeStream","createWriteStream","pipe","getMetadata","pipeline","sharp","metadata","then","catch","THUMBNAIL_RESIZE_OPTIONS","fit","resizeFileTo","filePath","newInfo","resize","toFile","newFile","transformer","quality","rotate","newWidth","newHeight","newSize","DEFAULT_BREAKPOINTS","large","medium","small","getBreakpoints","originalDimensions","breakpoints","breakpoint","breakpointSmallerThan","generateBreakpoint","stats","e","setPathIdAndPath","max","queryBuilder","first","execute","parentPath","parentFolder","joinBy","folderData","folderService","enrichedFolder","setCreatorFields","deleteByIds","ids","folders","$in","totalFolderNumber","totalFileNumber","pathsToDelete","filesToDelete","$or","flatMap","$eq","$startsWith","count","deleteMany","existingFolder","newFolder","isEdition","trx","transaction","select","transacting","forUpdate","joinTable","joinColumn","insert","inverseJoinColumn","destinationFolderPath","destinationFolder","folderTable","fileTable","folderPathColumnName","columnName","pathColumnName","getConnection","orWhere","connection","raw","commit","rollback","exists","params","getStructure","qb","alias","getAlias","referencedTable","referencedColumn","rootColumn","rootTable","mapResults","folderMap","null","f","parentId","sortBy","folderId","signFileUrls","plugins","providerConfig","isUrlSigned","signUrl","signedUrl","signedFile","cloneDeep","async","getWeeklyCronScheduleAt","date","getSeconds","getMinutes","getHours","getDay","ONE_WEEK","getMetricsStoreValue","defaultTo","setMetricsStoreValue","computeMetrics","pathColName","keepOnlySlashesSQLString","queryParams","i","String","groupBy","folderLevelsArray","depth","Number","occurence","product","folderNumber","maxDepth","folderLevel","averageDepth","sumOfDeviation","Math","abs","averageDeviationDepth","assetNumber","sendMetrics","metrics","groupProperties","metricsInfoStored","lastWeeklyUpdate","Date","getTime","ensureWeeklyStoredCronSchedule","weeklySchedule","currentSchedule","now","seconds","cron","uploadWeekly","task","bind","getProviderName","isProviderPrivate","uploadProvider","privateProvider","getStore","createApiUploadFolder","index","getAPIUploadFolder","storeValue","isFile","attribute","signEntityMediaVisitor","multiple","signedFiles","signEntityMedia","model","traverseEntity","documents","use","ctx","next","result","action","entry","services","weeklyMetrics","imageManipulation","apiUploadFolder","extensions","policies","admin","contentApi","viewConfiguration","default","enabled","validator","findEntityAndCheckPermissions","ability","pm","createPermissionsManager","creatorId","author","fileWithRoles","cannot","toSubject","ForbiddenError","find","state","userAbility","defaultQuery","isAllowed","forbidden","validateQuery","q","sanitizeQuery","merge","addPermissionsQueryTo","results","pagination","sanitizedFiles","sanitizeOutput","body","destroy","folderExists","isFolderOrChild","folderOrChild","startsWith","NO_SLASH_REGEX","NO_SPACES_AROUND","isNameUniqueInFolder","filters","$ne","doesExist","validateCreateFolderSchema","yup","object","shape","min","matches","strapiID","nullable","noUnknown","validateUpdateFolderSchema","currentFolder","validateCreateFolder","validateYupSchema","validateUpdateFolder","permissionsManager","defaultsDeep","notFound","request","created","updatedFolder","structure","validateDeleteManyFoldersFilesSchema","fileIds","array","of","folderIds","validateStructureMoveManyFoldersFilesSchema","destinationFolderId","defined","validateDuplicatesMoveManyFoldersFilesSchema","areFoldersUnique","existingFolders","duplicatedNames","intersection","createError","message","validateMoveFoldersNotInsideThemselvesSchema","validateMoveFoldersNotInsideThemselves","unmovableFoldersNames","filter","validateDeleteManyFoldersFiles","validateMoveManyFoldersFiles","pmFolder","pmFile","deletedFiles","deletedFolders","eventProperties","rootFolderNumber","rootAssetNumber","totalAssetNumber","moveMany","existingFiles","folderPathColName","replaceQuery","dialect","client","fileJoinTable","whereIn","updatedFolders","updatedFiles","settingsSchema","boolean","updateSettings","validateSettings","fileInfoSchema","uploadSchema","multiUploadSchema","validateUploadBody","isMulti","strict","ValidationError","uploadService","replaceFile","replacedFile","uploadFiles","status","utils","contentAPI","output","validate","sanitizedQuery","replacedFiles","apiUploadFolderService","_f","configSchema","number","mixed","oneOf","validateViewConfiguration","updateViewConfiguration","findViewConfiguration","controllers","adminFile","adminFolder","adminFolderFile","adminSettings","adminUpload"],"mappings":"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"}