@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
@@ -0,0 +1,22 @@
1
+ import { parse, stringify } from "cache-control-parser";
2
+ class PublicCache {
3
+ constructor(strategy){
4
+ this.strategy = strategy;
5
+ }
6
+ async output(asset) {
7
+ const reply = await this.strategy.output(asset);
8
+ reply.setHeaders((headers)=>{
9
+ headers.set("cache-control", (value = "")=>{
10
+ const cacheControl = parse(value);
11
+ cacheControl["private"] = false;
12
+ cacheControl["public"] = true;
13
+ return stringify(cacheControl);
14
+ });
15
+ return headers;
16
+ });
17
+ return reply;
18
+ }
19
+ }
20
+ export { PublicCache };
21
+
22
+ //# sourceMappingURL=PublicCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/assetDelivery/privateFiles/PublicCache.js","sources":["../../../../src/features/assetDelivery/privateFiles/PublicCache.ts"],"sourcesContent":["import { parse, stringify } from \"cache-control-parser\";\nimport type { Asset } from \"~/delivery/AssetDelivery/Asset.js\";\nimport type { AssetReply } from \"~/delivery/AssetDelivery/abstractions/AssetReply.js\";\nimport type { IAssetOutputStrategy } from \"../abstractions.js\";\n\nexport class PublicCache implements IAssetOutputStrategy {\n private strategy: IAssetOutputStrategy;\n\n constructor(strategy: IAssetOutputStrategy) {\n this.strategy = strategy;\n }\n\n async output(asset: Asset): Promise<AssetReply> {\n const reply = await this.strategy.output(asset);\n\n reply.setHeaders(headers => {\n headers.set(\"cache-control\", (value = \"\") => {\n const cacheControl = parse(value);\n cacheControl[\"private\"] = false;\n cacheControl[\"public\"] = true;\n return stringify(cacheControl);\n });\n return headers;\n });\n\n return reply;\n }\n}\n"],"names":["PublicCache","strategy","asset","reply","headers","value","cacheControl","parse","stringify"],"mappings":";AAKO,MAAMA;IAGT,YAAYC,QAA8B,CAAE;QACxC,IAAI,CAAC,QAAQ,GAAGA;IACpB;IAEA,MAAM,OAAOC,KAAY,EAAuB;QAC5C,MAAMC,QAAQ,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAACD;QAEzCC,MAAM,UAAU,CAACC,CAAAA;YACbA,QAAQ,GAAG,CAAC,iBAAiB,CAACC,QAAQ,EAAE;gBACpC,MAAMC,eAAeC,MAAMF;gBAC3BC,YAAY,CAAC,UAAU,GAAG;gBAC1BA,YAAY,CAAC,SAAS,GAAG;gBACzB,OAAOE,UAAUF;YACrB;YACA,OAAOF;QACX;QAEA,OAAOD;IACX;AACJ"}
@@ -0,0 +1,9 @@
1
+ import type { Asset } from "../../../delivery/AssetDelivery/Asset.js";
2
+ import type { AssetRequest } from "../../../delivery/AssetDelivery/AssetRequest.js";
3
+ import { AssetReply } from "../../../delivery/AssetDelivery/abstractions/AssetReply.js";
4
+ import type { IAssetOutputStrategy } from "../abstractions.js";
5
+ export declare class RedirectToPrivateUrlOutputStrategy implements IAssetOutputStrategy {
6
+ private assetRequest;
7
+ constructor(assetRequest: AssetRequest);
8
+ output(asset: Asset): Promise<AssetReply>;
9
+ }
@@ -0,0 +1,21 @@
1
+ import { AssetReply } from "../../../delivery/AssetDelivery/abstractions/AssetReply.js";
2
+ import { ResponseHeaders } from "@webiny/handler";
3
+ class RedirectToPrivateUrlOutputStrategy {
4
+ constructor(assetRequest){
5
+ this.assetRequest = assetRequest;
6
+ }
7
+ async output(asset) {
8
+ const requestUrl = this.assetRequest.getContext().url;
9
+ return new AssetReply({
10
+ code: 301,
11
+ headers: ResponseHeaders.create({
12
+ location: requestUrl.replace("/files/", "/private/"),
13
+ "content-type": asset.getContentType(),
14
+ "cache-control": "public, max-age=2592000"
15
+ })
16
+ });
17
+ }
18
+ }
19
+ export { RedirectToPrivateUrlOutputStrategy };
20
+
21
+ //# sourceMappingURL=RedirectToPrivateUrlOutputStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/assetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js","sources":["../../../../src/features/assetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.ts"],"sourcesContent":["import type { Asset } from \"~/delivery/AssetDelivery/Asset.js\";\nimport type { AssetRequest } from \"~/delivery/AssetDelivery/AssetRequest.js\";\nimport { AssetReply } from \"~/delivery/AssetDelivery/abstractions/AssetReply.js\";\nimport { ResponseHeaders } from \"@webiny/handler\";\nimport type { IAssetOutputStrategy } from \"../abstractions.js\";\n\nexport class RedirectToPrivateUrlOutputStrategy implements IAssetOutputStrategy {\n private assetRequest: AssetRequest;\n\n constructor(assetRequest: AssetRequest) {\n this.assetRequest = assetRequest;\n }\n\n async output(asset: Asset): Promise<AssetReply> {\n const requestUrl = this.assetRequest.getContext().url;\n\n return new AssetReply({\n code: 301,\n headers: ResponseHeaders.create({\n location: requestUrl.replace(\"/files/\", \"/private/\"),\n \"content-type\": asset.getContentType(),\n \"cache-control\": `public, max-age=${86400 * 30}`\n })\n });\n }\n}\n"],"names":["RedirectToPrivateUrlOutputStrategy","assetRequest","asset","requestUrl","AssetReply","ResponseHeaders"],"mappings":";;AAMO,MAAMA;IAGT,YAAYC,YAA0B,CAAE;QACpC,IAAI,CAAC,YAAY,GAAGA;IACxB;IAEA,MAAM,OAAOC,KAAY,EAAuB;QAC5C,MAAMC,aAAa,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,GAAG;QAErD,OAAO,IAAIC,WAAW;YAClB,MAAM;YACN,SAASC,gBAAgB,MAAM,CAAC;gBAC5B,UAAUF,WAAW,OAAO,CAAC,WAAW;gBACxC,gBAAgBD,MAAM,cAAc;gBACpC,iBAAiB;YACrB;QACJ;IACJ;AACJ"}
@@ -0,0 +1,9 @@
1
+ import type { Asset } from "../../../delivery/AssetDelivery/Asset.js";
2
+ import type { AssetRequest } from "../../../delivery/AssetDelivery/AssetRequest.js";
3
+ import { AssetReply } from "../../../delivery/AssetDelivery/abstractions/AssetReply.js";
4
+ import type { IAssetOutputStrategy } from "../abstractions.js";
5
+ export declare class RedirectToPublicUrlOutputStrategy implements IAssetOutputStrategy {
6
+ private assetRequest;
7
+ constructor(assetRequest: AssetRequest);
8
+ output(asset: Asset): Promise<AssetReply>;
9
+ }
@@ -0,0 +1,21 @@
1
+ import { AssetReply } from "../../../delivery/AssetDelivery/abstractions/AssetReply.js";
2
+ import { ResponseHeaders } from "@webiny/handler";
3
+ class RedirectToPublicUrlOutputStrategy {
4
+ constructor(assetRequest){
5
+ this.assetRequest = assetRequest;
6
+ }
7
+ async output(asset) {
8
+ const requestUrl = this.assetRequest.getContext().url;
9
+ return new AssetReply({
10
+ code: 301,
11
+ headers: ResponseHeaders.create({
12
+ location: requestUrl.replace("/private/", "/files/"),
13
+ "content-type": asset.getContentType(),
14
+ "cache-control": "public, max-age=2592000"
15
+ })
16
+ });
17
+ }
18
+ }
19
+ export { RedirectToPublicUrlOutputStrategy };
20
+
21
+ //# sourceMappingURL=RedirectToPublicUrlOutputStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/assetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js","sources":["../../../../src/features/assetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.ts"],"sourcesContent":["import type { Asset } from \"~/delivery/AssetDelivery/Asset.js\";\nimport type { AssetRequest } from \"~/delivery/AssetDelivery/AssetRequest.js\";\nimport { AssetReply } from \"~/delivery/AssetDelivery/abstractions/AssetReply.js\";\nimport { ResponseHeaders } from \"@webiny/handler\";\nimport type { IAssetOutputStrategy } from \"../abstractions.js\";\n\nexport class RedirectToPublicUrlOutputStrategy implements IAssetOutputStrategy {\n private assetRequest: AssetRequest;\n\n constructor(assetRequest: AssetRequest) {\n this.assetRequest = assetRequest;\n }\n\n async output(asset: Asset): Promise<AssetReply> {\n const requestUrl = this.assetRequest.getContext().url;\n\n return new AssetReply({\n code: 301,\n headers: ResponseHeaders.create({\n location: requestUrl.replace(\"/private/\", \"/files/\"),\n \"content-type\": asset.getContentType(),\n \"cache-control\": `public, max-age=${86400 * 30}`\n })\n });\n }\n}\n"],"names":["RedirectToPublicUrlOutputStrategy","assetRequest","asset","requestUrl","AssetReply","ResponseHeaders"],"mappings":";;AAMO,MAAMA;IAGT,YAAYC,YAA0B,CAAE;QACpC,IAAI,CAAC,YAAY,GAAGA;IACxB;IAEA,MAAM,OAAOC,KAAY,EAAuB;QAC5C,MAAMC,aAAa,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,GAAG;QAErD,OAAO,IAAIC,WAAW;YAClB,MAAM;YACN,SAASC,gBAAgB,MAAM,CAAC;gBAC5B,UAAUF,WAAW,OAAO,CAAC,aAAa;gBAC1C,gBAAgBD,MAAM,cAAc;gBACpC,iBAAiB;YACrB;QACJ;IACJ;AACJ"}
@@ -0,0 +1,11 @@
1
+ import { AssetContentsReader } from "../../../features/assetDelivery/abstractions.js";
2
+ interface ContentsCallable {
3
+ (): Promise<Buffer> | Buffer;
4
+ }
5
+ export declare class CallableContentsReader implements AssetContentsReader.Interface {
6
+ private readonly callable;
7
+ static create(callable: ContentsCallable): CallableContentsReader;
8
+ private constructor();
9
+ read(): Promise<Buffer>;
10
+ }
11
+ export {};
@@ -0,0 +1,14 @@
1
+ class CallableContentsReader {
2
+ static create(callable) {
3
+ return new CallableContentsReader(callable);
4
+ }
5
+ constructor(callable){
6
+ this.callable = callable;
7
+ }
8
+ async read() {
9
+ return this.callable();
10
+ }
11
+ }
12
+ export { CallableContentsReader };
13
+
14
+ //# sourceMappingURL=CallableContentsReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/assetDelivery/transformation/CallableContentsReader.js","sources":["../../../../src/features/assetDelivery/transformation/CallableContentsReader.ts"],"sourcesContent":["import { AssetContentsReader } from \"~/features/assetDelivery/abstractions.js\";\n\ninterface ContentsCallable {\n (): Promise<Buffer> | Buffer;\n}\n\nexport class CallableContentsReader implements AssetContentsReader.Interface {\n private readonly callable: ContentsCallable;\n\n public static create(callable: ContentsCallable) {\n return new CallableContentsReader(callable);\n }\n\n private constructor(callable: ContentsCallable) {\n this.callable = callable;\n }\n\n public async read(): Promise<Buffer> {\n return this.callable();\n }\n}\n"],"names":["CallableContentsReader","callable"],"mappings":"AAMO,MAAMA;IAGT,OAAc,OAAOC,QAA0B,EAAE;QAC7C,OAAO,IAAID,uBAAuBC;IACtC;IAEA,YAAoBA,QAA0B,CAAE;QAC5C,IAAI,CAAC,QAAQ,GAAGA;IACpB;IAEA,MAAa,OAAwB;QACjC,OAAO,IAAI,CAAC,QAAQ;IACxB;AACJ"}
@@ -0,0 +1,9 @@
1
+ import type { Container } from "@webiny/di";
2
+ import type { Asset } from "../../../delivery/AssetDelivery/Asset.js";
3
+ import type { AssetRequest } from "../../../delivery/AssetDelivery/AssetRequest.js";
4
+ import type { IAssetProcessor } from "../abstractions.js";
5
+ export declare class TransformationAssetProcessor implements IAssetProcessor {
6
+ private readonly container;
7
+ constructor(container: Container);
8
+ process(assetRequest: AssetRequest, asset: Asset): Promise<Asset>;
9
+ }
@@ -0,0 +1,25 @@
1
+ import { AssetType } from "../abstractions/AssetType.js";
2
+ class TransformationAssetProcessor {
3
+ constructor(container){
4
+ this.container = container;
5
+ }
6
+ async process(assetRequest, asset) {
7
+ const { original } = assetRequest.getOptions();
8
+ if (original) {
9
+ console.log("Skip transformations; original asset was requested.");
10
+ return asset;
11
+ }
12
+ const assetTypes = this.container.resolveAll(AssetType);
13
+ const match = assetTypes.find((assetType)=>assetType.canHandle(asset));
14
+ if (!match) return asset;
15
+ try {
16
+ const handler = this.container.resolve(match.getHandlerAbstraction());
17
+ return handler.handle(assetRequest, asset);
18
+ } catch {
19
+ return asset;
20
+ }
21
+ }
22
+ }
23
+ export { TransformationAssetProcessor };
24
+
25
+ //# sourceMappingURL=TransformationAssetProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/assetDelivery/transformation/TransformationAssetProcessor.js","sources":["../../../../src/features/assetDelivery/transformation/TransformationAssetProcessor.ts"],"sourcesContent":["import type { Container } from \"@webiny/di\";\nimport type { Asset } from \"~/delivery/AssetDelivery/Asset.js\";\nimport type { AssetRequest } from \"~/delivery/AssetDelivery/AssetRequest.js\";\nimport type { IAssetProcessor } from \"../abstractions.js\";\nimport { AssetType } from \"../abstractions/AssetType.js\";\n\nexport class TransformationAssetProcessor implements IAssetProcessor {\n constructor(private readonly container: Container) {}\n\n async process(assetRequest: AssetRequest, asset: Asset): Promise<Asset> {\n const { original } = assetRequest.getOptions();\n\n if (original) {\n console.log(\"Skip transformations; original asset was requested.\");\n return asset;\n }\n\n const assetTypes = this.container.resolveAll(AssetType);\n const match = assetTypes.find(assetType => assetType.canHandle(asset));\n\n if (!match) {\n return asset;\n }\n\n try {\n const handler = this.container.resolve(match.getHandlerAbstraction());\n return handler.handle(assetRequest, asset);\n } catch {\n return asset;\n }\n }\n}\n"],"names":["TransformationAssetProcessor","container","assetRequest","asset","original","console","assetTypes","AssetType","match","assetType","handler"],"mappings":";AAMO,MAAMA;IACT,YAA6BC,SAAoB,CAAE;aAAtBA,SAAS,GAATA;IAAuB;IAEpD,MAAM,QAAQC,YAA0B,EAAEC,KAAY,EAAkB;QACpE,MAAM,EAAEC,QAAQ,EAAE,GAAGF,aAAa,UAAU;QAE5C,IAAIE,UAAU;YACVC,QAAQ,GAAG,CAAC;YACZ,OAAOF;QACX;QAEA,MAAMG,aAAa,IAAI,CAAC,SAAS,CAAC,UAAU,CAACC;QAC7C,MAAMC,QAAQF,WAAW,IAAI,CAACG,CAAAA,YAAaA,UAAU,SAAS,CAACN;QAE/D,IAAI,CAACK,OACD,OAAOL;QAGX,IAAI;YACA,MAAMO,UAAU,IAAI,CAAC,SAAS,CAAC,OAAO,CAACF,MAAM,qBAAqB;YAClE,OAAOE,QAAQ,MAAM,CAACR,cAAcC;QACxC,EAAE,OAAM;YACJ,OAAOA;QACX;IACJ;AACJ"}
@@ -0,0 +1,5 @@
1
+ export { CallableContentsReader } from "./CallableContentsReader.js";
2
+ export { WidthCollection } from "../assetTypes/image/WidthCollection.js";
3
+ export { type ImageFormat, SUPPORTED_OUTPUT_FORMATS, DEFAULT_IMAGE_QUALITY, contentTypeForFormat, formatFromContentType, resolveRequestedFormat, clampQuality } from "../assetTypes/image/imageFormat.js";
4
+ export { ImageAssetType, ImageAssetTypeHandler, AssetKeyGenerator, SUPPORTED_TRANSFORMABLE_IMAGES, getImageKey, getCropSignature, getOptimizedImageKeyPrefix, getOptimizedTransformedImageKeyPrefix } from "../assetTypes/image/index.js";
5
+ export type { AssetCrop, AssetImageEdit } from "../assetTypes/image/index.js";
@@ -0,0 +1,4 @@
1
+ export { CallableContentsReader } from "./CallableContentsReader.js";
2
+ export { WidthCollection } from "../assetTypes/image/WidthCollection.js";
3
+ export { DEFAULT_IMAGE_QUALITY, SUPPORTED_OUTPUT_FORMATS, clampQuality, contentTypeForFormat, formatFromContentType, resolveRequestedFormat } from "../assetTypes/image/imageFormat.js";
4
+ export { AssetKeyGenerator, ImageAssetType, ImageAssetTypeHandler, SUPPORTED_TRANSFORMABLE_IMAGES, getCropSignature, getImageKey, getOptimizedImageKeyPrefix, getOptimizedTransformedImageKeyPrefix } from "../assetTypes/image/index.js";
@@ -0,0 +1,11 @@
1
+ import { FileAfterCreateEventHandler } from "../file/CreateFile/events.js";
2
+ import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
3
+ declare class ExtractMetadataHandlerImpl implements FileAfterCreateEventHandler.Interface {
4
+ private readonly taskService;
5
+ constructor(taskService: TaskService.Interface);
6
+ handle(event: FileAfterCreateEventHandler.Event): Promise<void>;
7
+ }
8
+ export declare const ExtractMetadataHandler: typeof ExtractMetadataHandlerImpl & {
9
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<import("../file/CreateFile/events.js").FileAfterCreateEvent>>;
10
+ };
11
+ export {};
@@ -0,0 +1,25 @@
1
+ import { FileAfterCreateEventHandler } from "../file/CreateFile/events.js";
2
+ import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
3
+ class ExtractMetadataHandlerImpl {
4
+ constructor(taskService){
5
+ this.taskService = taskService;
6
+ }
7
+ async handle(event) {
8
+ const { file } = event.payload;
9
+ await this.taskService.trigger({
10
+ definition: "fileManagerExtractMetadata",
11
+ input: {
12
+ fileId: file.id
13
+ }
14
+ });
15
+ }
16
+ }
17
+ const ExtractMetadataHandler = FileAfterCreateEventHandler.createImplementation({
18
+ implementation: ExtractMetadataHandlerImpl,
19
+ dependencies: [
20
+ TaskService
21
+ ]
22
+ });
23
+ export { ExtractMetadataHandler };
24
+
25
+ //# sourceMappingURL=ExtractMetadataHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/extractMetadata/ExtractMetadataHandler.js","sources":["../../../src/features/extractMetadata/ExtractMetadataHandler.ts"],"sourcesContent":["import { FileAfterCreateEventHandler } from \"../file/CreateFile/events.js\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport type { ExtractMetadataInput } from \"./ExtractMetadataInput.js\";\n\nclass ExtractMetadataHandlerImpl implements FileAfterCreateEventHandler.Interface {\n constructor(private readonly taskService: TaskService.Interface) {}\n\n async handle(event: FileAfterCreateEventHandler.Event): Promise<void> {\n const { file } = event.payload;\n\n await this.taskService.trigger<ExtractMetadataInput>({\n definition: \"fileManagerExtractMetadata\",\n input: {\n fileId: file.id\n }\n });\n }\n}\n\nexport const ExtractMetadataHandler = FileAfterCreateEventHandler.createImplementation({\n implementation: ExtractMetadataHandlerImpl,\n dependencies: [TaskService]\n});\n"],"names":["ExtractMetadataHandlerImpl","taskService","event","file","ExtractMetadataHandler","FileAfterCreateEventHandler","TaskService"],"mappings":";;AAIA,MAAMA;IACF,YAA6BC,WAAkC,CAAE;aAApCA,WAAW,GAAXA;IAAqC;IAElE,MAAM,OAAOC,KAAwC,EAAiB;QAClE,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAE9B,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAuB;YACjD,YAAY;YACZ,OAAO;gBACH,QAAQC,KAAK,EAAE;YACnB;QACJ;IACJ;AACJ;AAEO,MAAMC,yBAAyBC,4BAA4B,oBAAoB,CAAC;IACnF,gBAAgBL;IAChB,cAAc;QAACM;KAAY;AAC/B"}
@@ -0,0 +1,3 @@
1
+ export interface ExtractMetadataInput {
2
+ fileId: string;
3
+ }
@@ -1,12 +1,12 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { CreateFileRepository as RepositoryAbstraction } from "./abstractions.js";
3
3
  import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry";
