@webiny/app-file-manager 0.0.0-unstable.78f581c1d2 → 0.0.0-unstable.7be00a75a9

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 (738) hide show
  1. package/README.md +7 -28
  2. package/app.d.ts +2 -0
  3. package/app.js +57 -0
  4. package/app.js.map +1 -0
  5. package/domain/constants.d.ts +4 -0
  6. package/domain/constants.js +7 -0
  7. package/domain/constants.js.map +1 -0
  8. package/domain/permissionsSchema.d.ts +18 -0
  9. package/domain/permissionsSchema.js +32 -0
  10. package/domain/permissionsSchema.js.map +1 -0
  11. package/domain/tagsHelpers.d.ts +16 -0
  12. package/domain/tagsHelpers.js +25 -0
  13. package/domain/tagsHelpers.js.map +1 -0
  14. package/domain/types.d.ts +34 -0
  15. package/domain/types.js +0 -0
  16. package/exports/admin/ui/file-manager.d.ts +2 -0
  17. package/exports/admin/ui/file-manager.js +1 -0
  18. package/features/deleteFile/DeleteFile.test.d.ts +1 -0
  19. package/features/deleteFile/DeleteFile.test.js +150 -0
  20. package/features/deleteFile/DeleteFile.test.js.map +1 -0
  21. package/features/deleteFile/DeleteFileGateway.d.ts +11 -0
  22. package/features/deleteFile/DeleteFileGateway.js +23 -0
  23. package/features/deleteFile/DeleteFileGateway.js.map +1 -0
  24. package/features/deleteFile/DeleteFileRepository.d.ts +12 -0
  25. package/features/deleteFile/DeleteFileRepository.js +26 -0
  26. package/features/deleteFile/DeleteFileRepository.js.map +1 -0
  27. package/features/deleteFile/DeleteFileUseCase.d.ts +10 -0
  28. package/features/deleteFile/DeleteFileUseCase.js +34 -0
  29. package/features/deleteFile/DeleteFileUseCase.js.map +1 -0
  30. package/features/deleteFile/abstractions.d.ts +36 -0
  31. package/features/deleteFile/abstractions.js +7 -0
  32. package/features/deleteFile/abstractions.js.map +1 -0
  33. package/features/deleteFile/feature.d.ts +3 -0
  34. package/features/deleteFile/feature.js +21 -0
  35. package/features/deleteFile/feature.js.map +1 -0
  36. package/features/deleteFile/index.d.ts +3 -0
  37. package/features/deleteFile/index.js +2 -0
  38. package/features/fileModel/FileModelProvider.d.ts +12 -0
  39. package/features/fileModel/FileModelProvider.js +21 -0
  40. package/features/fileModel/FileModelProvider.js.map +1 -0
  41. package/features/fileModel/GetFileModelGqlGateway.d.ts +12 -0
  42. package/features/fileModel/GetFileModelGqlGateway.js +38 -0
  43. package/features/fileModel/GetFileModelGqlGateway.js.map +1 -0
  44. package/features/fileModel/GetFileModelRepository.d.ts +14 -0
  45. package/features/fileModel/GetFileModelRepository.js +32 -0
  46. package/features/fileModel/GetFileModelRepository.js.map +1 -0
  47. package/features/fileModel/abstractions.d.ts +24 -0
  48. package/features/fileModel/abstractions.js +7 -0
  49. package/features/fileModel/abstractions.js.map +1 -0
  50. package/features/fileModel/feature.d.ts +1 -0
  51. package/features/fileModel/feature.js +15 -0
  52. package/features/fileModel/feature.js.map +1 -0
  53. package/features/fileModel/index.d.ts +2 -0
  54. package/features/fileModel/index.js +2 -0
  55. package/features/fileUploader/FileUploader.d.ts +23 -0
  56. package/features/fileUploader/FileUploader.js +243 -0
  57. package/features/fileUploader/FileUploader.js.map +1 -0
  58. package/features/fileUploader/FileUploader.test.d.ts +1 -0
  59. package/features/fileUploader/FileUploader.test.js +427 -0
  60. package/features/fileUploader/FileUploader.test.js.map +1 -0
  61. package/features/fileUploader/abstractions.d.ts +51 -0
  62. package/features/fileUploader/abstractions.js +5 -0
  63. package/features/fileUploader/abstractions.js.map +1 -0
  64. package/features/fileUploader/feature.d.ts +3 -0
  65. package/features/fileUploader/feature.js +17 -0
  66. package/features/fileUploader/feature.js.map +1 -0
  67. package/features/fileUploader/index.d.ts +3 -0
  68. package/features/fileUploader/index.js +2 -0
  69. package/features/fileUrlFormatter/FileUrlFormatter.d.ts +8 -0
  70. package/features/fileUrlFormatter/FileUrlFormatter.js +13 -0
  71. package/features/fileUrlFormatter/FileUrlFormatter.js.map +1 -0
  72. package/features/fileUrlFormatter/abstractions.d.ts +1 -0
  73. package/features/fileUrlFormatter/abstractions.js +1 -0
  74. package/features/fileUrlFormatter/feature.d.ts +1 -0
  75. package/features/fileUrlFormatter/feature.js +11 -0
  76. package/features/fileUrlFormatter/feature.js.map +1 -0
  77. package/features/getFile/GetFileGateway.d.ts +14 -0
  78. package/features/getFile/GetFileGateway.js +28 -0
  79. package/features/getFile/GetFileGateway.js.map +1 -0
  80. package/features/getFile/GetFileRepository.d.ts +11 -0
  81. package/features/getFile/GetFileRepository.js +18 -0
  82. package/features/getFile/GetFileRepository.js.map +1 -0
  83. package/features/getFile/GetFileUseCase.d.ts +10 -0
  84. package/features/getFile/GetFileUseCase.js +35 -0
  85. package/features/getFile/GetFileUseCase.js.map +1 -0
  86. package/features/getFile/abstractions.d.ts +38 -0
  87. package/features/getFile/abstractions.js +7 -0
  88. package/features/getFile/abstractions.js.map +1 -0
  89. package/features/getFile/feature.d.ts +3 -0
  90. package/features/getFile/feature.js +21 -0
  91. package/features/getFile/feature.js.map +1 -0
  92. package/features/getFile/index.d.ts +3 -0
  93. package/features/getFile/index.js +2 -0
  94. package/features/listFiles/ListFiles.test.d.ts +1 -0
  95. package/features/listFiles/ListFiles.test.js +192 -0
  96. package/features/listFiles/ListFiles.test.js.map +1 -0
  97. package/features/listFiles/ListFilesGateway.d.ts +13 -0
  98. package/features/listFiles/ListFilesGateway.js +35 -0
  99. package/features/listFiles/ListFilesGateway.js.map +1 -0
  100. package/features/listFiles/ListFilesRepository.d.ts +12 -0
  101. package/features/listFiles/ListFilesRepository.js +26 -0
  102. package/features/listFiles/ListFilesRepository.js.map +1 -0
  103. package/features/listFiles/ListFilesUseCase.d.ts +10 -0
  104. package/features/listFiles/ListFilesUseCase.js +28 -0
  105. package/features/listFiles/ListFilesUseCase.js.map +1 -0
  106. package/features/listFiles/abstractions.d.ts +45 -0
  107. package/features/listFiles/abstractions.js +7 -0
  108. package/features/listFiles/abstractions.js.map +1 -0
  109. package/features/listFiles/feature.d.ts +3 -0
  110. package/features/listFiles/feature.js +21 -0
  111. package/features/listFiles/feature.js.map +1 -0
  112. package/features/listFiles/index.d.ts +3 -0
  113. package/features/listFiles/index.js +2 -0
  114. package/features/permissions/abstractions.d.ts +17 -0
  115. package/features/permissions/abstractions.js +6 -0
  116. package/features/permissions/abstractions.js.map +1 -0
  117. package/features/permissions/feature.d.ts +14 -0
  118. package/features/permissions/feature.js +7 -0
  119. package/features/permissions/feature.js.map +1 -0
  120. package/features/resolveImageTool/ResolveImageTool.d.ts +40 -0
  121. package/features/resolveImageTool/ResolveImageTool.js +49 -0
  122. package/features/resolveImageTool/ResolveImageTool.js.map +1 -0
  123. package/features/resolveImageTool/feature.d.ts +1 -0
  124. package/features/resolveImageTool/feature.js +11 -0
  125. package/features/resolveImageTool/feature.js.map +1 -0
  126. package/features/settings/GetSettings.test.d.ts +1 -0
  127. package/features/settings/GetSettings.test.js +92 -0
  128. package/features/settings/GetSettings.test.js.map +1 -0
  129. package/features/settings/GetSettingsGateway.d.ts +12 -0
  130. package/features/settings/GetSettingsGateway.js +43 -0
  131. package/features/settings/GetSettingsGateway.js.map +1 -0
  132. package/features/settings/GetSettingsRepository.d.ts +14 -0
  133. package/features/settings/GetSettingsRepository.js +34 -0
  134. package/features/settings/GetSettingsRepository.js.map +1 -0
  135. package/features/settings/GetSettingsUseCase.d.ts +11 -0
  136. package/features/settings/GetSettingsUseCase.js +18 -0
  137. package/features/settings/GetSettingsUseCase.js.map +1 -0
  138. package/features/settings/SaveSettingsGateway.d.ts +12 -0
  139. package/features/settings/SaveSettingsGateway.js +50 -0
  140. package/features/settings/SaveSettingsGateway.js.map +1 -0
  141. package/features/settings/abstractions.d.ts +31 -0
  142. package/features/settings/abstractions.js +8 -0
  143. package/features/settings/abstractions.js.map +1 -0
  144. package/features/settings/feature.d.ts +3 -0
  145. package/features/settings/feature.js +23 -0
  146. package/features/settings/feature.js.map +1 -0
  147. package/features/settings/index.d.ts +3 -0
  148. package/features/settings/index.js +2 -0
  149. package/features/shared/FILE_FIELDS.d.ts +1 -0
  150. package/features/shared/FILE_FIELDS.js +32 -0
  151. package/features/shared/FILE_FIELDS.js.map +1 -0
  152. package/features/shared/FileFieldsProvider.d.ts +8 -0
  153. package/features/shared/FileFieldsProvider.js +14 -0
  154. package/features/shared/FileFieldsProvider.js.map +1 -0
  155. package/features/shared/FileFieldsProviderWithWcp.d.ts +12 -0
  156. package/features/shared/FileFieldsProviderWithWcp.js +25 -0
  157. package/features/shared/FileFieldsProviderWithWcp.js.map +1 -0
  158. package/features/shared/FilesListCache.d.ts +1 -0
  159. package/features/shared/FilesListCache.js +1 -0
  160. package/features/shared/abstractions.d.ts +13 -0
  161. package/features/shared/abstractions.js +6 -0
  162. package/features/shared/abstractions.js.map +1 -0
  163. package/features/shared/feature.d.ts +5 -0
  164. package/features/shared/feature.js +22 -0
  165. package/features/shared/feature.js.map +1 -0
  166. package/features/shared/index.d.ts +4 -0
  167. package/features/shared/index.js +3 -0
  168. package/features/shared/types.d.ts +16 -0
  169. package/features/shared/types.js +0 -0
  170. package/features/tags/ListTags.test.d.ts +1 -0
  171. package/features/tags/ListTags.test.js +126 -0
  172. package/features/tags/ListTags.test.js.map +1 -0
  173. package/features/tags/ListTagsGateway.d.ts +11 -0
  174. package/features/tags/ListTagsGateway.js +23 -0
  175. package/features/tags/ListTagsGateway.js.map +1 -0
  176. package/features/tags/ListTagsRepository.d.ts +12 -0
  177. package/features/tags/ListTagsRepository.js +25 -0
  178. package/features/tags/ListTagsRepository.js.map +1 -0
  179. package/features/tags/ListTagsUseCase.d.ts +10 -0
  180. package/features/tags/ListTagsUseCase.js +20 -0
  181. package/features/tags/ListTagsUseCase.js.map +1 -0
  182. package/features/tags/abstractions.d.ts +32 -0
  183. package/features/tags/abstractions.js +7 -0
  184. package/features/tags/abstractions.js.map +1 -0
  185. package/features/tags/feature.d.ts +3 -0
  186. package/features/tags/feature.js +21 -0
  187. package/features/tags/feature.js.map +1 -0
  188. package/features/tags/index.d.ts +3 -0
  189. package/features/tags/index.js +2 -0
  190. package/features/updateFile/UpdateFile.test.d.ts +1 -0
  191. package/features/updateFile/UpdateFile.test.js +260 -0
  192. package/features/updateFile/UpdateFile.test.js.map +1 -0
  193. package/features/updateFile/UpdateFileGateway.d.ts +12 -0
  194. package/features/updateFile/UpdateFileGateway.js +25 -0
  195. package/features/updateFile/UpdateFileGateway.js.map +1 -0
  196. package/features/updateFile/UpdateFileRepository.d.ts +14 -0
  197. package/features/updateFile/UpdateFileRepository.js +32 -0
  198. package/features/updateFile/UpdateFileRepository.js.map +1 -0
  199. package/features/updateFile/UpdateFileUseCase.d.ts +12 -0
  200. package/features/updateFile/UpdateFileUseCase.js +41 -0
  201. package/features/updateFile/UpdateFileUseCase.js.map +1 -0
  202. package/features/updateFile/abstractions.d.ts +53 -0
  203. package/features/updateFile/abstractions.js +7 -0
  204. package/features/updateFile/abstractions.js.map +1 -0
  205. package/features/updateFile/feature.d.ts +3 -0
  206. package/features/updateFile/feature.js +21 -0
  207. package/features/updateFile/feature.js.map +1 -0
  208. package/features/updateFile/index.d.ts +3 -0
  209. package/features/updateFile/index.js +2 -0
  210. package/index.d.ts +3 -2
  211. package/index.js +3 -37
  212. package/modules/Enterprise/HandleWebsocketMessages.d.ts +1 -0
  213. package/modules/Enterprise/HandleWebsocketMessages.js +53 -0
  214. package/modules/Enterprise/HandleWebsocketMessages.js.map +1 -0
  215. package/modules/Enterprise/components/ThreatScanInProgressFileBody.d.ts +2 -0
  216. package/modules/Enterprise/components/ThreatScanInProgressFileBody.js +22 -0
  217. package/modules/Enterprise/components/ThreatScanInProgressFileBody.js.map +1 -0
  218. package/modules/Enterprise/components/ThreatScanInProgressTableCell.d.ts +6 -0
  219. package/modules/Enterprise/components/ThreatScanInProgressTableCell.js +20 -0
  220. package/modules/Enterprise/components/ThreatScanInProgressTableCell.js.map +1 -0
  221. package/modules/Enterprise/constants.d.ts +3 -0
  222. package/modules/Enterprise/constants.js +6 -0
  223. package/modules/Enterprise/constants.js.map +1 -0
  224. package/modules/Enterprise/index.d.ts +2 -0
  225. package/modules/Enterprise/index.js +30 -0
  226. package/modules/Enterprise/index.js.map +1 -0
  227. package/modules/FileManagerRoutes.d.ts +2 -0
  228. package/modules/FileManagerRoutes.js +31 -0
  229. package/modules/FileManagerRoutes.js.map +1 -0
  230. package/modules/FileModelModule.d.ts +2 -0
  231. package/modules/FileModelModule.js +18 -0
  232. package/modules/FileModelModule.js.map +1 -0
  233. package/modules/FileUrlFormatter.d.ts +2 -0
  234. package/modules/FileUrlFormatter.js +9 -0
  235. package/modules/FileUrlFormatter.js.map +1 -0
  236. package/modules/HeadlessCms/fileField.d.ts +2 -0
  237. package/modules/HeadlessCms/fileField.js +44 -0
  238. package/modules/HeadlessCms/fileField.js.map +1 -0
  239. package/modules/HeadlessCms/fileRenderer/fileField.d.ts +2 -0
  240. package/modules/HeadlessCms/fileRenderer/fileField.js +53 -0
  241. package/modules/HeadlessCms/fileRenderer/fileField.js.map +1 -0
  242. package/modules/HeadlessCms/fileRenderer/fileFields.d.ts +2 -0
  243. package/modules/HeadlessCms/fileRenderer/fileFields.js +73 -0
  244. package/modules/HeadlessCms/fileRenderer/fileFields.js.map +1 -0
  245. package/modules/HeadlessCms/fileRenderer/utils.d.ts +2 -0
  246. package/modules/HeadlessCms/fileRenderer/utils.js +15 -0
  247. package/modules/HeadlessCms/fileRenderer/utils.js.map +1 -0
  248. package/modules/HeadlessCms/index.d.ts +1 -0
  249. package/modules/HeadlessCms/index.js +14 -0
  250. package/modules/HeadlessCms/index.js.map +1 -0
  251. package/modules/SecurityPermissions.d.ts +2 -0
  252. package/modules/SecurityPermissions.js +15 -0
  253. package/modules/SecurityPermissions.js.map +1 -0
  254. package/modules/Settings/assets/icons/folder-open.js +19 -0
  255. package/modules/Settings/assets/icons/folder-open.js.map +1 -0
  256. package/{admin → modules/Settings}/graphql.d.ts +7 -0
  257. package/modules/Settings/graphql.js +36 -0
  258. package/modules/Settings/graphql.js.map +1 -0
  259. package/modules/Settings/index.d.ts +2 -0
  260. package/modules/Settings/index.js +27 -0
  261. package/modules/Settings/index.js.map +1 -0
  262. package/modules/Settings/views/FileManagerSettings.d.ts +2 -0
  263. package/modules/Settings/views/FileManagerSettings.js +134 -0
  264. package/modules/Settings/views/FileManagerSettings.js.map +1 -0
  265. package/package.json +46 -37
  266. package/presentation/FileActions/FileDetails/CopyUrl.d.ts +2 -0
  267. package/presentation/FileActions/FileDetails/CopyUrl.js +19 -0
  268. package/presentation/FileActions/FileDetails/CopyUrl.js.map +1 -0
  269. package/presentation/FileActions/FileDetails/DeleteImage.d.ts +2 -0
  270. package/presentation/FileActions/FileDetails/DeleteImage.js +24 -0
  271. package/presentation/FileActions/FileDetails/DeleteImage.js.map +1 -0
  272. package/presentation/FileActions/FileDetails/Download.d.ts +2 -0
  273. package/presentation/FileActions/FileDetails/Download.js +19 -0
  274. package/presentation/FileActions/FileDetails/Download.js.map +1 -0
  275. package/presentation/FileActions/FileDetails/MoveToFolder.d.ts +2 -0
  276. package/presentation/FileActions/FileDetails/MoveToFolder.js +16 -0
  277. package/presentation/FileActions/FileDetails/MoveToFolder.js.map +1 -0
  278. package/presentation/FileActions/Grid/Delete.d.ts +2 -0
  279. package/presentation/FileActions/Grid/Delete.js +23 -0
  280. package/presentation/FileActions/Grid/Delete.js.map +1 -0
  281. package/presentation/FileActions/Grid/Download.d.ts +2 -0
  282. package/presentation/FileActions/Grid/Download.js +19 -0
  283. package/presentation/FileActions/Grid/Download.js.map +1 -0
  284. package/presentation/FileActions/Grid/MoveToFolder.d.ts +2 -0
  285. package/presentation/FileActions/Grid/MoveToFolder.js +16 -0
  286. package/presentation/FileActions/Grid/MoveToFolder.js.map +1 -0
  287. package/presentation/FileActions/Grid/Settings.d.ts +2 -0
  288. package/presentation/FileActions/Grid/Settings.js +23 -0
  289. package/presentation/FileActions/Grid/Settings.js.map +1 -0
  290. package/presentation/FileActions/index.d.ts +2 -0
  291. package/presentation/FileActions/index.js +39 -0
  292. package/presentation/FileActions/index.js.map +1 -0
  293. package/presentation/FileDetails/FileDetailsPresenter.d.ts +28 -0
  294. package/presentation/FileDetails/FileDetailsPresenter.js +138 -0
  295. package/presentation/FileDetails/FileDetailsPresenter.js.map +1 -0
  296. package/presentation/FileDetails/FileDetailsPresenter.test.d.ts +1 -0
  297. package/presentation/FileDetails/FileDetailsPresenter.test.js +280 -0
  298. package/presentation/FileDetails/FileDetailsPresenter.test.js.map +1 -0
  299. package/presentation/FileDetails/abstractions.d.ts +22 -0
  300. package/presentation/FileDetails/abstractions.js +5 -0
  301. package/presentation/FileDetails/abstractions.js.map +1 -0
  302. package/presentation/FileDetails/components/ActionButton.d.ts +10 -0
  303. package/presentation/FileDetails/components/ActionButton.js +15 -0
  304. package/presentation/FileDetails/components/ActionButton.js.map +1 -0
  305. package/presentation/FileDetails/components/Actions.d.ts +2 -0
  306. package/presentation/FileDetails/components/Actions.js +13 -0
  307. package/presentation/FileDetails/components/Actions.js.map +1 -0
  308. package/presentation/FileDetails/components/Content.d.ts +14 -0
  309. package/presentation/FileDetails/components/Content.js +20 -0
  310. package/presentation/FileDetails/components/Content.js.map +1 -0
  311. package/presentation/FileDetails/components/CreatedOn.d.ts +2 -0
  312. package/presentation/FileDetails/components/CreatedOn.js +21 -0
  313. package/presentation/FileDetails/components/CreatedOn.js.map +1 -0
  314. package/presentation/FileDetails/components/Description.d.ts +2 -0
  315. package/presentation/FileDetails/components/Description.js +16 -0
  316. package/presentation/FileDetails/components/Description.js.map +1 -0
  317. package/presentation/FileDetails/components/FileDetailsDrawer.d.ts +4 -0
  318. package/presentation/FileDetails/components/FileDetailsDrawer.js +73 -0
  319. package/presentation/FileDetails/components/FileDetailsDrawer.js.map +1 -0
  320. package/presentation/FileDetails/components/Preview.d.ts +2 -0
  321. package/presentation/FileDetails/components/Preview.js +15 -0
  322. package/presentation/FileDetails/components/Preview.js.map +1 -0
  323. package/presentation/FileDetails/components/Thumbnail.d.ts +2 -0
  324. package/presentation/FileDetails/components/Thumbnail.js +12 -0
  325. package/presentation/FileDetails/components/Thumbnail.js.map +1 -0
  326. package/presentation/FileDetails/feature.d.ts +3 -0
  327. package/presentation/FileDetails/feature.js +17 -0
  328. package/presentation/FileDetails/feature.js.map +1 -0
  329. package/presentation/FileDetails/index.d.ts +3 -0
  330. package/presentation/FileDetails/index.js +2 -0
  331. package/presentation/FileList/FileListDataSource.d.ts +20 -0
  332. package/presentation/FileList/FileListDataSource.js +122 -0
  333. package/presentation/FileList/FileListDataSource.js.map +1 -0
  334. package/presentation/FileList/FileListPresenter.test.d.ts +1 -0
  335. package/presentation/FileList/FileListPresenter.test.js +424 -0
  336. package/presentation/FileList/FileListPresenter.test.js.map +1 -0
  337. package/presentation/FileList/FileManagerPresenter.d.ts +43 -0
  338. package/presentation/FileList/FileManagerPresenter.js +213 -0
  339. package/presentation/FileList/FileManagerPresenter.js.map +1 -0
  340. package/presentation/FileList/FileManagerPresenterProvider.d.ts +9 -0
  341. package/presentation/FileList/FileManagerPresenterProvider.js +13 -0
  342. package/presentation/FileList/FileManagerPresenterProvider.js.map +1 -0
  343. package/presentation/FileList/abstractions.d.ts +76 -0
  344. package/presentation/FileList/abstractions.js +5 -0
  345. package/presentation/FileList/abstractions.js.map +1 -0
  346. package/presentation/FileList/components/BottomInfoBar/BottomInfoBar.d.ts +6 -0
  347. package/presentation/FileList/components/BottomInfoBar/BottomInfoBar.js +12 -0
  348. package/presentation/FileList/components/BottomInfoBar/BottomInfoBar.js.map +1 -0
  349. package/presentation/FileList/components/BottomInfoBar/ListStatus.d.ts +6 -0
  350. package/presentation/FileList/components/BottomInfoBar/ListStatus.js +20 -0
  351. package/presentation/FileList/components/BottomInfoBar/ListStatus.js.map +1 -0
  352. package/presentation/FileList/components/BottomInfoBar/SupportedFileTypes.d.ts +8 -0
  353. package/presentation/FileList/components/BottomInfoBar/SupportedFileTypes.js +56 -0
  354. package/presentation/FileList/components/BottomInfoBar/SupportedFileTypes.js.map +1 -0
  355. package/presentation/FileList/components/BottomInfoBar/index.d.ts +1 -0
  356. package/presentation/FileList/components/BottomInfoBar/index.js +1 -0
  357. package/presentation/FileList/components/BulkActions/ActionEdit.types.d.ts +2 -0
  358. package/presentation/FileList/components/BulkActions/ActionEdit.types.js +0 -0
  359. package/presentation/FileList/components/BulkActions/ActionEditPresenter.d.ts +35 -0
  360. package/presentation/FileList/components/BulkActions/ActionEditPresenter.js +55 -0
  361. package/presentation/FileList/components/BulkActions/ActionEditPresenter.js.map +1 -0
  362. package/presentation/FileList/components/BulkActions/ActionEditPresenter.test.d.ts +1 -0
  363. package/presentation/FileList/components/BulkActions/ActionEditPresenter.test.js +170 -0
  364. package/presentation/FileList/components/BulkActions/ActionEditPresenter.test.js.map +1 -0
  365. package/presentation/FileList/components/BulkActions/BatchEditorDialog/AddOperation.d.ts +7 -0
  366. package/presentation/FileList/components/BulkActions/BatchEditorDialog/AddOperation.js +15 -0
  367. package/presentation/FileList/components/BulkActions/BatchEditorDialog/AddOperation.js.map +1 -0
  368. package/presentation/FileList/components/BulkActions/BatchEditorDialog/BatchEditor.d.ts +15 -0
  369. package/presentation/FileList/components/BulkActions/BatchEditorDialog/BatchEditor.js +44 -0
  370. package/presentation/FileList/components/BulkActions/BatchEditorDialog/BatchEditor.js.map +1 -0
  371. package/presentation/FileList/components/BulkActions/BatchEditorDialog/BatchEditorDialog.d.ts +15 -0
  372. package/presentation/FileList/components/BulkActions/BatchEditorDialog/BatchEditorDialog.js +52 -0
  373. package/presentation/FileList/components/BulkActions/BatchEditorDialog/BatchEditorDialog.js.map +1 -0
  374. package/presentation/FileList/components/BulkActions/BatchEditorDialog/BatchEditorDialogPresenter.d.ts +61 -0
  375. package/presentation/FileList/components/BulkActions/BatchEditorDialog/BatchEditorDialogPresenter.js +111 -0
  376. package/presentation/FileList/components/BulkActions/BatchEditorDialog/BatchEditorDialogPresenter.js.map +1 -0
  377. package/presentation/FileList/components/BulkActions/BatchEditorDialog/BatchEditorDialogPresenter.test.d.ts +1 -0
  378. package/presentation/FileList/components/BulkActions/BatchEditorDialog/BatchEditorDialogPresenter.test.js +372 -0
  379. package/presentation/FileList/components/BulkActions/BatchEditorDialog/BatchEditorDialogPresenter.test.js.map +1 -0
  380. package/presentation/FileList/components/BulkActions/BatchEditorDialog/FieldRenderer.d.ts +8 -0
  381. package/presentation/FileList/components/BulkActions/BatchEditorDialog/FieldRenderer.js +31 -0
  382. package/presentation/FileList/components/BulkActions/BatchEditorDialog/FieldRenderer.js.map +1 -0
  383. package/presentation/FileList/components/BulkActions/BatchEditorDialog/Operation.d.ts +11 -0
  384. package/presentation/FileList/components/BulkActions/BatchEditorDialog/Operation.js +33 -0
  385. package/presentation/FileList/components/BulkActions/BatchEditorDialog/Operation.js.map +1 -0
  386. package/presentation/FileList/components/BulkActions/BatchEditorDialog/index.d.ts +1 -0
  387. package/presentation/FileList/components/BulkActions/BatchEditorDialog/index.js +1 -0
  388. package/presentation/FileList/components/BulkActions/BulkActionBar.d.ts +5 -0
  389. package/presentation/FileList/components/BulkActions/BulkActionBar.js +42 -0
  390. package/presentation/FileList/components/BulkActions/BulkActionBar.js.map +1 -0
  391. package/presentation/FileList/components/BulkActions/BulkActionDelete.d.ts +4 -0
  392. package/presentation/FileList/components/BulkActions/BulkActionDelete.js +65 -0
  393. package/presentation/FileList/components/BulkActions/BulkActionDelete.js.map +1 -0
  394. package/presentation/FileList/components/BulkActions/BulkActionEdit.d.ts +4 -0
  395. package/presentation/FileList/components/BulkActions/BulkActionEdit.js +105 -0
  396. package/presentation/FileList/components/BulkActions/BulkActionEdit.js.map +1 -0
  397. package/presentation/FileList/components/BulkActions/BulkActionMove.d.ts +4 -0
  398. package/presentation/FileList/components/BulkActions/BulkActionMove.js +87 -0
  399. package/presentation/FileList/components/BulkActions/BulkActionMove.js.map +1 -0
  400. package/presentation/FileList/components/BulkActions/GraphQLInputMapper.d.ts +23 -0
  401. package/presentation/FileList/components/BulkActions/GraphQLInputMapper.js +40 -0
  402. package/presentation/FileList/components/BulkActions/GraphQLInputMapper.js.map +1 -0
  403. package/presentation/FileList/components/BulkActions/GraphQLInputMapper.test.d.ts +1 -0
  404. package/presentation/FileList/components/BulkActions/GraphQLInputMapper.test.js +319 -0
  405. package/presentation/FileList/components/BulkActions/GraphQLInputMapper.test.js.map +1 -0
  406. package/presentation/FileList/components/BulkActions/domain/Batch.d.ts +32 -0
  407. package/presentation/FileList/components/BulkActions/domain/Batch.js +32 -0
  408. package/presentation/FileList/components/BulkActions/domain/Batch.js.map +1 -0
  409. package/presentation/FileList/components/BulkActions/domain/BatchMapper.d.ts +4 -0
  410. package/presentation/FileList/components/BulkActions/domain/BatchMapper.js +14 -0
  411. package/presentation/FileList/components/BulkActions/domain/BatchMapper.js.map +1 -0
  412. package/presentation/FileList/components/BulkActions/domain/Field.d.ts +32 -0
  413. package/presentation/FileList/components/BulkActions/domain/Field.js +49 -0
  414. package/presentation/FileList/components/BulkActions/domain/Field.js.map +1 -0
  415. package/presentation/FileList/components/BulkActions/domain/FieldMapper.d.ts +7 -0
  416. package/presentation/FileList/components/BulkActions/domain/FieldMapper.js +21 -0
  417. package/presentation/FileList/components/BulkActions/domain/FieldMapper.js.map +1 -0
  418. package/presentation/FileList/components/BulkActions/domain/index.d.ts +4 -0
  419. package/presentation/FileList/components/BulkActions/domain/index.js +4 -0
  420. package/presentation/FileList/components/BulkActions/index.d.ts +5 -0
  421. package/presentation/FileList/components/BulkActions/index.js +5 -0
  422. package/presentation/FileList/components/BulkActions/useBulkActionWorker.d.ts +16 -0
  423. package/presentation/FileList/components/BulkActions/useBulkActionWorker.js +43 -0
  424. package/presentation/FileList/components/BulkActions/useBulkActionWorker.js.map +1 -0
  425. package/presentation/FileList/components/Empty/Empty.d.ts +8 -0
  426. package/presentation/FileList/components/Empty/Empty.js +20 -0
  427. package/presentation/FileList/components/Empty/Empty.js.map +1 -0
  428. package/presentation/FileList/components/Empty/index.d.ts +1 -0
  429. package/presentation/FileList/components/Empty/index.js +1 -0
  430. package/presentation/FileList/components/FileDropArea/FileDropArea.d.ts +9 -0
  431. package/presentation/FileList/components/FileDropArea/FileDropArea.js +62 -0
  432. package/presentation/FileList/components/FileDropArea/FileDropArea.js.map +1 -0
  433. package/presentation/FileList/components/FileDropArea/index.d.ts +1 -0
  434. package/presentation/FileList/components/FileDropArea/index.js +1 -0
  435. package/presentation/FileList/components/FileDropPlaceholder/FileDropPlaceholder.d.ts +2 -0
  436. package/presentation/FileList/components/FileDropPlaceholder/FileDropPlaceholder.js +11 -0
  437. package/presentation/FileList/components/FileDropPlaceholder/FileDropPlaceholder.js.map +1 -0
  438. package/presentation/FileList/components/FileDropPlaceholder/index.d.ts +1 -0
  439. package/presentation/FileList/components/FileDropPlaceholder/index.js +1 -0
  440. package/presentation/FileList/components/FilePicker/FilePicker.d.ts +11 -0
  441. package/presentation/FileList/components/FilePicker/FilePicker.js +28 -0
  442. package/presentation/FileList/components/FilePicker/FilePicker.js.map +1 -0
  443. package/presentation/FileList/components/Filters/FilterByType.d.ts +2 -0
  444. package/presentation/FileList/components/Filters/FilterByType.js +39 -0
  445. package/presentation/FileList/components/Filters/FilterByType.js.map +1 -0
  446. package/presentation/FileList/components/Filters/SubFoldersToggle.d.ts +9 -0
  447. package/presentation/FileList/components/Filters/SubFoldersToggle.js +25 -0
  448. package/presentation/FileList/components/Filters/SubFoldersToggle.js.map +1 -0
  449. package/presentation/FileList/components/Filters/TagsFilter.d.ts +9 -0
  450. package/presentation/FileList/components/Filters/TagsFilter.js +86 -0
  451. package/presentation/FileList/components/Filters/TagsFilter.js.map +1 -0
  452. package/presentation/FileList/components/Filters/TypeFilter.d.ts +8 -0
  453. package/presentation/FileList/components/Filters/TypeFilter.js +46 -0
  454. package/presentation/FileList/components/Filters/TypeFilter.js.map +1 -0
  455. package/presentation/FileList/components/Filters/index.d.ts +3 -0
  456. package/presentation/FileList/components/Filters/index.js +3 -0
  457. package/presentation/FileList/components/Grid/ActionButton.d.ts +9 -0
  458. package/presentation/FileList/components/Grid/ActionButton.js +24 -0
  459. package/presentation/FileList/components/Grid/ActionButton.js.map +1 -0
  460. package/presentation/FileList/components/Grid/File.d.ts +32 -0
  461. package/presentation/FileList/components/Grid/File.js +84 -0
  462. package/presentation/FileList/components/Grid/File.js.map +1 -0
  463. package/presentation/FileList/components/Grid/FileGrid.d.ts +9 -0
  464. package/presentation/FileList/components/Grid/FileGrid.js +162 -0
  465. package/presentation/FileList/components/Grid/FileGrid.js.map +1 -0
  466. package/presentation/FileList/components/Grid/FileGrid.test.d.ts +1 -0
  467. package/presentation/FileList/components/Grid/FileGrid.test.js +387 -0
  468. package/presentation/FileList/components/Grid/FileGrid.test.js.map +1 -0
  469. package/presentation/FileList/components/Grid/index.d.ts +1 -0
  470. package/presentation/FileList/components/Grid/index.js +1 -0
  471. package/presentation/FileList/components/Header/FileManagerHeader.d.ts +7 -0
  472. package/presentation/FileList/components/Header/FileManagerHeader.js +114 -0
  473. package/presentation/FileList/components/Header/FileManagerHeader.js.map +1 -0
  474. package/presentation/FileList/components/LayoutSwitch/LayoutSwitch.d.ts +2 -0
  475. package/presentation/FileList/components/LayoutSwitch/LayoutSwitch.js +24 -0
  476. package/presentation/FileList/components/LayoutSwitch/LayoutSwitch.js.map +1 -0
  477. package/presentation/FileList/components/LayoutSwitch/index.d.ts +1 -0
  478. package/presentation/FileList/components/LayoutSwitch/index.js +1 -0
  479. package/presentation/FileList/components/NoPermissions/NoPermissions.d.ts +2 -0
  480. package/presentation/FileList/components/NoPermissions/NoPermissions.js +27 -0
  481. package/presentation/FileList/components/NoPermissions/NoPermissions.js.map +1 -0
  482. package/presentation/FileList/components/NoPermissions/index.d.ts +1 -0
  483. package/presentation/FileList/components/NoPermissions/index.js +1 -0
  484. package/presentation/FileList/components/NoResults/NoResults.d.ts +2 -0
  485. package/presentation/FileList/components/NoResults/NoResults.js +21 -0
  486. package/presentation/FileList/components/NoResults/NoResults.js.map +1 -0
  487. package/presentation/FileList/components/NoResults/index.d.ts +1 -0
  488. package/presentation/FileList/components/NoResults/index.js +1 -0
  489. package/presentation/FileList/components/Search/SearchBar.d.ts +9 -0
  490. package/presentation/FileList/components/Search/SearchBar.js +33 -0
  491. package/presentation/FileList/components/Search/SearchBar.js.map +1 -0
  492. package/presentation/FileList/components/Search/index.d.ts +1 -0
  493. package/presentation/FileList/components/Search/index.js +1 -0
  494. package/presentation/FileList/components/Table/Actions/CopyFile.d.ts +2 -0
  495. package/presentation/FileList/components/Table/Actions/CopyFile.js +21 -0
  496. package/presentation/FileList/components/Table/Actions/CopyFile.js.map +1 -0
  497. package/presentation/FileList/components/Table/Actions/DeleteFile.d.ts +2 -0
  498. package/presentation/FileList/components/Table/Actions/DeleteFile.js +24 -0
  499. package/presentation/FileList/components/Table/Actions/DeleteFile.js.map +1 -0
  500. package/presentation/FileList/components/Table/Actions/EditFile.d.ts +2 -0
  501. package/presentation/FileList/components/Table/Actions/EditFile.js +19 -0
  502. package/presentation/FileList/components/Table/Actions/EditFile.js.map +1 -0
  503. package/presentation/FileList/components/Table/Actions/MoveFile.d.ts +2 -0
  504. package/presentation/FileList/components/Table/Actions/MoveFile.js +19 -0
  505. package/presentation/FileList/components/Table/Actions/MoveFile.js.map +1 -0
  506. package/presentation/FileList/components/Table/Actions/index.d.ts +4 -0
  507. package/presentation/FileList/components/Table/Actions/index.js +4 -0
  508. package/presentation/FileList/components/Table/Cells/CellActions.d.ts +2 -0
  509. package/presentation/FileList/components/Table/Cells/CellActions.js +28 -0
  510. package/presentation/FileList/components/Table/Cells/CellActions.js.map +1 -0
  511. package/presentation/FileList/components/Table/Cells/CellAuthor.d.ts +2 -0
  512. package/presentation/FileList/components/Table/Cells/CellAuthor.js +10 -0
  513. package/presentation/FileList/components/Table/Cells/CellAuthor.js.map +1 -0
  514. package/presentation/FileList/components/Table/Cells/CellCreated.d.ts +2 -0
  515. package/presentation/FileList/components/Table/Cells/CellCreated.js +13 -0
  516. package/presentation/FileList/components/Table/Cells/CellCreated.js.map +1 -0
  517. package/presentation/FileList/components/Table/Cells/CellModified.d.ts +2 -0
  518. package/presentation/FileList/components/Table/Cells/CellModified.js +13 -0
  519. package/presentation/FileList/components/Table/Cells/CellModified.js.map +1 -0
  520. package/presentation/FileList/components/Table/Cells/CellName.d.ts +16 -0
  521. package/presentation/FileList/components/Table/Cells/CellName.js +59 -0
  522. package/presentation/FileList/components/Table/Cells/CellName.js.map +1 -0
  523. package/presentation/FileList/components/Table/Cells/CellSize.d.ts +2 -0
  524. package/presentation/FileList/components/Table/Cells/CellSize.js +14 -0
  525. package/presentation/FileList/components/Table/Cells/CellSize.js.map +1 -0
  526. package/presentation/FileList/components/Table/Cells/CellThumbnail.d.ts +2 -0
  527. package/presentation/FileList/components/Table/Cells/CellThumbnail.js +12 -0
  528. package/presentation/FileList/components/Table/Cells/CellThumbnail.js.map +1 -0
  529. package/presentation/FileList/components/Table/Cells/CellType.d.ts +2 -0
  530. package/presentation/FileList/components/Table/Cells/CellType.js +11 -0
  531. package/presentation/FileList/components/Table/Cells/CellType.js.map +1 -0
  532. package/presentation/FileList/components/Table/Cells/index.d.ts +7 -0
  533. package/presentation/FileList/components/Table/Cells/index.js +7 -0
  534. package/presentation/FileList/components/Table/FileTable.d.ts +12 -0
  535. package/presentation/FileList/components/Table/FileTable.js +79 -0
  536. package/presentation/FileList/components/Table/FileTable.js.map +1 -0
  537. package/presentation/FileList/components/Table/FileTable.test.d.ts +1 -0
  538. package/presentation/FileList/components/Table/FileTable.test.js +365 -0
  539. package/presentation/FileList/components/Table/FileTable.test.js.map +1 -0
  540. package/presentation/FileList/components/Table/index.d.ts +4 -0
  541. package/presentation/FileList/components/Table/index.js +3 -0
  542. package/presentation/FileList/components/TagsList/Empty.d.ts +6 -0
  543. package/presentation/FileList/components/TagsList/Empty.js +8 -0
  544. package/presentation/FileList/components/TagsList/Empty.js.map +1 -0
  545. package/presentation/FileList/components/TagsList/FilterSelect.d.ts +2 -0
  546. package/presentation/FileList/components/TagsList/FilterSelect.js +38 -0
  547. package/presentation/FileList/components/TagsList/FilterSelect.js.map +1 -0
  548. package/presentation/FileList/components/TagsList/FilterStatus.d.ts +7 -0
  549. package/presentation/FileList/components/TagsList/FilterStatus.js +25 -0
  550. package/presentation/FileList/components/TagsList/FilterStatus.js.map +1 -0
  551. package/presentation/FileList/components/TagsList/Tag.d.ts +9 -0
  552. package/presentation/FileList/components/TagsList/Tag.js +11 -0
  553. package/presentation/FileList/components/TagsList/Tag.js.map +1 -0
  554. package/presentation/FileList/components/TagsList/Tags.d.ts +8 -0
  555. package/presentation/FileList/components/TagsList/Tags.js +30 -0
  556. package/presentation/FileList/components/TagsList/Tags.js.map +1 -0
  557. package/presentation/FileList/components/TagsList/TagsList.d.ts +11 -0
  558. package/presentation/FileList/components/TagsList/TagsList.js +24 -0
  559. package/presentation/FileList/components/TagsList/TagsList.js.map +1 -0
  560. package/presentation/FileList/components/TagsList/index.d.ts +1 -0
  561. package/presentation/FileList/components/TagsList/index.js +1 -0
  562. package/presentation/FileList/components/Thumbnail/Thumbnail.d.ts +2 -0
  563. package/presentation/FileList/components/Thumbnail/Thumbnail.js +12 -0
  564. package/presentation/FileList/components/Thumbnail/Thumbnail.js.map +1 -0
  565. package/presentation/FileList/components/Thumbnail/index.d.ts +1 -0
  566. package/presentation/FileList/components/Thumbnail/index.js +1 -0
  567. package/presentation/FileList/components/Upload/UploadProgress.d.ts +9 -0
  568. package/presentation/FileList/components/Upload/UploadProgress.js +45 -0
  569. package/presentation/FileList/components/Upload/UploadProgress.js.map +1 -0
  570. package/presentation/FileList/components/Upload/index.d.ts +1 -0
  571. package/presentation/FileList/components/Upload/index.js +1 -0
  572. package/presentation/FileList/feature.d.ts +3 -0
  573. package/presentation/FileList/feature.js +17 -0
  574. package/presentation/FileList/feature.js.map +1 -0
  575. package/presentation/FileList/index.d.ts +5 -0
  576. package/presentation/FileList/index.js +3 -0
  577. package/presentation/FileManager/FileManagerRenderer.d.ts +2 -0
  578. package/presentation/FileManager/FileManagerRenderer.js +33 -0
  579. package/presentation/FileManager/FileManagerRenderer.js.map +1 -0
  580. package/presentation/FileManager/FileManagerView.d.ts +12 -0
  581. package/presentation/FileManager/FileManagerView.js +246 -0
  582. package/presentation/FileManager/FileManagerView.js.map +1 -0
  583. package/presentation/FileManager/OverlayContext.d.ts +14 -0
  584. package/presentation/FileManager/OverlayContext.js +11 -0
  585. package/presentation/FileManager/OverlayContext.js.map +1 -0
  586. package/presentation/FileManager/outputFileSelectionError.d.ts +2 -0
  587. package/presentation/FileManager/outputFileSelectionError.js +27 -0
  588. package/presentation/FileManager/outputFileSelectionError.js.map +1 -0
  589. package/presentation/Settings/SettingsPresenter.d.ts +14 -0
  590. package/presentation/Settings/SettingsPresenter.js +78 -0
  591. package/presentation/Settings/SettingsPresenter.js.map +1 -0
  592. package/presentation/Settings/components/SettingsView.d.ts +4 -0
  593. package/presentation/Settings/components/SettingsView.js +45 -0
  594. package/presentation/Settings/components/SettingsView.js.map +1 -0
  595. package/presentation/config/DefaultFileManagerConfig.d.ts +2 -0
  596. package/presentation/config/DefaultFileManagerConfig.js +118 -0
  597. package/presentation/config/DefaultFileManagerConfig.js.map +1 -0
  598. package/presentation/config/FileManagerViewConfig.d.ts +248 -0
  599. package/presentation/config/FileManagerViewConfig.js +74 -0
  600. package/presentation/config/FileManagerViewConfig.js.map +1 -0
  601. package/presentation/config/configComponents/Browser/BulkAction.d.ts +26 -0
  602. package/presentation/config/configComponents/Browser/BulkAction.js +57 -0
  603. package/presentation/config/configComponents/Browser/BulkAction.js.map +1 -0
  604. package/presentation/config/configComponents/Browser/BulkEditField.d.ts +10 -0
  605. package/presentation/config/configComponents/Browser/BulkEditField.js +24 -0
  606. package/presentation/config/configComponents/Browser/BulkEditField.js.map +1 -0
  607. package/presentation/config/configComponents/Browser/FileAction.d.ts +8 -0
  608. package/presentation/config/configComponents/Browser/FileAction.js +11 -0
  609. package/presentation/config/configComponents/Browser/FileAction.js.map +1 -0
  610. package/presentation/config/configComponents/Browser/Filter.d.ts +39 -0
  611. package/presentation/config/configComponents/Browser/Filter.js +37 -0
  612. package/presentation/config/configComponents/Browser/Filter.js.map +1 -0
  613. package/presentation/config/configComponents/Browser/FilterByTags.d.ts +5 -0
  614. package/presentation/config/configComponents/Browser/FilterByTags.js +14 -0
  615. package/presentation/config/configComponents/Browser/FilterByTags.js.map +1 -0
  616. package/presentation/config/configComponents/Browser/FiltersToWhere.d.ts +7 -0
  617. package/presentation/config/configComponents/Browser/FiltersToWhere.js +13 -0
  618. package/presentation/config/configComponents/Browser/FiltersToWhere.js.map +1 -0
  619. package/presentation/config/configComponents/Browser/FolderAction.d.ts +7 -0
  620. package/presentation/config/configComponents/Browser/FolderAction.js +10 -0
  621. package/presentation/config/configComponents/Browser/FolderAction.js.map +1 -0
  622. package/presentation/config/configComponents/Browser/FolderDropConfirmation.d.ts +5 -0
  623. package/presentation/config/configComponents/Browser/FolderDropConfirmation.js +7 -0
  624. package/presentation/config/configComponents/Browser/FolderDropConfirmation.js.map +1 -0
  625. package/presentation/config/configComponents/Browser/FolderFieldDecorator.d.ts +7 -0
  626. package/presentation/config/configComponents/Browser/FolderFieldDecorator.js +11 -0
  627. package/presentation/config/configComponents/Browser/FolderFieldDecorator.js.map +1 -0
  628. package/presentation/config/configComponents/Browser/Grid/Action.d.ts +31 -0
  629. package/presentation/config/configComponents/Browser/Grid/Action.js +33 -0
  630. package/presentation/config/configComponents/Browser/Grid/Action.js.map +1 -0
  631. package/presentation/config/configComponents/Browser/Grid/Thumbnail.d.ts +28 -0
  632. package/presentation/config/configComponents/Browser/Grid/Thumbnail.js +28 -0
  633. package/presentation/config/configComponents/Browser/Grid/Thumbnail.js.map +1 -0
  634. package/presentation/config/configComponents/Browser/Grid/index.d.ts +6 -0
  635. package/presentation/config/configComponents/Browser/Grid/index.js +0 -0
  636. package/presentation/config/configComponents/Browser/Table/Column.d.ts +32 -0
  637. package/presentation/config/configComponents/Browser/Table/Column.js +13 -0
  638. package/presentation/config/configComponents/Browser/Table/Column.js.map +1 -0
  639. package/presentation/config/configComponents/Browser/Table/Thumbnail.d.ts +28 -0
  640. package/presentation/config/configComponents/Browser/Table/Thumbnail.js +28 -0
  641. package/presentation/config/configComponents/Browser/Table/Thumbnail.js.map +1 -0
  642. package/presentation/config/configComponents/Browser/Table/index.d.ts +56 -0
  643. package/presentation/config/configComponents/Browser/Table/index.js +11 -0
  644. package/presentation/config/configComponents/Browser/Table/index.js.map +1 -0
  645. package/presentation/config/configComponents/Browser/index.d.ts +189 -0
  646. package/presentation/config/configComponents/Browser/index.js +47 -0
  647. package/presentation/config/configComponents/Browser/index.js.map +1 -0
  648. package/presentation/config/configComponents/FileDetails/Action.d.ts +31 -0
  649. package/presentation/config/configComponents/FileDetails/Action.js +30 -0
  650. package/presentation/config/configComponents/FileDetails/Action.js.map +1 -0
  651. package/presentation/config/configComponents/FileDetails/Thumbnail.d.ts +28 -0
  652. package/presentation/config/configComponents/FileDetails/Thumbnail.js +25 -0
  653. package/presentation/config/configComponents/FileDetails/Thumbnail.js.map +1 -0
  654. package/presentation/config/configComponents/FileDetails/Width.d.ts +5 -0
  655. package/presentation/config/configComponents/FileDetails/Width.js +13 -0
  656. package/presentation/config/configComponents/FileDetails/Width.js.map +1 -0
  657. package/presentation/config/configComponents/FileDetails/index.d.ts +52 -0
  658. package/presentation/config/configComponents/FileDetails/index.js +16 -0
  659. package/presentation/config/configComponents/FileDetails/index.js.map +1 -0
  660. package/presentation/config/fields/AccessControl.d.ts +7 -0
  661. package/presentation/config/fields/AccessControl.js +38 -0
  662. package/presentation/config/fields/AccessControl.js.map +1 -0
  663. package/presentation/config/fields/Tags.d.ts +2 -0
  664. package/presentation/config/fields/Tags.js +32 -0
  665. package/presentation/config/fields/Tags.js.map +1 -0
  666. package/presentation/config/fields/index.d.ts +2 -0
  667. package/presentation/config/fields/index.js +2 -0
  668. package/presentation/config/fields/useAccessControlField.d.ts +6 -0
  669. package/presentation/config/fields/useAccessControlField.js +21 -0
  670. package/presentation/config/fields/useAccessControlField.js.map +1 -0
  671. package/presentation/config/fields/useFileOrUndefined.d.ts +3 -0
  672. package/presentation/config/fields/useFileOrUndefined.js +13 -0
  673. package/presentation/config/fields/useFileOrUndefined.js.map +1 -0
  674. package/presentation/config/getThumbnailRenderer.d.ts +4 -0
  675. package/presentation/config/getThumbnailRenderer.js +16 -0
  676. package/presentation/config/getThumbnailRenderer.js.map +1 -0
  677. package/presentation/config/thumbnailRenderers/FilePreviewDefaultRenderer.d.ts +2 -0
  678. package/presentation/config/thumbnailRenderers/FilePreviewDefaultRenderer.js +11 -0
  679. package/presentation/config/thumbnailRenderers/FilePreviewDefaultRenderer.js.map +1 -0
  680. package/presentation/config/thumbnailRenderers/FilePreviewImageRenderer.d.ts +2 -0
  681. package/presentation/config/thumbnailRenderers/FilePreviewImageRenderer.js +18 -0
  682. package/presentation/config/thumbnailRenderers/FilePreviewImageRenderer.js.map +1 -0
  683. package/presentation/config/thumbnailRenderers/GridItemDefaultRenderer.d.ts +2 -0
  684. package/presentation/config/thumbnailRenderers/GridItemDefaultRenderer.js +11 -0
  685. package/presentation/config/thumbnailRenderers/GridItemDefaultRenderer.js.map +1 -0
  686. package/presentation/config/thumbnailRenderers/GridItemImageRenderer.d.ts +2 -0
  687. package/presentation/config/thumbnailRenderers/GridItemImageRenderer.js +18 -0
  688. package/presentation/config/thumbnailRenderers/GridItemImageRenderer.js.map +1 -0
  689. package/presentation/config/thumbnailRenderers/TableItemDefaultRenderer.d.ts +2 -0
  690. package/presentation/config/thumbnailRenderers/TableItemDefaultRenderer.js +18 -0
  691. package/presentation/config/thumbnailRenderers/TableItemDefaultRenderer.js.map +1 -0
  692. package/presentation/config/thumbnailRenderers/TableItemImageRenderer.d.ts +2 -0
  693. package/presentation/config/thumbnailRenderers/TableItemImageRenderer.js +18 -0
  694. package/presentation/config/thumbnailRenderers/TableItemImageRenderer.js.map +1 -0
  695. package/presentation/contexts/FileProvider.d.ts +12 -0
  696. package/presentation/contexts/FileProvider.js +13 -0
  697. package/presentation/contexts/FileProvider.js.map +1 -0
  698. package/presentation/hooks/useCopyFile.d.ts +11 -0
  699. package/presentation/hooks/useCopyFile.js +24 -0
  700. package/presentation/hooks/useCopyFile.js.map +1 -0
  701. package/presentation/hooks/useDeleteFile.d.ts +9 -0
  702. package/presentation/hooks/useDeleteFile.js +35 -0
  703. package/presentation/hooks/useDeleteFile.js.map +1 -0
  704. package/presentation/hooks/useFile.d.ts +2 -0
  705. package/presentation/hooks/useFile.js +10 -0
  706. package/presentation/hooks/useFile.js.map +1 -0
  707. package/presentation/hooks/useMoveFileToFolder.d.ts +2 -0
  708. package/presentation/hooks/useMoveFileToFolder.js +36 -0
  709. package/presentation/hooks/useMoveFileToFolder.js.map +1 -0
  710. package/routes.d.ts +7 -0
  711. package/routes.js +17 -0
  712. package/routes.js.map +1 -0
  713. package/static/svg/folder-open.ae8d0fac.svg +1 -0
  714. package/admin/graphql.js +0 -24
  715. package/admin/graphql.js.map +0 -1
  716. package/admin/index.d.ts +0 -2
  717. package/admin/index.js +0 -16
  718. package/admin/index.js.map +0 -1
  719. package/admin/plugins/index.d.ts +0 -2
  720. package/admin/plugins/index.js +0 -18
  721. package/admin/plugins/index.js.map +0 -1
  722. package/admin/plugins/installation.d.ts +0 -3
  723. package/admin/plugins/installation.js +0 -134
  724. package/admin/plugins/installation.js.map +0 -1
  725. package/admin/plugins/permissionRenderer/FileManagerPermissions.d.ts +0 -14
  726. package/admin/plugins/permissionRenderer/FileManagerPermissions.js +0 -249
  727. package/admin/plugins/permissionRenderer/FileManagerPermissions.js.map +0 -1
  728. package/admin/plugins/permissionRenderer/index.d.ts +0 -3
  729. package/admin/plugins/permissionRenderer/index.js +0 -38
  730. package/admin/plugins/permissionRenderer/index.js.map +0 -1
  731. package/admin/views/FileManagerSettings.d.ts +0 -3
  732. package/admin/views/FileManagerSettings.js +0 -162
  733. package/admin/views/FileManagerSettings.js.map +0 -1
  734. package/index.js.map +0 -1
  735. package/types.d.ts +0 -26
  736. package/types.js +0 -5
  737. package/types.js.map +0 -1
  738. /package/{admin → modules/Settings}/assets/icons/folder-open.svg +0 -0
