@webiny/api-file-manager 0.0.0-unstable.e6f0dc8ca7 → 0.0.0-unstable.eb81deee7e

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 (518) hide show
  1. package/FileManagerAppFeature.d.ts +5 -0
  2. package/FileManagerAppFeature.js +21 -0
  3. package/FileManagerAppFeature.js.map +1 -0
  4. package/contants.js +2 -1
  5. package/contants.js.map +1 -1
  6. package/delivery/AssetDelivery/Asset.js +50 -56
  7. package/delivery/AssetDelivery/Asset.js.map +1 -1
  8. package/delivery/AssetDelivery/AssetRequest.d.ts +1 -1
  9. package/delivery/AssetDelivery/AssetRequest.js +20 -19
  10. package/delivery/AssetDelivery/AssetRequest.js.map +1 -1
  11. package/delivery/AssetDelivery/abstractions/AssetReply.js +28 -27
  12. package/delivery/AssetDelivery/abstractions/AssetReply.js.map +1 -1
  13. package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js +4 -5
  14. package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js.map +1 -1
  15. package/delivery/AssetDeliveryRoute.d.ts +24 -0
  16. package/delivery/AssetDeliveryRoute.js +69 -0
  17. package/delivery/AssetDeliveryRoute.js.map +1 -0
  18. package/delivery/index.d.ts +3 -12
  19. package/delivery/index.js +2 -8
  20. package/delivery/setupAssetDelivery.d.ts +1 -2
  21. package/delivery/setupAssetDelivery.js +2 -112
  22. package/delivery/setupAssetDelivery.js.map +1 -1
  23. package/domain/file/abstractions.d.ts +13 -5
  24. package/domain/file/abstractions.js +2 -5
  25. package/domain/file/abstractions.js.map +1 -1
  26. package/domain/file/errors.js +67 -76
  27. package/domain/file/errors.js.map +1 -1
  28. package/domain/file/file.model.d.ts +3 -3
  29. package/domain/file/file.model.js +63 -50
  30. package/domain/file/file.model.js.map +1 -1
  31. package/domain/file/types.js +0 -3
  32. package/domain/identity/Identity.js +9 -8
  33. package/domain/identity/Identity.js.map +1 -1
  34. package/domain/permissionsSchema.js +26 -15
  35. package/domain/permissionsSchema.js.map +1 -1
  36. package/domain/settings/constants.js +2 -1
  37. package/domain/settings/constants.js.map +1 -1
  38. package/domain/settings/errors.js +22 -24
  39. package/domain/settings/errors.js.map +1 -1
  40. package/domain/settings/types.js +0 -3
  41. package/domain/settings/validation.js +19 -28
  42. package/domain/settings/validation.js.map +1 -1
  43. package/exports/api/file-manager/assetDelivery.d.ts +10 -0
  44. package/exports/api/file-manager/assetDelivery.js +8 -0
  45. package/exports/api/file-manager/file.d.ts +2 -1
  46. package/exports/api/file-manager/file.js +2 -3
  47. package/exports/api/file-manager/permissions.js +0 -2
  48. package/exports/api/file-manager/settings.js +0 -2
  49. package/features/FileManagerFeature.js +22 -15
  50. package/features/FileManagerFeature.js.map +1 -1
  51. package/features/assetDelivery/Asset/Asset.d.ts +8 -0
  52. package/features/assetDelivery/Asset/Asset.js +14 -0
  53. package/features/assetDelivery/Asset/Asset.js.map +1 -0
  54. package/features/assetDelivery/Asset/abstractions.d.ts +10 -0
  55. package/features/assetDelivery/Asset/abstractions.js +5 -0
  56. package/features/assetDelivery/Asset/abstractions.js.map +1 -0
  57. package/features/assetDelivery/Asset/index.d.ts +1 -0
  58. package/features/assetDelivery/Asset/index.js +1 -0
  59. package/features/assetDelivery/FilesAssetRequestResolver.d.ts +9 -0
  60. package/features/assetDelivery/FilesAssetRequestResolver.js +29 -0
  61. package/features/assetDelivery/FilesAssetRequestResolver.js.map +1 -0
  62. package/features/assetDelivery/NullAssetOutputStrategy.d.ts +8 -0
  63. package/features/assetDelivery/NullAssetOutputStrategy.js +14 -0
  64. package/features/assetDelivery/NullAssetOutputStrategy.js.map +1 -0
  65. package/features/assetDelivery/NullAssetReply.js +14 -0
  66. package/features/assetDelivery/NullAssetReply.js.map +1 -0
  67. package/features/assetDelivery/NullAssetResolver.d.ts +8 -0
  68. package/features/assetDelivery/NullAssetResolver.js +13 -0
  69. package/features/assetDelivery/NullAssetResolver.js.map +1 -0
  70. package/features/assetDelivery/ObjectKey/ObjectKey.d.ts +8 -0
  71. package/features/assetDelivery/ObjectKey/ObjectKey.js +28 -0
  72. package/features/assetDelivery/ObjectKey/ObjectKey.js.map +1 -0
  73. package/features/assetDelivery/ObjectKey/abstractions.d.ts +12 -0
  74. package/features/assetDelivery/ObjectKey/abstractions.js +5 -0
  75. package/features/assetDelivery/ObjectKey/abstractions.js.map +1 -0
  76. package/features/assetDelivery/ObjectKey/index.d.ts +1 -0
  77. package/features/assetDelivery/ObjectKey/index.js +1 -0
  78. package/features/assetDelivery/StreamAssetReply/StreamAssetReply.d.ts +8 -0
  79. package/features/assetDelivery/StreamAssetReply/StreamAssetReply.js +22 -0
  80. package/features/assetDelivery/StreamAssetReply/StreamAssetReply.js.map +1 -0
  81. package/features/assetDelivery/StreamAssetReply/abstractions.d.ts +11 -0
  82. package/features/assetDelivery/StreamAssetReply/abstractions.js +5 -0
  83. package/features/assetDelivery/StreamAssetReply/abstractions.js.map +1 -0
  84. package/features/assetDelivery/StreamAssetReply/index.d.ts +1 -0
  85. package/features/assetDelivery/StreamAssetReply/index.js +1 -0
  86. package/features/assetDelivery/abstractions/AssetType.d.ts +17 -0
  87. package/features/assetDelivery/abstractions/AssetType.js +5 -0
  88. package/features/assetDelivery/abstractions/AssetType.js.map +1 -0
  89. package/features/assetDelivery/abstractions.d.ts +65 -0
  90. package/features/assetDelivery/abstractions.js +11 -0
  91. package/features/assetDelivery/abstractions.js.map +1 -0
  92. package/features/assetDelivery/assetTypes/image/AssetKeyGenerator.d.ts +12 -0
  93. package/features/assetDelivery/assetTypes/image/AssetKeyGenerator.js +30 -0
  94. package/features/assetDelivery/assetTypes/image/AssetKeyGenerator.js.map +1 -0
  95. package/features/assetDelivery/assetTypes/image/ImageAssetType.d.ts +9 -0
  96. package/features/assetDelivery/assetTypes/image/ImageAssetType.js +18 -0
  97. package/features/assetDelivery/assetTypes/image/ImageAssetType.js.map +1 -0
  98. package/features/assetDelivery/assetTypes/image/ImageAssetTypeHandler.d.ts +5 -0
  99. package/features/assetDelivery/assetTypes/image/ImageAssetTypeHandler.js +5 -0
  100. package/features/assetDelivery/assetTypes/image/ImageAssetTypeHandler.js.map +1 -0
  101. package/features/assetDelivery/assetTypes/image/SharpTransformer.d.ts +18 -0
  102. package/features/assetDelivery/assetTypes/image/SharpTransformer.js +47 -0
  103. package/features/assetDelivery/assetTypes/image/SharpTransformer.js.map +1 -0
  104. package/features/assetDelivery/assetTypes/image/WidthCollection.d.ts +8 -0
  105. package/features/assetDelivery/assetTypes/image/WidthCollection.js +22 -0
  106. package/features/assetDelivery/assetTypes/image/WidthCollection.js.map +1 -0
  107. package/features/assetDelivery/assetTypes/image/imageFormat.d.ts +26 -0
  108. package/features/assetDelivery/assetTypes/image/imageFormat.js +51 -0
  109. package/features/assetDelivery/assetTypes/image/imageFormat.js.map +1 -0
  110. package/features/assetDelivery/assetTypes/image/imageTypes.d.ts +39 -0
  111. package/features/assetDelivery/assetTypes/image/imageTypes.js +0 -0
  112. package/features/assetDelivery/assetTypes/image/index.d.ts +5 -0
  113. package/features/assetDelivery/assetTypes/image/index.js +4 -0
  114. package/features/assetDelivery/assetTypes/image/normalizeImageOptions.d.ts +6 -0
  115. package/features/assetDelivery/assetTypes/image/normalizeImageOptions.js +56 -0
  116. package/features/assetDelivery/assetTypes/image/normalizeImageOptions.js.map +1 -0
  117. package/features/assetDelivery/assetTypes/image/transformImage.d.ts +59 -0
  118. package/features/assetDelivery/assetTypes/image/transformImage.js +146 -0
  119. package/features/assetDelivery/assetTypes/image/transformImage.js.map +1 -0
  120. package/features/assetDelivery/assetTypes/image/utils.d.ts +26 -0
  121. package/features/assetDelivery/assetTypes/image/utils.js +47 -0
  122. package/features/assetDelivery/assetTypes/image/utils.js.map +1 -0
  123. package/features/assetDelivery/feature.d.ts +4 -0
  124. package/features/assetDelivery/feature.js +35 -0
  125. package/features/assetDelivery/feature.js.map +1 -0
  126. package/features/assetDelivery/privateFiles/NotAuthorizedAssetReply.d.ts +4 -0
  127. package/features/assetDelivery/privateFiles/NotAuthorizedAssetReply.js +20 -0
  128. package/features/assetDelivery/privateFiles/NotAuthorizedAssetReply.js.map +1 -0
  129. package/features/assetDelivery/privateFiles/NotAuthorizedOutputStrategy.d.ts +5 -0
  130. package/features/assetDelivery/privateFiles/NotAuthorizedOutputStrategy.js +9 -0
  131. package/features/assetDelivery/privateFiles/NotAuthorizedOutputStrategy.js.map +1 -0
  132. package/features/assetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.d.ts +11 -0
  133. package/features/assetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js +26 -0
  134. package/features/assetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js.map +1 -0
  135. package/features/assetDelivery/privateFiles/PrivateCache.d.ts +8 -0
  136. package/features/assetDelivery/privateFiles/PrivateCache.js +22 -0
  137. package/features/assetDelivery/privateFiles/PrivateCache.js.map +1 -0
  138. package/features/assetDelivery/privateFiles/PrivateFileAssetRequestResolver.d.ts +11 -0
  139. package/features/assetDelivery/privateFiles/PrivateFileAssetRequestResolver.js +31 -0
  140. package/features/assetDelivery/privateFiles/PrivateFileAssetRequestResolver.js.map +1 -0
  141. package/features/assetDelivery/privateFiles/PrivateFilesAssetProcessor.d.ts +19 -0
  142. package/features/assetDelivery/privateFiles/PrivateFilesAssetProcessor.js +65 -0
  143. package/features/assetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +1 -0
  144. package/features/assetDelivery/privateFiles/PublicCache.d.ts +8 -0
  145. package/features/assetDelivery/privateFiles/PublicCache.js +22 -0
  146. package/features/assetDelivery/privateFiles/PublicCache.js.map +1 -0
  147. package/features/assetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.d.ts +9 -0
  148. package/features/assetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js +21 -0
  149. package/features/assetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js.map +1 -0
  150. package/features/assetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.d.ts +9 -0
  151. package/features/assetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js +21 -0
  152. package/features/assetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js.map +1 -0
  153. package/features/assetDelivery/transformation/CallableContentsReader.d.ts +11 -0
  154. package/features/assetDelivery/transformation/CallableContentsReader.js +14 -0
  155. package/features/assetDelivery/transformation/CallableContentsReader.js.map +1 -0
  156. package/features/assetDelivery/transformation/TransformationAssetProcessor.d.ts +9 -0
  157. package/features/assetDelivery/transformation/TransformationAssetProcessor.js +25 -0
  158. package/features/assetDelivery/transformation/TransformationAssetProcessor.js.map +1 -0
  159. package/features/assetDelivery/transformation/index.d.ts +5 -0
  160. package/features/assetDelivery/transformation/index.js +4 -0
  161. package/features/extractMetadata/ExtractMetadataHandler.d.ts +11 -0
  162. package/features/extractMetadata/ExtractMetadataHandler.js +25 -0
  163. package/features/extractMetadata/ExtractMetadataHandler.js.map +1 -0
  164. package/features/extractMetadata/ExtractMetadataInput.d.ts +3 -0
  165. package/features/extractMetadata/ExtractMetadataInput.js +0 -0
  166. package/features/file/CreateFile/CreateFileRepository.d.ts +3 -3
  167. package/features/file/CreateFile/CreateFileRepository.js +22 -19
  168. package/features/file/CreateFile/CreateFileRepository.js.map +1 -1
  169. package/features/file/CreateFile/CreateFileUseCase.js +68 -75
  170. package/features/file/CreateFile/CreateFileUseCase.js.map +1 -1
  171. package/features/file/CreateFile/abstractions.js +3 -14
  172. package/features/file/CreateFile/abstractions.js.map +1 -1
  173. package/features/file/CreateFile/events.js +17 -26
  174. package/features/file/CreateFile/events.js.map +1 -1
  175. package/features/file/CreateFile/feature.js +7 -6
  176. package/features/file/CreateFile/feature.js.map +1 -1
  177. package/features/file/CreateFile/index.js +0 -2
  178. package/features/file/CreateFilesInBatch/CreateFilesInBatchRepository.js +15 -17
  179. package/features/file/CreateFilesInBatch/CreateFilesInBatchRepository.js.map +1 -1
  180. package/features/file/CreateFilesInBatch/CreateFilesInBatchUseCase.js +59 -70
  181. package/features/file/CreateFilesInBatch/CreateFilesInBatchUseCase.js.map +1 -1
  182. package/features/file/CreateFilesInBatch/abstractions.js +3 -14
  183. package/features/file/CreateFilesInBatch/abstractions.js.map +1 -1
  184. package/features/file/CreateFilesInBatch/events.js +17 -26
  185. package/features/file/CreateFilesInBatch/events.js.map +1 -1
  186. package/features/file/CreateFilesInBatch/feature.js +7 -6
  187. package/features/file/CreateFilesInBatch/feature.js.map +1 -1
  188. package/features/file/CreateFilesInBatch/index.js +0 -2
  189. package/features/file/DeleteFile/DeleteFileRepository.d.ts +3 -3
  190. package/features/file/DeleteFile/DeleteFileRepository.js +23 -21
  191. package/features/file/DeleteFile/DeleteFileRepository.js.map +1 -1
  192. package/features/file/DeleteFile/DeleteFileUseCase.js +31 -33
  193. package/features/file/DeleteFile/DeleteFileUseCase.js.map +1 -1
  194. package/features/file/DeleteFile/abstractions.js +3 -14
  195. package/features/file/DeleteFile/abstractions.js.map +1 -1
  196. package/features/file/DeleteFile/events.js +17 -26
  197. package/features/file/DeleteFile/events.js.map +1 -1
  198. package/features/file/DeleteFile/feature.js +7 -6
  199. package/features/file/DeleteFile/feature.js.map +1 -1
  200. package/features/file/DeleteFile/index.js +1 -3
  201. package/features/file/FileModelProvider.d.ts +31 -0
  202. package/features/file/FileModelProvider.js +22 -0
  203. package/features/file/FileModelProvider.js.map +1 -0
  204. package/features/file/FileUrlGenerator/FileUrlGenerator.d.ts +12 -0
  205. package/features/file/FileUrlGenerator/FileUrlGenerator.js +19 -0
  206. package/features/file/FileUrlGenerator/FileUrlGenerator.js.map +1 -0
  207. package/features/file/FileUrlGenerator/SettingsFileUrlPrefixProvider.d.ts +13 -0
  208. package/features/file/FileUrlGenerator/SettingsFileUrlPrefixProvider.js +28 -0
  209. package/features/file/FileUrlGenerator/SettingsFileUrlPrefixProvider.js.map +1 -0
  210. package/features/file/FileUrlGenerator/abstractions.d.ts +15 -4
  211. package/features/file/FileUrlGenerator/abstractions.js +3 -2
  212. package/features/file/FileUrlGenerator/abstractions.js.map +1 -1
  213. package/features/file/FileUrlGenerator/feature.d.ts +4 -0
  214. package/features/file/FileUrlGenerator/feature.js +13 -0
  215. package/features/file/FileUrlGenerator/feature.js.map +1 -0
  216. package/features/file/FileUrlGenerator/index.d.ts +2 -0
  217. package/features/file/FileUrlGenerator/index.js +1 -0
  218. package/features/file/GetFile/GetFileRepository.d.ts +3 -3
  219. package/features/file/GetFile/GetFileRepository.js +24 -23
  220. package/features/file/GetFile/GetFileRepository.js.map +1 -1
  221. package/features/file/GetFile/GetFileUseCase.js +19 -21
  222. package/features/file/GetFile/GetFileUseCase.js.map +1 -1
  223. package/features/file/GetFile/abstractions.js +3 -14
  224. package/features/file/GetFile/abstractions.js.map +1 -1
  225. package/features/file/GetFile/feature.js +7 -6
  226. package/features/file/GetFile/feature.js.map +1 -1
  227. package/features/file/GetFile/index.js +0 -2
  228. package/features/file/GetFileByUrl/GetFileByUrlUseCase.d.ts +15 -0
  229. package/features/file/GetFileByUrl/GetFileByUrlUseCase.js +37 -0
  230. package/features/file/GetFileByUrl/GetFileByUrlUseCase.js.map +1 -0
  231. package/features/file/GetFileByUrl/abstractions.d.ts +18 -0
  232. package/features/file/GetFileByUrl/abstractions.js +5 -0
  233. package/features/file/GetFileByUrl/abstractions.js.map +1 -0
  234. package/features/file/GetFileByUrl/feature.d.ts +4 -0
  235. package/features/file/GetFileByUrl/feature.js +11 -0
  236. package/features/file/GetFileByUrl/feature.js.map +1 -0
  237. package/features/file/GetFileByUrl/index.d.ts +1 -0
  238. package/features/file/GetFileByUrl/index.js +1 -0
  239. package/features/file/GetFileContentsById/abstractions.d.ts +20 -0
  240. package/features/file/GetFileContentsById/abstractions.js +5 -0
  241. package/features/file/GetFileContentsById/abstractions.js.map +1 -0
  242. package/features/file/GetFileContentsById/index.d.ts +1 -0
  243. package/features/file/GetFileContentsById/index.js +1 -0
  244. package/features/file/GetFileContentsByKey/abstractions.d.ts +17 -0
  245. package/features/file/GetFileContentsByKey/abstractions.js +5 -0
  246. package/features/file/GetFileContentsByKey/abstractions.js.map +1 -0
  247. package/features/file/GetFileContentsByKey/index.d.ts +1 -0
  248. package/features/file/GetFileContentsByKey/index.js +1 -0
  249. package/features/file/ListFiles/ListFilesRepository.d.ts +3 -3
  250. package/features/file/ListFiles/ListFilesRepository.js +44 -41
  251. package/features/file/ListFiles/ListFilesRepository.js.map +1 -1
  252. package/features/file/ListFiles/ListFilesUseCase.js +33 -34
  253. package/features/file/ListFiles/ListFilesUseCase.js.map +1 -1
  254. package/features/file/ListFiles/abstractions.js +3 -14
  255. package/features/file/ListFiles/abstractions.js.map +1 -1
  256. package/features/file/ListFiles/feature.js +7 -6
  257. package/features/file/ListFiles/feature.js.map +1 -1
  258. package/features/file/ListFiles/index.js +0 -2
  259. package/features/file/ListImagesByTagTool/ListImagesByTagTool.d.ts +15 -5
  260. package/features/file/ListImagesByTagTool/ListImagesByTagTool.js +46 -29
  261. package/features/file/ListImagesByTagTool/ListImagesByTagTool.js.map +1 -1
  262. package/features/file/ListImagesByTagTool/feature.js +6 -5
  263. package/features/file/ListImagesByTagTool/feature.js.map +1 -1
  264. package/features/file/ListTags/ListTagsRepository.d.ts +3 -3
  265. package/features/file/ListTags/ListTagsRepository.js +33 -37
  266. package/features/file/ListTags/ListTagsRepository.js.map +1 -1
  267. package/features/file/ListTags/ListTagsUseCase.js +21 -21
  268. package/features/file/ListTags/ListTagsUseCase.js.map +1 -1
  269. package/features/file/ListTags/abstractions.js +3 -14
  270. package/features/file/ListTags/abstractions.js.map +1 -1
  271. package/features/file/ListTags/feature.js +7 -6
  272. package/features/file/ListTags/feature.js.map +1 -1
  273. package/features/file/ListTags/index.js +0 -2
  274. package/features/file/UpdateFile/UpdateFileRepository.d.ts +3 -3
  275. package/features/file/UpdateFile/UpdateFileRepository.js +28 -29
  276. package/features/file/UpdateFile/UpdateFileRepository.js.map +1 -1
  277. package/features/file/UpdateFile/UpdateFileUseCase.js +57 -65
  278. package/features/file/UpdateFile/UpdateFileUseCase.js.map +1 -1
  279. package/features/file/UpdateFile/abstractions.js +3 -14
  280. package/features/file/UpdateFile/abstractions.js.map +1 -1
  281. package/features/file/UpdateFile/events.js +17 -26
  282. package/features/file/UpdateFile/events.js.map +1 -1
  283. package/features/file/UpdateFile/feature.js +7 -6
  284. package/features/file/UpdateFile/feature.js.map +1 -1
  285. package/features/file/UpdateFile/index.js +1 -3
  286. package/features/file/shared/EntryToFileMapper.js +25 -24
  287. package/features/file/shared/EntryToFileMapper.js.map +1 -1
  288. package/features/file/shared/FileInputToEntryInputMapper.js +29 -28
  289. package/features/file/shared/FileInputToEntryInputMapper.js.map +1 -1
  290. package/features/file/shared/FileToEntryMapper.js +28 -27
  291. package/features/file/shared/FileToEntryMapper.js.map +1 -1
  292. package/features/permissions/abstractions.js +2 -1
  293. package/features/permissions/abstractions.js.map +1 -1
  294. package/features/permissions/feature.js +2 -1
  295. package/features/permissions/feature.js.map +1 -1
  296. package/features/settings/GetSettings/GetSettingsUseCase.js +19 -19
  297. package/features/settings/GetSettings/GetSettingsUseCase.js.map +1 -1
  298. package/features/settings/GetSettings/abstractions.js +2 -7
  299. package/features/settings/GetSettings/abstractions.js.map +1 -1
  300. package/features/settings/GetSettings/feature.js +6 -5
  301. package/features/settings/GetSettings/feature.js.map +1 -1
  302. package/features/settings/SettingsInstaller/SettingsInstaller.d.ts +3 -1
  303. package/features/settings/SettingsInstaller/SettingsInstaller.js +29 -25
  304. package/features/settings/SettingsInstaller/SettingsInstaller.js.map +1 -1
  305. package/features/settings/SettingsInstaller/feature.js +6 -5
  306. package/features/settings/SettingsInstaller/feature.js.map +1 -1
  307. package/features/settings/UpdateSettings/UpdateSettingsUseCase.js +41 -48
  308. package/features/settings/UpdateSettings/UpdateSettingsUseCase.js.map +1 -1
  309. package/features/settings/UpdateSettings/abstractions.js +2 -7
  310. package/features/settings/UpdateSettings/abstractions.js.map +1 -1
  311. package/features/settings/UpdateSettings/events.js +17 -26
  312. package/features/settings/UpdateSettings/events.js.map +1 -1
  313. package/features/settings/UpdateSettings/feature.js +6 -5
  314. package/features/settings/UpdateSettings/feature.js.map +1 -1
  315. package/features/settings/UpdateSettings/index.js +0 -2
  316. package/features/shared/abstractions.js +0 -2
  317. package/features/upload/CompleteMultiPartUpload/abstractions.d.ts +12 -0
  318. package/features/upload/CompleteMultiPartUpload/abstractions.js +5 -0
  319. package/features/upload/CompleteMultiPartUpload/abstractions.js.map +1 -0
  320. package/features/upload/CompleteMultiPartUpload/index.d.ts +1 -0
  321. package/features/upload/CompleteMultiPartUpload/index.js +1 -0
  322. package/features/upload/CreateMultiPartUpload/abstractions.d.ts +14 -0
  323. package/features/upload/CreateMultiPartUpload/abstractions.js +5 -0
  324. package/features/upload/CreateMultiPartUpload/abstractions.js.map +1 -0
  325. package/features/upload/CreateMultiPartUpload/index.d.ts +1 -0
  326. package/features/upload/CreateMultiPartUpload/index.js +1 -0
  327. package/features/upload/GetUploadPayload/abstractions.d.ts +10 -0
  328. package/features/upload/GetUploadPayload/abstractions.js +5 -0
  329. package/features/upload/GetUploadPayload/abstractions.js.map +1 -0
  330. package/features/upload/GetUploadPayload/index.d.ts +1 -0
  331. package/features/upload/GetUploadPayload/index.js +1 -0
  332. package/features/upload/ReadFileMetadata/MetadataReader.d.ts +11 -0
  333. package/features/upload/ReadFileMetadata/MetadataReader.js +21 -0
  334. package/features/upload/ReadFileMetadata/MetadataReader.js.map +1 -0
  335. package/features/upload/ReadFileMetadata/abstractions.d.ts +15 -0
  336. package/features/upload/ReadFileMetadata/abstractions.js +5 -0
  337. package/features/upload/ReadFileMetadata/abstractions.js.map +1 -0
  338. package/features/upload/ReadFileMetadata/feature.d.ts +4 -0
  339. package/features/upload/ReadFileMetadata/feature.js +11 -0
  340. package/features/upload/ReadFileMetadata/feature.js.map +1 -0
  341. package/features/upload/ReadFileMetadata/index.d.ts +1 -0
  342. package/features/upload/ReadFileMetadata/index.js +1 -0
  343. package/features/upload/WriteFileMetadata/MetadataWriter.d.ts +14 -0
  344. package/features/upload/WriteFileMetadata/MetadataWriter.js +36 -0
  345. package/features/upload/WriteFileMetadata/MetadataWriter.js.map +1 -0
  346. package/features/upload/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.d.ts +11 -0
  347. package/features/upload/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.js +20 -0
  348. package/features/upload/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.js.map +1 -0
  349. package/features/upload/WriteFileMetadata/WriteMetadataAfterCreateHandler.d.ts +11 -0
  350. package/features/upload/WriteFileMetadata/WriteMetadataAfterCreateHandler.js +22 -0
  351. package/features/upload/WriteFileMetadata/WriteMetadataAfterCreateHandler.js.map +1 -0
  352. package/features/upload/WriteFileMetadata/WriteMetadataAfterUpdateHandler.d.ts +11 -0
  353. package/features/upload/WriteFileMetadata/WriteMetadataAfterUpdateHandler.js +22 -0
  354. package/features/upload/WriteFileMetadata/WriteMetadataAfterUpdateHandler.js.map +1 -0
  355. package/features/upload/WriteFileMetadata/abstractions.d.ts +9 -0
  356. package/features/upload/WriteFileMetadata/abstractions.js +5 -0
  357. package/features/upload/WriteFileMetadata/abstractions.js.map +1 -0
  358. package/features/upload/WriteFileMetadata/feature.d.ts +4 -0
  359. package/features/upload/WriteFileMetadata/feature.js +17 -0
  360. package/features/upload/WriteFileMetadata/feature.js.map +1 -0
  361. package/features/upload/index.d.ts +17 -0
  362. package/features/upload/index.js +10 -0
  363. package/features/upload/types.d.ts +28 -0
  364. package/features/upload/types.js +0 -0
  365. package/features/upload/utils/FileExtension.d.ts +6 -0
  366. package/features/upload/utils/FileExtension.js +16 -0
  367. package/features/upload/utils/FileExtension.js.map +1 -0
  368. package/features/upload/utils/FileKey.d.ts +11 -0
  369. package/features/upload/utils/FileKey.js +33 -0
  370. package/features/upload/utils/FileKey.js.map +1 -0
  371. package/features/upload/utils/FileNormalizer.d.ts +13 -0
  372. package/features/upload/utils/FileNormalizer.js +41 -0
  373. package/features/upload/utils/FileNormalizer.js.map +1 -0
  374. package/features/upload/utils/FileUploadModifier.d.ts +30 -0
  375. package/features/upload/utils/FileUploadModifier.js +39 -0
  376. package/features/upload/utils/FileUploadModifier.js.map +1 -0
  377. package/features/upload/utils/checkPermissions.d.ts +5 -0
  378. package/features/upload/utils/checkPermissions.js +22 -0
  379. package/features/upload/utils/checkPermissions.js.map +1 -0
  380. package/features/upload/utils/createFileNormalizerFromContext.d.ts +3 -0
  381. package/features/upload/utils/createFileNormalizerFromContext.js +9 -0
  382. package/features/upload/utils/createFileNormalizerFromContext.js.map +1 -0
  383. package/features/upload/utils/mimeTypes.d.ts +1 -0
  384. package/features/upload/utils/mimeTypes.js +9 -0
  385. package/features/upload/utils/mimeTypes.js.map +1 -0
  386. package/graphql/FmGraphQLSchema.d.ts +24 -0
  387. package/graphql/FmGraphQLSchema.js +458 -0
  388. package/graphql/FmGraphQLSchema.js.map +1 -0
  389. package/index.d.ts +3 -6
  390. package/index.js +11 -33
  391. package/index.js.map +1 -1
  392. package/package.json +28 -21
  393. package/types.d.ts +1 -1
  394. package/types.js +1 -3
  395. package/delivery/AssetDelivery/AssetDeliveryConfig.d.ts +0 -65
  396. package/delivery/AssetDelivery/AssetDeliveryConfig.js +0 -94
  397. package/delivery/AssetDelivery/AssetDeliveryConfig.js.map +0 -1
  398. package/delivery/AssetDelivery/FilesAssetRequestResolver.d.ts +0 -6
  399. package/delivery/AssetDelivery/FilesAssetRequestResolver.js +0 -30
  400. package/delivery/AssetDelivery/FilesAssetRequestResolver.js.map +0 -1
  401. package/delivery/AssetDelivery/NullAssetOutputStrategy.d.ts +0 -4
  402. package/delivery/AssetDelivery/NullAssetOutputStrategy.js +0 -8
  403. package/delivery/AssetDelivery/NullAssetOutputStrategy.js.map +0 -1
  404. package/delivery/AssetDelivery/NullAssetReply.js +0 -13
  405. package/delivery/AssetDelivery/NullAssetReply.js.map +0 -1
  406. package/delivery/AssetDelivery/NullAssetResolver.d.ts +0 -5
  407. package/delivery/AssetDelivery/NullAssetResolver.js +0 -7
  408. package/delivery/AssetDelivery/NullAssetResolver.js.map +0 -1
  409. package/delivery/AssetDelivery/NullRequestResolver.d.ts +0 -4
  410. package/delivery/AssetDelivery/NullRequestResolver.js +0 -7
  411. package/delivery/AssetDelivery/NullRequestResolver.js.map +0 -1
  412. package/delivery/AssetDelivery/SetCacheControlHeaders.d.ts +0 -8
  413. package/delivery/AssetDelivery/SetCacheControlHeaders.js +0 -18
  414. package/delivery/AssetDelivery/SetCacheControlHeaders.js.map +0 -1
  415. package/delivery/AssetDelivery/SetResponseHeaders.d.ts +0 -18
  416. package/delivery/AssetDelivery/SetResponseHeaders.js +0 -18
  417. package/delivery/AssetDelivery/SetResponseHeaders.js.map +0 -1
  418. package/delivery/AssetDelivery/abstractions/AssetContentsReader.d.ts +0 -4
  419. package/delivery/AssetDelivery/abstractions/AssetContentsReader.js +0 -3
  420. package/delivery/AssetDelivery/abstractions/AssetContentsReader.js.map +0 -1
  421. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.d.ts +0 -4
  422. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js +0 -3
  423. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js.map +0 -1
  424. package/delivery/AssetDelivery/abstractions/AssetProcessor.d.ts +0 -4
  425. package/delivery/AssetDelivery/abstractions/AssetProcessor.js +0 -3
  426. package/delivery/AssetDelivery/abstractions/AssetProcessor.js.map +0 -1
  427. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.d.ts +0 -5
  428. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js +0 -3
  429. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js.map +0 -1
  430. package/delivery/AssetDelivery/abstractions/AssetResolver.d.ts +0 -4
  431. package/delivery/AssetDelivery/abstractions/AssetResolver.js +0 -3
  432. package/delivery/AssetDelivery/abstractions/AssetResolver.js.map +0 -1
  433. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.d.ts +0 -4
  434. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js +0 -3
  435. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js.map +0 -1
  436. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.d.ts +0 -4
  437. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js +0 -3
  438. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js.map +0 -1
  439. package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.d.ts +0 -4
  440. package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js +0 -19
  441. package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js.map +0 -1
  442. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.d.ts +0 -4
  443. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js +0 -8
  444. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js.map +0 -1
  445. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.d.ts +0 -8
  446. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js +0 -20
  447. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js.map +0 -1
  448. package/delivery/AssetDelivery/privateFiles/PrivateCache.d.ts +0 -6
  449. package/delivery/AssetDelivery/privateFiles/PrivateCache.js +0 -21
  450. package/delivery/AssetDelivery/privateFiles/PrivateCache.js.map +0 -1
  451. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.d.ts +0 -8
  452. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js +0 -30
  453. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js.map +0 -1
  454. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.d.ts +0 -13
  455. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js +0 -63
  456. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +0 -1
  457. package/delivery/AssetDelivery/privateFiles/PublicCache.d.ts +0 -6
  458. package/delivery/AssetDelivery/privateFiles/PublicCache.js +0 -21
  459. package/delivery/AssetDelivery/privateFiles/PublicCache.js.map +0 -1
  460. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.d.ts +0 -7
  461. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js +0 -20
  462. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js.map +0 -1
  463. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.d.ts +0 -7
  464. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js +0 -20
  465. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js.map +0 -1
  466. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.d.ts +0 -4
  467. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js +0 -7
  468. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js.map +0 -1
  469. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.d.ts +0 -4
  470. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js +0 -7
  471. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js.map +0 -1
  472. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.d.ts +0 -6
  473. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js +0 -19
  474. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js.map +0 -1
  475. package/delivery/index.js.map +0 -1
  476. package/domain/file/types.js.map +0 -1
  477. package/domain/settings/types.js.map +0 -1
  478. package/exports/api/file-manager/file.js.map +0 -1
  479. package/exports/api/file-manager/permissions.js.map +0 -1
  480. package/exports/api/file-manager/settings.js.map +0 -1
  481. package/features/file/CreateFile/index.js.map +0 -1
  482. package/features/file/CreateFilesInBatch/index.js.map +0 -1
  483. package/features/file/DeleteFile/index.js.map +0 -1
  484. package/features/file/GetFile/index.js.map +0 -1
  485. package/features/file/GetFileContents/abstractions.d.ts +0 -20
  486. package/features/file/GetFileContents/abstractions.js +0 -4
  487. package/features/file/GetFileContents/abstractions.js.map +0 -1
  488. package/features/file/GetFileContents/index.d.ts +0 -1
  489. package/features/file/GetFileContents/index.js +0 -3
  490. package/features/file/GetFileContents/index.js.map +0 -1
  491. package/features/file/ListFiles/index.js.map +0 -1
  492. package/features/file/ListTags/index.js.map +0 -1
  493. package/features/file/UpdateFile/index.js.map +0 -1
  494. package/features/settings/UpdateSettings/index.js.map +0 -1
  495. package/features/shared/abstractions.js.map +0 -1
  496. package/graphql/baseSchema.d.ts +0 -3
  497. package/graphql/baseSchema.js +0 -103
  498. package/graphql/baseSchema.js.map +0 -1
  499. package/graphql/createFilesTypeDefs.d.ts +0 -8
  500. package/graphql/createFilesTypeDefs.js +0 -199
  501. package/graphql/createFilesTypeDefs.js.map +0 -1
  502. package/graphql/filesSchema.d.ts +0 -4
  503. package/graphql/filesSchema.js +0 -116
  504. package/graphql/filesSchema.js.map +0 -1
  505. package/graphql/getFileByUrl.d.ts +0 -3
  506. package/graphql/getFileByUrl.js +0 -69
  507. package/graphql/getFileByUrl.js.map +0 -1
  508. package/graphql/index.d.ts +0 -4
  509. package/graphql/index.js +0 -54
  510. package/graphql/index.js.map +0 -1
  511. package/graphql/utils.d.ts +0 -11
  512. package/graphql/utils.js +0 -17
  513. package/graphql/utils.js.map +0 -1
  514. package/modelModifier/CmsModelModifier.d.ts +0 -26
  515. package/modelModifier/CmsModelModifier.js +0 -54
  516. package/modelModifier/CmsModelModifier.js.map +0 -1
  517. package/types.js.map +0 -1
  518. /package/{delivery/AssetDelivery → features/assetDelivery}/NullAssetReply.d.ts +0 -0
