@webiny/api-file-manager 0.0.0-unstable.de38392959 → 0.0.0-unstable.df7a8bb475

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 (414) hide show
  1. package/README.md +7 -13
  2. package/contants.js +1 -8
  3. package/contants.js.map +1 -1
  4. package/delivery/AssetDelivery/Asset.d.ts +6 -8
  5. package/delivery/AssetDelivery/Asset.js +13 -18
  6. package/delivery/AssetDelivery/Asset.js.map +1 -1
  7. package/delivery/AssetDelivery/AssetDeliveryConfig.d.ts +17 -15
  8. package/delivery/AssetDelivery/AssetDeliveryConfig.js +18 -26
  9. package/delivery/AssetDelivery/AssetDeliveryConfig.js.map +1 -1
  10. package/delivery/AssetDelivery/AssetRequest.d.ts +3 -2
  11. package/delivery/AssetDelivery/AssetRequest.js +1 -8
  12. package/delivery/AssetDelivery/AssetRequest.js.map +1 -1
  13. package/delivery/AssetDelivery/FilesAssetRequestResolver.d.ts +3 -3
  14. package/delivery/AssetDelivery/FilesAssetRequestResolver.js +11 -14
  15. package/delivery/AssetDelivery/FilesAssetRequestResolver.js.map +1 -1
  16. package/delivery/AssetDelivery/NullAssetOutputStrategy.d.ts +1 -1
  17. package/delivery/AssetDelivery/NullAssetOutputStrategy.js +3 -10
  18. package/delivery/AssetDelivery/NullAssetOutputStrategy.js.map +1 -1
  19. package/delivery/AssetDelivery/NullAssetReply.d.ts +1 -1
  20. package/delivery/AssetDelivery/NullAssetReply.js +2 -9
  21. package/delivery/AssetDelivery/NullAssetReply.js.map +1 -1
  22. package/delivery/AssetDelivery/NullAssetResolver.d.ts +2 -2
  23. package/delivery/AssetDelivery/NullAssetResolver.js +1 -8
  24. package/delivery/AssetDelivery/NullAssetResolver.js.map +1 -1
  25. package/delivery/AssetDelivery/NullRequestResolver.d.ts +1 -1
  26. package/delivery/AssetDelivery/NullRequestResolver.js +1 -8
  27. package/delivery/AssetDelivery/NullRequestResolver.js.map +1 -1
  28. package/delivery/AssetDelivery/SetCacheControlHeaders.d.ts +2 -2
  29. package/delivery/AssetDelivery/SetCacheControlHeaders.js +1 -8
  30. package/delivery/AssetDelivery/SetCacheControlHeaders.js.map +1 -1
  31. package/delivery/AssetDelivery/SetResponseHeaders.d.ts +4 -4
  32. package/delivery/AssetDelivery/SetResponseHeaders.js +1 -8
  33. package/delivery/AssetDelivery/SetResponseHeaders.js.map +1 -1
  34. package/delivery/AssetDelivery/abstractions/AssetContentsReader.d.ts +1 -2
  35. package/delivery/AssetDelivery/abstractions/AssetContentsReader.js +1 -5
  36. package/delivery/AssetDelivery/abstractions/AssetContentsReader.js.map +1 -1
  37. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.d.ts +1 -1
  38. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js +1 -5
  39. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js.map +1 -1
  40. package/delivery/AssetDelivery/abstractions/AssetProcessor.d.ts +1 -1
  41. package/delivery/AssetDelivery/abstractions/AssetProcessor.js +1 -5
  42. package/delivery/AssetDelivery/abstractions/AssetProcessor.js.map +1 -1
  43. package/delivery/AssetDelivery/abstractions/AssetReply.js +3 -10
  44. package/delivery/AssetDelivery/abstractions/AssetReply.js.map +1 -1
  45. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.d.ts +2 -2
  46. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js +1 -5
  47. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js.map +1 -1
  48. package/delivery/AssetDelivery/abstractions/AssetResolver.d.ts +1 -1
  49. package/delivery/AssetDelivery/abstractions/AssetResolver.js +1 -5
  50. package/delivery/AssetDelivery/abstractions/AssetResolver.js.map +1 -1
  51. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.d.ts +1 -1
  52. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js +1 -5
  53. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js.map +1 -1
  54. package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.d.ts +1 -1
  55. package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js +1 -8
  56. package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js.map +1 -1
  57. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.d.ts +1 -1
  58. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js +1 -5
  59. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js.map +1 -1
  60. package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.d.ts +1 -1
  61. package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js +5 -12
  62. package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js.map +1 -1
  63. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.d.ts +1 -1
  64. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js +3 -10
  65. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js.map +1 -1
  66. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.d.ts +4 -3
  67. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js +3 -11
  68. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js.map +1 -1
  69. package/delivery/AssetDelivery/privateFiles/PrivateCache.d.ts +5 -3
  70. package/delivery/AssetDelivery/privateFiles/PrivateCache.js +17 -14
  71. package/delivery/AssetDelivery/privateFiles/PrivateCache.js.map +1 -1
  72. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.d.ts +3 -2
  73. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js +3 -10
  74. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js.map +1 -1
  75. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.d.ts +4 -4
  76. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js +22 -21
  77. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +1 -1
  78. package/delivery/AssetDelivery/privateFiles/PublicCache.d.ts +5 -3
  79. package/delivery/AssetDelivery/privateFiles/PublicCache.js +17 -14
  80. package/delivery/AssetDelivery/privateFiles/PublicCache.js.map +1 -1
  81. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.d.ts +2 -1
  82. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js +5 -12
  83. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js.map +1 -1
  84. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.d.ts +2 -1
  85. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js +5 -12
  86. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js.map +1 -1
  87. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.d.ts +1 -1
  88. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js +1 -8
  89. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js.map +1 -1
  90. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.d.ts +1 -1
  91. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js +1 -8
  92. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js.map +1 -1
  93. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.d.ts +1 -1
  94. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js +2 -8
  95. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js.map +1 -1
  96. package/delivery/index.d.ts +16 -17
  97. package/delivery/index.js +10 -192
  98. package/delivery/index.js.map +1 -1
  99. package/delivery/setupAssetDelivery.d.ts +2 -6
  100. package/delivery/setupAssetDelivery.js +23 -35
  101. package/delivery/setupAssetDelivery.js.map +1 -1
  102. package/domain/file/abstractions.d.ts +9 -0
  103. package/domain/file/abstractions.js +8 -0
  104. package/domain/file/abstractions.js.map +1 -0
  105. package/domain/file/errors.d.ts +59 -0
  106. package/domain/file/errors.js +89 -0
  107. package/domain/file/errors.js.map +1 -0
  108. package/domain/file/file.model.d.ts +12 -0
  109. package/domain/file/file.model.js +56 -0
  110. package/domain/file/file.model.js.map +1 -0
  111. package/domain/file/types.d.ts +51 -0
  112. package/domain/file/types.js +3 -0
  113. package/domain/file/types.js.map +1 -0
  114. package/domain/identity/Identity.d.ts +9 -0
  115. package/domain/identity/Identity.js +11 -0
  116. package/domain/identity/Identity.js.map +1 -0
  117. package/domain/settings/constants.d.ts +1 -0
  118. package/domain/settings/constants.js +3 -0
  119. package/domain/settings/constants.js.map +1 -0
  120. package/domain/settings/errors.d.ts +18 -0
  121. package/domain/settings/errors.js +30 -0
  122. package/domain/settings/errors.js.map +1 -0
  123. package/domain/settings/types.d.ts +10 -0
  124. package/domain/settings/types.js +3 -0
  125. package/domain/settings/types.js.map +1 -0
  126. package/domain/settings/validation.d.ts +14 -0
  127. package/domain/settings/validation.js +36 -0
  128. package/domain/settings/validation.js.map +1 -0
  129. package/features/FileManagerFeature.d.ts +1 -0
  130. package/features/FileManagerFeature.js +28 -0
  131. package/features/FileManagerFeature.js.map +1 -0
  132. package/features/file/CreateFile/CreateFileRepository.d.ts +15 -0
  133. package/features/file/CreateFile/CreateFileRepository.js +30 -0
  134. package/features/file/CreateFile/CreateFileRepository.js.map +1 -0
  135. package/features/file/CreateFile/CreateFileUseCase.d.ts +21 -0
  136. package/features/file/CreateFile/CreateFileUseCase.js +91 -0
  137. package/features/file/CreateFile/CreateFileUseCase.js.map +1 -0
  138. package/features/file/CreateFile/abstractions.d.ts +57 -0
  139. package/features/file/CreateFile/abstractions.js +15 -0
  140. package/features/file/CreateFile/abstractions.js.map +1 -0
  141. package/features/file/CreateFile/events.d.ts +29 -0
  142. package/features/file/CreateFile/events.js +28 -0
  143. package/features/file/CreateFile/events.js.map +1 -0
  144. package/features/file/CreateFile/feature.d.ts +1 -0
  145. package/features/file/CreateFile/feature.js +12 -0
  146. package/features/file/CreateFile/feature.js.map +1 -0
  147. package/features/file/CreateFile/index.d.ts +2 -0
  148. package/features/file/CreateFile/index.js +4 -0
  149. package/features/file/CreateFile/index.js.map +1 -0
  150. package/features/file/CreateFilesInBatch/CreateFilesInBatchRepository.d.ts +13 -0
  151. package/features/file/CreateFilesInBatch/CreateFilesInBatchRepository.js +24 -0
  152. package/features/file/CreateFilesInBatch/CreateFilesInBatchRepository.js.map +1 -0
  153. package/features/file/CreateFilesInBatch/CreateFilesInBatchUseCase.d.ts +19 -0
  154. package/features/file/CreateFilesInBatch/CreateFilesInBatchUseCase.js +87 -0
  155. package/features/file/CreateFilesInBatch/CreateFilesInBatchUseCase.js.map +1 -0
  156. package/features/file/CreateFilesInBatch/abstractions.d.ts +40 -0
  157. package/features/file/CreateFilesInBatch/abstractions.js +15 -0
  158. package/features/file/CreateFilesInBatch/abstractions.js.map +1 -0
  159. package/features/file/CreateFilesInBatch/events.d.ts +29 -0
  160. package/features/file/CreateFilesInBatch/events.js +28 -0
  161. package/features/file/CreateFilesInBatch/events.js.map +1 -0
  162. package/features/file/CreateFilesInBatch/feature.d.ts +1 -0
  163. package/features/file/CreateFilesInBatch/feature.js +12 -0
  164. package/features/file/CreateFilesInBatch/feature.js.map +1 -0
  165. package/features/file/CreateFilesInBatch/index.d.ts +1 -0
  166. package/features/file/CreateFilesInBatch/index.js +3 -0
  167. package/features/file/CreateFilesInBatch/index.js.map +1 -0
  168. package/features/file/DeleteFile/DeleteFileRepository.d.ts +15 -0
  169. package/features/file/DeleteFile/DeleteFileRepository.js +30 -0
  170. package/features/file/DeleteFile/DeleteFileRepository.js.map +1 -0
  171. package/features/file/DeleteFile/DeleteFileUseCase.d.ts +17 -0
  172. package/features/file/DeleteFile/DeleteFileUseCase.js +48 -0
  173. package/features/file/DeleteFile/DeleteFileUseCase.js.map +1 -0
  174. package/features/file/DeleteFile/abstractions.d.ts +37 -0
  175. package/features/file/DeleteFile/abstractions.js +15 -0
  176. package/features/file/DeleteFile/abstractions.js.map +1 -0
  177. package/features/file/DeleteFile/events.d.ts +27 -0
  178. package/features/file/DeleteFile/events.js +28 -0
  179. package/features/file/DeleteFile/events.js.map +1 -0
  180. package/features/file/DeleteFile/feature.d.ts +1 -0
  181. package/features/file/DeleteFile/feature.js +12 -0
  182. package/features/file/DeleteFile/feature.js.map +1 -0
  183. package/features/file/DeleteFile/index.d.ts +2 -0
  184. package/features/file/DeleteFile/index.js +4 -0
  185. package/features/file/DeleteFile/index.js.map +1 -0
  186. package/features/file/FileUrlGenerator/abstractions.d.ts +8 -0
  187. package/features/file/FileUrlGenerator/abstractions.js +4 -0
  188. package/features/file/FileUrlGenerator/abstractions.js.map +1 -0
  189. package/features/file/GetFile/GetFileRepository.d.ts +15 -0
  190. package/features/file/GetFile/GetFileRepository.js +33 -0
  191. package/features/file/GetFile/GetFileRepository.js.map +1 -0
  192. package/features/file/GetFile/GetFileUseCase.d.ts +14 -0
  193. package/features/file/GetFile/GetFileUseCase.js +39 -0
  194. package/features/file/GetFile/GetFileUseCase.js.map +1 -0
  195. package/features/file/GetFile/abstractions.d.ts +38 -0
  196. package/features/file/GetFile/abstractions.js +15 -0
  197. package/features/file/GetFile/abstractions.js.map +1 -0
  198. package/features/file/GetFile/feature.d.ts +1 -0
  199. package/features/file/GetFile/feature.js +12 -0
  200. package/features/file/GetFile/feature.js.map +1 -0
  201. package/features/file/GetFile/index.d.ts +1 -0
  202. package/features/file/GetFile/index.js +3 -0
  203. package/features/file/GetFile/index.js.map +1 -0
  204. package/features/file/ListFiles/ListFilesRepository.d.ts +18 -0
  205. package/features/file/ListFiles/ListFilesRepository.js +51 -0
  206. package/features/file/ListFiles/ListFilesRepository.js.map +1 -0
  207. package/features/file/ListFiles/ListFilesUseCase.d.ts +15 -0
  208. package/features/file/ListFiles/ListFilesUseCase.js +48 -0
  209. package/features/file/ListFiles/ListFilesUseCase.js.map +1 -0
  210. package/features/file/ListFiles/abstractions.d.ts +47 -0
  211. package/features/file/ListFiles/abstractions.js +15 -0
  212. package/features/file/ListFiles/abstractions.js.map +1 -0
  213. package/features/file/ListFiles/feature.d.ts +1 -0
  214. package/features/file/ListFiles/feature.js +12 -0
  215. package/features/file/ListFiles/feature.js.map +1 -0
  216. package/features/file/ListFiles/index.d.ts +1 -0
  217. package/features/file/ListFiles/index.js +3 -0
  218. package/features/file/ListFiles/index.js.map +1 -0
  219. package/features/file/ListTags/ListTagsRepository.d.ts +16 -0
  220. package/features/file/ListTags/ListTagsRepository.js +47 -0
  221. package/features/file/ListTags/ListTagsRepository.js.map +1 -0
  222. package/features/file/ListTags/ListTagsUseCase.d.ts +13 -0
  223. package/features/file/ListTags/ListTagsUseCase.js +32 -0
  224. package/features/file/ListTags/ListTagsUseCase.js.map +1 -0
  225. package/features/file/ListTags/abstractions.d.ts +43 -0
  226. package/features/file/ListTags/abstractions.js +15 -0
  227. package/features/file/ListTags/abstractions.js.map +1 -0
  228. package/features/file/ListTags/feature.d.ts +1 -0
  229. package/features/file/ListTags/feature.js +12 -0
  230. package/features/file/ListTags/feature.js.map +1 -0
  231. package/features/file/ListTags/index.d.ts +1 -0
  232. package/features/file/ListTags/index.js +3 -0
  233. package/features/file/ListTags/index.js.map +1 -0
  234. package/features/file/UpdateFile/UpdateFileRepository.d.ts +15 -0
  235. package/features/file/UpdateFile/UpdateFileRepository.js +39 -0
  236. package/features/file/UpdateFile/UpdateFileRepository.js.map +1 -0
  237. package/features/file/UpdateFile/UpdateFileUseCase.d.ts +20 -0
  238. package/features/file/UpdateFile/UpdateFileUseCase.js +81 -0
  239. package/features/file/UpdateFile/UpdateFileUseCase.js.map +1 -0
  240. package/features/file/UpdateFile/abstractions.d.ts +53 -0
  241. package/features/file/UpdateFile/abstractions.js +15 -0
  242. package/features/file/UpdateFile/abstractions.js.map +1 -0
  243. package/features/file/UpdateFile/events.d.ts +32 -0
  244. package/features/file/UpdateFile/events.js +28 -0
  245. package/features/file/UpdateFile/events.js.map +1 -0
  246. package/features/file/UpdateFile/feature.d.ts +1 -0
  247. package/features/file/UpdateFile/feature.js +12 -0
  248. package/features/file/UpdateFile/feature.js.map +1 -0
  249. package/features/file/UpdateFile/index.d.ts +2 -0
  250. package/features/file/UpdateFile/index.js +4 -0
  251. package/features/file/UpdateFile/index.js.map +1 -0
  252. package/features/file/shared/EntryToFileMapper.d.ts +5 -0
  253. package/features/file/shared/EntryToFileMapper.js +26 -0
  254. package/features/file/shared/EntryToFileMapper.js.map +1 -0
  255. package/features/file/shared/FileInputToEntryInputMapper.d.ts +5 -0
  256. package/features/file/shared/FileInputToEntryInputMapper.js +30 -0
  257. package/features/file/shared/FileInputToEntryInputMapper.js.map +1 -0
  258. package/features/file/shared/FileToEntryMapper.d.ts +5 -0
  259. package/features/file/shared/FileToEntryMapper.js +29 -0
  260. package/features/file/shared/FileToEntryMapper.js.map +1 -0
  261. package/features/settings/GetSettings/GetSettingsUseCase.d.ts +13 -0
  262. package/features/settings/GetSettings/GetSettingsUseCase.js +28 -0
  263. package/features/settings/GetSettings/GetSettingsUseCase.js.map +1 -0
  264. package/features/settings/GetSettings/abstractions.d.ts +17 -0
  265. package/features/settings/GetSettings/abstractions.js +9 -0
  266. package/features/settings/GetSettings/abstractions.js.map +1 -0
  267. package/features/settings/GetSettings/feature.d.ts +1 -0
  268. package/features/settings/GetSettings/feature.js +10 -0
  269. package/features/settings/GetSettings/feature.js.map +1 -0
  270. package/features/settings/SettingsInstaller/SettingsInstaller.d.ts +15 -0
  271. package/features/settings/SettingsInstaller/SettingsInstaller.js +35 -0
  272. package/features/settings/SettingsInstaller/SettingsInstaller.js.map +1 -0
  273. package/features/settings/SettingsInstaller/feature.d.ts +1 -0
  274. package/features/settings/SettingsInstaller/feature.js +10 -0
  275. package/features/settings/SettingsInstaller/feature.js.map +1 -0
  276. package/features/settings/UpdateSettings/UpdateSettingsUseCase.d.ts +18 -0
  277. package/features/settings/UpdateSettings/UpdateSettingsUseCase.js +62 -0
  278. package/features/settings/UpdateSettings/UpdateSettingsUseCase.js.map +1 -0
  279. package/features/settings/UpdateSettings/abstractions.d.ts +22 -0
  280. package/features/settings/UpdateSettings/abstractions.js +9 -0
  281. package/features/settings/UpdateSettings/abstractions.js.map +1 -0
  282. package/features/settings/UpdateSettings/events.d.ts +32 -0
  283. package/features/settings/UpdateSettings/events.js +28 -0
  284. package/features/settings/UpdateSettings/events.js.map +1 -0
  285. package/features/settings/UpdateSettings/feature.d.ts +1 -0
  286. package/features/settings/UpdateSettings/feature.js +10 -0
  287. package/features/settings/UpdateSettings/feature.js.map +1 -0
  288. package/features/settings/UpdateSettings/index.d.ts +2 -0
  289. package/features/settings/UpdateSettings/index.js +4 -0
  290. package/features/settings/UpdateSettings/index.js.map +1 -0
  291. package/features/shared/abstractions.d.ts +13 -0
  292. package/features/shared/abstractions.js +5 -0
  293. package/features/shared/abstractions.js.map +1 -0
  294. package/graphql/baseSchema.d.ts +2 -2
  295. package/graphql/baseSchema.js +20 -37
  296. package/graphql/baseSchema.js.map +1 -1
  297. package/graphql/createFilesTypeDefs.d.ts +1 -1
  298. package/graphql/createFilesTypeDefs.js +42 -28
  299. package/graphql/createFilesTypeDefs.js.map +1 -1
  300. package/graphql/filesSchema.d.ts +3 -3
  301. package/graphql/filesSchema.js +73 -48
  302. package/graphql/filesSchema.js.map +1 -1
  303. package/graphql/getFileByUrl.d.ts +2 -2
  304. package/graphql/getFileByUrl.js +17 -26
  305. package/graphql/getFileByUrl.js.map +1 -1
  306. package/graphql/index.d.ts +2 -2
  307. package/graphql/index.js +24 -26
  308. package/graphql/index.js.map +1 -1
  309. package/graphql/utils.d.ts +1 -1
  310. package/graphql/utils.js +6 -13
  311. package/graphql/utils.js.map +1 -1
  312. package/index.d.ts +6 -9
  313. package/index.js +43 -63
  314. package/index.js.map +1 -1
  315. package/modelModifier/CmsModelModifier.d.ts +3 -3
  316. package/modelModifier/CmsModelModifier.js +7 -15
  317. package/modelModifier/CmsModelModifier.js.map +1 -1
  318. package/package.json +26 -38
  319. package/permissions/FilesPermissions.d.ts +4 -0
  320. package/permissions/FilesPermissions.js +4 -0
  321. package/permissions/FilesPermissions.js.map +1 -0
  322. package/permissions/SettingsPermissions.d.ts +4 -0
  323. package/permissions/SettingsPermissions.js +4 -0
  324. package/permissions/SettingsPermissions.js.map +1 -0
  325. package/types.d.ts +3 -364
  326. package/types.js +1 -27
  327. package/types.js.map +1 -1
  328. package/FileManagerContextSetup.d.ts +0 -13
  329. package/FileManagerContextSetup.js +0 -115
  330. package/FileManagerContextSetup.js.map +0 -1
  331. package/cmsFileStorage/CmsFilesStorage.d.ts +0 -27
  332. package/cmsFileStorage/CmsFilesStorage.js +0 -176
  333. package/cmsFileStorage/CmsFilesStorage.js.map +0 -1
  334. package/cmsFileStorage/ListFilesWhereProcessor.d.ts +0 -7
  335. package/cmsFileStorage/ListFilesWhereProcessor.js +0 -33
  336. package/cmsFileStorage/ListFilesWhereProcessor.js.map +0 -1
  337. package/cmsFileStorage/ListTagsWhereProcessor.d.ts +0 -7
  338. package/cmsFileStorage/ListTagsWhereProcessor.js +0 -33
  339. package/cmsFileStorage/ListTagsWhereProcessor.js.map +0 -1
  340. package/cmsFileStorage/createFileManagerPlugins.d.ts +0 -7
  341. package/cmsFileStorage/createFileManagerPlugins.js +0 -17
  342. package/cmsFileStorage/createFileManagerPlugins.js.map +0 -1
  343. package/cmsFileStorage/createModelField.d.ts +0 -5
  344. package/cmsFileStorage/createModelField.js +0 -41
  345. package/cmsFileStorage/createModelField.js.map +0 -1
  346. package/cmsFileStorage/file.model.d.ts +0 -6
  347. package/cmsFileStorage/file.model.js +0 -153
  348. package/cmsFileStorage/file.model.js.map +0 -1
  349. package/cmsFileStorage/isInstallationPending.d.ts +0 -4
  350. package/cmsFileStorage/isInstallationPending.js +0 -23
  351. package/cmsFileStorage/isInstallationPending.js.map +0 -1
  352. package/createFileManager/files.crud.d.ts +0 -3
  353. package/createFileManager/files.crud.js +0 -328
  354. package/createFileManager/files.crud.js.map +0 -1
  355. package/createFileManager/index.d.ts +0 -15
  356. package/createFileManager/index.js +0 -23
  357. package/createFileManager/index.js.map +0 -1
  358. package/createFileManager/permissions/FilesPermissions.d.ts +0 -4
  359. package/createFileManager/permissions/FilesPermissions.js +0 -11
  360. package/createFileManager/permissions/FilesPermissions.js.map +0 -1
  361. package/createFileManager/settings.crud.d.ts +0 -3
  362. package/createFileManager/settings.crud.js +0 -107
  363. package/createFileManager/settings.crud.js.map +0 -1
  364. package/createFileManager/system.crud.d.ts +0 -3
  365. package/createFileManager/system.crud.js +0 -88
  366. package/createFileManager/system.crud.js.map +0 -1
  367. package/delivery/AssetDelivery/AliasAssetRequestResolver.d.ts +0 -10
  368. package/delivery/AssetDelivery/AliasAssetRequestResolver.js +0 -74
  369. package/delivery/AssetDelivery/AliasAssetRequestResolver.js.map +0 -1
  370. package/delivery/AssetDelivery/privateFiles/internalIdentity.d.ts +0 -7
  371. package/delivery/AssetDelivery/privateFiles/internalIdentity.js +0 -19
  372. package/delivery/AssetDelivery/privateFiles/internalIdentity.js.map +0 -1
  373. package/handlers/manage/imageManager.d.ts +0 -14
  374. package/handlers/manage/imageManager.js +0 -76
  375. package/handlers/manage/imageManager.js.map +0 -1
  376. package/handlers/manage/index.d.ts +0 -5
  377. package/handlers/manage/index.js +0 -59
  378. package/handlers/manage/index.js.map +0 -1
  379. package/handlers/manage/legacyUtils.d.ts +0 -12
  380. package/handlers/manage/legacyUtils.js +0 -38
  381. package/handlers/manage/legacyUtils.js.map +0 -1
  382. package/handlers/manage/utils.d.ts +0 -12
  383. package/handlers/manage/utils.js +0 -38
  384. package/handlers/manage/utils.js.map +0 -1
  385. package/handlers/types.d.ts +0 -8
  386. package/handlers/types.js +0 -7
  387. package/handlers/types.js.map +0 -1
  388. package/handlers/utils/getEnvironment.d.ts +0 -5
  389. package/handlers/utils/getEnvironment.js +0 -13
  390. package/handlers/utils/getEnvironment.js.map +0 -1
  391. package/handlers/utils/getObjectParams.d.ts +0 -9
  392. package/handlers/utils/getObjectParams.js +0 -23
  393. package/handlers/utils/getObjectParams.js.map +0 -1
  394. package/handlers/utils/index.d.ts +0 -2
  395. package/handlers/utils/index.js +0 -22
  396. package/handlers/utils/index.js.map +0 -1
  397. package/plugins/FilePhysicalStoragePlugin.d.ts +0 -21
  398. package/plugins/FilePhysicalStoragePlugin.js +0 -31
  399. package/plugins/FilePhysicalStoragePlugin.js.map +0 -1
  400. package/plugins/FileStorageTransformPlugin.d.ts +0 -34
  401. package/plugins/FileStorageTransformPlugin.js +0 -39
  402. package/plugins/FileStorageTransformPlugin.js.map +0 -1
  403. package/plugins/index.d.ts +0 -2
  404. package/plugins/index.js +0 -29
  405. package/plugins/index.js.map +0 -1
  406. package/storage/FileStorage.d.ts +0 -33
  407. package/storage/FileStorage.js +0 -90
  408. package/storage/FileStorage.js.map +0 -1
  409. package/types/file.d.ts +0 -48
  410. package/types/file.js +0 -7
  411. package/types/file.js.map +0 -1
  412. package/types/file.lifecycle.d.ts +0 -44
  413. package/types/file.lifecycle.js +0 -7
  414. package/types/file.lifecycle.js.map +0 -1