4
- import { FileModel } from "../../../domain/file/abstractions.js";
4
+ import { FileModelProvider } from "../../../domain/file/abstractions.js";
5
5
  import type { File, FileInput } from "../../../domain/file/types.js";
6
6
  declare class CreateFileRepositoryImpl implements RepositoryAbstraction.Interface {
7
7
  private createEntry;
8
- private fileModel;
9
- constructor(createEntry: CreateEntryUseCase.Interface, fileModel: FileModel.Interface);
8
+ private fileModelProvider;
9
+ constructor(createEntry: CreateEntryUseCase.Interface, fileModelProvider: FileModelProvider.Interface);
10
10
  execute(data: FileInput): Promise<Result<File, RepositoryAbstraction.Error>>;
11
11
  }
12
12
  export declare const CreateFileRepository: typeof CreateFileRepositoryImpl & {
@@ -1,30 +1,33 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { CreateFileRepository as RepositoryAbstraction } from "./abstractions.js";
2
+ import { CreateFileRepository } from "./abstractions.js";
3
3
  import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry";
4
- import { FileModel } from "../../../domain/file/abstractions.js";
4
+ import { FileModelProvider } from "../../../domain/file/abstractions.js";
5
5
  import { EntryToFileMapper } from "../shared/EntryToFileMapper.js";
6
6
  import { FileNotAuthorizedError, FilePersistenceError } from "../../../domain/file/errors.js";
7
7
  import { FileInputToEntryInputMapper } from "../shared/FileInputToEntryInputMapper.js";
8
8
  class CreateFileRepositoryImpl {
9
- constructor(createEntry, fileModel) {
10
- this.createEntry = createEntry;
11
- this.fileModel = fileModel;
12
- }
13
- async execute(data) {
14
- const result = await this.createEntry.execute(this.fileModel, FileInputToEntryInputMapper.toEntry(data));
15
- if (result.isFail()) {
16
- if (result.error.code === "Cms/Entry/NotAuthorized") {
17
- return Result.fail(new FileNotAuthorizedError());
18
- }
19
- return Result.fail(new FilePersistenceError(result.error));
9
+ constructor(createEntry, fileModelProvider){
10
+ this.createEntry = createEntry;
11
+ this.fileModelProvider = fileModelProvider;
12
+ }
13
+ async execute(data) {
14
+ const fileModel = await this.fileModelProvider.get();
15
+ const result = await this.createEntry.execute(fileModel, FileInputToEntryInputMapper.toEntry(data));
16
+ if (result.isFail()) {
17
+ if ("Cms/Entry/NotAuthorized" === result.error.code) return Result.fail(new FileNotAuthorizedError());
18
+ return Result.fail(new FilePersistenceError(result.error));
19
+ }
20
+ const file = EntryToFileMapper.toFile(result.value);
21
+ return Result.ok(file);
20
22
  }
21
- const file = EntryToFileMapper.toFile(result.value);
22
- return Result.ok(file);
23
- }
24
23
  }
25
- export const CreateFileRepository = RepositoryAbstraction.createImplementation({
26
- implementation: CreateFileRepositoryImpl,
27
- dependencies: [CreateEntryUseCase, FileModel]
24
+ const CreateFileRepository_CreateFileRepository = CreateFileRepository.createImplementation({
25
+ implementation: CreateFileRepositoryImpl,
26
+ dependencies: [
27
+ CreateEntryUseCase,
28
+ FileModelProvider
29
+ ]
28
30
  });
31
+ export { CreateFileRepository_CreateFileRepository as CreateFileRepository };
29
32
 
30
33
  //# sourceMappingURL=CreateFileRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","CreateFileRepository","RepositoryAbstraction","CreateEntryUseCase","FileModel","EntryToFileMapper","FileNotAuthorizedError","FilePersistenceError","FileInputToEntryInputMapper","CreateFileRepositoryImpl","constructor","createEntry","fileModel","execute","data","result","toEntry","isFail","error","code","fail","file","toFile","value","ok","createImplementation","implementation","dependencies"],"sources":["CreateFileRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { CreateFileRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { CreateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry\";\nimport { FileModel } from \"~/domain/file/abstractions.js\";\nimport type { File, FileInput } from \"~/domain/file/types.js\";\nimport { EntryToFileMapper } from \"../shared/EntryToFileMapper.js\";\nimport { FileNotAuthorizedError, FilePersistenceError } from \"~/domain/file/errors.js\";\nimport { FileInputToEntryInputMapper } from \"~/features/file/shared/FileInputToEntryInputMapper.js\";\n\nclass CreateFileRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private createEntry: CreateEntryUseCase.Interface,\n private fileModel: FileModel.Interface\n ) {}\n\n async execute(data: FileInput): Promise<Result<File, RepositoryAbstraction.Error>> {\n const result = await this.createEntry.execute(\n this.fileModel,\n FileInputToEntryInputMapper.toEntry(data)\n );\n\n if (result.isFail()) {\n if (result.error.code === \"Cms/Entry/NotAuthorized\") {\n return Result.fail(new FileNotAuthorizedError());\n }\n\n return Result.fail(new FilePersistenceError(result.error));\n }\n\n const file = EntryToFileMapper.toFile(result.value);\n return Result.ok(file);\n }\n}\n\nexport const CreateFileRepository = RepositoryAbstraction.createImplementation({\n implementation: CreateFileRepositoryImpl,\n dependencies: [CreateEntryUseCase, FileModel]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,oBAAoB,IAAIC,qBAAqB;AACtD,SAASC,kBAAkB,QAAQ,4DAA4D;AAC/F,SAASC,SAAS;AAElB,SAASC,iBAAiB;AAC1B,SAASC,sBAAsB,EAAEC,oBAAoB;AACrD,SAASC,2BAA2B;AAEpC,MAAMC,wBAAwB,CAA4C;EACtEC,WAAWA,CACCC,WAAyC,EACzCC,SAA8B,EACxC;IAAA,KAFUD,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,SAA8B,GAA9BA,SAA8B;EACvC;EAEH,MAAMC,OAAOA,CAACC,IAAe,EAAsD;IAC/E,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACJ,WAAW,CAACE,OAAO,CACzC,IAAI,CAACD,SAAS,EACdJ,2BAA2B,CAACQ,OAAO,CAACF,IAAI,CAC5C,CAAC;IAED,IAAIC,MAAM,CAACE,MAAM,CAAC,CAAC,EAAE;MACjB,IAAIF,MAAM,CAACG,KAAK,CAACC,IAAI,KAAK,yBAAyB,EAAE;QACjD,OAAOnB,MAAM,CAACoB,IAAI,CAAC,IAAId,sBAAsB,CAAC,CAAC,CAAC;MACpD;MAEA,OAAON,MAAM,CAACoB,IAAI,CAAC,IAAIb,oBAAoB,CAACQ,MAAM,CAACG,KAAK,CAAC,CAAC;IAC9D;IAEA,MAAMG,IAAI,GAAGhB,iBAAiB,CAACiB,MAAM,CAACP,MAAM,CAACQ,KAAK,CAAC;IACnD,OAAOvB,MAAM,CAACwB,EAAE,CAACH,IAAI,CAAC;EAC1B;AACJ;AAEA,OAAO,MAAMpB,oBAAoB,GAAGC,qBAAqB,CAACuB,oBAAoB,CAAC;EAC3EC,cAAc,EAAEjB,wBAAwB;EACxCkB,YAAY,EAAE,CAACxB,kBAAkB,EAAEC,SAAS;AAChD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/file/CreateFile/CreateFileRepository.js","sources":["../../../../src/features/file/CreateFile/CreateFileRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { CreateFileRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { CreateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry\";\nimport { FileModelProvider } from \"~/domain/file/abstractions.js\";\nimport type { File, FileInput } from \"~/domain/file/types.js\";\nimport { EntryToFileMapper } from \"../shared/EntryToFileMapper.js\";\nimport { FileNotAuthorizedError, FilePersistenceError } from \"~/domain/file/errors.js\";\nimport { FileInputToEntryInputMapper } from \"~/features/file/shared/FileInputToEntryInputMapper.js\";\n\nclass CreateFileRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private createEntry: CreateEntryUseCase.Interface,\n private fileModelProvider: FileModelProvider.Interface\n ) {}\n\n async execute(data: FileInput): Promise<Result<File, RepositoryAbstraction.Error>> {\n const fileModel = await this.fileModelProvider.get();\n const result = await this.createEntry.execute(\n fileModel,\n FileInputToEntryInputMapper.toEntry(data)\n );\n\n if (result.isFail()) {\n if (result.error.code === \"Cms/Entry/NotAuthorized\") {\n return Result.fail(new FileNotAuthorizedError());\n }\n\n return Result.fail(new FilePersistenceError(result.error));\n }\n\n const file = EntryToFileMapper.toFile(result.value);\n return Result.ok(file);\n }\n}\n\nexport const CreateFileRepository = RepositoryAbstraction.createImplementation({\n implementation: CreateFileRepositoryImpl,\n dependencies: [CreateEntryUseCase, FileModelProvider]\n});\n"],"names":["CreateFileRepositoryImpl","createEntry","fileModelProvider","data","fileModel","result","FileInputToEntryInputMapper","Result","FileNotAuthorizedError","FilePersistenceError","file","EntryToFileMapper","CreateFileRepository","RepositoryAbstraction","CreateEntryUseCase","FileModelProvider"],"mappings":";;;;;;;AASA,MAAMA;IACF,YACYC,WAAyC,EACzCC,iBAA8C,CACxD;aAFUD,WAAW,GAAXA;aACAC,iBAAiB,GAAjBA;IACT;IAEH,MAAM,QAAQC,IAAe,EAAsD;QAC/E,MAAMC,YAAY,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG;QAClD,MAAMC,SAAS,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CACzCD,WACAE,4BAA4B,OAAO,CAACH;QAGxC,IAAIE,OAAO,MAAM,IAAI;YACjB,IAAIA,AAAsB,8BAAtBA,OAAO,KAAK,CAAC,IAAI,EACjB,OAAOE,OAAO,IAAI,CAAC,IAAIC;YAG3B,OAAOD,OAAO,IAAI,CAAC,IAAIE,qBAAqBJ,OAAO,KAAK;QAC5D;QAEA,MAAMK,OAAOC,kBAAkB,MAAM,CAACN,OAAO,KAAK;QAClD,OAAOE,OAAO,EAAE,CAACG;IACrB;AACJ;AAEO,MAAME,4CAAuBC,qBAAAA,oBAA0C,CAAC;IAC3E,gBAAgBb;IAChB,cAAc;QAACc;QAAoBC;KAAkB;AACzD"}
@@ -1,90 +1,83 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { CreateFileUseCase as UseCaseAbstraction, CreateFileRepository } from "./abstractions.js";
2
+ import { CreateFileRepository, CreateFileUseCase } from "./abstractions.js";
3
3
  import { GetSettingsUseCase } from "../../settings/GetSettings/abstractions.js";
4
4
  import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
5
5
  import { FileNotAuthorizedError, InvalidFileSizeError } from "../../../domain/file/errors.js";
6
- import { FileBeforeCreateEvent, FileAfterCreateEvent } from "./events.js";
6
+ import { FileAfterCreateEvent, FileBeforeCreateEvent } from "./events.js";
7
7
  import { FmPermissions } from "../../shared/abstractions.js";
8
8
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
9
9
  import { Identity } from "../../../domain/identity/Identity.js";
10
10
  class CreateFileUseCaseImpl {
11
- constructor(identityContext, permissions, repository, getSettings, eventPublisher) {
12
- this.identityContext = identityContext;
13
- this.permissions = permissions;
14
- this.repository = repository;
15
- this.getSettings = getSettings;
16
- this.eventPublisher = eventPublisher;
17
- }
18
- async execute(input, meta) {
19
- const hasPermission = await this.permissions.canCreate("file");
20
- if (!hasPermission) {
21
- return Result.fail(new FileNotAuthorizedError());
11
+ constructor(identityContext, permissions, repository, getSettings, eventPublisher){
12
+ this.identityContext = identityContext;
13
+ this.permissions = permissions;
14
+ this.repository = repository;
15
+ this.getSettings = getSettings;
16
+ this.eventPublisher = eventPublisher;
22
17
  }
23
- const validationResult = await this.validateInput(input);
24
- if (validationResult.isFail()) {
25
- return Result.fail(validationResult.error);
26
- }
27
- const [id] = input.key.split("/");
28
- const currentIdentity = this.identityContext.getIdentity();
29
-
30
- // Prepare file input
31
- const fileInput = {
32
- id: input.id || id,
33
- key: input.key,
34
- name: input.name,
35
- size: input.size,
36
- type: input.type,
37
- metadata: input.metadata || {},
38
- location: input.location || {
39
- folderId: "root"
40
- },
41
- tags: input.tags || [],
42
- description: input.description ?? "",
43
- extensions: meta || {},
44
- // system attributes
45
- createdOn: input.createdOn,
46
- modifiedOn: input.modifiedOn,
47
- savedOn: input.savedOn,
48
- createdBy: input.createdBy ? Identity.from(input.createdBy) : Identity.from(currentIdentity),
49
- modifiedBy: input.modifiedBy ? Identity.from(input.modifiedBy) : undefined,
50
- savedBy: input.savedBy ? Identity.from(input.savedBy) : Identity.from(currentIdentity)
51
- };
52
- await this.eventPublisher.publish(new FileBeforeCreateEvent({
53
- file: fileInput,
54
- meta
55
- }));
56
- const result = await this.repository.execute(fileInput);
57
- if (result.isFail()) {
58
- return Result.fail(result.error);
59
- }
60
- await this.eventPublisher.publish(new FileAfterCreateEvent({
61
- file: result.value,
62
- meta
63
- }));
64
- return Result.ok(result.value);
65
- }
66
- async validateInput(input) {
67
- const settingsResult = await this.getSettings.execute();
68
- if (settingsResult.isFail()) {
69
- return Result.ok();
70
- }
71
- const settings = settingsResult.value;
72
- if (settings) {
73
- // Validate file size
74
- if (input.size < settings.uploadMinFileSize || input.size > settings.uploadMaxFileSize) {
75
- return Result.fail(new InvalidFileSizeError({
76
- size: input.size,
77
- minSize: settings.uploadMinFileSize,
78
- maxSize: settings.uploadMaxFileSize
18
+ async execute(input, meta) {
19
+ const hasPermission = await this.permissions.canCreate("file");
20
+ if (!hasPermission) return Result.fail(new FileNotAuthorizedError());
21
+ const validationResult = await this.validateInput(input);
22
+ if (validationResult.isFail()) return Result.fail(validationResult.error);
23
+ const [id] = input.key.split("/");
24
+ const currentIdentity = this.identityContext.getIdentity();
25
+ const fileInput = {
26
+ id: input.id || id,
27
+ key: input.key,
28
+ name: input.name,
29
+ size: input.size,
30
+ type: input.type,
31
+ metadata: input.metadata || {},
32
+ location: input.location || {
33
+ folderId: "root"
34
+ },
35
+ tags: input.tags || [],
36
+ description: input.description ?? "",
37
+ extensions: meta || {},
38
+ createdOn: input.createdOn,
39
+ modifiedOn: input.modifiedOn,
40
+ savedOn: input.savedOn,
41
+ createdBy: input.createdBy ? Identity.from(input.createdBy) : Identity.from(currentIdentity),
42
+ modifiedBy: input.modifiedBy ? Identity.from(input.modifiedBy) : void 0,
43
+ savedBy: input.savedBy ? Identity.from(input.savedBy) : Identity.from(currentIdentity)
44
+ };
45
+ await this.eventPublisher.publish(new FileBeforeCreateEvent({
46
+ file: fileInput,
47
+ meta
48
+ }));
49
+ const result = await this.repository.execute(fileInput);
50
+ if (result.isFail()) return Result.fail(result.error);
51
+ await this.eventPublisher.publish(new FileAfterCreateEvent({
52
+ file: result.value,
53
+ meta
79
54
  }));
80
- }
55
+ return Result.ok(result.value);
56
+ }
57
+ async validateInput(input) {
58
+ const settingsResult = await this.getSettings.execute();
59
+ if (settingsResult.isFail()) return Result.ok();
60
+ const settings = settingsResult.value;
61
+ if (settings) {
62
+ if (input.size < settings.uploadMinFileSize || input.size > settings.uploadMaxFileSize) return Result.fail(new InvalidFileSizeError({
63
+ size: input.size,
64
+ minSize: settings.uploadMinFileSize,
65
+ maxSize: settings.uploadMaxFileSize
66
+ }));
67
+ }
68
+ return Result.ok();
81
69
  }
82
- return Result.ok();
83
- }
84
70
  }
85
- export const CreateFileUseCase = UseCaseAbstraction.createImplementation({
86
- implementation: CreateFileUseCaseImpl,
87
- dependencies: [IdentityContext, FmPermissions, CreateFileRepository, GetSettingsUseCase, EventPublisher]
71
+ const CreateFileUseCase_CreateFileUseCase = CreateFileUseCase.createImplementation({
72
+ implementation: CreateFileUseCaseImpl,
73
+ dependencies: [
74
+ IdentityContext,
75
+ FmPermissions,
76
+ CreateFileRepository,
77
+ GetSettingsUseCase,
78
+ EventPublisher
79
+ ]
88
80
  });
81
+ export { CreateFileUseCase_CreateFileUseCase as CreateFileUseCase };
89
82
 
90
83
  //# sourceMappingURL=CreateFileUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","CreateFileUseCase","UseCaseAbstraction","CreateFileRepository","GetSettingsUseCase","EventPublisher","FileNotAuthorizedError","InvalidFileSizeError","FileBeforeCreateEvent","FileAfterCreateEvent","FmPermissions","IdentityContext","Identity","CreateFileUseCaseImpl","constructor","identityContext","permissions","repository","getSettings","eventPublisher","execute","input","meta","hasPermission","canCreate","fail","validationResult","validateInput","isFail","error","id","key","split","currentIdentity","getIdentity","fileInput","name","size","type","metadata","location","folderId","tags","description","extensions","createdOn","modifiedOn","savedOn","createdBy","from","modifiedBy","undefined","savedBy","publish","file","result","value","ok","settingsResult","settings","uploadMinFileSize","uploadMaxFileSize","minSize","maxSize","createImplementation","implementation","dependencies"],"sources":["CreateFileUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n CreateFileUseCase as UseCaseAbstraction,\n CreateFileInput,\n CreateFileRepository\n} from \"./abstractions.js\";\nimport { GetSettingsUseCase } from \"../../settings/GetSettings/abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { File, FileInput } from \"~/domain/file/types.js\";\nimport { FileNotAuthorizedError, InvalidFileSizeError } from \"~/domain/file/errors.js\";\nimport { FileBeforeCreateEvent, FileAfterCreateEvent } from \"./events.js\";\nimport { FmPermissions } from \"~/features/shared/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { Identity } from \"~/domain/identity/Identity.js\";\n\nclass CreateFileUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private permissions: FmPermissions.Interface,\n private repository: CreateFileRepository.Interface,\n private getSettings: GetSettingsUseCase.Interface,\n private eventPublisher: EventPublisher.Interface\n ) {}\n\n async execute(\n input: CreateFileInput,\n meta?: Record<string, any>\n ): Promise<Result<File, UseCaseAbstraction.Error>> {\n const hasPermission = await this.permissions.canCreate(\"file\");\n if (!hasPermission) {\n return Result.fail(new FileNotAuthorizedError());\n }\n\n const validationResult = await this.validateInput(input);\n if (validationResult.isFail()) {\n return Result.fail(validationResult.error);\n }\n\n const [id] = input.key.split(\"/\");\n const currentIdentity = this.identityContext.getIdentity();\n\n // Prepare file input\n const fileInput: FileInput = {\n id: input.id || id,\n key: input.key,\n name: input.name,\n size: input.size,\n type: input.type,\n metadata: input.metadata || {},\n location: input.location || { folderId: \"root\" },\n tags: input.tags || [],\n description: input.description ?? \"\",\n extensions: meta || {},\n // system attributes\n createdOn: input.createdOn,\n modifiedOn: input.modifiedOn,\n savedOn: input.savedOn,\n createdBy: input.createdBy\n ? Identity.from(input.createdBy)\n : Identity.from(currentIdentity),\n modifiedBy: input.modifiedBy ? Identity.from(input.modifiedBy) : undefined,\n savedBy: input.savedBy ? Identity.from(input.savedBy) : Identity.from(currentIdentity)\n };\n\n await this.eventPublisher.publish(new FileBeforeCreateEvent({ file: fileInput, meta }));\n\n const result = await this.repository.execute(fileInput);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n await this.eventPublisher.publish(new FileAfterCreateEvent({ file: result.value, meta }));\n\n return Result.ok(result.value);\n }\n\n private async validateInput(\n input: CreateFileInput\n ): Promise<Result<void, InvalidFileSizeError>> {\n const settingsResult = await this.getSettings.execute();\n\n if (settingsResult.isFail()) {\n return Result.ok();\n }\n\n const settings = settingsResult.value;\n\n if (settings) {\n // Validate file size\n if (\n input.size < settings.uploadMinFileSize ||\n input.size > settings.uploadMaxFileSize\n ) {\n return Result.fail(\n new InvalidFileSizeError({\n size: input.size,\n minSize: settings.uploadMinFileSize,\n maxSize: settings.uploadMaxFileSize\n })\n );\n }\n }\n\n return Result.ok();\n }\n}\n\nexport const CreateFileUseCase = UseCaseAbstraction.createImplementation({\n implementation: CreateFileUseCaseImpl,\n dependencies: [\n IdentityContext,\n FmPermissions,\n CreateFileRepository,\n GetSettingsUseCase,\n EventPublisher\n ]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,iBAAiB,IAAIC,kBAAkB,EAEvCC,oBAAoB;AAExB,SAASC,kBAAkB;AAC3B,SAASC,cAAc,QAAQ,mDAAmD;AAElF,SAASC,sBAAsB,EAAEC,oBAAoB;AACrD,SAASC,qBAAqB,EAAEC,oBAAoB;AACpD,SAASC,aAAa;AACtB,SAASC,eAAe,QAAQ,6DAA6D;AAC7F,SAASC,QAAQ;AAEjB,MAAMC,qBAAqB,CAAyC;EAChEC,WAAWA,CACCC,eAA0C,EAC1CC,WAAoC,EACpCC,UAA0C,EAC1CC,WAAyC,EACzCC,cAAwC,EAClD;IAAA,KALUJ,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,UAA0C,GAA1CA,UAA0C;IAAA,KAC1CC,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,cAAwC,GAAxCA,cAAwC;EACjD;EAEH,MAAMC,OAAOA,CACTC,KAAsB,EACtBC,IAA0B,EACqB;IAC/C,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACP,WAAW,CAACQ,SAAS,CAAC,MAAM,CAAC;IAC9D,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOvB,MAAM,CAACyB,IAAI,CAAC,IAAInB,sBAAsB,CAAC,CAAC,CAAC;IACpD;IAEA,MAAMoB,gBAAgB,GAAG,MAAM,IAAI,CAACC,aAAa,CAACN,KAAK,CAAC;IACxD,IAAIK,gBAAgB,CAACE,MAAM,CAAC,CAAC,EAAE;MAC3B,OAAO5B,MAAM,CAACyB,IAAI,CAACC,gBAAgB,CAACG,KAAK,CAAC;IAC9C;IAEA,MAAM,CAACC,EAAE,CAAC,GAAGT,KAAK,CAACU,GAAG,CAACC,KAAK,CAAC,GAAG,CAAC;IACjC,MAAMC,eAAe,GAAG,IAAI,CAAClB,eAAe,CAACmB,WAAW,CAAC,CAAC;;IAE1D;IACA,MAAMC,SAAoB,GAAG;MACzBL,EAAE,EAAET,KAAK,CAACS,EAAE,IAAIA,EAAE;MAClBC,GAAG,EAAEV,KAAK,CAACU,GAAG;MACdK,IAAI,EAAEf,KAAK,CAACe,IAAI;MAChBC,IAAI,EAAEhB,KAAK,CAACgB,IAAI;MAChBC,IAAI,EAAEjB,KAAK,CAACiB,IAAI;MAChBC,QAAQ,EAAElB,KAAK,CAACkB,QAAQ,IAAI,CAAC,CAAC;MAC9BC,QAAQ,EAAEnB,KAAK,CAACmB,QAAQ,IAAI;QAAEC,QAAQ,EAAE;MAAO,CAAC;MAChDC,IAAI,EAAErB,KAAK,CAACqB,IAAI,IAAI,EAAE;MACtBC,WAAW,EAAEtB,KAAK,CAACsB,WAAW,IAAI,EAAE;MACpCC,UAAU,EAAEtB,IAAI,IAAI,CAAC,CAAC;MACtB;MACAuB,SAAS,EAAExB,KAAK,CAACwB,SAAS;MAC1BC,UAAU,EAAEzB,KAAK,CAACyB,UAAU;MAC5BC,OAAO,EAAE1B,KAAK,CAAC0B,OAAO;MACtBC,SAAS,EAAE3B,KAAK,CAAC2B,SAAS,GACpBpC,QAAQ,CAACqC,IAAI,CAAC5B,KAAK,CAAC2B,SAAS,CAAC,GAC9BpC,QAAQ,CAACqC,IAAI,CAAChB,eAAe,CAAC;MACpCiB,UAAU,EAAE7B,KAAK,CAAC6B,UAAU,GAAGtC,QAAQ,CAACqC,IAAI,CAAC5B,KAAK,CAAC6B,UAAU,CAAC,GAAGC,SAAS;MAC1EC,OAAO,EAAE/B,KAAK,CAAC+B,OAAO,GAAGxC,QAAQ,CAACqC,IAAI,CAAC5B,KAAK,CAAC+B,OAAO,CAAC,GAAGxC,QAAQ,CAACqC,IAAI,CAAChB,eAAe;IACzF,CAAC;IAED,MAAM,IAAI,CAACd,cAAc,CAACkC,OAAO,CAAC,IAAI7C,qBAAqB,CAAC;MAAE8C,IAAI,EAAEnB,SAAS;MAAEb;IAAK,CAAC,CAAC,CAAC;IAEvF,MAAMiC,MAAM,GAAG,MAAM,IAAI,CAACtC,UAAU,CAACG,OAAO,CAACe,SAAS,CAAC;IAEvD,IAAIoB,MAAM,CAAC3B,MAAM,CAAC,CAAC,EAAE;MACjB,OAAO5B,MAAM,CAACyB,IAAI,CAAC8B,MAAM,CAAC1B,KAAK,CAAC;IACpC;IAEA,MAAM,IAAI,CAACV,cAAc,CAACkC,OAAO,CAAC,IAAI5C,oBAAoB,CAAC;MAAE6C,IAAI,EAAEC,MAAM,CAACC,KAAK;MAAElC;IAAK,CAAC,CAAC,CAAC;IAEzF,OAAOtB,MAAM,CAACyD,EAAE,CAACF,MAAM,CAACC,KAAK,CAAC;EAClC;EAEA,MAAc7B,aAAaA,CACvBN,KAAsB,EACqB;IAC3C,MAAMqC,cAAc,GAAG,MAAM,IAAI,CAACxC,WAAW,CAACE,OAAO,CAAC,CAAC;IAEvD,IAAIsC,cAAc,CAAC9B,MAAM,CAAC,CAAC,EAAE;MACzB,OAAO5B,MAAM,CAACyD,EAAE,CAAC,CAAC;IACtB;IAEA,MAAME,QAAQ,GAAGD,cAAc,CAACF,KAAK;IAErC,IAAIG,QAAQ,EAAE;MACV;MACA,IACItC,KAAK,CAACgB,IAAI,GAAGsB,QAAQ,CAACC,iBAAiB,IACvCvC,KAAK,CAACgB,IAAI,GAAGsB,QAAQ,CAACE,iBAAiB,EACzC;QACE,OAAO7D,MAAM,CAACyB,IAAI,CACd,IAAIlB,oBAAoB,CAAC;UACrB8B,IAAI,EAAEhB,KAAK,CAACgB,IAAI;UAChByB,OAAO,EAAEH,QAAQ,CAACC,iBAAiB;UACnCG,OAAO,EAAEJ,QAAQ,CAACE;QACtB,CAAC,CACL,CAAC;MACL;IACJ;IAEA,OAAO7D,MAAM,CAACyD,EAAE,CAAC,CAAC;EACtB;AACJ;AAEA,OAAO,MAAMxD,iBAAiB,GAAGC,kBAAkB,CAAC8D,oBAAoB,CAAC;EACrEC,cAAc,EAAEpD,qBAAqB;EACrCqD,YAAY,EAAE,CACVvD,eAAe,EACfD,aAAa,EACbP,oBAAoB,EACpBC,kBAAkB,EAClBC,cAAc;AAEtB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/file/CreateFile/CreateFileUseCase.js","sources":["../../../../src/features/file/CreateFile/CreateFileUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n CreateFileUseCase as UseCaseAbstraction,\n CreateFileInput,\n CreateFileRepository\n} from \"./abstractions.js\";\nimport { GetSettingsUseCase } from \"../../settings/GetSettings/abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { File, FileInput } from \"~/domain/file/types.js\";\nimport { FileNotAuthorizedError, InvalidFileSizeError } from \"~/domain/file/errors.js\";\nimport { FileBeforeCreateEvent, FileAfterCreateEvent } from \"./events.js\";\nimport { FmPermissions } from \"~/features/shared/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { Identity } from \"~/domain/identity/Identity.js\";\n\nclass CreateFileUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private permissions: FmPermissions.Interface,\n private repository: CreateFileRepository.Interface,\n private getSettings: GetSettingsUseCase.Interface,\n private eventPublisher: EventPublisher.Interface\n ) {}\n\n async execute(\n input: CreateFileInput,\n meta?: Record<string, any>\n ): Promise<Result<File, UseCaseAbstraction.Error>> {\n const hasPermission = await this.permissions.canCreate(\"file\");\n if (!hasPermission) {\n return Result.fail(new FileNotAuthorizedError());\n }\n\n const validationResult = await this.validateInput(input);\n if (validationResult.isFail()) {\n return Result.fail(validationResult.error);\n }\n\n const [id] = input.key.split(\"/\");\n const currentIdentity = this.identityContext.getIdentity();\n\n // Prepare file input\n const fileInput: FileInput = {\n id: input.id || id,\n key: input.key,\n name: input.name,\n size: input.size,\n type: input.type,\n metadata: input.metadata || {},\n location: input.location || { folderId: \"root\" },\n tags: input.tags || [],\n description: input.description ?? \"\",\n extensions: meta || {},\n // system attributes\n createdOn: input.createdOn,\n modifiedOn: input.modifiedOn,\n savedOn: input.savedOn,\n createdBy: input.createdBy\n ? Identity.from(input.createdBy)\n : Identity.from(currentIdentity),\n modifiedBy: input.modifiedBy ? Identity.from(input.modifiedBy) : undefined,\n savedBy: input.savedBy ? Identity.from(input.savedBy) : Identity.from(currentIdentity)\n };\n\n await this.eventPublisher.publish(new FileBeforeCreateEvent({ file: fileInput, meta }));\n\n const result = await this.repository.execute(fileInput);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n await this.eventPublisher.publish(new FileAfterCreateEvent({ file: result.value, meta }));\n\n return Result.ok(result.value);\n }\n\n private async validateInput(\n input: CreateFileInput\n ): Promise<Result<void, InvalidFileSizeError>> {\n const settingsResult = await this.getSettings.execute();\n\n if (settingsResult.isFail()) {\n return Result.ok();\n }\n\n const settings = settingsResult.value;\n\n if (settings) {\n // Validate file size\n if (\n input.size < settings.uploadMinFileSize ||\n input.size > settings.uploadMaxFileSize\n ) {\n return Result.fail(\n new InvalidFileSizeError({\n size: input.size,\n minSize: settings.uploadMinFileSize,\n maxSize: settings.uploadMaxFileSize\n })\n );\n }\n }\n\n return Result.ok();\n }\n}\n\nexport const CreateFileUseCase = UseCaseAbstraction.createImplementation({\n implementation: CreateFileUseCaseImpl,\n dependencies: [\n IdentityContext,\n FmPermissions,\n CreateFileRepository,\n GetSettingsUseCase,\n EventPublisher\n ]\n});\n"],"names":["CreateFileUseCaseImpl","identityContext","permissions","repository","getSettings","eventPublisher","input","meta","hasPermission","Result","FileNotAuthorizedError","validationResult","id","currentIdentity","fileInput","Identity","undefined","FileBeforeCreateEvent","result","FileAfterCreateEvent","settingsResult","settings","InvalidFileSizeError","CreateFileUseCase","UseCaseAbstraction","IdentityContext","FmPermissions","CreateFileRepository","GetSettingsUseCase","EventPublisher"],"mappings":";;;;;;;;;AAeA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,WAAoC,EACpCC,UAA0C,EAC1CC,WAAyC,EACzCC,cAAwC,CAClD;aALUJ,eAAe,GAAfA;aACAC,WAAW,GAAXA;aACAC,UAAU,GAAVA;aACAC,WAAW,GAAXA;aACAC,cAAc,GAAdA;IACT;IAEH,MAAM,QACFC,KAAsB,EACtBC,IAA0B,EACqB;QAC/C,MAAMC,gBAAgB,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QACvD,IAAI,CAACA,eACD,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAG3B,MAAMC,mBAAmB,MAAM,IAAI,CAAC,aAAa,CAACL;QAClD,IAAIK,iBAAiB,MAAM,IACvB,OAAOF,OAAO,IAAI,CAACE,iBAAiB,KAAK;QAG7C,MAAM,CAACC,GAAG,GAAGN,MAAM,GAAG,CAAC,KAAK,CAAC;QAC7B,MAAMO,kBAAkB,IAAI,CAAC,eAAe,CAAC,WAAW;QAGxD,MAAMC,YAAuB;YACzB,IAAIR,MAAM,EAAE,IAAIM;YAChB,KAAKN,MAAM,GAAG;YACd,MAAMA,MAAM,IAAI;YAChB,MAAMA,MAAM,IAAI;YAChB,MAAMA,MAAM,IAAI;YAChB,UAAUA,MAAM,QAAQ,IAAI,CAAC;YAC7B,UAAUA,MAAM,QAAQ,IAAI;gBAAE,UAAU;YAAO;YAC/C,MAAMA,MAAM,IAAI,IAAI,EAAE;YACtB,aAAaA,MAAM,WAAW,IAAI;YAClC,YAAYC,QAAQ,CAAC;YAErB,WAAWD,MAAM,SAAS;YAC1B,YAAYA,MAAM,UAAU;YAC5B,SAASA,MAAM,OAAO;YACtB,WAAWA,MAAM,SAAS,GACpBS,SAAS,IAAI,CAACT,MAAM,SAAS,IAC7BS,SAAS,IAAI,CAACF;YACpB,YAAYP,MAAM,UAAU,GAAGS,SAAS,IAAI,CAACT,MAAM,UAAU,IAAIU;YACjE,SAASV,MAAM,OAAO,GAAGS,SAAS,IAAI,CAACT,MAAM,OAAO,IAAIS,SAAS,IAAI,CAACF;QAC1E;QAEA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAII,sBAAsB;YAAE,MAAMH;YAAWP;QAAK;QAEpF,MAAMW,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACJ;QAE7C,IAAII,OAAO,MAAM,IACb,OAAOT,OAAO,IAAI,CAACS,OAAO,KAAK;QAGnC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAIC,qBAAqB;YAAE,MAAMD,OAAO,KAAK;YAAEX;QAAK;QAEtF,OAAOE,OAAO,EAAE,CAACS,OAAO,KAAK;IACjC;IAEA,MAAc,cACVZ,KAAsB,EACqB;QAC3C,MAAMc,iBAAiB,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO;QAErD,IAAIA,eAAe,MAAM,IACrB,OAAOX,OAAO,EAAE;QAGpB,MAAMY,WAAWD,eAAe,KAAK;QAErC,IAAIC,UAEA;YAAA,IACIf,MAAM,IAAI,GAAGe,SAAS,iBAAiB,IACvCf,MAAM,IAAI,GAAGe,SAAS,iBAAiB,EAEvC,OAAOZ,OAAO,IAAI,CACd,IAAIa,qBAAqB;gBACrB,MAAMhB,MAAM,IAAI;gBAChB,SAASe,SAAS,iBAAiB;gBACnC,SAASA,SAAS,iBAAiB;YACvC;QAER;QAGJ,OAAOZ,OAAO,EAAE;IACpB;AACJ;AAEO,MAAMc,sCAAoBC,kBAAAA,oBAAuC,CAAC;IACrE,gBAAgBxB;IAChB,cAAc;QACVyB;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
@@ -1,17 +1,6 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
-
3
- /**
4
- * CreateFile repository interface
5
- */
6
-
7
- /** Persist a newly created file. */
8
- export const CreateFileRepository = createAbstraction("CreateFileRepository");
9
-
10
- /**
11
- * CreateFile use case interface
12
- */
13
-
14
- /** Upload and create a new file. */
15
- export const CreateFileUseCase = createAbstraction("CreateFileUseCase");
2
+ const CreateFileRepository = createAbstraction("CreateFileRepository");
3
+ const CreateFileUseCase = createAbstraction("CreateFileUseCase");
4
+ export { CreateFileRepository, CreateFileUseCase };
16
5
 
17
6
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","CreateFileRepository","CreateFileUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { CreatedBy, File, FileInput } from \"~/domain/file/types.js\";\nimport {\n type FilePersistenceError,\n type InvalidFileSizeError,\n type FileAlreadyExistsError,\n FileNotAuthorizedError\n} from \"~/domain/file/errors.js\";\n\nexport interface CreateFileInput {\n id?: string;\n key: string;\n size: number;\n type: string;\n name: string;\n metadata?: Record<string, any>;\n extensions?: Record<string, any>;\n tags?: string[];\n description?: string;\n location?: { folderId: string };\n // System attributes\n createdOn?: string;\n createdBy?: CreatedBy;\n modifiedOn?: string;\n modifiedBy?: CreatedBy;\n savedOn?: string;\n savedBy?: CreatedBy;\n}\n\n/**\n * CreateFile repository interface\n */\nexport interface ICreateFileRepository {\n execute(data: FileInput): Promise<Result<File, RepositoryError>>;\n}\n\nexport interface ICreateFileRepositoryErrors {\n notAuthorized: FileNotAuthorizedError;\n persistence: FilePersistenceError;\n}\n\ntype RepositoryError = ICreateFileRepositoryErrors[keyof ICreateFileRepositoryErrors];\n\n/** Persist a newly created file. */\nexport const CreateFileRepository =\n createAbstraction<ICreateFileRepository>(\"CreateFileRepository\");\n\nexport namespace CreateFileRepository {\n export type Interface = ICreateFileRepository;\n export type Error = RepositoryError;\n}\n\n/**\n * CreateFile use case interface\n */\nexport interface ICreateFileUseCase {\n execute(\n input: CreateFileInput,\n meta?: Record<string, any>\n ): Promise<Result<File, UseCaseError>>;\n}\n\nexport interface ICreateFileUseCaseErrors {\n notAuthorized: FileNotAuthorizedError;\n persistence: FilePersistenceError;\n invalidSize: InvalidFileSizeError;\n alreadyExists: FileAlreadyExistsError;\n}\n\ntype UseCaseError = ICreateFileUseCaseErrors[keyof ICreateFileUseCaseErrors];\n\n/** Upload and create a new file. */\nexport const CreateFileUseCase = createAbstraction<ICreateFileUseCase>(\"CreateFileUseCase\");\n\nexport namespace CreateFileUseCase {\n export type Interface = ICreateFileUseCase;\n export type Error = UseCaseError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AA8BvD;AACA;AACA;;AAYA;AACA,OAAO,MAAMC,oBAAoB,GAC7BD,iBAAiB,CAAwB,sBAAsB,CAAC;;AAOpE;AACA;AACA;;AAiBA;AACA,OAAO,MAAME,iBAAiB,GAAGF,iBAAiB,CAAqB,mBAAmB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/file/CreateFile/abstractions.js","sources":["../../../../src/features/file/CreateFile/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { CreatedBy, File, FileInput } from \"~/domain/file/types.js\";\nimport {\n type FilePersistenceError,\n type InvalidFileSizeError,\n type FileAlreadyExistsError,\n FileNotAuthorizedError\n} from \"~/domain/file/errors.js\";\n\nexport interface CreateFileInput {\n id?: string;\n key: string;\n size: number;\n type: string;\n name: string;\n metadata?: Record<string, any>;\n extensions?: Record<string, any>;\n tags?: string[];\n description?: string;\n location?: { folderId: string };\n // System attributes\n createdOn?: string;\n createdBy?: CreatedBy;\n modifiedOn?: string;\n modifiedBy?: CreatedBy;\n savedOn?: string;\n savedBy?: CreatedBy;\n}\n\n/**\n * CreateFile repository interface\n */\nexport interface ICreateFileRepository {\n execute(data: FileInput): Promise<Result<File, RepositoryError>>;\n}\n\nexport interface ICreateFileRepositoryErrors {\n notAuthorized: FileNotAuthorizedError;\n persistence: FilePersistenceError;\n}\n\ntype RepositoryError = ICreateFileRepositoryErrors[keyof ICreateFileRepositoryErrors];\n\n/** Persist a newly created file. */\nexport const CreateFileRepository =\n createAbstraction<ICreateFileRepository>(\"CreateFileRepository\");\n\nexport namespace CreateFileRepository {\n export type Interface = ICreateFileRepository;\n export type Error = RepositoryError;\n}\n\n/**\n * CreateFile use case interface\n */\nexport interface ICreateFileUseCase {\n execute(\n input: CreateFileInput,\n meta?: Record<string, any>\n ): Promise<Result<File, UseCaseError>>;\n}\n\nexport interface ICreateFileUseCaseErrors {\n notAuthorized: FileNotAuthorizedError;\n persistence: FilePersistenceError;\n invalidSize: InvalidFileSizeError;\n alreadyExists: FileAlreadyExistsError;\n}\n\ntype UseCaseError = ICreateFileUseCaseErrors[keyof ICreateFileUseCaseErrors];\n\n/** Upload and create a new file. */\nexport const CreateFileUseCase = createAbstraction<ICreateFileUseCase>(\"CreateFileUseCase\");\n\nexport namespace CreateFileUseCase {\n export type Interface = ICreateFileUseCase;\n export type Error = UseCaseError;\n}\n"],"names":["CreateFileRepository","createAbstraction","CreateFileUseCase"],"mappings":";AA6CO,MAAMA,uBACTC,kBAAyC;AA2BtC,MAAMC,oBAAoBD,kBAAsC"}