@@ -1,45 +1,43 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { DeleteFileUseCase as UseCaseAbstraction, DeleteFileRepository } from "./abstractions.js";
2
+ import { DeleteFileRepository, DeleteFileUseCase } from "./abstractions.js";
3
3
  import { GetFileUseCase } from "../GetFile/abstractions.js";
4
4
  import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
5
5
  import { FileNotAuthorizedError } from "../../../domain/file/errors.js";
6
- import { FileBeforeDeleteEvent, FileAfterDeleteEvent } from "./events.js";
6
+ import { FileAfterDeleteEvent, FileBeforeDeleteEvent } from "./events.js";
7
7
  import { FmPermissions } from "../../shared/abstractions.js";
8
8
  class DeleteFileUseCaseImpl {
9
- constructor(permissions, getFile, repository, eventPublisher) {
10
- this.permissions = permissions;
11
- this.getFile = getFile;
12
- this.repository = repository;
13
- this.eventPublisher = eventPublisher;
14
- }
15
- async execute(id) {
16
- const hasPermission = await this.permissions.canDelete("file");
17
- if (!hasPermission) {
18
- return Result.fail(new FileNotAuthorizedError());
9
+ constructor(permissions, getFile, repository, eventPublisher){
10
+ this.permissions = permissions;
11
+ this.getFile = getFile;
12
+ this.repository = repository;
13
+ this.eventPublisher = eventPublisher;
19
14
  }
20
-
21
- // Get file (includes ownership check)
22
- const getResult = await this.getFile.execute(id);
23
- if (getResult.isFail()) {
24
- return Result.fail(getResult.error);
25
- }
26
- const file = getResult.value;
27
- await this.eventPublisher.publish(new FileBeforeDeleteEvent({
28
- file
29
- }));
30
- const result = await this.repository.delete(file);
31
- if (result.isFail()) {
32
- return Result.fail(result.error);
15
+ async execute(id) {
16
+ const hasPermission = await this.permissions.canDelete("file");
17
+ if (!hasPermission) return Result.fail(new FileNotAuthorizedError());
18
+ const getResult = await this.getFile.execute(id);
19
+ if (getResult.isFail()) return Result.fail(getResult.error);
20
+ const file = getResult.value;
21
+ await this.eventPublisher.publish(new FileBeforeDeleteEvent({
22
+ file
23
+ }));
24
+ const result = await this.repository.delete(file);
25
+ if (result.isFail()) return Result.fail(result.error);
26
+ await this.eventPublisher.publish(new FileAfterDeleteEvent({
27
+ file
28
+ }));
29
+ return Result.ok();
33
30
  }
34
- await this.eventPublisher.publish(new FileAfterDeleteEvent({
35
- file
36
- }));
37
- return Result.ok();
38
- }
39
31
  }
40
- export const DeleteFileUseCase = UseCaseAbstraction.createImplementation({
41
- implementation: DeleteFileUseCaseImpl,
42
- dependencies: [FmPermissions, GetFileUseCase, DeleteFileRepository, EventPublisher]
32
+ const DeleteFileUseCase_DeleteFileUseCase = DeleteFileUseCase.createImplementation({
33
+ implementation: DeleteFileUseCaseImpl,
34
+ dependencies: [
35
+ FmPermissions,
36
+ GetFileUseCase,
37
+ DeleteFileRepository,
38
+ EventPublisher
39
+ ]
43
40
  });
41
+ export { DeleteFileUseCase_DeleteFileUseCase as DeleteFileUseCase };
44
42
 
45
43
  //# sourceMappingURL=DeleteFileUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","DeleteFileUseCase","UseCaseAbstraction","DeleteFileRepository","GetFileUseCase","EventPublisher","FileNotAuthorizedError","FileBeforeDeleteEvent","FileAfterDeleteEvent","FmPermissions","DeleteFileUseCaseImpl","constructor","permissions","getFile","repository","eventPublisher","execute","id","hasPermission","canDelete","fail","getResult","isFail","error","file","value","publish","result","delete","ok","createImplementation","implementation","dependencies"],"sources":["DeleteFileUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { DeleteFileUseCase as UseCaseAbstraction, DeleteFileRepository } from \"./abstractions.js\";\nimport { GetFileUseCase } from \"../GetFile/abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { FileNotAuthorizedError } from \"~/domain/file/errors.js\";\nimport { FileBeforeDeleteEvent, FileAfterDeleteEvent } from \"./events.js\";\nimport { FmPermissions } from \"~/features/shared/abstractions.js\";\n\nclass DeleteFileUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: FmPermissions.Interface,\n private getFile: GetFileUseCase.Interface,\n private repository: DeleteFileRepository.Interface,\n private eventPublisher: EventPublisher.Interface\n ) {}\n\n async execute(id: string): Promise<Result<void, UseCaseAbstraction.Error>> {\n const hasPermission = await this.permissions.canDelete(\"file\");\n if (!hasPermission) {\n return Result.fail(new FileNotAuthorizedError());\n }\n\n // Get file (includes ownership check)\n const getResult = await this.getFile.execute(id);\n if (getResult.isFail()) {\n return Result.fail(getResult.error);\n }\n\n const file = getResult.value;\n\n await this.eventPublisher.publish(new FileBeforeDeleteEvent({ file }));\n\n const result = await this.repository.delete(file);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n await this.eventPublisher.publish(new FileAfterDeleteEvent({ file }));\n\n return Result.ok();\n }\n}\n\nexport const DeleteFileUseCase = UseCaseAbstraction.createImplementation({\n implementation: DeleteFileUseCaseImpl,\n dependencies: [FmPermissions, GetFileUseCase, DeleteFileRepository, EventPublisher]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,iBAAiB,IAAIC,kBAAkB,EAAEC,oBAAoB;AACtE,SAASC,cAAc;AACvB,SAASC,cAAc,QAAQ,mDAAmD;AAClF,SAASC,sBAAsB;AAC/B,SAASC,qBAAqB,EAAEC,oBAAoB;AACpD,SAASC,aAAa;AAEtB,MAAMC,qBAAqB,CAAyC;EAChEC,WAAWA,CACCC,WAAoC,EACpCC,OAAiC,EACjCC,UAA0C,EAC1CC,cAAwC,EAClD;IAAA,KAJUH,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,OAAiC,GAAjCA,OAAiC;IAAA,KACjCC,UAA0C,GAA1CA,UAA0C;IAAA,KAC1CC,cAAwC,GAAxCA,cAAwC;EACjD;EAEH,MAAMC,OAAOA,CAACC,EAAU,EAAmD;IACvE,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACN,WAAW,CAACO,SAAS,CAAC,MAAM,CAAC;IAC9D,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOlB,MAAM,CAACoB,IAAI,CAAC,IAAId,sBAAsB,CAAC,CAAC,CAAC;IACpD;;IAEA;IACA,MAAMe,SAAS,GAAG,MAAM,IAAI,CAACR,OAAO,CAACG,OAAO,CAACC,EAAE,CAAC;IAChD,IAAII,SAAS,CAACC,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOtB,MAAM,CAACoB,IAAI,CAACC,SAAS,CAACE,KAAK,CAAC;IACvC;IAEA,MAAMC,IAAI,GAAGH,SAAS,CAACI,KAAK;IAE5B,MAAM,IAAI,CAACV,cAAc,CAACW,OAAO,CAAC,IAAInB,qBAAqB,CAAC;MAAEiB;IAAK,CAAC,CAAC,CAAC;IAEtE,MAAMG,MAAM,GAAG,MAAM,IAAI,CAACb,UAAU,CAACc,MAAM,CAACJ,IAAI,CAAC;IAEjD,IAAIG,MAAM,CAACL,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOtB,MAAM,CAACoB,IAAI,CAACO,MAAM,CAACJ,KAAK,CAAC;IACpC;IAEA,MAAM,IAAI,CAACR,cAAc,CAACW,OAAO,CAAC,IAAIlB,oBAAoB,CAAC;MAAEgB;IAAK,CAAC,CAAC,CAAC;IAErE,OAAOxB,MAAM,CAAC6B,EAAE,CAAC,CAAC;EACtB;AACJ;AAEA,OAAO,MAAM5B,iBAAiB,GAAGC,kBAAkB,CAAC4B,oBAAoB,CAAC;EACrEC,cAAc,EAAErB,qBAAqB;EACrCsB,YAAY,EAAE,CAACvB,aAAa,EAAEL,cAAc,EAAED,oBAAoB,EAAEE,cAAc;AACtF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/file/DeleteFile/DeleteFileUseCase.js","sources":["../../../../src/features/file/DeleteFile/DeleteFileUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { DeleteFileUseCase as UseCaseAbstraction, DeleteFileRepository } from \"./abstractions.js\";\nimport { GetFileUseCase } from \"../GetFile/abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { FileNotAuthorizedError } from \"~/domain/file/errors.js\";\nimport { FileBeforeDeleteEvent, FileAfterDeleteEvent } from \"./events.js\";\nimport { FmPermissions } from \"~/features/shared/abstractions.js\";\n\nclass DeleteFileUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: FmPermissions.Interface,\n private getFile: GetFileUseCase.Interface,\n private repository: DeleteFileRepository.Interface,\n private eventPublisher: EventPublisher.Interface\n ) {}\n\n async execute(id: string): Promise<Result<void, UseCaseAbstraction.Error>> {\n const hasPermission = await this.permissions.canDelete(\"file\");\n if (!hasPermission) {\n return Result.fail(new FileNotAuthorizedError());\n }\n\n // Get file (includes ownership check)\n const getResult = await this.getFile.execute(id);\n if (getResult.isFail()) {\n return Result.fail(getResult.error);\n }\n\n const file = getResult.value;\n\n await this.eventPublisher.publish(new FileBeforeDeleteEvent({ file }));\n\n const result = await this.repository.delete(file);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n await this.eventPublisher.publish(new FileAfterDeleteEvent({ file }));\n\n return Result.ok();\n }\n}\n\nexport const DeleteFileUseCase = UseCaseAbstraction.createImplementation({\n implementation: DeleteFileUseCaseImpl,\n dependencies: [FmPermissions, GetFileUseCase, DeleteFileRepository, EventPublisher]\n});\n"],"names":["DeleteFileUseCaseImpl","permissions","getFile","repository","eventPublisher","id","hasPermission","Result","FileNotAuthorizedError","getResult","file","FileBeforeDeleteEvent","result","FileAfterDeleteEvent","DeleteFileUseCase","UseCaseAbstraction","FmPermissions","GetFileUseCase","DeleteFileRepository","EventPublisher"],"mappings":";;;;;;;AAQA,MAAMA;IACF,YACYC,WAAoC,EACpCC,OAAiC,EACjCC,UAA0C,EAC1CC,cAAwC,CAClD;aAJUH,WAAW,GAAXA;aACAC,OAAO,GAAPA;aACAC,UAAU,GAAVA;aACAC,cAAc,GAAdA;IACT;IAEH,MAAM,QAAQC,EAAU,EAAmD;QACvE,MAAMC,gBAAgB,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QACvD,IAAI,CAACA,eACD,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAI3B,MAAMC,YAAY,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAACJ;QAC7C,IAAII,UAAU,MAAM,IAChB,OAAOF,OAAO,IAAI,CAACE,UAAU,KAAK;QAGtC,MAAMC,OAAOD,UAAU,KAAK;QAE5B,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAIE,sBAAsB;YAAED;QAAK;QAEnE,MAAME,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAACF;QAE5C,IAAIE,OAAO,MAAM,IACb,OAAOL,OAAO,IAAI,CAACK,OAAO,KAAK;QAGnC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAIC,qBAAqB;YAAEH;QAAK;QAElE,OAAOH,OAAO,EAAE;IACpB;AACJ;AAEO,MAAMO,sCAAoBC,kBAAAA,oBAAuC,CAAC;IACrE,gBAAgBf;IAChB,cAAc;QAACgB;QAAeC;QAAgBC;QAAsBC;KAAe;AACvF"}
@@ -1,17 +1,6 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
-
3
- /**
4
- * DeleteFile repository interface
5
- */
6
-
7
- /** Persist file deletion. */
8
- export const DeleteFileRepository = createAbstraction("DeleteFileRepository");
9
-
10
- /**
11
- * DeleteFile use case interface
12
- */
13
-
14
- /** Delete a file. */
15
- export const DeleteFileUseCase = createAbstraction("DeleteFileUseCase");
2
+ const DeleteFileRepository = createAbstraction("DeleteFileRepository");
3
+ const DeleteFileUseCase = createAbstraction("DeleteFileUseCase");
4
+ export { DeleteFileRepository, DeleteFileUseCase };
16
5
 
17
6
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DeleteFileRepository","DeleteFileUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport {\n type FilePersistenceError,\n type FileNotFoundError,\n FileNotAuthorizedError\n} from \"~/domain/file/errors.js\";\nimport { File } from \"~/domain/file/types.js\";\n\n/**\n * DeleteFile repository interface\n */\nexport interface IDeleteFileRepository {\n delete(file: File): Promise<Result<void, RepositoryError>>;\n}\n\nexport interface IDeleteFileRepositoryErrors {\n notFound: FileNotFoundError;\n persistence: FilePersistenceError;\n}\n\ntype RepositoryError = IDeleteFileRepositoryErrors[keyof IDeleteFileRepositoryErrors];\n\n/** Persist file deletion. */\nexport const DeleteFileRepository =\n createAbstraction<IDeleteFileRepository>(\"DeleteFileRepository\");\n\nexport namespace DeleteFileRepository {\n export type Interface = IDeleteFileRepository;\n export type Error = RepositoryError;\n}\n\n/**\n * DeleteFile use case interface\n */\nexport interface IDeleteFileUseCase {\n execute(id: string): Promise<Result<void, UseCaseError>>;\n}\n\nexport interface IDeleteFileUseCaseErrors {\n notAuthorized: FileNotAuthorizedError;\n notFound: FileNotFoundError;\n persistence: FilePersistenceError;\n}\n\ntype UseCaseError = IDeleteFileUseCaseErrors[keyof IDeleteFileUseCaseErrors];\n\n/** Delete a file. */\nexport const DeleteFileUseCase = createAbstraction<IDeleteFileUseCase>(\"DeleteFileUseCase\");\n\nexport namespace DeleteFileUseCase {\n export type Interface = IDeleteFileUseCase;\n export type Error = UseCaseError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AASvD;AACA;AACA;;AAYA;AACA,OAAO,MAAMC,oBAAoB,GAC7BD,iBAAiB,CAAwB,sBAAsB,CAAC;;AAOpE;AACA;AACA;;AAaA;AACA,OAAO,MAAME,iBAAiB,GAAGF,iBAAiB,CAAqB,mBAAmB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/file/DeleteFile/abstractions.js","sources":["../../../../src/features/file/DeleteFile/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport {\n type FilePersistenceError,\n type FileNotFoundError,\n FileNotAuthorizedError\n} from \"~/domain/file/errors.js\";\nimport { File } from \"~/domain/file/types.js\";\n\n/**\n * DeleteFile repository interface\n */\nexport interface IDeleteFileRepository {\n delete(file: File): Promise<Result<void, RepositoryError>>;\n}\n\nexport interface IDeleteFileRepositoryErrors {\n notFound: FileNotFoundError;\n persistence: FilePersistenceError;\n}\n\ntype RepositoryError = IDeleteFileRepositoryErrors[keyof IDeleteFileRepositoryErrors];\n\n/** Persist file deletion. */\nexport const DeleteFileRepository =\n createAbstraction<IDeleteFileRepository>(\"DeleteFileRepository\");\n\nexport namespace DeleteFileRepository {\n export type Interface = IDeleteFileRepository;\n export type Error = RepositoryError;\n}\n\n/**\n * DeleteFile use case interface\n */\nexport interface IDeleteFileUseCase {\n execute(id: string): Promise<Result<void, UseCaseError>>;\n}\n\nexport interface IDeleteFileUseCaseErrors {\n notAuthorized: FileNotAuthorizedError;\n notFound: FileNotFoundError;\n persistence: FilePersistenceError;\n}\n\ntype UseCaseError = IDeleteFileUseCaseErrors[keyof IDeleteFileUseCaseErrors];\n\n/** Delete a file. */\nexport const DeleteFileUseCase = createAbstraction<IDeleteFileUseCase>(\"DeleteFileUseCase\");\n\nexport namespace DeleteFileUseCase {\n export type Interface = IDeleteFileUseCase;\n export type Error = UseCaseError;\n}\n"],"names":["DeleteFileRepository","createAbstraction","DeleteFileUseCase"],"mappings":";AAwBO,MAAMA,uBACTC,kBAAyC;AAuBtC,MAAMC,oBAAoBD,kBAAsC"}
@@ -1,32 +1,23 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
2
  import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
3
-
4
- // ============================================================================
5
- // FileBeforeDelete Event
6
- // ============================================================================
7
-
8
- export class FileBeforeDeleteEvent extends DomainEvent {
9
- eventType = "FileManager/File/BeforeDelete";
10
- getHandlerAbstraction() {
11
- return FileBeforeDeleteEventHandler;
12
- }
3
+ class FileBeforeDeleteEvent extends DomainEvent {
4
+ getHandlerAbstraction() {
5
+ return FileBeforeDeleteEventHandler;
6
+ }
7
+ constructor(...args){
8
+ super(...args), this.eventType = "FileManager/File/BeforeDelete";
9
+ }
13
10
  }
14
-
15
- /** Hook into file lifecycle before a file is deleted. */
16
- export const FileBeforeDeleteEventHandler = createAbstraction("FileBeforeDeleteEventHandler");
17
-
18
- // ============================================================================
19
- // FileAfterDelete Event
20
- // ============================================================================
21
-
22
- export class FileAfterDeleteEvent extends DomainEvent {
23
- eventType = "FileManager/File/AfterDelete";
24
- getHandlerAbstraction() {
25
- return FileAfterDeleteEventHandler;
26
- }
11
+ const FileBeforeDeleteEventHandler = createAbstraction("FileBeforeDeleteEventHandler");
12
+ class FileAfterDeleteEvent extends DomainEvent {
13
+ getHandlerAbstraction() {
14
+ return FileAfterDeleteEventHandler;
15
+ }
16
+ constructor(...args){
17
+ super(...args), this.eventType = "FileManager/File/AfterDelete";
18
+ }
27
19
  }
28
-
29
- /** Hook into file lifecycle after a file is deleted. */
30
- export const FileAfterDeleteEventHandler = createAbstraction("FileAfterDeleteEventHandler");
20
+ const FileAfterDeleteEventHandler = createAbstraction("FileAfterDeleteEventHandler");
21
+ export { FileAfterDeleteEvent, FileAfterDeleteEventHandler, FileBeforeDeleteEvent, FileBeforeDeleteEventHandler };
31
22
 
32
23
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DomainEvent","FileBeforeDeleteEvent","eventType","getHandlerAbstraction","FileBeforeDeleteEventHandler","FileAfterDeleteEvent","FileAfterDeleteEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { File } from \"~/domain/file/types.js\";\n\n// ============================================================================\n// FileBeforeDelete Event\n// ============================================================================\n\nexport interface FileBeforeDeletePayload {\n file: File;\n}\n\nexport class FileBeforeDeleteEvent extends DomainEvent<FileBeforeDeletePayload> {\n eventType = \"FileManager/File/BeforeDelete\" as const;\n\n getHandlerAbstraction() {\n return FileBeforeDeleteEventHandler;\n }\n}\n\n/** Hook into file lifecycle before a file is deleted. */\nexport const FileBeforeDeleteEventHandler = createAbstraction<IEventHandler<FileBeforeDeleteEvent>>(\n \"FileBeforeDeleteEventHandler\"\n);\n\nexport namespace FileBeforeDeleteEventHandler {\n export type Interface = IEventHandler<FileBeforeDeleteEvent>;\n export type Event = FileBeforeDeleteEvent;\n}\n\n// ============================================================================\n// FileAfterDelete Event\n// ============================================================================\n\nexport interface FileAfterDeletePayload {\n file: File;\n}\n\nexport class FileAfterDeleteEvent extends DomainEvent<FileAfterDeletePayload> {\n eventType = \"FileManager/File/AfterDelete\" as const;\n\n getHandlerAbstraction() {\n return FileAfterDeleteEventHandler;\n }\n}\n\n/** Hook into file lifecycle after a file is deleted. */\nexport const FileAfterDeleteEventHandler = createAbstraction<IEventHandler<FileAfterDeleteEvent>>(\n \"FileAfterDeleteEventHandler\"\n);\n\nexport namespace FileAfterDeleteEventHandler {\n export type Interface = IEventHandler<FileAfterDeleteEvent>;\n export type Event = FileAfterDeleteEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW,QAAQ,mDAAmD;;AAI/E;AACA;AACA;;AAMA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,+BAA+B;EAE3CC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMA,4BAA4B,GAAGL,iBAAiB,CACzD,8BACJ,CAAC;;AAOD;AACA;AACA;;AAMA,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,8BAA8B;EAE1CC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,2BAA2B;EACtC;AACJ;;AAEA;AACA,OAAO,MAAMA,2BAA2B,GAAGP,iBAAiB,CACxD,6BACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/file/DeleteFile/events.js","sources":["../../../../src/features/file/DeleteFile/events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { File } from \"~/domain/file/types.js\";\n\n// ============================================================================\n// FileBeforeDelete Event\n// ============================================================================\n\nexport interface FileBeforeDeletePayload {\n file: File;\n}\n\nexport class FileBeforeDeleteEvent extends DomainEvent<FileBeforeDeletePayload> {\n eventType = \"FileManager/File/BeforeDelete\" as const;\n\n getHandlerAbstraction() {\n return FileBeforeDeleteEventHandler;\n }\n}\n\n/** Hook into file lifecycle before a file is deleted. */\nexport const FileBeforeDeleteEventHandler = createAbstraction<IEventHandler<FileBeforeDeleteEvent>>(\n \"FileBeforeDeleteEventHandler\"\n);\n\nexport namespace FileBeforeDeleteEventHandler {\n export type Interface = IEventHandler<FileBeforeDeleteEvent>;\n export type Event = FileBeforeDeleteEvent;\n}\n\n// ============================================================================\n// FileAfterDelete Event\n// ============================================================================\n\nexport interface FileAfterDeletePayload {\n file: File;\n}\n\nexport class FileAfterDeleteEvent extends DomainEvent<FileAfterDeletePayload> {\n eventType = \"FileManager/File/AfterDelete\" as const;\n\n getHandlerAbstraction() {\n return FileAfterDeleteEventHandler;\n }\n}\n\n/** Hook into file lifecycle after a file is deleted. */\nexport const FileAfterDeleteEventHandler = createAbstraction<IEventHandler<FileAfterDeleteEvent>>(\n \"FileAfterDeleteEventHandler\"\n);\n\nexport namespace FileAfterDeleteEventHandler {\n export type Interface = IEventHandler<FileAfterDeleteEvent>;\n export type Event = FileAfterDeleteEvent;\n}\n"],"names":["FileBeforeDeleteEvent","DomainEvent","FileBeforeDeleteEventHandler","createAbstraction","FileAfterDeleteEvent","FileAfterDeleteEventHandler"],"mappings":";;AAaO,MAAMA,8BAA8BC;IAGvC,wBAAwB;QACpB,OAAOC;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB;AAGO,MAAMA,+BAA+BC,kBACxC;AAgBG,MAAMC,6BAA6BH;IAGtC,wBAAwB;QACpB,OAAOI;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB;AAGO,MAAMA,8BAA8BF,kBACvC"}
@@ -1,12 +1,13 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { DeleteFileRepository } from "./DeleteFileRepository.js";
3
3
  import { DeleteFileUseCase } from "./DeleteFileUseCase.js";
4
- export const DeleteFileFeature = createFeature({
5
- name: "FileManager/DeleteFile",
6
- register(container) {
7
- container.register(DeleteFileUseCase);
8
- container.register(DeleteFileRepository).inSingletonScope();
9
- }
4
+ const DeleteFileFeature = createFeature({
5
+ name: "FileManager/DeleteFile",
6
+ register (container) {
7
+ container.register(DeleteFileUseCase);
8
+ container.register(DeleteFileRepository).inSingletonScope();
9
+ }
10
10
  });
11
+ export { DeleteFileFeature };
11
12
 
12
13
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","DeleteFileRepository","DeleteFileUseCase","DeleteFileFeature","name","register","container","inSingletonScope"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { DeleteFileRepository } from \"./DeleteFileRepository.js\";\nimport { DeleteFileUseCase } from \"./DeleteFileUseCase.js\";\n\nexport const DeleteFileFeature = createFeature({\n name: \"FileManager/DeleteFile\",\n register(container) {\n container.register(DeleteFileUseCase);\n container.register(DeleteFileRepository).inSingletonScope();\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,oBAAoB;AAC7B,SAASC,iBAAiB;AAE1B,OAAO,MAAMC,iBAAiB,GAAGH,aAAa,CAAC;EAC3CI,IAAI,EAAE,wBAAwB;EAC9BC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,iBAAiB,CAAC;IACrCI,SAAS,CAACD,QAAQ,CAACJ,oBAAoB,CAAC,CAACM,gBAAgB,CAAC,CAAC;EAC/D;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/file/DeleteFile/feature.js","sources":["../../../../src/features/file/DeleteFile/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { DeleteFileRepository } from \"./DeleteFileRepository.js\";\nimport { DeleteFileUseCase } from \"./DeleteFileUseCase.js\";\n\nexport const DeleteFileFeature = createFeature({\n name: \"FileManager/DeleteFile\",\n register(container) {\n container.register(DeleteFileUseCase);\n container.register(DeleteFileRepository).inSingletonScope();\n }\n});\n"],"names":["DeleteFileFeature","createFeature","container","DeleteFileUseCase","DeleteFileRepository"],"mappings":";;;AAIO,MAAMA,oBAAoBC,cAAc;IAC3C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE,sBAAsB,gBAAgB;IAC7D;AACJ"}
@@ -1,4 +1,2 @@
1
1
  export { DeleteFileUseCase } from "./abstractions.js";
2
- export { FileBeforeDeleteEventHandler, FileAfterDeleteEventHandler } from "./events.js";
3
-
4
- //# sourceMappingURL=index.js.map
2
+ export { FileAfterDeleteEventHandler, FileBeforeDeleteEventHandler } from "./events.js";
@@ -0,0 +1,31 @@
1
+ import type { CmsModel } from "@webiny/api-headless-cms/types";
2
+ import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
3
+ import { FileModelProvider as Abstraction } from "../../domain/file/abstractions.js";
4
+ /**
5
+ * Resolves the tenant's `fmFile` model on demand.
6
+ *
7
+ * Two things this deliberately does NOT do, both of which the initializer it replaces did:
8
+ *
9
+ * - **No memoization.** `ModelsFetcher` already caches the model list per request (`ModelCache` is a
10
+ * per-request `createMemoryCache()`, see `ContentModelFeature`), so a second cache would buy only
11
+ * a repeat access-control check and an array lookup, at the cost of two lifetimes to reason about.
12
+ * - **No `withoutAuthorization`.** `fmFile` is a private model and `PrivateModelBuilder` sets
13
+ * `authorization: false`, which makes `AccessControl.modelAuthorizationDisabled()` short-circuit
14
+ * `canAccessModel()` to true for every identity — so the wrapper changed nothing. Confirmed
15
+ * against `filesSecurity.test.ts`, which exercises `fm.file`-only identities holding no CMS
16
+ * content-model permissions.
17
+ *
18
+ * `GetModelUseCase` is an ordinary constructor dependency: this provider is only constructed when a
19
+ * consumer first awaits `get()`, which happens during request handling — after the CMS has
20
+ * registered everything the use case needs. That timing is what previously forced the lazy
21
+ * `container.resolve()` inside the initializer.
22
+ */
23
+ declare class FileModelProviderImpl implements Abstraction.Interface {
24
+ private getModel;
25
+ constructor(getModel: GetModelUseCase.Interface);
26
+ get(): Promise<CmsModel>;
27
+ }
28
+ export declare const FileModelProvider: typeof FileModelProviderImpl & {
29
+ __abstraction: import("@webiny/di").Abstraction<import("~/domain/file/abstractions.js").IFileModelProvider>;
30
+ };
31
+ export {};
@@ -0,0 +1,22 @@
1
+ import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
2
+ import { FileModelProvider } from "../../domain/file/abstractions.js";
3
+ import { FILE_MODEL_ID } from "../../domain/file/file.model.js";
4
+ class FileModelProviderImpl {
5
+ constructor(getModel){
6
+ this.getModel = getModel;
7
+ }
8
+ async get() {
9
+ const result = await this.getModel.execute(FILE_MODEL_ID);
10
+ if (result.isFail()) throw result.error;
11
+ return result.value;
12
+ }
13
+ }
14
+ const FileModelProvider_FileModelProvider = FileModelProvider.createImplementation({
15
+ implementation: FileModelProviderImpl,
16
+ dependencies: [
17
+ GetModelUseCase
18
+ ]
19
+ });
20
+ export { FileModelProvider_FileModelProvider as FileModelProvider };
21
+
22
+ //# sourceMappingURL=FileModelProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/file/FileModelProvider.js","sources":["../../../src/features/file/FileModelProvider.ts"],"sourcesContent":["import type { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { FileModelProvider as Abstraction } from \"~/domain/file/abstractions.js\";\nimport { FILE_MODEL_ID } from \"~/domain/file/file.model.js\";\n\n/**\n * Resolves the tenant's `fmFile` model on demand.\n *\n * Two things this deliberately does NOT do, both of which the initializer it replaces did:\n *\n * - **No memoization.** `ModelsFetcher` already caches the model list per request (`ModelCache` is a\n * per-request `createMemoryCache()`, see `ContentModelFeature`), so a second cache would buy only\n * a repeat access-control check and an array lookup, at the cost of two lifetimes to reason about.\n * - **No `withoutAuthorization`.** `fmFile` is a private model and `PrivateModelBuilder` sets\n * `authorization: false`, which makes `AccessControl.modelAuthorizationDisabled()` short-circuit\n * `canAccessModel()` to true for every identity — so the wrapper changed nothing. Confirmed\n * against `filesSecurity.test.ts`, which exercises `fm.file`-only identities holding no CMS\n * content-model permissions.\n *\n * `GetModelUseCase` is an ordinary constructor dependency: this provider is only constructed when a\n * consumer first awaits `get()`, which happens during request handling — after the CMS has\n * registered everything the use case needs. That timing is what previously forced the lazy\n * `container.resolve()` inside the initializer.\n */\nclass FileModelProviderImpl implements Abstraction.Interface {\n constructor(private getModel: GetModelUseCase.Interface) {}\n\n async get(): Promise<CmsModel> {\n const result = await this.getModel.execute(FILE_MODEL_ID);\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n }\n}\n\nexport const FileModelProvider = Abstraction.createImplementation({\n implementation: FileModelProviderImpl,\n dependencies: [GetModelUseCase]\n});\n"],"names":["FileModelProviderImpl","getModel","result","FILE_MODEL_ID","FileModelProvider","Abstraction","GetModelUseCase"],"mappings":";;;AAwBA,MAAMA;IACF,YAAoBC,QAAmC,CAAE;aAArCA,QAAQ,GAARA;IAAsC;IAE1D,MAAM,MAAyB;QAC3B,MAAMC,SAAS,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACC;QAC3C,IAAID,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;QAEtB,OAAOA,OAAO,KAAK;IACvB;AACJ;AAEO,MAAME,sCAAoBC,kBAAAA,oBAAgC,CAAC;IAC9D,gBAAgBL;IAChB,cAAc;QAACM;KAAgB;AACnC"}
@@ -0,0 +1,12 @@
1
+ import { FileUrlGenerator as Abstraction } from "./abstractions.js";
2
+ import { FileUrlPrefixProvider } from "./abstractions.js";
3
+ import type { File } from "../../../domain/file/types.js";
4
+ declare class FileUrlGeneratorImpl implements Abstraction.Interface {
5
+ private readonly prefixProvider;
6
+ constructor(prefixProvider: FileUrlPrefixProvider.Interface);
7
+ generateUrl(file: File): Promise<string>;
8
+ }
9
+ export declare const FileUrlGenerator: typeof FileUrlGeneratorImpl & {
10
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IFileUrlGenerator>;
11
+ };
12
+ export {};
@@ -0,0 +1,19 @@
1
+ import { FileUrlGenerator, FileUrlPrefixProvider } from "./abstractions.js";
2
+ class FileUrlGeneratorImpl {
3
+ constructor(prefixProvider){
4
+ this.prefixProvider = prefixProvider;
5
+ }
6
+ async generateUrl(file) {
7
+ const prefix = await this.prefixProvider.getPrefix();
8
+ return prefix + file.key;
9
+ }
10
+ }
11
+ const FileUrlGenerator_FileUrlGenerator = FileUrlGenerator.createImplementation({
12
+ implementation: FileUrlGeneratorImpl,
13
+ dependencies: [
14
+ FileUrlPrefixProvider
15
+ ]
16
+ });
17
+ export { FileUrlGenerator_FileUrlGenerator as FileUrlGenerator };
18
+
19
+ //# sourceMappingURL=FileUrlGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/file/FileUrlGenerator/FileUrlGenerator.js","sources":["../../../../src/features/file/FileUrlGenerator/FileUrlGenerator.ts"],"sourcesContent":["import { FileUrlGenerator as Abstraction } from \"./abstractions.js\";\nimport { FileUrlPrefixProvider } from \"./abstractions.js\";\nimport type { File } from \"~/domain/file/types.js\";\n\nclass FileUrlGeneratorImpl implements Abstraction.Interface {\n public constructor(private readonly prefixProvider: FileUrlPrefixProvider.Interface) {}\n\n public async generateUrl(file: File): Promise<string> {\n const prefix = await this.prefixProvider.getPrefix();\n return prefix + file.key;\n }\n}\n\nexport const FileUrlGenerator = Abstraction.createImplementation({\n implementation: FileUrlGeneratorImpl,\n dependencies: [FileUrlPrefixProvider]\n});\n"],"names":["FileUrlGeneratorImpl","prefixProvider","file","prefix","FileUrlGenerator","Abstraction","FileUrlPrefixProvider"],"mappings":";AAIA,MAAMA;IACF,YAAoCC,cAA+C,CAAE;aAAjDA,cAAc,GAAdA;IAAkD;IAEtF,MAAa,YAAYC,IAAU,EAAmB;QAClD,MAAMC,SAAS,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS;QAClD,OAAOA,SAASD,KAAK,GAAG;IAC5B;AACJ;AAEO,MAAME,oCAAmBC,iBAAAA,oBAAgC,CAAC;IAC7D,gBAAgBL;IAChB,cAAc;QAACM;KAAsB;AACzC"}
@@ -0,0 +1,13 @@
1
+ import { FileUrlPrefixProvider as Abstraction } from "./abstractions.js";
2
+ import { GetSettingsUseCase } from "../../../features/settings/GetSettings/abstractions.js";
3
+ declare class SettingsFileUrlPrefixProviderImpl implements Abstraction.Interface {
4
+ private readonly getSettings;
5
+ private prefix;
6
+ constructor(getSettings: GetSettingsUseCase.Interface);
7
+ getPrefix(): Promise<string>;
8
+ private loadPrefix;
9
+ }
10
+ export declare const SettingsFileUrlPrefixProvider: typeof SettingsFileUrlPrefixProviderImpl & {
11
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IFileUrlPrefixProvider>;
12
+ };
13
+ export {};
@@ -0,0 +1,28 @@
1
+ import { FileUrlPrefixProvider } from "./abstractions.js";
2
+ import { GetSettingsUseCase } from "../../settings/GetSettings/abstractions.js";
3
+ class SettingsFileUrlPrefixProviderImpl {
4
+ constructor(getSettings){
5
+ this.getSettings = getSettings;
6
+ this.prefix = null;
7
+ }
8
+ getPrefix() {
9
+ if (!this.prefix) this.prefix = this.loadPrefix().catch((error)=>{
10
+ this.prefix = null;
11
+ throw error;
12
+ });
13
+ return this.prefix;
14
+ }
15
+ async loadPrefix() {
16
+ const result = await this.getSettings.execute();
17
+ return result.value?.srcPrefix ?? "";
18
+ }
19
+ }
20
+ const SettingsFileUrlPrefixProvider = FileUrlPrefixProvider.createImplementation({
21
+ implementation: SettingsFileUrlPrefixProviderImpl,
22
+ dependencies: [
23
+ GetSettingsUseCase
24
+ ]
25
+ });
26
+ export { SettingsFileUrlPrefixProvider };
27
+
28
+ //# sourceMappingURL=SettingsFileUrlPrefixProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/file/FileUrlGenerator/SettingsFileUrlPrefixProvider.js","sources":["../../../../src/features/file/FileUrlGenerator/SettingsFileUrlPrefixProvider.ts"],"sourcesContent":["import { FileUrlPrefixProvider as Abstraction } from \"./abstractions.js\";\nimport { GetSettingsUseCase } from \"~/features/settings/GetSettings/abstractions.js\";\n\nclass SettingsFileUrlPrefixProviderImpl implements Abstraction.Interface {\n private prefix: Promise<string> | null = null;\n\n public constructor(private readonly getSettings: GetSettingsUseCase.Interface) {}\n\n // Read once per instance, when the first URL is needed. A failed read is forgotten, so the next\n // call tries again.\n public getPrefix(): Promise<string> {\n if (!this.prefix) {\n this.prefix = this.loadPrefix().catch(error => {\n this.prefix = null;\n throw error;\n });\n }\n return this.prefix;\n }\n\n private async loadPrefix(): Promise<string> {\n const result = await this.getSettings.execute();\n return result.value?.srcPrefix ?? \"\";\n }\n}\n\nexport const SettingsFileUrlPrefixProvider = Abstraction.createImplementation({\n implementation: SettingsFileUrlPrefixProviderImpl,\n dependencies: [GetSettingsUseCase]\n});\n"],"names":["SettingsFileUrlPrefixProviderImpl","getSettings","error","result","SettingsFileUrlPrefixProvider","Abstraction","GetSettingsUseCase"],"mappings":";;AAGA,MAAMA;IAGF,YAAoCC,WAAyC,CAAE;aAA3CA,WAAW,GAAXA;aAF5B,MAAM,GAA2B;IAEuC;IAIzE,YAA6B;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM,EACZ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAACC,CAAAA;YAClC,IAAI,CAAC,MAAM,GAAG;YACd,MAAMA;QACV;QAEJ,OAAO,IAAI,CAAC,MAAM;IACtB;IAEA,MAAc,aAA8B;QACxC,MAAMC,SAAS,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO;QAC7C,OAAOA,OAAO,KAAK,EAAE,aAAa;IACtC;AACJ;AAEO,MAAMC,gCAAgCC,sBAAAA,oBAAgC,CAAC;IAC1E,gBAAgBL;IAChB,cAAc;QAACM;KAAmB;AACtC"}
@@ -1,9 +1,20 @@
1
- interface IFileUrlGenerator {
2
- generateUrl(file: File): string;
1
+ import type { File } from "../../../domain/file/types.js";
2
+ export interface IFileUrlGenerator {
3
+ generateUrl(file: File): Promise<string>;
3
4
  }
4
- /** Generate URLs for uploaded files. */
5
5
  export declare const FileUrlGenerator: import("@webiny/di").Abstraction<IFileUrlGenerator>;
6
6
  export declare namespace FileUrlGenerator {
7
7
  type Interface = IFileUrlGenerator;
8
8
  }
9
- export {};
9
+ export interface IFileUrlPrefixProvider {
10
+ getPrefix(): Promise<string>;
11
+ }
12
+ /**
13
+ * Provides the prefix the default FileUrlGenerator puts in front of a file's key. The default
14
+ * implementation reads `srcPrefix` from the File Manager settings. Replace it to load the prefix
15
+ * from somewhere else, without touching how URLs are put together.
16
+ */
17
+ export declare const FileUrlPrefixProvider: import("@webiny/di").Abstraction<IFileUrlPrefixProvider>;
18
+ export declare namespace FileUrlPrefixProvider {
19
+ type Interface = IFileUrlPrefixProvider;
20
+ }
@@ -1,5 +1,6 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
- /** Generate URLs for uploaded files. */
3
- export const FileUrlGenerator = createAbstraction("IFileUrlGenerator");
2
+ const FileUrlGenerator = createAbstraction("FileManager/FileUrlGenerator");
3
+ const FileUrlPrefixProvider = createAbstraction("FileManager/FileUrlPrefixProvider");
4
+ export { FileUrlGenerator, FileUrlPrefixProvider };
4
5
 
5
6
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","FileUrlGenerator"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\n\ninterface IFileUrlGenerator {\n generateUrl(file: File): string;\n}\n\n/** Generate URLs for uploaded files. */\nexport const FileUrlGenerator = createAbstraction<IFileUrlGenerator>(\"IFileUrlGenerator\");\n\nexport namespace FileUrlGenerator {\n export type Interface = IFileUrlGenerator;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAMvD;AACA,OAAO,MAAMC,gBAAgB,GAAGD,iBAAiB,CAAoB,mBAAmB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/file/FileUrlGenerator/abstractions.js","sources":["../../../../src/features/file/FileUrlGenerator/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { File } from \"~/domain/file/types.js\";\n\nexport interface IFileUrlGenerator {\n generateUrl(file: File): Promise<string>;\n}\n\n/* Generate URLs for uploaded files. */\nexport const FileUrlGenerator = createAbstraction<IFileUrlGenerator>(\n \"FileManager/FileUrlGenerator\"\n);\n\nexport namespace FileUrlGenerator {\n export type Interface = IFileUrlGenerator;\n}\n\nexport interface IFileUrlPrefixProvider {\n getPrefix(): Promise<string>;\n}\n\n/**\n * Provides the prefix the default FileUrlGenerator puts in front of a file's key. The default\n * implementation reads `srcPrefix` from the File Manager settings. Replace it to load the prefix\n * from somewhere else, without touching how URLs are put together.\n */\nexport const FileUrlPrefixProvider = createAbstraction<IFileUrlPrefixProvider>(\n \"FileManager/FileUrlPrefixProvider\"\n);\n\nexport namespace FileUrlPrefixProvider {\n export type Interface = IFileUrlPrefixProvider;\n}\n"],"names":["FileUrlGenerator","createAbstraction","FileUrlPrefixProvider"],"mappings":";AAQO,MAAMA,mBAAmBC,kBAC5B;AAgBG,MAAMC,wBAAwBD,kBACjC"}
@@ -0,0 +1,4 @@
1
+ export declare const FileUrlGeneratorFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -0,0 +1,13 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { FileUrlGenerator } from "./FileUrlGenerator.js";
3
+ import { SettingsFileUrlPrefixProvider } from "./SettingsFileUrlPrefixProvider.js";
4
+ const FileUrlGeneratorFeature = createFeature({
5
+ name: "FileManager/FileUrlGenerator",
6
+ register (container) {
7
+ container.register(FileUrlGenerator).inSingletonScope();
8
+ container.register(SettingsFileUrlPrefixProvider).inSingletonScope();
9
+ }
10
+ });
11
+ export { FileUrlGeneratorFeature };
12
+
13
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/file/FileUrlGenerator/feature.js","sources":["../../../../src/features/file/FileUrlGenerator/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { FileUrlGenerator } from \"./FileUrlGenerator.js\";\nimport { SettingsFileUrlPrefixProvider } from \"./SettingsFileUrlPrefixProvider.js\";\n\nexport const FileUrlGeneratorFeature = createFeature({\n name: \"FileManager/FileUrlGenerator\",\n register(container) {\n container.register(FileUrlGenerator).inSingletonScope();\n // A singleton, so the settings are read once per request however many URLs are generated.\n container.register(SettingsFileUrlPrefixProvider).inSingletonScope();\n }\n});\n"],"names":["FileUrlGeneratorFeature","createFeature","container","FileUrlGenerator","SettingsFileUrlPrefixProvider"],"mappings":";;;AAIO,MAAMA,0BAA0BC,cAAc;IACjD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,kBAAkB,gBAAgB;QAErDD,UAAU,QAAQ,CAACE,+BAA+B,gBAAgB;IACtE;AACJ"}
@@ -0,0 +1,2 @@
1
+ export { FileUrlGenerator } from "./abstractions.js";
2
+ export { FileUrlPrefixProvider } from "./abstractions.js";
@@ -0,0 +1 @@
1
+ export { FileUrlGenerator, FileUrlPrefixProvider } from "./abstractions.js";
@@ -1,12 +1,12 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById";
3
3
  import { GetFileRepository as RepositoryAbstraction } from "./abstractions.js";
4
- import { FileModel } from "../../../domain/file/abstractions.js";
4
+ import { FileModelProvider } from "../../../domain/file/abstractions.js";
5
5
  import type { File } from "../../../domain/file/types.js";
6
6
  declare class GetFileRepositoryImpl implements RepositoryAbstraction.Interface {
7
7
  private getEntryById;
8
- private fileModel;
9
- constructor(getEntryById: GetEntryByIdUseCase.Interface, fileModel: FileModel.Interface);
8
+ private fileModelProvider;
9
+ constructor(getEntryById: GetEntryByIdUseCase.Interface, fileModelProvider: FileModelProvider.Interface);
10
10
  execute(id: string): Promise<Result<File, RepositoryAbstraction.Error>>;
11
11
  }
12
12
  export declare const GetFileRepository: typeof GetFileRepositoryImpl & {
@@ -1,33 +1,34 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById";
3
- import { GetFileRepository as RepositoryAbstraction } from "./abstractions.js";
4
- import { FileModel } from "../../../domain/file/abstractions.js";
3
+ import { GetFileRepository } from "./abstractions.js";
4
+ import { FileModelProvider } from "../../../domain/file/abstractions.js";
5
5
  import { FileNotAuthorizedError, FileNotFoundError, FilePersistenceError } from "../../../domain/file/errors.js";
6
6
  import { EntryToFileMapper } from "../shared/EntryToFileMapper.js";
7
7
  class GetFileRepositoryImpl {
8
- constructor(getEntryById, fileModel) {
9
- this.getEntryById = getEntryById;
10
- this.fileModel = fileModel;
11
- }
12
- async execute(id) {
13
- const result = await this.getEntryById.execute(this.fileModel, `${id}#0001`);
14
- if (result.isFail()) {
15
- const error = result.error;
16
- if (error.code === "Cms/Entry/NotFound") {
17
- return Result.fail(new FileNotFoundError(id));
18
- }
19
- if (error.code === "Cms/Entry/NotAuthorized") {
20
- return Result.fail(new FileNotAuthorizedError());
21
- }
22
- return Result.fail(new FilePersistenceError(result.error));
8
+ constructor(getEntryById, fileModelProvider){
9
+ this.getEntryById = getEntryById;
10
+ this.fileModelProvider = fileModelProvider;
11
+ }
12
+ async execute(id) {
13
+ const fileModel = await this.fileModelProvider.get();
14
+ const result = await this.getEntryById.execute(fileModel, `${id}#0001`);
15
+ if (result.isFail()) {
16
+ const error = result.error;
17
+ if ("Cms/Entry/NotFound" === error.code) return Result.fail(new FileNotFoundError(id));
18
+ if ("Cms/Entry/NotAuthorized" === error.code) return Result.fail(new FileNotAuthorizedError());
19
+ return Result.fail(new FilePersistenceError(result.error));
20
+ }
21
+ const file = EntryToFileMapper.toFile(result.value);
22
+ return Result.ok(file);
23
23
  }
24
- const file = EntryToFileMapper.toFile(result.value);
25
- return Result.ok(file);
26
- }
27
24
  }
28
- export const GetFileRepository = RepositoryAbstraction.createImplementation({
29
- implementation: GetFileRepositoryImpl,
30
- dependencies: [GetEntryByIdUseCase, FileModel]
25
+ const GetFileRepository_GetFileRepository = GetFileRepository.createImplementation({
26
+ implementation: GetFileRepositoryImpl,
27
+ dependencies: [
28
+ GetEntryByIdUseCase,
29
+ FileModelProvider
30
+ ]
31
31
  });
32
+ export { GetFileRepository_GetFileRepository as GetFileRepository };
32
33
 
33
34
  //# sourceMappingURL=GetFileRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","GetEntryByIdUseCase","GetFileRepository","RepositoryAbstraction","FileModel","FileNotAuthorizedError","FileNotFoundError","FilePersistenceError","EntryToFileMapper","GetFileRepositoryImpl","constructor","getEntryById","fileModel","execute","id","result","isFail","error","code","fail","file","toFile","value","ok","createImplementation","implementation","dependencies"],"sources":["GetFileRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById\";\nimport { GetFileRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { FileModel } from \"~/domain/file/abstractions.js\";\nimport type { File } from \"~/domain/file/types.js\";\nimport {\n FileNotAuthorizedError,\n FileNotFoundError,\n FilePersistenceError\n} from \"~/domain/file/errors.js\";\nimport { EntryToFileMapper } from \"../shared/EntryToFileMapper.js\";\n\nclass GetFileRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private getEntryById: GetEntryByIdUseCase.Interface,\n private fileModel: FileModel.Interface\n ) {}\n\n async execute(id: string): Promise<Result<File, RepositoryAbstraction.Error>> {\n const result = await this.getEntryById.execute(this.fileModel, `${id}#0001`);\n\n if (result.isFail()) {\n const error = result.error;\n\n if (error.code === \"Cms/Entry/NotFound\") {\n return Result.fail(new FileNotFoundError(id));\n }\n\n if (error.code === \"Cms/Entry/NotAuthorized\") {\n return Result.fail(new FileNotAuthorizedError());\n }\n return Result.fail(new FilePersistenceError(result.error));\n }\n\n const file = EntryToFileMapper.toFile(result.value);\n\n return Result.ok(file);\n }\n}\n\nexport const GetFileRepository = RepositoryAbstraction.createImplementation({\n implementation: GetFileRepositoryImpl,\n dependencies: [GetEntryByIdUseCase, FileModel]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,mBAAmB,QAAQ,6DAA6D;AACjG,SAASC,iBAAiB,IAAIC,qBAAqB;AACnD,SAASC,SAAS;AAElB,SACIC,sBAAsB,EACtBC,iBAAiB,EACjBC,oBAAoB;AAExB,SAASC,iBAAiB;AAE1B,MAAMC,qBAAqB,CAA4C;EACnEC,WAAWA,CACCC,YAA2C,EAC3CC,SAA8B,EACxC;IAAA,KAFUD,YAA2C,GAA3CA,YAA2C;IAAA,KAC3CC,SAA8B,GAA9BA,SAA8B;EACvC;EAEH,MAAMC,OAAOA,CAACC,EAAU,EAAsD;IAC1E,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACJ,YAAY,CAACE,OAAO,CAAC,IAAI,CAACD,SAAS,EAAE,GAAGE,EAAE,OAAO,CAAC;IAE5E,IAAIC,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,MAAMC,KAAK,GAAGF,MAAM,CAACE,KAAK;MAE1B,IAAIA,KAAK,CAACC,IAAI,KAAK,oBAAoB,EAAE;QACrC,OAAOlB,MAAM,CAACmB,IAAI,CAAC,IAAIb,iBAAiB,CAACQ,EAAE,CAAC,CAAC;MACjD;MAEA,IAAIG,KAAK,CAACC,IAAI,KAAK,yBAAyB,EAAE;QAC1C,OAAOlB,MAAM,CAACmB,IAAI,CAAC,IAAId,sBAAsB,CAAC,CAAC,CAAC;MACpD;MACA,OAAOL,MAAM,CAACmB,IAAI,CAAC,IAAIZ,oBAAoB,CAACQ,MAAM,CAACE,KAAK,CAAC,CAAC;IAC9D;IAEA,MAAMG,IAAI,GAAGZ,iBAAiB,CAACa,MAAM,CAACN,MAAM,CAACO,KAAK,CAAC;IAEnD,OAAOtB,MAAM,CAACuB,EAAE,CAACH,IAAI,CAAC;EAC1B;AACJ;AAEA,OAAO,MAAMlB,iBAAiB,GAAGC,qBAAqB,CAACqB,oBAAoB,CAAC;EACxEC,cAAc,EAAEhB,qBAAqB;EACrCiB,YAAY,EAAE,CAACzB,mBAAmB,EAAEG,SAAS;AACjD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/file/GetFile/GetFileRepository.js","sources":["../../../../src/features/file/GetFile/GetFileRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById\";\nimport { GetFileRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { FileModelProvider } from \"~/domain/file/abstractions.js\";\nimport type { File } from \"~/domain/file/types.js\";\nimport {\n FileNotAuthorizedError,\n FileNotFoundError,\n FilePersistenceError\n} from \"~/domain/file/errors.js\";\nimport { EntryToFileMapper } from \"../shared/EntryToFileMapper.js\";\n\nclass GetFileRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private getEntryById: GetEntryByIdUseCase.Interface,\n private fileModelProvider: FileModelProvider.Interface\n ) {}\n\n async execute(id: string): Promise<Result<File, RepositoryAbstraction.Error>> {\n const fileModel = await this.fileModelProvider.get();\n const result = await this.getEntryById.execute(fileModel, `${id}#0001`);\n\n if (result.isFail()) {\n const error = result.error;\n\n if (error.code === \"Cms/Entry/NotFound\") {\n return Result.fail(new FileNotFoundError(id));\n }\n\n if (error.code === \"Cms/Entry/NotAuthorized\") {\n return Result.fail(new FileNotAuthorizedError());\n }\n return Result.fail(new FilePersistenceError(result.error));\n }\n\n const file = EntryToFileMapper.toFile(result.value);\n\n return Result.ok(file);\n }\n}\n\nexport const GetFileRepository = RepositoryAbstraction.createImplementation({\n implementation: GetFileRepositoryImpl,\n dependencies: [GetEntryByIdUseCase, FileModelProvider]\n});\n"],"names":["GetFileRepositoryImpl","getEntryById","fileModelProvider","id","fileModel","result","error","Result","FileNotFoundError","FileNotAuthorizedError","FilePersistenceError","file","EntryToFileMapper","GetFileRepository","RepositoryAbstraction","GetEntryByIdUseCase","FileModelProvider"],"mappings":";;;;;;AAYA,MAAMA;IACF,YACYC,YAA2C,EAC3CC,iBAA8C,CACxD;aAFUD,YAAY,GAAZA;aACAC,iBAAiB,GAAjBA;IACT;IAEH,MAAM,QAAQC,EAAU,EAAsD;QAC1E,MAAMC,YAAY,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG;QAClD,MAAMC,SAAS,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAACD,WAAW,GAAGD,GAAG,KAAK,CAAC;QAEtE,IAAIE,OAAO,MAAM,IAAI;YACjB,MAAMC,QAAQD,OAAO,KAAK;YAE1B,IAAIC,AAAe,yBAAfA,MAAM,IAAI,EACV,OAAOC,OAAO,IAAI,CAAC,IAAIC,kBAAkBL;YAG7C,IAAIG,AAAe,8BAAfA,MAAM,IAAI,EACV,OAAOC,OAAO,IAAI,CAAC,IAAIE;YAE3B,OAAOF,OAAO,IAAI,CAAC,IAAIG,qBAAqBL,OAAO,KAAK;QAC5D;QAEA,MAAMM,OAAOC,kBAAkB,MAAM,CAACP,OAAO,KAAK;QAElD,OAAOE,OAAO,EAAE,CAACI;IACrB;AACJ;AAEO,MAAME,sCAAoBC,kBAAAA,oBAA0C,CAAC;IACxE,gBAAgBd;IAChB,cAAc;QAACe;QAAqBC;KAAkB;AAC1D"}