@@ -0,0 +1,56 @@
1
+ import { ModelFactory } from "@webiny/api-headless-cms/features/modelBuilder/index.js";
2
+ import { WcpContext } from "@webiny/api-core/features/wcp/WcpContext/index.js";
3
+ export const FILE_MODEL_ID = process.env.WEBINY_API_LEGACY_MODELS ? "fmFile" : "wbyFmFile";
4
+ class FilePrivateModelImpl {
5
+ constructor(wcp) {
6
+ this.wcp = wcp;
7
+ }
8
+ async execute(builder) {
9
+ const model = builder.private({
10
+ modelId: FILE_MODEL_ID,
11
+ name: "FmFile"
12
+ });
13
+ const privateFiles = this.wcp.canUsePrivateFiles();
14
+ model.fields(fields => ({
15
+ name: fields.text().label("Name").required("Value is required."),
16
+ key: fields.text().label("Key").required("Value is required."),
17
+ type: fields.text().label("Type").required("Value is required."),
18
+ size: fields.number().label("Size").required("Value is required."),
19
+ metadata: fields.object().label("Metadata").renderer("hidden").fields(fields => ({
20
+ image: fields.object().label("Image").fields(fields => ({
21
+ width: fields.number().label("Width"),
22
+ height: fields.number().label("Height"),
23
+ format: fields.text().label("Format"),
24
+ orientation: fields.number().label("Orientation")
25
+ })),
26
+ // Store complete raw EXIF as JSON
27
+ exif: fields.searchableJson().label("EXIF Data"),
28
+ // Store complete raw IPTC as JSON
29
+ iptc: fields.searchableJson().label("IPTC Data")
30
+ })),
31
+ tags: fields.text().label("Tags").tags(["$bulk-edit"]).list().required("Value is required.")
32
+ }));
33
+ if (privateFiles) {
34
+ model.fields(fields => ({
35
+ accessControl: fields.object().label("Access Control").tags(["$bulk-edit"]).fields(fields => ({
36
+ type: fields.text().label("Type").predefinedValues([{
37
+ label: "Public",
38
+ value: "public",
39
+ selected: true
40
+ }, {
41
+ label: "Private",
42
+ value: "private-authenticated",
43
+ selected: false
44
+ }])
45
+ }))
46
+ }));
47
+ }
48
+ return [model];
49
+ }
50
+ }
51
+ export const FileModel = ModelFactory.createImplementation({
52
+ implementation: FilePrivateModelImpl,
53
+ dependencies: [WcpContext]
54
+ });
55
+
56
+ //# sourceMappingURL=file.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ModelFactory","WcpContext","FILE_MODEL_ID","process","env","WEBINY_API_LEGACY_MODELS","FilePrivateModelImpl","constructor","wcp","execute","builder","model","private","modelId","name","privateFiles","canUsePrivateFiles","fields","text","label","required","key","type","size","number","metadata","object","renderer","image","width","height","format","orientation","exif","searchableJson","iptc","tags","list","accessControl","predefinedValues","value","selected","FileModel","createImplementation","implementation","dependencies"],"sources":["file.model.ts"],"sourcesContent":["import { ModelFactory } from \"@webiny/api-headless-cms/features/modelBuilder/index.js\";\nimport { WcpContext } from \"@webiny/api-core/features/wcp/WcpContext/index.js\";\n\nexport const FILE_MODEL_ID = process.env.WEBINY_API_LEGACY_MODELS ? \"fmFile\" : \"wbyFmFile\";\n\nclass FilePrivateModelImpl implements ModelFactory.Interface {\n public constructor(private wcp: WcpContext.Interface) {}\n\n public async execute(builder: ModelFactory.Builder) {\n const model = builder.private({\n modelId: FILE_MODEL_ID,\n name: \"FmFile\"\n });\n const privateFiles = this.wcp.canUsePrivateFiles();\n\n model.fields(fields => ({\n name: fields.text().label(\"Name\").required(\"Value is required.\"),\n key: fields.text().label(\"Key\").required(\"Value is required.\"),\n type: fields.text().label(\"Type\").required(\"Value is required.\"),\n size: fields.number().label(\"Size\").required(\"Value is required.\"),\n metadata: fields\n .object()\n .label(\"Metadata\")\n .renderer(\"hidden\")\n .fields(fields => ({\n image: fields\n .object()\n .label(\"Image\")\n .fields(fields => ({\n width: fields.number().label(\"Width\"),\n height: fields.number().label(\"Height\"),\n format: fields.text().label(\"Format\"),\n orientation: fields.number().label(\"Orientation\")\n })),\n // Store complete raw EXIF as JSON\n exif: fields.searchableJson().label(\"EXIF Data\"),\n // Store complete raw IPTC as JSON\n iptc: fields.searchableJson().label(\"IPTC Data\")\n })),\n tags: fields\n .text()\n .label(\"Tags\")\n .tags([\"$bulk-edit\"])\n .list()\n .required(\"Value is required.\")\n }));\n\n if (privateFiles) {\n model.fields(fields => ({\n accessControl: fields\n .object()\n .label(\"Access Control\")\n .tags([\"$bulk-edit\"])\n .fields(fields => ({\n type: fields\n .text()\n .label(\"Type\")\n .predefinedValues([\n {\n label: \"Public\",\n value: \"public\",\n selected: true\n },\n {\n label: \"Private\",\n value: \"private-authenticated\",\n selected: false\n }\n ])\n }))\n }));\n }\n\n return [model];\n }\n}\n\nexport const FileModel = ModelFactory.createImplementation({\n implementation: FilePrivateModelImpl,\n dependencies: [WcpContext]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ export type PublicAccess = {
2
+ type: "public";
3
+ };
4
+ export type PrivateAuthenticatedAccess = {
5
+ type: "private-authenticated";
6
+ };
7
+ export type FileAccess = PublicAccess | PrivateAuthenticatedAccess;
8
+ export interface CreatedBy {
9
+ id: string;
10
+ displayName: string;
11
+ type: string;
12
+ }
13
+ export interface File {
14
+ id: string;
15
+ key: string;
16
+ size: number;
17
+ type: string;
18
+ name: string;
19
+ metadata: Record<string, any>;
20
+ accessControl?: FileAccess;
21
+ location: {
22
+ folderId: string;
23
+ };
24
+ tags: string[];
25
+ createdOn: string;
26
+ modifiedOn: string | undefined;
27
+ savedOn: string;
28
+ createdBy: CreatedBy;
29
+ modifiedBy: CreatedBy | undefined;
30
+ savedBy: CreatedBy;
31
+ extensions?: Record<string, any>;
32
+ }
33
+ export interface FileInput {
34
+ id: string;
35
+ createdOn?: string;
36
+ modifiedOn?: string;
37
+ savedOn?: string;
38
+ createdBy?: CreatedBy;
39
+ modifiedBy?: CreatedBy;
40
+ savedBy?: CreatedBy;
41
+ key: string;
42
+ name: string;
43
+ size: number;
44
+ type: string;
45
+ metadata: Record<string, any>;
46
+ location?: {
47
+ folderId: string;
48
+ };
49
+ tags: string[];
50
+ extensions?: Record<string, any>;
51
+ }
@@ -0,0 +1,3 @@
1
+ export {};
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export type PublicAccess = {\n type: \"public\";\n};\n\nexport type PrivateAuthenticatedAccess = {\n type: \"private-authenticated\";\n};\n\nexport type FileAccess = PublicAccess | PrivateAuthenticatedAccess;\n\nexport interface CreatedBy {\n id: string;\n displayName: string;\n type: string;\n}\n\nexport interface File {\n id: string;\n key: string;\n size: number;\n type: string;\n name: string;\n metadata: Record<string, any>;\n accessControl?: FileAccess;\n location: {\n folderId: string;\n };\n tags: string[];\n createdOn: string;\n modifiedOn: string | undefined;\n savedOn: string;\n createdBy: CreatedBy;\n modifiedBy: CreatedBy | undefined;\n savedBy: CreatedBy;\n extensions?: Record<string, any>;\n}\n\nexport interface FileInput {\n id: string;\n\n // Entry-level fields (we don't use revisions for files)\n createdOn?: string;\n modifiedOn?: string;\n savedOn?: string;\n createdBy?: CreatedBy;\n modifiedBy?: CreatedBy;\n savedBy?: CreatedBy;\n\n key: string;\n name: string;\n size: number;\n type: string;\n metadata: Record<string, any>;\n location?: {\n folderId: string;\n };\n tags: string[];\n extensions?: Record<string, any>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ interface IdentityDto {
2
+ id: string;
3
+ displayName: string;
4
+ type: string;
5
+ }
6
+ export declare class Identity {
7
+ static from(identity: IdentityDto): IdentityDto;
8
+ }
9
+ export {};
@@ -0,0 +1,11 @@
1
+ export class Identity {
2
+ static from(identity) {
3
+ return {
4
+ id: identity.id,
5
+ displayName: identity.displayName,
6
+ type: identity.type
7
+ };
8
+ }
9
+ }
10
+
11
+ //# sourceMappingURL=Identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Identity","from","identity","id","displayName","type"],"sources":["Identity.ts"],"sourcesContent":["interface IdentityDto {\n id: string;\n displayName: string;\n type: string;\n}\n\nexport class Identity {\n static from(identity: IdentityDto): IdentityDto {\n return {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n };\n }\n}\n"],"mappings":"AAMA,OAAO,MAAMA,QAAQ,CAAC;EAClB,OAAOC,IAAIA,CAACC,QAAqB,EAAe;IAC5C,OAAO;MACHC,EAAE,EAAED,QAAQ,CAACC,EAAE;MACfC,WAAW,EAAEF,QAAQ,CAACE,WAAW;MACjCC,IAAI,EAAEH,QAAQ,CAACG;IACnB,CAAC;EACL;AACJ","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export declare const FILE_MANAGER_GENERAL_SETTINGS = "FileManager/General";
@@ -0,0 +1,3 @@
1
+ export const FILE_MANAGER_GENERAL_SETTINGS = "FileManager/General";
2
+
3
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FILE_MANAGER_GENERAL_SETTINGS"],"sources":["constants.ts"],"sourcesContent":["export const FILE_MANAGER_GENERAL_SETTINGS = \"FileManager/General\";\n"],"mappings":"AAAA,OAAO,MAAMA,6BAA6B,GAAG,qBAAqB","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ import { BaseError } from "@webiny/feature/api";
2
+ import type { OutputErrors } from "@webiny/utils/createZodError.js";
3
+ export declare class SettingsNotFoundError extends BaseError {
4
+ readonly code: "FileManager/Settings/NotFoundError";
5
+ constructor();
6
+ }
7
+ export declare class SettingsUpdateError extends BaseError {
8
+ readonly code: "FileManager/Settings/UpdateError";
9
+ constructor(error: Error);
10
+ }
11
+ interface ValidationParams {
12
+ invalidFields: OutputErrors;
13
+ }
14
+ export declare class SettingsValidationError extends BaseError<ValidationParams> {
15
+ readonly code: "FileManager/Settings/ValidationError";
16
+ constructor(invalidFields: OutputErrors);
17
+ }
18
+ export {};
@@ -0,0 +1,30 @@
1
+ import { BaseError } from "@webiny/feature/api";
2
+ export class SettingsNotFoundError extends BaseError {
3
+ code = "FileManager/Settings/NotFoundError";
4
+ constructor() {
5
+ super({
6
+ message: "File manager settings not found."
7
+ });
8
+ }
9
+ }
10
+ export class SettingsUpdateError extends BaseError {
11
+ code = "FileManager/Settings/UpdateError";
12
+ constructor(error) {
13
+ super({
14
+ message: `Error updating settings: ${error.message}`
15
+ });
16
+ }
17
+ }
18
+ export class SettingsValidationError extends BaseError {
19
+ code = "FileManager/Settings/ValidationError";
20
+ constructor(invalidFields) {
21
+ super({
22
+ message: "Validation failed.",
23
+ data: {
24
+ invalidFields
25
+ }
26
+ });
27
+ }
28
+ }
29
+
30
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BaseError","SettingsNotFoundError","code","constructor","message","SettingsUpdateError","error","SettingsValidationError","invalidFields","data"],"sources":["errors.ts"],"sourcesContent":["import { BaseError } from \"@webiny/feature/api\";\nimport type { OutputErrors } from \"@webiny/utils/createZodError.js\";\n\nexport class SettingsNotFoundError extends BaseError {\n override readonly code = \"FileManager/Settings/NotFoundError\" as const;\n\n constructor() {\n super({\n message: \"File manager settings not found.\"\n });\n }\n}\n\nexport class SettingsUpdateError extends BaseError {\n override readonly code = \"FileManager/Settings/UpdateError\" as const;\n\n constructor(error: Error) {\n super({\n message: `Error updating settings: ${error.message}`\n });\n }\n}\n\ninterface ValidationParams {\n invalidFields: OutputErrors;\n}\n\nexport class SettingsValidationError extends BaseError<ValidationParams> {\n override readonly code = \"FileManager/Settings/ValidationError\" as const;\n\n constructor(invalidFields: OutputErrors) {\n super({\n message: \"Validation failed.\",\n data: { invalidFields }\n });\n }\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,qBAAqB;AAG/C,OAAO,MAAMC,qBAAqB,SAASD,SAAS,CAAC;EAC/BE,IAAI,GAAG,oCAAoC;EAE7DC,WAAWA,CAAA,EAAG;IACV,KAAK,CAAC;MACFC,OAAO,EAAE;IACb,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMC,mBAAmB,SAASL,SAAS,CAAC;EAC7BE,IAAI,GAAG,kCAAkC;EAE3DC,WAAWA,CAACG,KAAY,EAAE;IACtB,KAAK,CAAC;MACFF,OAAO,EAAE,4BAA4BE,KAAK,CAACF,OAAO;IACtD,CAAC,CAAC;EACN;AACJ;AAMA,OAAO,MAAMG,uBAAuB,SAASP,SAAS,CAAmB;EACnDE,IAAI,GAAG,sCAAsC;EAE/DC,WAAWA,CAACK,aAA2B,EAAE;IACrC,KAAK,CAAC;MACFJ,OAAO,EAAE,oBAAoB;MAC7BK,IAAI,EAAE;QAAED;MAAc;IAC1B,CAAC,CAAC;EACN;AACJ","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ export interface FileManagerSettings {
2
+ uploadMinFileSize: number;
3
+ uploadMaxFileSize: number;
4
+ srcPrefix: string;
5
+ }
6
+ export interface UpdateSettingsInput {
7
+ uploadMinFileSize?: number;
8
+ uploadMaxFileSize?: number;
9
+ srcPrefix?: string;
10
+ }
@@ -0,0 +1,3 @@
1
+ export {};
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export interface FileManagerSettings {\n uploadMinFileSize: number;\n uploadMaxFileSize: number;\n srcPrefix: string;\n}\n\nexport interface UpdateSettingsInput {\n uploadMinFileSize?: number;\n uploadMaxFileSize?: number;\n srcPrefix?: string;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ import zod from "zod";
2
+ export declare const updateSettingsValidation: zod.ZodObject<{
3
+ uploadMinFileSize: zod.ZodOptional<zod.ZodEffects<zod.ZodOptional<zod.ZodNullable<zod.ZodNumber>>, number, number | null | undefined>>;
4
+ uploadMaxFileSize: zod.ZodOptional<zod.ZodEffects<zod.ZodOptional<zod.ZodNullable<zod.ZodNumber>>, number, number | null | undefined>>;
5
+ srcPrefix: zod.ZodEffects<zod.ZodOptional<zod.ZodString>, string, string | undefined>;
6
+ }, "strip", zod.ZodTypeAny, {
7
+ srcPrefix: string;
8
+ uploadMinFileSize?: number | undefined;
9
+ uploadMaxFileSize?: number | undefined;
10
+ }, {
11
+ uploadMinFileSize?: number | null | undefined;
12
+ uploadMaxFileSize?: number | null | undefined;
13
+ srcPrefix?: string | undefined;
14
+ }>;
@@ -0,0 +1,36 @@
1
+ import zod from "zod";
2
+ import { ServiceDiscovery } from "@webiny/api";
3
+ const MIN_FILE_SIZE = 0;
4
+ const MAX_FILE_SIZE = 10737418240;
5
+ const uploadMinFileSizeValidation = zod.number().min(MIN_FILE_SIZE, {
6
+ message: `Value needs to be greater than or equal to ${MIN_FILE_SIZE}.`
7
+ }).nullish().transform(value => {
8
+ return value || MIN_FILE_SIZE;
9
+ }).optional();
10
+ const uploadMaxFileSizeValidation = zod.number().max(MAX_FILE_SIZE, {
11
+ message: `Value needs to be lesser than or equal to ${MAX_FILE_SIZE}.`
12
+ }).nullish().transform(value => {
13
+ return value || MAX_FILE_SIZE;
14
+ }).optional();
15
+ export const updateSettingsValidation = zod.object({
16
+ uploadMinFileSize: uploadMinFileSizeValidation,
17
+ uploadMaxFileSize: uploadMaxFileSizeValidation,
18
+ srcPrefix: zod.string().optional().transform(async value => {
19
+ if (!value) {
20
+ const manifest = await ServiceDiscovery.load();
21
+ if (!manifest || !manifest.api) {
22
+ return "";
23
+ }
24
+ const {
25
+ domain
26
+ } = manifest.api.cloudfront;
27
+ return `https://${domain}/files/`;
28
+ }
29
+ if (typeof value === "string") {
30
+ return value.endsWith("/") ? value : value + "/";
31
+ }
32
+ return value;
33
+ })
34
+ });
35
+
36
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["zod","ServiceDiscovery","MIN_FILE_SIZE","MAX_FILE_SIZE","uploadMinFileSizeValidation","number","min","message","nullish","transform","value","optional","uploadMaxFileSizeValidation","max","updateSettingsValidation","object","uploadMinFileSize","uploadMaxFileSize","srcPrefix","string","manifest","load","api","domain","cloudfront","endsWith"],"sources":["validation.ts"],"sourcesContent":["import zod from \"zod\";\nimport { ServiceDiscovery } from \"@webiny/api\";\n\nconst MIN_FILE_SIZE = 0;\nconst MAX_FILE_SIZE = 10737418240;\n\nconst uploadMinFileSizeValidation = zod\n .number()\n .min(MIN_FILE_SIZE, {\n message: `Value needs to be greater than or equal to ${MIN_FILE_SIZE}.`\n })\n .nullish()\n .transform(value => {\n return value || MIN_FILE_SIZE;\n })\n .optional();\n\nconst uploadMaxFileSizeValidation = zod\n .number()\n .max(MAX_FILE_SIZE, {\n message: `Value needs to be lesser than or equal to ${MAX_FILE_SIZE}.`\n })\n .nullish()\n .transform(value => {\n return value || MAX_FILE_SIZE;\n })\n .optional();\n\nexport const updateSettingsValidation = zod.object({\n uploadMinFileSize: uploadMinFileSizeValidation,\n uploadMaxFileSize: uploadMaxFileSizeValidation,\n srcPrefix: zod\n .string()\n .optional()\n .transform(async value => {\n if (!value) {\n const manifest = await ServiceDiscovery.load();\n if (!manifest || !manifest.api) {\n return \"\";\n }\n\n const { domain } = manifest.api.cloudfront;\n\n return `https://${domain}/files/`;\n }\n if (typeof value === \"string\") {\n return value.endsWith(\"/\") ? value : value + \"/\";\n }\n return value;\n })\n});\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,KAAK;AACrB,SAASC,gBAAgB,QAAQ,aAAa;AAE9C,MAAMC,aAAa,GAAG,CAAC;AACvB,MAAMC,aAAa,GAAG,WAAW;AAEjC,MAAMC,2BAA2B,GAAGJ,GAAG,CAClCK,MAAM,CAAC,CAAC,CACRC,GAAG,CAACJ,aAAa,EAAE;EAChBK,OAAO,EAAE,8CAA8CL,aAAa;AACxE,CAAC,CAAC,CACDM,OAAO,CAAC,CAAC,CACTC,SAAS,CAACC,KAAK,IAAI;EAChB,OAAOA,KAAK,IAAIR,aAAa;AACjC,CAAC,CAAC,CACDS,QAAQ,CAAC,CAAC;AAEf,MAAMC,2BAA2B,GAAGZ,GAAG,CAClCK,MAAM,CAAC,CAAC,CACRQ,GAAG,CAACV,aAAa,EAAE;EAChBI,OAAO,EAAE,6CAA6CJ,aAAa;AACvE,CAAC,CAAC,CACDK,OAAO,CAAC,CAAC,CACTC,SAAS,CAACC,KAAK,IAAI;EAChB,OAAOA,KAAK,IAAIP,aAAa;AACjC,CAAC,CAAC,CACDQ,QAAQ,CAAC,CAAC;AAEf,OAAO,MAAMG,wBAAwB,GAAGd,GAAG,CAACe,MAAM,CAAC;EAC/CC,iBAAiB,EAAEZ,2BAA2B;EAC9Ca,iBAAiB,EAAEL,2BAA2B;EAC9CM,SAAS,EAAElB,GAAG,CACTmB,MAAM,CAAC,CAAC,CACRR,QAAQ,CAAC,CAAC,CACVF,SAAS,CAAC,MAAMC,KAAK,IAAI;IACtB,IAAI,CAACA,KAAK,EAAE;MACR,MAAMU,QAAQ,GAAG,MAAMnB,gBAAgB,CAACoB,IAAI,CAAC,CAAC;MAC9C,IAAI,CAACD,QAAQ,IAAI,CAACA,QAAQ,CAACE,GAAG,EAAE;QAC5B,OAAO,EAAE;MACb;MAEA,MAAM;QAAEC;MAAO,CAAC,GAAGH,QAAQ,CAACE,GAAG,CAACE,UAAU;MAE1C,OAAO,WAAWD,MAAM,SAAS;IACrC;IACA,IAAI,OAAOb,KAAK,KAAK,QAAQ,EAAE;MAC3B,OAAOA,KAAK,CAACe,QAAQ,CAAC,GAAG,CAAC,GAAGf,KAAK,GAAGA,KAAK,GAAG,GAAG;IACpD;IACA,OAAOA,KAAK;EAChB,CAAC;AACT,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export declare const FileManagerFeature: import("@webiny/feature/api/createFeature").FeatureDefinition<unknown>;
@@ -0,0 +1,28 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { CreateFileFeature } from "./file/CreateFile/feature.js";
3
+ import { CreateFilesInBatchFeature } from "./file/CreateFilesInBatch/feature.js";
4
+ import { DeleteFileFeature } from "./file/DeleteFile/feature.js";
5
+ import { GetFileFeature } from "./file/GetFile/feature.js";
6
+ import { ListFilesFeature } from "./file/ListFiles/feature.js";
7
+ import { ListTagsFeature } from "./file/ListTags/feature.js";
8
+ import { UpdateFileFeature } from "./file/UpdateFile/feature.js";
9
+ import { SettingsInstallerFeature } from "./settings/SettingsInstaller/feature.js";
10
+ import { GetSettingsFeature } from "./settings/GetSettings/feature.js";
11
+ import { UpdateSettingsFeature } from "./settings/UpdateSettings/feature.js";
12
+ export const FileManagerFeature = createFeature({
13
+ name: "FileManager",
14
+ register(container) {
15
+ CreateFileFeature.register(container);
16
+ CreateFilesInBatchFeature.register(container);
17
+ UpdateFileFeature.register(container);
18
+ DeleteFileFeature.register(container);
19
+ GetFileFeature.register(container);
20
+ ListFilesFeature.register(container);
21
+ ListTagsFeature.register(container);
22
+ SettingsInstallerFeature.register(container);
23
+ GetSettingsFeature.register(container);
24
+ UpdateSettingsFeature.register(container);
25
+ }
26
+ });
27
+
28
+ //# sourceMappingURL=FileManagerFeature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createFeature","CreateFileFeature","CreateFilesInBatchFeature","DeleteFileFeature","GetFileFeature","ListFilesFeature","ListTagsFeature","UpdateFileFeature","SettingsInstallerFeature","GetSettingsFeature","UpdateSettingsFeature","FileManagerFeature","name","register","container"],"sources":["FileManagerFeature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CreateFileFeature } from \"~/features/file/CreateFile/feature.js\";\nimport { CreateFilesInBatchFeature } from \"~/features/file/CreateFilesInBatch/feature.js\";\nimport { DeleteFileFeature } from \"~/features/file/DeleteFile/feature.js\";\nimport { GetFileFeature } from \"~/features/file/GetFile/feature.js\";\nimport { ListFilesFeature } from \"~/features/file/ListFiles/feature.js\";\nimport { ListTagsFeature } from \"~/features/file/ListTags/feature.js\";\nimport { UpdateFileFeature } from \"~/features/file/UpdateFile/feature.js\";\nimport { SettingsInstallerFeature } from \"~/features/settings/SettingsInstaller/feature.js\";\nimport { GetSettingsFeature } from \"~/features/settings/GetSettings/feature.js\";\nimport { UpdateSettingsFeature } from \"~/features/settings/UpdateSettings/feature.js\";\n\nexport const FileManagerFeature = createFeature({\n name: \"FileManager\",\n register(container) {\n CreateFileFeature.register(container);\n CreateFilesInBatchFeature.register(container);\n UpdateFileFeature.register(container);\n DeleteFileFeature.register(container);\n GetFileFeature.register(container);\n ListFilesFeature.register(container);\n ListTagsFeature.register(container);\n SettingsInstallerFeature.register(container);\n GetSettingsFeature.register(container);\n UpdateSettingsFeature.register(container);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,iBAAiB;AAC1B,SAASC,yBAAyB;AAClC,SAASC,iBAAiB;AAC1B,SAASC,cAAc;AACvB,SAASC,gBAAgB;AACzB,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SAASC,wBAAwB;AACjC,SAASC,kBAAkB;AAC3B,SAASC,qBAAqB;AAE9B,OAAO,MAAMC,kBAAkB,GAAGX,aAAa,CAAC;EAC5CY,IAAI,EAAE,aAAa;EACnBC,QAAQA,CAACC,SAAS,EAAE;IAChBb,iBAAiB,CAACY,QAAQ,CAACC,SAAS,CAAC;IACrCZ,yBAAyB,CAACW,QAAQ,CAACC,SAAS,CAAC;IAC7CP,iBAAiB,CAACM,QAAQ,CAACC,SAAS,CAAC;IACrCX,iBAAiB,CAACU,QAAQ,CAACC,SAAS,CAAC;IACrCV,cAAc,CAACS,QAAQ,CAACC,SAAS,CAAC;IAClCT,gBAAgB,CAACQ,QAAQ,CAACC,SAAS,CAAC;IACpCR,eAAe,CAACO,QAAQ,CAACC,SAAS,CAAC;IACnCN,wBAAwB,CAACK,QAAQ,CAACC,SAAS,CAAC;IAC5CL,kBAAkB,CAACI,QAAQ,CAACC,SAAS,CAAC;IACtCJ,qBAAqB,CAACG,QAAQ,CAACC,SAAS,CAAC;EAC7C;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ import { CreateFileRepository as RepositoryAbstraction } from "./abstractions.js";
3
+ import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry";
4
+ import { FileModel } from "../../../domain/file/abstractions.js";
5
+ import type { File, FileInput } from "../../../domain/file/types.js";
6
+ declare class CreateFileRepositoryImpl implements RepositoryAbstraction.Interface {
7
+ private createEntry;
8
+ private fileModel;
9
+ constructor(createEntry: CreateEntryUseCase.Interface, fileModel: FileModel.Interface);
10
+ execute(data: FileInput): Promise<Result<File, RepositoryAbstraction.Error>>;
11
+ }
12
+ export declare const CreateFileRepository: typeof CreateFileRepositoryImpl & {
13
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ICreateFileRepository>;
14
+ };
15
+ export {};
@@ -0,0 +1,30 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ import { CreateFileRepository as RepositoryAbstraction } from "./abstractions.js";
3
+ import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry";
4
+ import { FileModel } from "../../../domain/file/abstractions.js";
5
+ import { EntryToFileMapper } from "../shared/EntryToFileMapper.js";
6
+ import { FileNotAuthorizedError, FilePersistenceError } from "../../../domain/file/errors.js";
7
+ import { FileInputToEntryInputMapper } from "../shared/FileInputToEntryInputMapper.js";
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));
20
+ }
21
+ const file = EntryToFileMapper.toFile(result.value);
22
+ return Result.ok(file);
23
+ }
24
+ }
25
+ export const CreateFileRepository = RepositoryAbstraction.createImplementation({
26
+ implementation: CreateFileRepositoryImpl,
27
+ dependencies: [CreateEntryUseCase, FileModel]
28
+ });
29
+
30
+ //# sourceMappingURL=CreateFileRepository.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,21 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ import { CreateFileUseCase as UseCaseAbstraction, CreateFileInput, CreateFileRepository } from "./abstractions.js";
3
+ import { GetSettingsUseCase } from "../../settings/GetSettings/abstractions.js";
4
+ import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
5
+ import type { File } from "../../../domain/file/types.js";
6
+ import { FilePermissions } from "../../../features/shared/abstractions.js";
7
+ import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
8
+ declare class CreateFileUseCaseImpl implements UseCaseAbstraction.Interface {
9
+ private identityContext;
10
+ private filePermissions;
11
+ private repository;
12
+ private getSettings;
13
+ private eventPublisher;
14
+ constructor(identityContext: IdentityContext.Interface, filePermissions: FilePermissions.Interface, repository: CreateFileRepository.Interface, getSettings: GetSettingsUseCase.Interface, eventPublisher: EventPublisher.Interface);
15
+ execute(input: CreateFileInput, meta?: Record<string, any>): Promise<Result<File, UseCaseAbstraction.Error>>;
16
+ private validateInput;
17
+ }
18
+ export declare const CreateFileUseCase: typeof CreateFileUseCaseImpl & {
19
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ICreateFileUseCase>;
20
+ };
21
+ export {};
@@ -0,0 +1,91 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ import { CreateFileUseCase as UseCaseAbstraction, CreateFileRepository } from "./abstractions.js";
3
+ import { GetSettingsUseCase } from "../../settings/GetSettings/abstractions.js";
4
+ import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
5
+ import { FileNotAuthorizedError, InvalidFileSizeError } from "../../../domain/file/errors.js";
6
+ import { FileBeforeCreateEvent, FileAfterCreateEvent } from "./events.js";
7
+ import { FilePermissions } from "../../shared/abstractions.js";
8
+ import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
9
+ import { Identity } from "../../../domain/identity/Identity.js";
10
+ class CreateFileUseCaseImpl {
11
+ constructor(identityContext, filePermissions, repository, getSettings, eventPublisher) {
12
+ this.identityContext = identityContext;
13
+ this.filePermissions = filePermissions;
14
+ this.repository = repository;
15
+ this.getSettings = getSettings;
16
+ this.eventPublisher = eventPublisher;
17
+ }
18
+ async execute(input, meta) {
19
+ const hasPermission = await this.filePermissions.ensure({
20
+ rwd: "w"
21
+ });
22
+ if (!hasPermission) {
23
+ return Result.fail(new FileNotAuthorizedError());
24
+ }
25
+ const validationResult = await this.validateInput(input);
26
+ if (validationResult.isFail()) {
27
+ return Result.fail(validationResult.error);
28
+ }
29
+ const [id] = input.key.split("/");
30
+ const currentIdentity = this.identityContext.getIdentity();
31
+
32
+ // Prepare file input
33
+ const fileInput = {
34
+ id: input.id || id,
35
+ key: input.key,
36
+ name: input.name,
37
+ size: input.size,
38
+ type: input.type,
39
+ metadata: input.metadata || {},
40
+ location: input.location || {
41
+ folderId: "root"
42
+ },
43
+ tags: input.tags || [],
44
+ extensions: meta || {},
45
+ // system attributes
46
+ createdOn: input.createdOn,
47
+ modifiedOn: input.modifiedOn,
48
+ savedOn: input.savedOn,
49
+ createdBy: input.createdBy ? Identity.from(input.createdBy) : Identity.from(currentIdentity),
50
+ modifiedBy: input.modifiedBy ? Identity.from(input.modifiedBy) : undefined,
51
+ savedBy: input.savedBy ? Identity.from(input.savedBy) : Identity.from(currentIdentity)
52
+ };
53
+ await this.eventPublisher.publish(new FileBeforeCreateEvent({
54
+ file: fileInput,
55
+ meta
56
+ }));
57
+ const result = await this.repository.execute(fileInput);
58
+ if (result.isFail()) {
59
+ return Result.fail(result.error);
60
+ }
61
+ await this.eventPublisher.publish(new FileAfterCreateEvent({
62
+ file: result.value,
63
+ meta
64
+ }));
65
+ return Result.ok(result.value);
66
+ }
67
+ async validateInput(input) {
68
+ const settingsResult = await this.getSettings.execute();
69
+ if (settingsResult.isFail()) {
70
+ return Result.ok();
71
+ }
72
+ const settings = settingsResult.value;
73
+ if (settings) {
74
+ // Validate file size
75
+ if (input.size < settings.uploadMinFileSize || input.size > settings.uploadMaxFileSize) {
76
+ return Result.fail(new InvalidFileSizeError({
77
+ size: input.size,
78
+ minSize: settings.uploadMinFileSize,
79
+ maxSize: settings.uploadMaxFileSize
80
+ }));
81
+ }
82
+ }
83
+ return Result.ok();
84
+ }
85
+ }
86
+ export const CreateFileUseCase = UseCaseAbstraction.createImplementation({
87
+ implementation: CreateFileUseCaseImpl,
88
+ dependencies: [IdentityContext, FilePermissions, CreateFileRepository, GetSettingsUseCase, EventPublisher]
89
+ });
90
+
91
+ //# sourceMappingURL=CreateFileUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Result","CreateFileUseCase","UseCaseAbstraction","CreateFileRepository","GetSettingsUseCase","EventPublisher","FileNotAuthorizedError","InvalidFileSizeError","FileBeforeCreateEvent","FileAfterCreateEvent","FilePermissions","IdentityContext","Identity","CreateFileUseCaseImpl","constructor","identityContext","filePermissions","repository","getSettings","eventPublisher","execute","input","meta","hasPermission","ensure","rwd","fail","validationResult","validateInput","isFail","error","id","key","split","currentIdentity","getIdentity","fileInput","name","size","type","metadata","location","folderId","tags","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\";\nimport type { File, FileInput } from \"~/domain/file/types.js\";\nimport { FileNotAuthorizedError, InvalidFileSizeError } from \"~/domain/file/errors.js\";\nimport { FileBeforeCreateEvent, FileAfterCreateEvent } from \"./events.js\";\nimport { FilePermissions } 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 filePermissions: FilePermissions.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.filePermissions.ensure({ rwd: \"w\" });\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 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 FilePermissions,\n CreateFileRepository,\n GetSettingsUseCase,\n EventPublisher\n ]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,57 @@
1
+ import type { Result } from "@webiny/feature/api";
2
+ import type { CreatedBy, File, FileInput } from "../../../domain/file/types.js";
3
+ import { type FilePersistenceError, type InvalidFileSizeError, type FileAlreadyExistsError, FileNotAuthorizedError } from "../../../domain/file/errors.js";
4
+ export interface CreateFileInput {
5
+ id?: string;
6
+ key: string;
7
+ size: number;
8
+ type: string;
9
+ name: string;
10
+ metadata?: Record<string, any>;
11
+ extensions?: Record<string, any>;
12
+ tags?: string[];
13
+ location?: {
14
+ folderId: string;
15
+ };
16
+ createdOn?: string;
17
+ createdBy?: CreatedBy;
18
+ modifiedOn?: string;
19
+ modifiedBy?: CreatedBy;
20
+ savedOn?: string;
21
+ savedBy?: CreatedBy;
22
+ }
23
+ /**
24
+ * CreateFile repository interface
25
+ */
26
+ export interface ICreateFileRepository {
27
+ execute(data: FileInput): Promise<Result<File, RepositoryError>>;
28
+ }
29
+ export interface ICreateFileRepositoryErrors {
30
+ notAuthorized: FileNotAuthorizedError;
31
+ persistence: FilePersistenceError;
32
+ }
33
+ type RepositoryError = ICreateFileRepositoryErrors[keyof ICreateFileRepositoryErrors];
34
+ export declare const CreateFileRepository: import("@webiny/di").Abstraction<ICreateFileRepository>;
35
+ export declare namespace CreateFileRepository {
36
+ type Interface = ICreateFileRepository;
37
+ type Error = RepositoryError;
38
+ }
39
+ /**
40
+ * CreateFile use case interface
41
+ */
42
+ export interface ICreateFileUseCase {
43
+ execute(input: CreateFileInput, meta?: Record<string, any>): Promise<Result<File, UseCaseError>>;
44
+ }
45
+ export interface ICreateFileUseCaseErrors {
46
+ notAuthorized: FileNotAuthorizedError;
47
+ persistence: FilePersistenceError;
48
+ invalidSize: InvalidFileSizeError;
49
+ alreadyExists: FileAlreadyExistsError;
50
+ }
51
+ type UseCaseError = ICreateFileUseCaseErrors[keyof ICreateFileUseCaseErrors];
52
+ export declare const CreateFileUseCase: import("@webiny/di").Abstraction<ICreateFileUseCase>;
53
+ export declare namespace CreateFileUseCase {
54
+ type Interface = ICreateFileUseCase;
55
+ type Error = UseCaseError;
56
+ }
57
+ export {};
@@ -0,0 +1,15 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+
3
+ /**
4
+ * CreateFile repository interface
5
+ */
6
+
7
+ export const CreateFileRepository = createAbstraction("CreateFileRepository");
8
+
9
+ /**
10
+ * CreateFile use case interface
11
+ */
12
+
13
+ export const CreateFileUseCase = createAbstraction("CreateFileUseCase");
14
+
15
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +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 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\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\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;;AA6BvD;AACA;AACA;;AAYA,OAAO,MAAMC,oBAAoB,GAC7BD,iBAAiB,CAAwB,sBAAsB,CAAC;;AAOpE;AACA;AACA;;AAiBA,OAAO,MAAME,iBAAiB,GAAGF,iBAAiB,CAAqB,mBAAmB,CAAC","ignoreList":[]}