@@ -0,0 +1,427 @@
1
+ import { beforeEach, describe, expect, it, vi } from "vitest";
2
+ import { Container } from "@webiny/di";
3
+ import { Result } from "@webiny/sdk";
4
+ import { ListCache } from "@webiny/app-admin/features/listCache/index.js";
5
+ import { WebinySdk } from "@webiny/app-admin/features/webinySdk/abstractions.js";
6
+ import { FilesListCache } from "../shared/abstractions.js";
7
+ import { FileFieldsProvider } from "../shared/FileFieldsProvider.js";
8
+ import { FileUploader } from "./abstractions.js";
9
+ import { FileUploader as external_FileUploader_js_FileUploader } from "./FileUploader.js";
10
+ function createFile(overrides = {}) {
11
+ return {
12
+ id: "file-1",
13
+ name: "photo.jpg",
14
+ key: "files/photo.jpg",
15
+ src: "https://cdn.example.com/files/photo.jpg",
16
+ type: "image/jpeg",
17
+ size: 204800,
18
+ metadata: {},
19
+ tags: [],
20
+ createdOn: "2025-01-01T00:00:00Z",
21
+ savedOn: "2025-01-01T00:00:00Z",
22
+ createdBy: {
23
+ id: "user-1",
24
+ displayName: "Test User",
25
+ type: "admin"
26
+ },
27
+ savedBy: {
28
+ id: "user-1",
29
+ displayName: "Test User",
30
+ type: "admin"
31
+ },
32
+ location: {
33
+ folderId: "root"
34
+ },
35
+ ...overrides
36
+ };
37
+ }
38
+ function createBrowserFile(name, size = 1024) {
39
+ const content = new Uint8Array(size);
40
+ return new File([
41
+ content
42
+ ], name, {
43
+ type: "image/jpeg"
44
+ });
45
+ }
46
+ function createMockSdk() {
47
+ return {
48
+ fileManager: {
49
+ createFile: vi.fn(),
50
+ createFiles: vi.fn()
51
+ }
52
+ };
53
+ }
54
+ function createContainer(mockSdk) {
55
+ const container = new Container();
56
+ const cache = new ListCache();
57
+ container.registerInstance(WebinySdk, mockSdk);
58
+ container.registerInstance(FilesListCache, cache);
59
+ container.register(FileFieldsProvider).inSingletonScope();
60
+ container.register(external_FileUploader_js_FileUploader).inSingletonScope();
61
+ return {
62
+ container,
63
+ cache
64
+ };
65
+ }
66
+ describe("FileUploader Feature", ()=>{
67
+ let mockSdk;
68
+ let cache;
69
+ let container;
70
+ beforeEach(()=>{
71
+ mockSdk = createMockSdk();
72
+ const result = createContainer(mockSdk);
73
+ container = result.container;
74
+ cache = result.cache;
75
+ });
76
+ it("should call SDK createFile with correct params for single upload", async ()=>{
77
+ const file = createBrowserFile("photo.jpg", 2048);
78
+ const created = createFile({
79
+ id: "new-1",
80
+ name: "photo.jpg"
81
+ });
82
+ mockSdk.fileManager.createFile.mockResolvedValue(Result.ok(created));
83
+ const uploader = container.resolve(FileUploader);
84
+ await uploader.upload(file, {
85
+ name: "photo.jpg",
86
+ type: "image/jpeg"
87
+ });
88
+ expect(mockSdk.fileManager.createFile).toHaveBeenCalledTimes(1);
89
+ const callArgs = mockSdk.fileManager.createFile.mock.calls[0][0];
90
+ expect(callArgs.file).toBe(file);
91
+ expect(callArgs.data.name).toBe("photo.jpg");
92
+ expect(callArgs.data.type).toBe("image/jpeg");
93
+ expect(callArgs.fields).toBeDefined();
94
+ expect(callArgs.onProgress).toBeTypeOf("function");
95
+ });
96
+ it("should update job progress via onProgress callback", async ()=>{
97
+ const file = createBrowserFile("photo.jpg", 2048);
98
+ const created = createFile({
99
+ id: "new-1"
100
+ });
101
+ mockSdk.fileManager.createFile.mockImplementation(async (params)=>{
102
+ params.onProgress({
103
+ sent: 1024,
104
+ total: 2048,
105
+ percentage: 50
106
+ });
107
+ params.onProgress({
108
+ sent: 2048,
109
+ total: 2048,
110
+ percentage: 100
111
+ });
112
+ return Result.ok(created);
113
+ });
114
+ const uploader = container.resolve(FileUploader);
115
+ await uploader.upload(file, {
116
+ name: "photo.jpg",
117
+ type: "image/jpeg"
118
+ });
119
+ expect(uploader.vm.jobs).toHaveLength(1);
120
+ expect(uploader.vm.jobs[0].status).toBe("completed");
121
+ expect(uploader.vm.jobs[0].progress.percentage).toBe(100);
122
+ });
123
+ it("should update cache on successful single upload", async ()=>{
124
+ const file = createBrowserFile("photo.jpg");
125
+ const created = createFile({
126
+ id: "uploaded-1",
127
+ name: "photo.jpg"
128
+ });
129
+ mockSdk.fileManager.createFile.mockResolvedValue(Result.ok(created));
130
+ expect(cache.hasItems()).toBe(false);
131
+ const uploader = container.resolve(FileUploader);
132
+ await uploader.upload(file, {
133
+ name: "photo.jpg",
134
+ type: "image/jpeg"
135
+ });
136
+ expect(cache.hasItems()).toBe(true);
137
+ expect(cache.getItem((f)=>"uploaded-1" === f.id)).toEqual(created);
138
+ });
139
+ it("should mark job as failed when SDK returns error", async ()=>{
140
+ const file = createBrowserFile("photo.jpg");
141
+ mockSdk.fileManager.createFile.mockResolvedValue(Result.fail(new Error("Upload failed")));
142
+ const uploader = container.resolve(FileUploader);
143
+ await uploader.upload(file, {
144
+ name: "photo.jpg",
145
+ type: "image/jpeg"
146
+ });
147
+ expect(uploader.vm.jobs).toHaveLength(1);
148
+ expect(uploader.vm.jobs[0].status).toBe("failed");
149
+ expect(uploader.vm.jobs[0].error).toBe("Upload failed");
150
+ expect(cache.hasItems()).toBe(false);
151
+ });
152
+ it("should call SDK createFiles with correct params for batch upload", async ()=>{
153
+ const file1 = createBrowserFile("a.jpg", 1024);
154
+ const file2 = createBrowserFile("b.jpg", 2048);
155
+ const created1 = createFile({
156
+ id: "batch-1",
157
+ name: "a.jpg"
158
+ });
159
+ const created2 = createFile({
160
+ id: "batch-2",
161
+ name: "b.jpg"
162
+ });
163
+ mockSdk.fileManager.createFiles.mockResolvedValue(Result.ok({
164
+ successful: [
165
+ created1,
166
+ created2
167
+ ],
168
+ failed: []
169
+ }));
170
+ const uploader = container.resolve(FileUploader);
171
+ await uploader.uploadMany([
172
+ {
173
+ file: file1,
174
+ data: {
175
+ name: "a.jpg",
176
+ type: "image/jpeg"
177
+ }
178
+ },
179
+ {
180
+ file: file2,
181
+ data: {
182
+ name: "b.jpg",
183
+ type: "image/jpeg"
184
+ }
185
+ }
186
+ ], {
187
+ concurrency: 2,
188
+ strategy: "continue"
189
+ });
190
+ expect(mockSdk.fileManager.createFiles).toHaveBeenCalledTimes(1);
191
+ const callArgs = mockSdk.fileManager.createFiles.mock.calls[0][0];
192
+ expect(callArgs.files).toHaveLength(2);
193
+ expect(callArgs.concurrency).toBe(2);
194
+ expect(callArgs.strategy).toBe("continue");
195
+ });
196
+ it("should update cache with all successful files from batch", async ()=>{
197
+ const file1 = createBrowserFile("a.jpg");
198
+ const file2 = createBrowserFile("b.jpg");
199
+ const created1 = createFile({
200
+ id: "batch-1",
201
+ name: "a.jpg"
202
+ });
203
+ const created2 = createFile({
204
+ id: "batch-2",
205
+ name: "b.jpg"
206
+ });
207
+ mockSdk.fileManager.createFiles.mockResolvedValue(Result.ok({
208
+ successful: [
209
+ created1,
210
+ created2
211
+ ],
212
+ failed: []
213
+ }));
214
+ const uploader = container.resolve(FileUploader);
215
+ await uploader.uploadMany([
216
+ {
217
+ file: file1,
218
+ data: {
219
+ name: "a.jpg",
220
+ type: "image/jpeg"
221
+ }
222
+ },
223
+ {
224
+ file: file2,
225
+ data: {
226
+ name: "b.jpg",
227
+ type: "image/jpeg"
228
+ }
229
+ }
230
+ ]);
231
+ expect(cache.count()).toBe(2);
232
+ expect(cache.getItem((f)=>"batch-1" === f.id)).toBeDefined();
233
+ expect(cache.getItem((f)=>"batch-2" === f.id)).toBeDefined();
234
+ });
235
+ it("should track per-file progress in batch upload", async ()=>{
236
+ const file1 = createBrowserFile("a.jpg", 1024);
237
+ const file2 = createBrowserFile("b.jpg", 2048);
238
+ const created1 = createFile({
239
+ id: "batch-1",
240
+ name: "a.jpg"
241
+ });
242
+ const created2 = createFile({
243
+ id: "batch-2",
244
+ name: "b.jpg"
245
+ });
246
+ mockSdk.fileManager.createFiles.mockImplementation(async (params)=>{
247
+ params.files[0].onProgress({
248
+ sent: 1024,
249
+ total: 1024,
250
+ percentage: 100
251
+ });
252
+ params.files[1].onProgress({
253
+ sent: 1024,
254
+ total: 2048,
255
+ percentage: 50
256
+ });
257
+ params.files[1].onProgress({
258
+ sent: 2048,
259
+ total: 2048,
260
+ percentage: 100
261
+ });
262
+ return Result.ok({
263
+ successful: [
264
+ created1,
265
+ created2
266
+ ],
267
+ failed: []
268
+ });
269
+ });
270
+ const uploader = container.resolve(FileUploader);
271
+ await uploader.uploadMany([
272
+ {
273
+ file: file1,
274
+ data: {
275
+ name: "a.jpg",
276
+ type: "image/jpeg"
277
+ }
278
+ },
279
+ {
280
+ file: file2,
281
+ data: {
282
+ name: "b.jpg",
283
+ type: "image/jpeg"
284
+ }
285
+ }
286
+ ]);
287
+ expect(uploader.vm.jobs).toHaveLength(2);
288
+ expect(uploader.vm.completedCount).toBe(2);
289
+ });
290
+ it("should handle partial failures in batch upload (continue strategy)", async ()=>{
291
+ const file1 = createBrowserFile("a.jpg");
292
+ const file2 = createBrowserFile("b.jpg");
293
+ const created1 = createFile({
294
+ id: "batch-ok",
295
+ name: "a.jpg"
296
+ });
297
+ mockSdk.fileManager.createFiles.mockResolvedValue(Result.ok({
298
+ successful: [
299
+ created1
300
+ ],
301
+ failed: [
302
+ {
303
+ data: {
304
+ name: "b.jpg"
305
+ },
306
+ error: new Error("b.jpg failed")
307
+ }
308
+ ]
309
+ }));
310
+ const uploader = container.resolve(FileUploader);
311
+ await uploader.uploadMany([
312
+ {
313
+ file: file1,
314
+ data: {
315
+ name: "a.jpg",
316
+ type: "image/jpeg"
317
+ }
318
+ },
319
+ {
320
+ file: file2,
321
+ data: {
322
+ name: "b.jpg",
323
+ type: "image/jpeg"
324
+ }
325
+ }
326
+ ], {
327
+ strategy: "continue"
328
+ });
329
+ expect(uploader.vm.completedCount).toBe(1);
330
+ expect(uploader.vm.failedCount).toBe(1);
331
+ expect(cache.count()).toBe(1);
332
+ expect(cache.getItem((f)=>"batch-ok" === f.id)).toBeDefined();
333
+ });
334
+ it("should pass AbortController signal to SDK for single upload", async ()=>{
335
+ const file = createBrowserFile("photo.jpg");
336
+ const created = createFile({
337
+ id: "abort-1"
338
+ });
339
+ mockSdk.fileManager.createFile.mockResolvedValue(Result.ok(created));
340
+ const uploader = container.resolve(FileUploader);
341
+ await uploader.upload(file, {
342
+ name: "photo.jpg",
343
+ type: "image/jpeg"
344
+ });
345
+ const callArgs = mockSdk.fileManager.createFile.mock.calls[0][0];
346
+ expect(callArgs.signal).toBeInstanceOf(AbortSignal);
347
+ });
348
+ it("should pass AbortController signal to SDK for batch upload", async ()=>{
349
+ const file = createBrowserFile("photo.jpg");
350
+ const created = createFile({
351
+ id: "abort-batch"
352
+ });
353
+ mockSdk.fileManager.createFiles.mockResolvedValue(Result.ok({
354
+ successful: [
355
+ created
356
+ ],
357
+ failed: []
358
+ }));
359
+ const uploader = container.resolve(FileUploader);
360
+ await uploader.uploadMany([
361
+ {
362
+ file,
363
+ data: {
364
+ name: "photo.jpg",
365
+ type: "image/jpeg"
366
+ }
367
+ }
368
+ ]);
369
+ const callArgs = mockSdk.fileManager.createFiles.mock.calls[0][0];
370
+ expect(callArgs.signal).toBeInstanceOf(AbortSignal);
371
+ });
372
+ it("should remove completed and failed jobs on clear", async ()=>{
373
+ const file1 = createBrowserFile("ok.jpg");
374
+ const file2 = createBrowserFile("fail.jpg");
375
+ mockSdk.fileManager.createFile.mockResolvedValueOnce(Result.ok(createFile({
376
+ id: "ok-1",
377
+ name: "ok.jpg"
378
+ })));
379
+ mockSdk.fileManager.createFile.mockResolvedValueOnce(Result.fail(new Error("fail")));
380
+ const uploader = container.resolve(FileUploader);
381
+ await uploader.upload(file1, {
382
+ name: "ok.jpg",
383
+ type: "image/jpeg"
384
+ });
385
+ await uploader.upload(file2, {
386
+ name: "fail.jpg",
387
+ type: "image/jpeg"
388
+ });
389
+ expect(uploader.vm.jobs).toHaveLength(2);
390
+ expect(uploader.vm.completedCount).toBe(1);
391
+ expect(uploader.vm.failedCount).toBe(1);
392
+ uploader.clear();
393
+ expect(uploader.vm.jobs).toHaveLength(0);
394
+ });
395
+ it("should compute overall progress from all jobs", async ()=>{
396
+ const file1 = createBrowserFile("a.jpg", 1000);
397
+ const file2 = createBrowserFile("b.jpg", 3000);
398
+ const created1 = createFile({
399
+ id: "p-1",
400
+ name: "a.jpg"
401
+ });
402
+ const created2 = createFile({
403
+ id: "p-2",
404
+ name: "b.jpg"
405
+ });
406
+ mockSdk.fileManager.createFile.mockResolvedValueOnce(Result.ok(created1)).mockResolvedValueOnce(Result.ok(created2));
407
+ const uploader = container.resolve(FileUploader);
408
+ await uploader.upload(file1, {
409
+ name: "a.jpg",
410
+ type: "image/jpeg"
411
+ });
412
+ await uploader.upload(file2, {
413
+ name: "b.jpg",
414
+ type: "image/jpeg"
415
+ });
416
+ expect(uploader.vm.isUploading).toBe(false);
417
+ expect(uploader.vm.overallProgress.percentage).toBe(100);
418
+ });
419
+ it("should report isUploading as false when no jobs exist", ()=>{
420
+ const uploader = container.resolve(FileUploader);
421
+ expect(uploader.vm.isUploading).toBe(false);
422
+ expect(uploader.vm.jobs).toHaveLength(0);
423
+ expect(uploader.vm.overallProgress.percentage).toBe(0);
424
+ });
425
+ });
426
+
427
+ //# sourceMappingURL=FileUploader.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/fileUploader/FileUploader.test.js","sources":["../../../src/features/fileUploader/FileUploader.test.ts"],"sourcesContent":["import { describe, it, expect, vi, beforeEach } from \"vitest\";\nimport { Container } from \"@webiny/di\";\nimport { Result } from \"@webiny/sdk\";\nimport { ListCache } from \"@webiny/app-admin/features/listCache/index.js\";\nimport { WebinySdk } from \"@webiny/app-admin/features/webinySdk/abstractions.js\";\nimport { FilesListCache } from \"../shared/abstractions.js\";\nimport { FileFieldsProvider } from \"../shared/FileFieldsProvider.js\";\nimport { FileUploader as Abstraction } from \"./abstractions.js\";\nimport { FileUploader } from \"./FileUploader.js\";\nimport type { FmFile } from \"../shared/types.js\";\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction createFile(overrides: Partial<FmFile> = {}): FmFile {\n return {\n id: \"file-1\",\n name: \"photo.jpg\",\n key: \"files/photo.jpg\",\n src: \"https://cdn.example.com/files/photo.jpg\",\n type: \"image/jpeg\",\n size: 204800,\n metadata: {},\n tags: [],\n createdOn: \"2025-01-01T00:00:00Z\",\n savedOn: \"2025-01-01T00:00:00Z\",\n createdBy: { id: \"user-1\", displayName: \"Test User\", type: \"admin\" },\n savedBy: { id: \"user-1\", displayName: \"Test User\", type: \"admin\" },\n location: { folderId: \"root\" },\n ...overrides\n };\n}\n\nfunction createBrowserFile(name: string, size = 1024): File {\n const content = new Uint8Array(size);\n return new File([content], name, { type: \"image/jpeg\" });\n}\n\ninterface MockSdk {\n fileManager: {\n createFile: ReturnType<typeof vi.fn>;\n createFiles: ReturnType<typeof vi.fn>;\n };\n}\n\nfunction createMockSdk(): MockSdk {\n return {\n fileManager: {\n createFile: vi.fn(),\n createFiles: vi.fn()\n }\n };\n}\n\nfunction createContainer(mockSdk: MockSdk) {\n const container = new Container();\n const cache = new ListCache<FmFile>();\n\n container.registerInstance(WebinySdk, mockSdk as any);\n container.registerInstance(FilesListCache, cache);\n container.register(FileFieldsProvider).inSingletonScope();\n container.register(FileUploader).inSingletonScope();\n\n return { container, cache };\n}\n\n// ---------------------------------------------------------------------------\n// Tests\n// ---------------------------------------------------------------------------\n\ndescribe(\"FileUploader Feature\", () => {\n let mockSdk: MockSdk;\n let cache: ListCache<FmFile>;\n let container: Container;\n\n beforeEach(() => {\n mockSdk = createMockSdk();\n const result = createContainer(mockSdk);\n container = result.container;\n cache = result.cache as ListCache<FmFile>;\n });\n\n // -----------------------------------------------------------------------\n // Single file upload.\n // -----------------------------------------------------------------------\n\n it(\"should call SDK createFile with correct params for single upload\", async () => {\n const file = createBrowserFile(\"photo.jpg\", 2048);\n const created = createFile({ id: \"new-1\", name: \"photo.jpg\" });\n mockSdk.fileManager.createFile.mockResolvedValue(Result.ok(created));\n\n const uploader = container.resolve(Abstraction);\n await uploader.upload(file, { name: \"photo.jpg\", type: \"image/jpeg\" });\n\n expect(mockSdk.fileManager.createFile).toHaveBeenCalledTimes(1);\n const callArgs = mockSdk.fileManager.createFile.mock.calls[0][0];\n expect(callArgs.file).toBe(file);\n expect(callArgs.data.name).toBe(\"photo.jpg\");\n expect(callArgs.data.type).toBe(\"image/jpeg\");\n expect(callArgs.fields).toBeDefined();\n expect(callArgs.onProgress).toBeTypeOf(\"function\");\n });\n\n it(\"should update job progress via onProgress callback\", async () => {\n const file = createBrowserFile(\"photo.jpg\", 2048);\n const created = createFile({ id: \"new-1\" });\n\n mockSdk.fileManager.createFile.mockImplementation(async (params: any) => {\n // Simulate progress callbacks.\n params.onProgress({ sent: 1024, total: 2048, percentage: 50 });\n params.onProgress({ sent: 2048, total: 2048, percentage: 100 });\n return Result.ok(created);\n });\n\n const uploader = container.resolve(Abstraction);\n await uploader.upload(file, { name: \"photo.jpg\", type: \"image/jpeg\" });\n\n // After completion, job should be completed.\n expect(uploader.vm.jobs).toHaveLength(1);\n expect(uploader.vm.jobs[0].status).toBe(\"completed\");\n expect(uploader.vm.jobs[0].progress.percentage).toBe(100);\n });\n\n it(\"should update cache on successful single upload\", async () => {\n const file = createBrowserFile(\"photo.jpg\");\n const created = createFile({ id: \"uploaded-1\", name: \"photo.jpg\" });\n mockSdk.fileManager.createFile.mockResolvedValue(Result.ok(created));\n\n expect(cache.hasItems()).toBe(false);\n\n const uploader = container.resolve(Abstraction);\n await uploader.upload(file, { name: \"photo.jpg\", type: \"image/jpeg\" });\n\n expect(cache.hasItems()).toBe(true);\n expect(cache.getItem(f => f.id === \"uploaded-1\")).toEqual(created);\n });\n\n it(\"should mark job as failed when SDK returns error\", async () => {\n const file = createBrowserFile(\"photo.jpg\");\n mockSdk.fileManager.createFile.mockResolvedValue(Result.fail(new Error(\"Upload failed\")));\n\n const uploader = container.resolve(Abstraction);\n await uploader.upload(file, { name: \"photo.jpg\", type: \"image/jpeg\" });\n\n expect(uploader.vm.jobs).toHaveLength(1);\n expect(uploader.vm.jobs[0].status).toBe(\"failed\");\n expect(uploader.vm.jobs[0].error).toBe(\"Upload failed\");\n expect(cache.hasItems()).toBe(false);\n });\n\n // -----------------------------------------------------------------------\n // Batch upload.\n // -----------------------------------------------------------------------\n\n it(\"should call SDK createFiles with correct params for batch upload\", async () => {\n const file1 = createBrowserFile(\"a.jpg\", 1024);\n const file2 = createBrowserFile(\"b.jpg\", 2048);\n const created1 = createFile({ id: \"batch-1\", name: \"a.jpg\" });\n const created2 = createFile({ id: \"batch-2\", name: \"b.jpg\" });\n\n mockSdk.fileManager.createFiles.mockResolvedValue(\n Result.ok({ successful: [created1, created2], failed: [] })\n );\n\n const uploader = container.resolve(Abstraction);\n await uploader.uploadMany(\n [\n { file: file1, data: { name: \"a.jpg\", type: \"image/jpeg\" } },\n { file: file2, data: { name: \"b.jpg\", type: \"image/jpeg\" } }\n ],\n { concurrency: 2, strategy: \"continue\" }\n );\n\n expect(mockSdk.fileManager.createFiles).toHaveBeenCalledTimes(1);\n const callArgs = mockSdk.fileManager.createFiles.mock.calls[0][0];\n expect(callArgs.files).toHaveLength(2);\n expect(callArgs.concurrency).toBe(2);\n expect(callArgs.strategy).toBe(\"continue\");\n });\n\n it(\"should update cache with all successful files from batch\", async () => {\n const file1 = createBrowserFile(\"a.jpg\");\n const file2 = createBrowserFile(\"b.jpg\");\n const created1 = createFile({ id: \"batch-1\", name: \"a.jpg\" });\n const created2 = createFile({ id: \"batch-2\", name: \"b.jpg\" });\n\n mockSdk.fileManager.createFiles.mockResolvedValue(\n Result.ok({ successful: [created1, created2], failed: [] })\n );\n\n const uploader = container.resolve(Abstraction);\n await uploader.uploadMany([\n { file: file1, data: { name: \"a.jpg\", type: \"image/jpeg\" } },\n { file: file2, data: { name: \"b.jpg\", type: \"image/jpeg\" } }\n ]);\n\n expect(cache.count()).toBe(2);\n expect(cache.getItem(f => f.id === \"batch-1\")).toBeDefined();\n expect(cache.getItem(f => f.id === \"batch-2\")).toBeDefined();\n });\n\n it(\"should track per-file progress in batch upload\", async () => {\n const file1 = createBrowserFile(\"a.jpg\", 1024);\n const file2 = createBrowserFile(\"b.jpg\", 2048);\n const created1 = createFile({ id: \"batch-1\", name: \"a.jpg\" });\n const created2 = createFile({ id: \"batch-2\", name: \"b.jpg\" });\n\n mockSdk.fileManager.createFiles.mockImplementation(async (params: any) => {\n // Simulate per-file progress.\n params.files[0].onProgress({ sent: 1024, total: 1024, percentage: 100 });\n params.files[1].onProgress({ sent: 1024, total: 2048, percentage: 50 });\n params.files[1].onProgress({ sent: 2048, total: 2048, percentage: 100 });\n return Result.ok({ successful: [created1, created2], failed: [] });\n });\n\n const uploader = container.resolve(Abstraction);\n await uploader.uploadMany([\n { file: file1, data: { name: \"a.jpg\", type: \"image/jpeg\" } },\n { file: file2, data: { name: \"b.jpg\", type: \"image/jpeg\" } }\n ]);\n\n expect(uploader.vm.jobs).toHaveLength(2);\n expect(uploader.vm.completedCount).toBe(2);\n });\n\n it(\"should handle partial failures in batch upload (continue strategy)\", async () => {\n const file1 = createBrowserFile(\"a.jpg\");\n const file2 = createBrowserFile(\"b.jpg\");\n const created1 = createFile({ id: \"batch-ok\", name: \"a.jpg\" });\n\n mockSdk.fileManager.createFiles.mockResolvedValue(\n Result.ok({\n successful: [created1],\n failed: [{ data: { name: \"b.jpg\" }, error: new Error(\"b.jpg failed\") }]\n })\n );\n\n const uploader = container.resolve(Abstraction);\n await uploader.uploadMany(\n [\n { file: file1, data: { name: \"a.jpg\", type: \"image/jpeg\" } },\n { file: file2, data: { name: \"b.jpg\", type: \"image/jpeg\" } }\n ],\n { strategy: \"continue\" }\n );\n\n expect(uploader.vm.completedCount).toBe(1);\n expect(uploader.vm.failedCount).toBe(1);\n // Only the successful file should be in cache.\n expect(cache.count()).toBe(1);\n expect(cache.getItem(f => f.id === \"batch-ok\")).toBeDefined();\n });\n\n // -----------------------------------------------------------------------\n // Abort.\n // -----------------------------------------------------------------------\n\n it(\"should pass AbortController signal to SDK for single upload\", async () => {\n const file = createBrowserFile(\"photo.jpg\");\n const created = createFile({ id: \"abort-1\" });\n mockSdk.fileManager.createFile.mockResolvedValue(Result.ok(created));\n\n const uploader = container.resolve(Abstraction);\n await uploader.upload(file, { name: \"photo.jpg\", type: \"image/jpeg\" });\n\n // Verify signal was passed.\n const callArgs = mockSdk.fileManager.createFile.mock.calls[0][0];\n expect(callArgs.signal).toBeInstanceOf(AbortSignal);\n });\n\n it(\"should pass AbortController signal to SDK for batch upload\", async () => {\n const file = createBrowserFile(\"photo.jpg\");\n const created = createFile({ id: \"abort-batch\" });\n mockSdk.fileManager.createFiles.mockResolvedValue(\n Result.ok({ successful: [created], failed: [] })\n );\n\n const uploader = container.resolve(Abstraction);\n await uploader.uploadMany([{ file, data: { name: \"photo.jpg\", type: \"image/jpeg\" } }]);\n\n const callArgs = mockSdk.fileManager.createFiles.mock.calls[0][0];\n expect(callArgs.signal).toBeInstanceOf(AbortSignal);\n });\n\n // -----------------------------------------------------------------------\n // Clear.\n // -----------------------------------------------------------------------\n\n it(\"should remove completed and failed jobs on clear\", async () => {\n const file1 = createBrowserFile(\"ok.jpg\");\n const file2 = createBrowserFile(\"fail.jpg\");\n\n // First upload succeeds.\n mockSdk.fileManager.createFile.mockResolvedValueOnce(\n Result.ok(createFile({ id: \"ok-1\", name: \"ok.jpg\" }))\n );\n // Second upload fails.\n mockSdk.fileManager.createFile.mockResolvedValueOnce(Result.fail(new Error(\"fail\")));\n\n const uploader = container.resolve(Abstraction);\n await uploader.upload(file1, { name: \"ok.jpg\", type: \"image/jpeg\" });\n await uploader.upload(file2, { name: \"fail.jpg\", type: \"image/jpeg\" });\n\n expect(uploader.vm.jobs).toHaveLength(2);\n expect(uploader.vm.completedCount).toBe(1);\n expect(uploader.vm.failedCount).toBe(1);\n\n uploader.clear();\n\n expect(uploader.vm.jobs).toHaveLength(0);\n });\n\n // -----------------------------------------------------------------------\n // ViewModel computed properties.\n // -----------------------------------------------------------------------\n\n it(\"should compute overall progress from all jobs\", async () => {\n const file1 = createBrowserFile(\"a.jpg\", 1000);\n const file2 = createBrowserFile(\"b.jpg\", 3000);\n const created1 = createFile({ id: \"p-1\", name: \"a.jpg\" });\n const created2 = createFile({ id: \"p-2\", name: \"b.jpg\" });\n\n mockSdk.fileManager.createFile\n .mockResolvedValueOnce(Result.ok(created1))\n .mockResolvedValueOnce(Result.ok(created2));\n\n const uploader = container.resolve(Abstraction);\n await uploader.upload(file1, { name: \"a.jpg\", type: \"image/jpeg\" });\n await uploader.upload(file2, { name: \"b.jpg\", type: \"image/jpeg\" });\n\n // Both completed — overall should be 100%.\n expect(uploader.vm.isUploading).toBe(false);\n expect(uploader.vm.overallProgress.percentage).toBe(100);\n });\n\n it(\"should report isUploading as false when no jobs exist\", () => {\n const uploader = container.resolve(Abstraction);\n expect(uploader.vm.isUploading).toBe(false);\n expect(uploader.vm.jobs).toHaveLength(0);\n expect(uploader.vm.overallProgress.percentage).toBe(0);\n });\n});\n"],"names":["createFile","overrides","createBrowserFile","name","size","content","Uint8Array","File","createMockSdk","vi","createContainer","mockSdk","container","Container","cache","ListCache","WebinySdk","FilesListCache","FileFieldsProvider","FileUploader","describe","beforeEach","result","it","file","created","Result","uploader","Abstraction","expect","callArgs","params","f","Error","file1","file2","created1","created2","AbortSignal"],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { FmFile } from "../shared/types.js";
2
+ export interface UploadFileData {
3
+ name: string;
4
+ type: string;
5
+ tags?: string[];
6
+ location?: {
7
+ folderId: string;
8
+ };
9
+ [key: string]: any;
10
+ }
11
+ export interface UploadJob {
12
+ id: string;
13
+ fileName: string;
14
+ status: "pending" | "uploading" | "completed" | "failed";
15
+ progress: {
16
+ sent: number;
17
+ total: number;
18
+ percentage: number;
19
+ };
20
+ error?: string;
21
+ result?: FmFile;
22
+ }
23
+ export interface FileUploaderViewModel {
24
+ jobs: UploadJob[];
25
+ overallProgress: {
26
+ sent: number;
27
+ total: number;
28
+ percentage: number;
29
+ };
30
+ isUploading: boolean;
31
+ completedCount: number;
32
+ failedCount: number;
33
+ }
34
+ export interface BatchUploadOptions {
35
+ concurrency?: number;
36
+ strategy?: "fail-fast" | "continue";
37
+ }
38
+ export interface IFileUploader {
39
+ vm: FileUploaderViewModel;
40
+ upload(file: File, data: UploadFileData): Promise<void>;
41
+ uploadMany(files: Array<{
42
+ file: File;
43
+ data: UploadFileData;
44
+ }>, options?: BatchUploadOptions): Promise<void>;
45
+ abort(jobId: string): void;
46
+ clear(): void;
47
+ }
48
+ export declare const FileUploader: import("@webiny/di").Abstraction<IFileUploader>;
49
+ export declare namespace FileUploader {
50
+ type Interface = IFileUploader;
51
+ }
@@ -0,0 +1,5 @@
1
+ import { createAbstraction } from "@webiny/feature/admin";
2
+ const FileUploader = createAbstraction("FileUploader");
3
+ export { FileUploader };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/fileUploader/abstractions.js","sources":["../../../src/features/fileUploader/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport type { FmFile } from \"../shared/types.js\";\n\n// Data provided for each file to upload.\nexport interface UploadFileData {\n name: string;\n type: string;\n tags?: string[];\n location?: { folderId: string };\n [key: string]: any;\n}\n\n// Per-file upload job tracked by the FileUploader.\nexport interface UploadJob {\n id: string;\n fileName: string;\n status: \"pending\" | \"uploading\" | \"completed\" | \"failed\";\n progress: { sent: number; total: number; percentage: number };\n error?: string;\n result?: FmFile;\n}\n\n// Computed ViewModel exposed by the FileUploader.\nexport interface FileUploaderViewModel {\n jobs: UploadJob[];\n overallProgress: { sent: number; total: number; percentage: number };\n isUploading: boolean;\n completedCount: number;\n failedCount: number;\n}\n\n// Options for batch uploads.\nexport interface BatchUploadOptions {\n concurrency?: number;\n strategy?: \"fail-fast\" | \"continue\";\n}\n\n// FileUploader interface.\nexport interface IFileUploader {\n vm: FileUploaderViewModel;\n upload(file: File, data: UploadFileData): Promise<void>;\n uploadMany(\n files: Array<{ file: File; data: UploadFileData }>,\n options?: BatchUploadOptions\n ): Promise<void>;\n abort(jobId: string): void;\n clear(): void;\n}\n\nexport const FileUploader = createAbstraction<IFileUploader>(\"FileUploader\");\n\nexport namespace FileUploader {\n export type Interface = IFileUploader;\n}\n"],"names":["FileUploader","createAbstraction"],"mappings":";AAiDO,MAAMA,eAAeC,kBAAiC"}
@@ -0,0 +1,3 @@
1
+ export declare const FileUploaderFeature: import("@webiny/feature/admin").FeatureDefinition<{
2
+ uploader: import("./abstractions.js").IFileUploader;
3
+ }, []>;
@@ -0,0 +1,17 @@
1
+ import { createFeature } from "@webiny/feature/admin";
2
+ import { FileUploader } from "./abstractions.js";
3
+ import { FileUploader as external_FileUploader_js_FileUploader } from "./FileUploader.js";
4
+ const FileUploaderFeature = createFeature({
5
+ name: "FileManager/FileUploader",
6
+ register (container) {
7
+ container.register(external_FileUploader_js_FileUploader).inSingletonScope();
8
+ },
9
+ resolve (container) {
10
+ return {
11
+ uploader: container.resolve(FileUploader)
12
+ };
13
+ }
14
+ });
15
+ export { FileUploaderFeature };
16
+
17
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/fileUploader/feature.js","sources":["../../../src/features/fileUploader/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { FileUploader as Abstraction } from \"./abstractions.js\";\nimport { FileUploader } from \"./FileUploader.js\";\n\nexport const FileUploaderFeature = createFeature({\n name: \"FileManager/FileUploader\",\n register(container) {\n container.register(FileUploader).inSingletonScope();\n },\n resolve(container) {\n return {\n uploader: container.resolve(Abstraction)\n };\n }\n});\n"],"names":["FileUploaderFeature","createFeature","container","FileUploader","Abstraction"],"mappings":";;;AAIO,MAAMA,sBAAsBC,cAAc;IAC7C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,uCAAc,gBAAgB;IACrD;IACA,SAAQD,SAAS;QACb,OAAO;YACH,UAAUA,UAAU,OAAO,CAACE;QAChC;IACJ;AACJ"}
@@ -0,0 +1,3 @@
1
+ export { FileUploaderFeature } from "./feature.js";
2
+ export { FileUploader } from "./abstractions.js";
3
+ export type { IFileUploader, UploadFileData, UploadJob, FileUploaderViewModel, BatchUploadOptions } from "./abstractions.js";
@@ -0,0 +1,2 @@
1
+ export { FileUploaderFeature } from "./feature.js";
2
+ export { FileUploader } from "./abstractions.js";
@@ -0,0 +1,8 @@
1
+ import { FileUrlFormatter } from "./abstractions.js";
2
+ declare class FileUrlFormatterImpl implements FileUrlFormatter.Interface {
3
+ format(url: URL, params?: FileUrlFormatter.Params): void;
4
+ }
5
+ export declare const FmFileUrlFormatter: typeof FileUrlFormatterImpl & {
6
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/admin-ui/index.js").FileUrlFormatter>;
7
+ };
8
+ export {};
@@ -0,0 +1,13 @@
1
+ import { FileUrlFormatter } from "./abstractions.js";
2
+ class FileUrlFormatterImpl {
3
+ format(url, params) {
4
+ if (params?.width !== void 0) url.searchParams.set("width", String(params.width));
5
+ }
6
+ }
7
+ const FmFileUrlFormatter = FileUrlFormatter.createImplementation({
8
+ implementation: FileUrlFormatterImpl,
9
+ dependencies: []
10
+ });
11
+ export { FmFileUrlFormatter };
12
+
13
+ //# sourceMappingURL=FileUrlFormatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/fileUrlFormatter/FileUrlFormatter.js","sources":["../../../src/features/fileUrlFormatter/FileUrlFormatter.ts"],"sourcesContent":["import { FileUrlFormatter } from \"./abstractions.js\";\n\nclass FileUrlFormatterImpl implements FileUrlFormatter.Interface {\n format(url: URL, params?: FileUrlFormatter.Params): void {\n if (params?.width !== undefined) {\n url.searchParams.set(\"width\", String(params.width));\n }\n }\n}\n\nexport const FmFileUrlFormatter = FileUrlFormatter.createImplementation({\n implementation: FileUrlFormatterImpl,\n dependencies: []\n});\n"],"names":["FileUrlFormatterImpl","url","params","undefined","String","FmFileUrlFormatter","FileUrlFormatter"],"mappings":";AAEA,MAAMA;IACF,OAAOC,GAAQ,EAAEC,MAAgC,EAAQ;QACrD,IAAIA,QAAQ,UAAUC,QAClBF,IAAI,YAAY,CAAC,GAAG,CAAC,SAASG,OAAOF,OAAO,KAAK;IAEzD;AACJ;AAEO,MAAMG,qBAAqBC,iBAAiB,oBAAoB,CAAC;IACpE,gBAAgBN;IAChB,cAAc,EAAE;AACpB"}
@@ -0,0 +1 @@
1
+ export { FileUrlFormatter } from "@webiny/app-admin/features/fileUrlFormatter/abstractions.js";
@@ -0,0 +1 @@
1
+ export { FileUrlFormatter } from "@webiny/app-admin/features/fileUrlFormatter/abstractions.js";
@@ -0,0 +1 @@
1
+ export declare const FileUrlFormatterFeature: import("@webiny/feature/admin").FeatureDefinition<any, []>;
@@ -0,0 +1,11 @@
1
+ import { createFeature } from "@webiny/feature/admin";
2
+ import { FmFileUrlFormatter } from "./FileUrlFormatter.js";
3
+ const FileUrlFormatterFeature = createFeature({
4
+ name: "FileManager/FileUrlFormatter",
5
+ register (container) {
6
+ container.register(FmFileUrlFormatter).inSingletonScope();
7
+ }
8
+ });
9
+ export { FileUrlFormatterFeature };
10
+
11
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/fileUrlFormatter/feature.js","sources":["../../../src/features/fileUrlFormatter/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { FmFileUrlFormatter } from \"./FileUrlFormatter.js\";\n\nexport const FileUrlFormatterFeature = createFeature({\n name: \"FileManager/FileUrlFormatter\",\n register(container) {\n container.register(FmFileUrlFormatter).inSingletonScope();\n }\n});\n"],"names":["FileUrlFormatterFeature","createFeature","container","FmFileUrlFormatter"],"mappings":";;AAGO,MAAMA,0BAA0BC,cAAc;IACjD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,oBAAoB,gBAAgB;IAC3D;AACJ"}
@@ -0,0 +1,14 @@
1
+ import { WebinySdk } from "@webiny/app-admin/features/webinySdk/abstractions.js";
2
+ import type { FmFile } from "../shared/types.js";
3
+ import { FileFieldsProvider } from "../shared/abstractions.js";
4
+ import { GetFileGateway as GatewayAbstraction, type GetFileGatewayParams } from "./abstractions.js";
5
+ declare class GetFileGatewayImpl implements GatewayAbstraction.Interface {
6
+ private sdk;
7
+ private fileFieldsProvider;
8
+ constructor(sdk: WebinySdk.Interface, fileFieldsProvider: FileFieldsProvider.Interface);
9
+ execute(params: GetFileGatewayParams): Promise<FmFile>;
10
+ }
11
+ export declare const GetFileGateway: typeof GetFileGatewayImpl & {
12
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetFileGateway>;
13
+ };
14
+ export {};