@webiny/api-file-manager 6.0.0-alpha.5 → 6.0.0-rc.0

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 (410) hide show
  1. package/README.md +7 -13
  2. package/contants.js +1 -7
  3. package/contants.js.map +1 -1
  4. package/delivery/AssetDelivery/Asset.d.ts +3 -7
  5. package/delivery/AssetDelivery/Asset.js +1 -11
  6. package/delivery/AssetDelivery/Asset.js.map +1 -1
  7. package/delivery/AssetDelivery/AssetDeliveryConfig.d.ts +11 -9
  8. package/delivery/AssetDelivery/AssetDeliveryConfig.js +18 -26
  9. package/delivery/AssetDelivery/AssetDeliveryConfig.js.map +1 -1
  10. package/delivery/AssetDelivery/AssetRequest.d.ts +1 -1
  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 +3 -10
  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 +1 -1
  29. package/delivery/AssetDelivery/SetCacheControlHeaders.js +1 -8
  30. package/delivery/AssetDelivery/SetCacheControlHeaders.js.map +1 -1
  31. package/delivery/AssetDelivery/SetResponseHeaders.d.ts +3 -3
  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 -3
  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 +4 -11
  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 +1 -1
  70. package/delivery/AssetDelivery/privateFiles/PrivateCache.js +4 -11
  71. package/delivery/AssetDelivery/privateFiles/PrivateCache.js.map +1 -1
  72. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.d.ts +3 -3
  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 +21 -21
  77. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +1 -1
  78. package/delivery/AssetDelivery/privateFiles/PublicCache.d.ts +1 -1
  79. package/delivery/AssetDelivery/privateFiles/PublicCache.js +4 -11
  80. package/delivery/AssetDelivery/privateFiles/PublicCache.js.map +1 -1
  81. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.d.ts +2 -2
  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 -2
  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 +1 -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 +21 -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 +89 -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 +84 -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 +45 -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 +31 -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 +45 -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 +31 -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 +78 -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 +1 -0
  292. package/features/shared/abstractions.js +3 -0
  293. package/features/shared/abstractions.js.map +1 -0
  294. package/graphql/baseSchema.d.ts +2 -2
  295. package/graphql/baseSchema.js +20 -38
  296. package/graphql/baseSchema.js.map +1 -1
  297. package/graphql/createFilesTypeDefs.d.ts +1 -1
  298. package/graphql/createFilesTypeDefs.js +40 -25
  299. package/graphql/createFilesTypeDefs.js.map +1 -1
  300. package/graphql/filesSchema.d.ts +3 -3
  301. package/graphql/filesSchema.js +73 -46
  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.js +6 -13
  310. package/graphql/utils.js.map +1 -1
  311. package/index.d.ts +6 -9
  312. package/index.js +28 -67
  313. package/index.js.map +1 -1
  314. package/modelModifier/CmsModelModifier.d.ts +1 -1
  315. package/modelModifier/CmsModelModifier.js +7 -15
  316. package/modelModifier/CmsModelModifier.js.map +1 -1
  317. package/package.json +26 -28
  318. package/permissions/schema.d.ts +81 -0
  319. package/permissions/schema.js +22 -0
  320. package/permissions/schema.js.map +1 -0
  321. package/types.d.ts +1 -367
  322. package/types.js +1 -27
  323. package/types.js.map +1 -1
  324. package/FileManagerContextSetup.d.ts +0 -13
  325. package/FileManagerContextSetup.js +0 -115
  326. package/FileManagerContextSetup.js.map +0 -1
  327. package/cmsFileStorage/CmsFilesStorage.d.ts +0 -27
  328. package/cmsFileStorage/CmsFilesStorage.js +0 -164
  329. package/cmsFileStorage/CmsFilesStorage.js.map +0 -1
  330. package/cmsFileStorage/ListFilesWhereProcessor.d.ts +0 -7
  331. package/cmsFileStorage/ListFilesWhereProcessor.js +0 -33
  332. package/cmsFileStorage/ListFilesWhereProcessor.js.map +0 -1
  333. package/cmsFileStorage/ListTagsWhereProcessor.d.ts +0 -7
  334. package/cmsFileStorage/ListTagsWhereProcessor.js +0 -33
  335. package/cmsFileStorage/ListTagsWhereProcessor.js.map +0 -1
  336. package/cmsFileStorage/file.model.d.ts +0 -6
  337. package/cmsFileStorage/file.model.js +0 -158
  338. package/cmsFileStorage/file.model.js.map +0 -1
  339. package/createFileManager/files.crud.d.ts +0 -3
  340. package/createFileManager/files.crud.js +0 -328
  341. package/createFileManager/files.crud.js.map +0 -1
  342. package/createFileManager/index.d.ts +0 -3
  343. package/createFileManager/index.js +0 -23
  344. package/createFileManager/index.js.map +0 -1
  345. package/createFileManager/permissions/FilesPermissions.d.ts +0 -4
  346. package/createFileManager/permissions/FilesPermissions.js +0 -11
  347. package/createFileManager/permissions/FilesPermissions.js.map +0 -1
  348. package/createFileManager/permissions/SettingsPermissions.d.ts +0 -4
  349. package/createFileManager/permissions/SettingsPermissions.js +0 -11
  350. package/createFileManager/permissions/SettingsPermissions.js.map +0 -1
  351. package/createFileManager/settings.crud.d.ts +0 -3
  352. package/createFileManager/settings.crud.js +0 -117
  353. package/createFileManager/settings.crud.js.map +0 -1
  354. package/createFileManager/system.crud.d.ts +0 -3
  355. package/createFileManager/system.crud.js +0 -88
  356. package/createFileManager/system.crud.js.map +0 -1
  357. package/createFileManager/types.d.ts +0 -16
  358. package/createFileManager/types.js +0 -7
  359. package/createFileManager/types.js.map +0 -1
  360. package/delivery/AssetDelivery/AliasAssetRequestResolver.d.ts +0 -11
  361. package/delivery/AssetDelivery/AliasAssetRequestResolver.js +0 -74
  362. package/delivery/AssetDelivery/AliasAssetRequestResolver.js.map +0 -1
  363. package/delivery/AssetDelivery/privateFiles/internalIdentity.d.ts +0 -7
  364. package/delivery/AssetDelivery/privateFiles/internalIdentity.js +0 -18
  365. package/delivery/AssetDelivery/privateFiles/internalIdentity.js.map +0 -1
  366. package/enterprise/applyThreatScanning.d.ts +0 -2
  367. package/enterprise/applyThreatScanning.js +0 -20
  368. package/enterprise/applyThreatScanning.js.map +0 -1
  369. package/handlers/manage/imageManager.d.ts +0 -14
  370. package/handlers/manage/imageManager.js +0 -75
  371. package/handlers/manage/imageManager.js.map +0 -1
  372. package/handlers/manage/index.d.ts +0 -5
  373. package/handlers/manage/index.js +0 -59
  374. package/handlers/manage/index.js.map +0 -1
  375. package/handlers/manage/legacyUtils.d.ts +0 -12
  376. package/handlers/manage/legacyUtils.js +0 -34
  377. package/handlers/manage/legacyUtils.js.map +0 -1
  378. package/handlers/manage/utils.d.ts +0 -12
  379. package/handlers/manage/utils.js +0 -34
  380. package/handlers/manage/utils.js.map +0 -1
  381. package/handlers/types.d.ts +0 -8
  382. package/handlers/types.js +0 -7
  383. package/handlers/types.js.map +0 -1
  384. package/handlers/utils/getEnvironment.d.ts +0 -5
  385. package/handlers/utils/getEnvironment.js +0 -13
  386. package/handlers/utils/getEnvironment.js.map +0 -1
  387. package/handlers/utils/getObjectParams.d.ts +0 -9
  388. package/handlers/utils/getObjectParams.js +0 -23
  389. package/handlers/utils/getObjectParams.js.map +0 -1
  390. package/handlers/utils/index.d.ts +0 -2
  391. package/handlers/utils/index.js +0 -22
  392. package/handlers/utils/index.js.map +0 -1
  393. package/plugins/FilePhysicalStoragePlugin.d.ts +0 -22
  394. package/plugins/FilePhysicalStoragePlugin.js +0 -31
  395. package/plugins/FilePhysicalStoragePlugin.js.map +0 -1
  396. package/plugins/FileStorageTransformPlugin.d.ts +0 -34
  397. package/plugins/FileStorageTransformPlugin.js +0 -39
  398. package/plugins/FileStorageTransformPlugin.js.map +0 -1
  399. package/plugins/index.d.ts +0 -2
  400. package/plugins/index.js +0 -29
  401. package/plugins/index.js.map +0 -1
  402. package/storage/FileStorage.d.ts +0 -34
  403. package/storage/FileStorage.js +0 -90
  404. package/storage/FileStorage.js.map +0 -1
  405. package/types/file.d.ts +0 -49
  406. package/types/file.js +0 -7
  407. package/types/file.js.map +0 -1
  408. package/types/file.lifecycle.d.ts +0 -44
  409. package/types/file.lifecycle.js +0 -7
  410. package/types/file.lifecycle.js.map +0 -1
@@ -1,13 +1,6 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createFilesTypeDefs = void 0;
7
- var _renderFields = require("@webiny/api-headless-cms/utils/renderFields");
8
- var _renderInputFields = require("@webiny/api-headless-cms/utils/renderInputFields");
9
- var _renderListFilterFields = require("@webiny/api-headless-cms/utils/renderListFilterFields");
10
- var _renderSortEnum = require("@webiny/api-headless-cms/utils/renderSortEnum");
1
+ import { renderFields } from "@webiny/api-headless-cms/utils/renderFields.js";
2
+ import { renderInputFields } from "@webiny/api-headless-cms/utils/renderInputFields.js";
3
+ import { renderListFilterFields } from "@webiny/api-headless-cms/utils/renderListFilterFields.js";
11
4
  const removeFieldRequiredValidation = field => {
12
5
  if (field.validation) {
13
6
  field.validation = field.validation.filter(validation => validation.name !== "required");
@@ -25,7 +18,7 @@ const createUpdateFields = fields => {
25
18
  return collection;
26
19
  }, []);
27
20
  };
28
- const createFilesTypeDefs = params => {
21
+ export const createFilesTypeDefs = params => {
29
22
  const {
30
23
  model,
31
24
  models,
@@ -34,40 +27,48 @@ const createFilesTypeDefs = params => {
34
27
  const {
35
28
  fields
36
29
  } = model;
37
- const fieldTypes = (0, _renderFields.renderFields)({
30
+ const fieldTypes = renderFields({
38
31
  models,
39
32
  model,
40
33
  fields,
41
34
  type: "manage",
42
35
  fieldTypePlugins
43
36
  });
44
- const inputCreateFields = (0, _renderInputFields.renderInputFields)({
37
+ const inputCreateFields = renderInputFields({
45
38
  models,
46
39
  model,
47
40
  fields,
48
41
  fieldTypePlugins
49
42
  });
50
- const inputUpdateFields = (0, _renderInputFields.renderInputFields)({
43
+ const inputUpdateFields = renderInputFields({
51
44
  models,
52
45
  model,
53
46
  fields: createUpdateFields(fields),
54
47
  fieldTypePlugins
55
48
  });
56
- const listFilterFieldsRender = (0, _renderListFilterFields.renderListFilterFields)({
49
+ const listFilterFieldsRender = renderListFilterFields({
57
50
  model,
58
51
  fields: model.fields,
59
52
  type: "manage",
60
53
  fieldTypePlugins,
61
54
  excludeFields: ["entryId", "status"]
62
55
  });
63
- const excludeFromSorterts = ["tags", "aliases"];
64
- const sortEnumRender = (0, _renderSortEnum.renderSortEnum)({
65
- model,
66
- fields: model.fields.filter(field => !excludeFromSorterts.includes(field.fieldId)),
67
- fieldTypePlugins,
68
- sorterPlugins: []
69
- });
70
56
  return /* GraphQL */`
57
+ type FmFile_Location {
58
+ folderId: ID!
59
+ }
60
+
61
+ input FmFile_LocationInput {
62
+ folderId: ID!
63
+ }
64
+
65
+ input FmFile_LocationWhereInput {
66
+ folderId: ID
67
+ folderId_in: [ID!]
68
+ folderId_not: ID
69
+ folderId_not_in: [ID!]
70
+ }
71
+
71
72
  ${fieldTypes.map(f => f.typeDefs).join("\n")}
72
73
 
73
74
  type FmFile {
@@ -78,6 +79,7 @@ const createFilesTypeDefs = params => {
78
79
  createdBy: FmCreatedBy!
79
80
  modifiedBy: FmCreatedBy
80
81
  savedBy: FmCreatedBy!
82
+ location: FmFile_Location!
81
83
  src: String
82
84
  ${fieldTypes.map(f => f.fields).join("\n")}
83
85
  }
@@ -98,6 +100,7 @@ const createFilesTypeDefs = params => {
98
100
  createdBy: FmCreatedByInput
99
101
  modifiedBy: FmCreatedByInput
100
102
  savedBy: FmCreatedByInput
103
+ location: FmFile_LocationInput
101
104
  ${inputCreateFields.map(f => f.fields).join("\n")}
102
105
  }
103
106
 
@@ -108,6 +111,7 @@ const createFilesTypeDefs = params => {
108
111
  createdBy: FmCreatedByInput
109
112
  modifiedBy: FmCreatedByInput
110
113
  savedBy: FmCreatedByInput
114
+ location: FmFile_LocationInput
111
115
  ${inputUpdateFields.map(f => f.fields).join("\n")}
112
116
  }
113
117
 
@@ -117,7 +121,8 @@ const createFilesTypeDefs = params => {
117
121
  }
118
122
 
119
123
  input FmFileListWhereInput {
120
- ${listFilterFieldsRender}
124
+ ${listFilterFieldsRender.allFiltersAsString()}
125
+ location: FmFile_LocationWhereInput
121
126
  AND: [FmFileListWhereInput!]
122
127
  OR: [FmFileListWhereInput!]
123
128
  }
@@ -129,7 +134,18 @@ const createFilesTypeDefs = params => {
129
134
  }
130
135
 
131
136
  enum FmFileListSorter {
132
- ${sortEnumRender}
137
+ savedOn_ASC
138
+ savedOn_DESC
139
+ createdOn_ASC
140
+ createdOn_DESC
141
+ name_ASC
142
+ name_DESC
143
+ key_ASC
144
+ key_DESC
145
+ type_ASC
146
+ type_DESC
147
+ size_ASC
148
+ size_DESC
133
149
  }
134
150
 
135
151
  input FmTagsListWhereInput {
@@ -179,6 +195,5 @@ const createFilesTypeDefs = params => {
179
195
  }
180
196
  `;
181
197
  };
182
- exports.createFilesTypeDefs = createFilesTypeDefs;
183
198
 
184
199
  //# sourceMappingURL=createFilesTypeDefs.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_renderFields","require","_renderInputFields","_renderListFilterFields","_renderSortEnum","removeFieldRequiredValidation","field","validation","filter","name","listValidation","v","createUpdateFields","fields","reduce","collection","push","createFilesTypeDefs","params","model","models","plugins","fieldTypePlugins","fieldTypes","renderFields","type","inputCreateFields","renderInputFields","inputUpdateFields","listFilterFieldsRender","renderListFilterFields","excludeFields","excludeFromSorterts","sortEnumRender","renderSortEnum","includes","fieldId","sorterPlugins","map","f","typeDefs","join","exports"],"sources":["createFilesTypeDefs.ts"],"sourcesContent":["import type { CmsFieldTypePlugins, CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { renderFields } from \"@webiny/api-headless-cms/utils/renderFields\";\nimport { renderInputFields } from \"@webiny/api-headless-cms/utils/renderInputFields\";\nimport { renderListFilterFields } from \"@webiny/api-headless-cms/utils/renderListFilterFields\";\nimport { renderSortEnum } from \"@webiny/api-headless-cms/utils/renderSortEnum\";\n\nexport interface CreateFilesTypeDefsParams {\n model: CmsModel;\n models: CmsModel[];\n plugins: CmsFieldTypePlugins;\n}\n\nconst removeFieldRequiredValidation = (field: CmsModelField) => {\n if (field.validation) {\n field.validation = field.validation.filter(validation => validation.name !== \"required\");\n }\n if (field.listValidation) {\n field.listValidation = field.listValidation.filter(v => v.name !== \"required\");\n }\n return field;\n};\n\nconst createUpdateFields = (fields: CmsModelField[]): CmsModelField[] => {\n return fields.reduce<CmsModelField[]>((collection, field) => {\n collection.push(removeFieldRequiredValidation({ ...field }));\n return collection;\n }, []);\n};\n\nexport const createFilesTypeDefs = (params: CreateFilesTypeDefsParams): string => {\n const { model, models, plugins: fieldTypePlugins } = params;\n const { fields } = model;\n\n const fieldTypes = renderFields({\n models,\n model,\n fields,\n type: \"manage\",\n fieldTypePlugins\n });\n const inputCreateFields = renderInputFields({\n models,\n model,\n fields,\n fieldTypePlugins\n });\n const inputUpdateFields = renderInputFields({\n models,\n model,\n fields: createUpdateFields(fields),\n fieldTypePlugins\n });\n const listFilterFieldsRender = renderListFilterFields({\n model,\n fields: model.fields,\n type: \"manage\",\n fieldTypePlugins,\n excludeFields: [\"entryId\", \"status\"]\n });\n\n const excludeFromSorterts = [\"tags\", \"aliases\"];\n\n const sortEnumRender = renderSortEnum({\n model,\n fields: model.fields.filter(field => !excludeFromSorterts.includes(field.fieldId)),\n fieldTypePlugins,\n sorterPlugins: []\n });\n\n return /* GraphQL */ `\n ${fieldTypes.map(f => f.typeDefs).join(\"\\n\")}\n\n type FmFile {\n id: ID!\n createdOn: DateTime!\n modifiedOn: DateTime\n savedOn: DateTime!\n createdBy: FmCreatedBy!\n modifiedBy: FmCreatedBy\n savedBy: FmCreatedBy!\n src: String\n ${fieldTypes.map(f => f.fields).join(\"\\n\")}\n }\n\n ${inputCreateFields.map(f => f.typeDefs).join(\"\\n\")}\n \n input FmCreatedByInput {\n id: ID!\n displayName: String!\n type: String!\n }\n\n input FmFileCreateInput {\n id: ID!\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: FmCreatedByInput\n modifiedBy: FmCreatedByInput\n savedBy: FmCreatedByInput\n ${inputCreateFields.map(f => f.fields).join(\"\\n\")}\n }\n\n input FmFileUpdateInput {\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: FmCreatedByInput\n modifiedBy: FmCreatedByInput\n savedBy: FmCreatedByInput\n ${inputUpdateFields.map(f => f.fields).join(\"\\n\")}\n }\n\n type FmFileResponse {\n data: FmFile\n error: FmError\n }\n\n input FmFileListWhereInput {\n ${listFilterFieldsRender}\n AND: [FmFileListWhereInput!]\n OR: [FmFileListWhereInput!]\n }\n\n type FmFileListResponse {\n data: [FmFile!]\n error: FmError\n meta: FmListMeta\n }\n\n enum FmFileListSorter {\n ${sortEnumRender}\n }\n\n input FmTagsListWhereInput {\n createdBy: String\n tags_startsWith: String\n tags_not_startsWith: String\n }\n\n type FmTag {\n tag: String!\n count: Number!\n }\n\n type FmTagsListResponse {\n data: [FmTag!]\n error: FmError\n }\n\n type FmCreateFilesResponse {\n data: [FmFile!]\n error: FmError\n }\n \n type FmFileModelResponse {\n data: JSON\n error: FmError\n }\n\n extend type FmQuery {\n getFileModel: FmFileModelResponse!\n getFile(id: ID!): FmFileResponse!\n listFiles(\n search: String\n where: FmFileListWhereInput\n limit: Int\n after: String\n sort: [FmFileListSorter!]\n ): FmFileListResponse!\n listTags(where: FmTagsListWhereInput): FmTagsListResponse!\n }\n\n extend type FmMutation {\n createFile(data: FmFileCreateInput!): FmFileResponse!\n createFiles(data: [FmFileCreateInput!]!): FmCreateFilesResponse!\n updateFile(id: ID!, data: FmFileUpdateInput!): FmFileResponse!\n deleteFile(id: ID!): FmBooleanResponse!\n }\n `;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["renderFields","renderInputFields","renderListFilterFields","removeFieldRequiredValidation","field","validation","filter","name","listValidation","v","createUpdateFields","fields","reduce","collection","push","createFilesTypeDefs","params","model","models","plugins","fieldTypePlugins","fieldTypes","type","inputCreateFields","inputUpdateFields","listFilterFieldsRender","excludeFields","map","f","typeDefs","join","allFiltersAsString"],"sources":["createFilesTypeDefs.ts"],"sourcesContent":["import type {\n CmsFieldTypePlugins,\n CmsModel,\n CmsModelField\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { renderFields } from \"@webiny/api-headless-cms/utils/renderFields.js\";\nimport { renderInputFields } from \"@webiny/api-headless-cms/utils/renderInputFields.js\";\nimport { renderListFilterFields } from \"@webiny/api-headless-cms/utils/renderListFilterFields.js\";\n\nexport interface CreateFilesTypeDefsParams {\n model: CmsModel;\n models: CmsModel[];\n plugins: CmsFieldTypePlugins;\n}\n\nconst removeFieldRequiredValidation = (field: CmsModelField) => {\n if (field.validation) {\n field.validation = field.validation.filter(validation => validation.name !== \"required\");\n }\n if (field.listValidation) {\n field.listValidation = field.listValidation.filter(v => v.name !== \"required\");\n }\n return field;\n};\n\nconst createUpdateFields = (fields: CmsModelField[]): CmsModelField[] => {\n return fields.reduce<CmsModelField[]>((collection, field) => {\n collection.push(removeFieldRequiredValidation({ ...field }));\n return collection;\n }, []);\n};\n\nexport const createFilesTypeDefs = (params: CreateFilesTypeDefsParams): string => {\n const { model, models, plugins: fieldTypePlugins } = params;\n const { fields } = model;\n\n const fieldTypes = renderFields({\n models,\n model,\n fields,\n type: \"manage\",\n fieldTypePlugins\n });\n const inputCreateFields = renderInputFields({\n models,\n model,\n fields,\n fieldTypePlugins\n });\n const inputUpdateFields = renderInputFields({\n models,\n model,\n fields: createUpdateFields(fields),\n fieldTypePlugins\n });\n const listFilterFieldsRender = renderListFilterFields({\n model,\n fields: model.fields,\n type: \"manage\",\n fieldTypePlugins,\n excludeFields: [\"entryId\", \"status\"]\n });\n\n return /* GraphQL */ `\n type FmFile_Location {\n folderId: ID!\n }\n\n input FmFile_LocationInput {\n folderId: ID!\n }\n\n input FmFile_LocationWhereInput {\n folderId: ID\n folderId_in: [ID!]\n folderId_not: ID\n folderId_not_in: [ID!]\n }\n \n ${fieldTypes.map(f => f.typeDefs).join(\"\\n\")}\n\n type FmFile {\n id: ID!\n createdOn: DateTime!\n modifiedOn: DateTime\n savedOn: DateTime!\n createdBy: FmCreatedBy!\n modifiedBy: FmCreatedBy\n savedBy: FmCreatedBy!\n location: FmFile_Location!\n src: String\n ${fieldTypes.map(f => f.fields).join(\"\\n\")}\n }\n\n ${inputCreateFields.map(f => f.typeDefs).join(\"\\n\")}\n \n input FmCreatedByInput {\n id: ID!\n displayName: String!\n type: String!\n }\n\n input FmFileCreateInput {\n id: ID!\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: FmCreatedByInput\n modifiedBy: FmCreatedByInput\n savedBy: FmCreatedByInput\n location: FmFile_LocationInput\n ${inputCreateFields.map(f => f.fields).join(\"\\n\")}\n }\n\n input FmFileUpdateInput {\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: FmCreatedByInput\n modifiedBy: FmCreatedByInput\n savedBy: FmCreatedByInput\n location: FmFile_LocationInput\n ${inputUpdateFields.map(f => f.fields).join(\"\\n\")}\n }\n\n type FmFileResponse {\n data: FmFile\n error: FmError\n }\n\n input FmFileListWhereInput {\n ${listFilterFieldsRender.allFiltersAsString()}\n location: FmFile_LocationWhereInput\n AND: [FmFileListWhereInput!]\n OR: [FmFileListWhereInput!]\n }\n\n type FmFileListResponse {\n data: [FmFile!]\n error: FmError\n meta: FmListMeta\n }\n\n enum FmFileListSorter {\n savedOn_ASC\n savedOn_DESC\n createdOn_ASC\n createdOn_DESC\n name_ASC\n name_DESC\n key_ASC\n key_DESC\n type_ASC\n type_DESC\n size_ASC\n size_DESC\n }\n\n input FmTagsListWhereInput {\n createdBy: String\n tags_startsWith: String\n tags_not_startsWith: String\n }\n\n type FmTag {\n tag: String!\n count: Number!\n }\n\n type FmTagsListResponse {\n data: [FmTag!]\n error: FmError\n }\n\n type FmCreateFilesResponse {\n data: [FmFile!]\n error: FmError\n }\n \n type FmFileModelResponse {\n data: JSON\n error: FmError\n }\n\n extend type FmQuery {\n getFileModel: FmFileModelResponse!\n getFile(id: ID!): FmFileResponse!\n listFiles(\n search: String\n where: FmFileListWhereInput\n limit: Int\n after: String\n sort: [FmFileListSorter!]\n ): FmFileListResponse!\n listTags(where: FmTagsListWhereInput): FmTagsListResponse!\n }\n\n extend type FmMutation {\n createFile(data: FmFileCreateInput!): FmFileResponse!\n createFiles(data: [FmFileCreateInput!]!): FmCreateFilesResponse!\n updateFile(id: ID!, data: FmFileUpdateInput!): FmFileResponse!\n deleteFile(id: ID!): FmBooleanResponse!\n }\n `;\n};\n"],"mappings":"AAKA,SAASA,YAAY,QAAQ,gDAAgD;AAC7E,SAASC,iBAAiB,QAAQ,qDAAqD;AACvF,SAASC,sBAAsB,QAAQ,0DAA0D;AAQjG,MAAMC,6BAA6B,GAAIC,KAAoB,IAAK;EAC5D,IAAIA,KAAK,CAACC,UAAU,EAAE;IAClBD,KAAK,CAACC,UAAU,GAAGD,KAAK,CAACC,UAAU,CAACC,MAAM,CAACD,UAAU,IAAIA,UAAU,CAACE,IAAI,KAAK,UAAU,CAAC;EAC5F;EACA,IAAIH,KAAK,CAACI,cAAc,EAAE;IACtBJ,KAAK,CAACI,cAAc,GAAGJ,KAAK,CAACI,cAAc,CAACF,MAAM,CAACG,CAAC,IAAIA,CAAC,CAACF,IAAI,KAAK,UAAU,CAAC;EAClF;EACA,OAAOH,KAAK;AAChB,CAAC;AAED,MAAMM,kBAAkB,GAAIC,MAAuB,IAAsB;EACrE,OAAOA,MAAM,CAACC,MAAM,CAAkB,CAACC,UAAU,EAAET,KAAK,KAAK;IACzDS,UAAU,CAACC,IAAI,CAACX,6BAA6B,CAAC;MAAE,GAAGC;IAAM,CAAC,CAAC,CAAC;IAC5D,OAAOS,UAAU;EACrB,CAAC,EAAE,EAAE,CAAC;AACV,CAAC;AAED,OAAO,MAAME,mBAAmB,GAAIC,MAAiC,IAAa;EAC9E,MAAM;IAAEC,KAAK;IAAEC,MAAM;IAAEC,OAAO,EAAEC;EAAiB,CAAC,GAAGJ,MAAM;EAC3D,MAAM;IAAEL;EAAO,CAAC,GAAGM,KAAK;EAExB,MAAMI,UAAU,GAAGrB,YAAY,CAAC;IAC5BkB,MAAM;IACND,KAAK;IACLN,MAAM;IACNW,IAAI,EAAE,QAAQ;IACdF;EACJ,CAAC,CAAC;EACF,MAAMG,iBAAiB,GAAGtB,iBAAiB,CAAC;IACxCiB,MAAM;IACND,KAAK;IACLN,MAAM;IACNS;EACJ,CAAC,CAAC;EACF,MAAMI,iBAAiB,GAAGvB,iBAAiB,CAAC;IACxCiB,MAAM;IACND,KAAK;IACLN,MAAM,EAAED,kBAAkB,CAACC,MAAM,CAAC;IAClCS;EACJ,CAAC,CAAC;EACF,MAAMK,sBAAsB,GAAGvB,sBAAsB,CAAC;IAClDe,KAAK;IACLN,MAAM,EAAEM,KAAK,CAACN,MAAM;IACpBW,IAAI,EAAE,QAAQ;IACdF,gBAAgB;IAChBM,aAAa,EAAE,CAAC,SAAS,EAAE,QAAQ;EACvC,CAAC,CAAC;EAEF,OAAO,aAAc;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAUL,UAAU,CAACM,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcT,UAAU,CAACM,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACjB,MAAM,CAAC,CAACmB,IAAI,CAAC,IAAI,CAAC;AACtD;AACA;AACA,UAAUP,iBAAiB,CAACI,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcP,iBAAiB,CAACI,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACjB,MAAM,CAAC,CAACmB,IAAI,CAAC,IAAI,CAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcN,iBAAiB,CAACG,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACjB,MAAM,CAAC,CAACmB,IAAI,CAAC,IAAI,CAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcL,sBAAsB,CAACM,kBAAkB,CAAC,CAAC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC","ignoreList":[]}
@@ -1,4 +1,4 @@
1
1
  import { GraphQLSchemaPlugin } from "@webiny/handler-graphql";
2
- import type { FileManagerContext } from "../types";
3
- import type { CreateFilesTypeDefsParams } from "./createFilesTypeDefs";
4
- export declare const createFilesSchema: (params: CreateFilesTypeDefsParams) => GraphQLSchemaPlugin<FileManagerContext>;
2
+ import type { CreateFilesTypeDefsParams } from "../graphql/createFilesTypeDefs.js";
3
+ import type { ApiCoreContext } from "@webiny/api-core/types/core.js";
4
+ export declare const createFilesSchema: (params: CreateFilesTypeDefsParams) => GraphQLSchemaPlugin<ApiCoreContext>;
@@ -1,26 +1,32 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createFilesSchema = void 0;
7
- var _handlerGraphql = require("@webiny/handler-graphql");
8
- var _utils = require("./utils");
9
- var _createFilesTypeDefs = require("./createFilesTypeDefs");
10
- var _apiSecurity = require("@webiny/api-security");
11
- const createFilesSchema = params => {
12
- const fileManagerGraphQL = new _handlerGraphql.GraphQLSchemaPlugin({
13
- typeDefs: (0, _createFilesTypeDefs.createFilesTypeDefs)(params),
1
+ import { ErrorResponse, GraphQLSchemaPlugin, ListResponse, Response } from "@webiny/handler-graphql";
2
+ import { emptyResolver, resolve } from "./utils.js";
3
+ import { createFilesTypeDefs } from "./createFilesTypeDefs.js";
4
+ import NotAuthorizedResponse from "@webiny/api-core/graphql/security/NotAuthorizedResponse.js";
5
+ import { GetFileUseCase } from "../features/file/GetFile/abstractions.js";
6
+ import { ListFilesUseCase } from "../features/file/ListFiles/abstractions.js";
7
+ import { ListTagsUseCase } from "../features/file/ListTags/abstractions.js";
8
+ import { CreateFileUseCase } from "../features/file/CreateFile/abstractions.js";
9
+ import { CreateFilesInBatchUseCase } from "../features/file/CreateFilesInBatch/abstractions.js";
10
+ import { UpdateFileUseCase } from "../features/file/UpdateFile/abstractions.js";
11
+ import { DeleteFileUseCase } from "../features/file/DeleteFile/abstractions.js";
12
+ import { GetSettingsUseCase } from "../features/settings/GetSettings/abstractions.js";
13
+ import { FileModel } from "../domain/file/abstractions.js";
14
+ export const createFilesSchema = params => {
15
+ const fileManagerGraphQL = new GraphQLSchemaPlugin({
16
+ typeDefs: createFilesTypeDefs(params),
14
17
  resolvers: {
15
18
  Query: {
16
- fileManager: _utils.emptyResolver
19
+ fileManager: emptyResolver
17
20
  },
18
21
  Mutation: {
19
- fileManager: _utils.emptyResolver
22
+ fileManager: emptyResolver
20
23
  },
21
24
  FmFile: {
22
25
  async src(file, _, context) {
23
- const settings = await context.fileManager.getSettings();
26
+ // TODO: create `FileUrlGenerator` service to use here
27
+ const getSettings = context.container.resolve(GetSettingsUseCase);
28
+ const result = await getSettings.execute();
29
+ const settings = result.value;
24
30
  return (settings?.srcPrefix || "") + file.key;
25
31
  }
26
32
  },
@@ -28,55 +34,77 @@ const createFilesSchema = params => {
28
34
  getFileModel(_, __, context) {
29
35
  const identity = context.security.getIdentity();
30
36
  if (!identity) {
31
- return new _apiSecurity.NotAuthorizedResponse();
37
+ return new NotAuthorizedResponse();
32
38
  }
33
- return (0, _utils.resolve)(() => context.cms.getModel("fmFile"));
39
+ return resolve(async () => {
40
+ return context.container.resolve(FileModel);
41
+ });
34
42
  },
35
- getFile(_, args, context) {
36
- return (0, _utils.resolve)(() => context.fileManager.getFile(args.id));
43
+ async getFile(_, args, context) {
44
+ const getFile = context.container.resolve(GetFileUseCase);
45
+ const result = await getFile.execute(args.id);
46
+ if (result.isFail()) {
47
+ return new ErrorResponse(result.error);
48
+ }
49
+ return new Response(result.value);
37
50
  },
38
51
  async listFiles(_, args, context) {
39
- try {
40
- const [data, meta] = await context.fileManager.listFiles(args);
41
- return new _handlerGraphql.ListResponse(data, meta);
42
- } catch (e) {
43
- return new _handlerGraphql.ErrorResponse(e);
52
+ const listFiles = context.container.resolve(ListFilesUseCase);
53
+ const result = await listFiles.execute(args);
54
+ if (result.isFail()) {
55
+ return new ErrorResponse(result.error);
44
56
  }
57
+ return new ListResponse(result.value.items, result.value.meta);
45
58
  },
46
59
  async listTags(_, args, context) {
47
- try {
48
- const tags = await context.fileManager.listTags(args || {});
49
- return new _handlerGraphql.Response(tags);
50
- } catch (error) {
51
- return new _handlerGraphql.ErrorResponse(error);
60
+ const listTags = context.container.resolve(ListTagsUseCase);
61
+ const result = await listTags.execute(args || {});
62
+ if (result.isFail()) {
63
+ return new ErrorResponse(result.error);
52
64
  }
65
+ return new Response(result.value);
53
66
  }
54
67
  },
55
68
  FmMutation: {
56
69
  async createFile(_, args, context) {
57
- return (0, _utils.resolve)(() => {
58
- return context.fileManager.createFile(args.data, args.meta);
59
- });
70
+ const createFile = context.container.resolve(CreateFileUseCase);
71
+ const result = await createFile.execute(args.data);
72
+ if (result.isFail()) {
73
+ return new ErrorResponse(result.error);
74
+ }
75
+ return new Response(result.value);
60
76
  },
61
77
  async createFiles(_, args, context) {
62
- return (0, _utils.resolve)(() => {
63
- return context.fileManager.createFilesInBatch(args.data, args.meta);
78
+ const createFilesInBatch = context.container.resolve(CreateFilesInBatchUseCase);
79
+ const result = await createFilesInBatch.execute({
80
+ files: args.data,
81
+ meta: args.meta
64
82
  });
83
+ if (result.isFail()) {
84
+ return new ErrorResponse(result.error);
85
+ }
86
+ return new Response(result.value);
65
87
  },
66
88
  async updateFile(_, args, context) {
67
- return (0, _utils.resolve)(() => {
68
- return context.fileManager.updateFile(args.id, args.data);
89
+ const updateFile = context.container.resolve(UpdateFileUseCase);
90
+ const result = await updateFile.execute({
91
+ id: args.id,
92
+ ...args.data
69
93
  });
94
+ if (result.isFail()) {
95
+ return new ErrorResponse(result.error);
96
+ }
97
+ return new Response(result.value);
70
98
  },
71
99
  async deleteFile(_, args, context) {
72
- return (0, _utils.resolve)(async () => {
73
- // TODO: Ideally, this should work via a lifecycle hook; first we delete a record from DB, then from cloud storage.
74
- const file = await context.fileManager.getFile(args.id);
75
- return await context.fileManager.storage.delete({
76
- id: file.id,
77
- key: file.key
78
- });
79
- });
100
+ const deleteFile = context.container.resolve(DeleteFileUseCase);
101
+ const result = await deleteFile.execute(args.id);
102
+ if (result.isFail()) {
103
+ return new ErrorResponse(result.error);
104
+ }
105
+
106
+ // TODO: deletion from Cloud storage should be implemented in the `api-file-manager-s3` as an event handler
107
+ return new Response(true);
80
108
  }
81
109
  }
82
110
  }
@@ -84,6 +112,5 @@ const createFilesSchema = params => {
84
112
  fileManagerGraphQL.name = "fm.graphql.files";
85
113
  return fileManagerGraphQL;
86
114
  };
87
- exports.createFilesSchema = createFilesSchema;
88
115
 
89
116
  //# sourceMappingURL=filesSchema.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_handlerGraphql","require","_utils","_createFilesTypeDefs","_apiSecurity","createFilesSchema","params","fileManagerGraphQL","GraphQLSchemaPlugin","typeDefs","createFilesTypeDefs","resolvers","Query","fileManager","emptyResolver","Mutation","FmFile","src","file","_","context","settings","getSettings","srcPrefix","key","FmQuery","getFileModel","__","identity","security","getIdentity","NotAuthorizedResponse","resolve","cms","getModel","getFile","args","id","listFiles","data","meta","ListResponse","e","ErrorResponse","listTags","tags","Response","error","FmMutation","createFile","createFiles","createFilesInBatch","updateFile","deleteFile","storage","delete","name","exports"],"sources":["filesSchema.ts"],"sourcesContent":["import {\n ErrorResponse,\n GraphQLSchemaPlugin,\n ListResponse,\n Response\n} from \"@webiny/handler-graphql\";\nimport type { FileManagerContext, FilesListOpts } from \"~/types\";\nimport { emptyResolver, resolve } from \"./utils\";\nimport type { CreateFilesTypeDefsParams } from \"~/graphql/createFilesTypeDefs\";\nimport { createFilesTypeDefs } from \"~/graphql/createFilesTypeDefs\";\nimport { NotAuthorizedResponse } from \"@webiny/api-security\";\n\nexport const createFilesSchema = (params: CreateFilesTypeDefsParams) => {\n const fileManagerGraphQL = new GraphQLSchemaPlugin<FileManagerContext>({\n typeDefs: createFilesTypeDefs(params),\n resolvers: {\n Query: {\n fileManager: emptyResolver\n },\n Mutation: {\n fileManager: emptyResolver\n },\n FmFile: {\n async src(file, _, context) {\n const settings = await context.fileManager.getSettings();\n return (settings?.srcPrefix || \"\") + file.key;\n }\n },\n FmQuery: {\n getFileModel(_, __, context) {\n const identity = context.security.getIdentity();\n if (!identity) {\n return new NotAuthorizedResponse();\n }\n\n return resolve(() => context.cms.getModel(\"fmFile\"));\n },\n getFile(_, args: any, context) {\n return resolve(() => context.fileManager.getFile(args.id));\n },\n async listFiles(_, args: FilesListOpts, context) {\n try {\n const [data, meta] = await context.fileManager.listFiles(args);\n\n return new ListResponse(data, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n async listTags(_, args: any, context) {\n try {\n const tags = await context.fileManager.listTags(args || {});\n\n return new Response(tags);\n } catch (error) {\n return new ErrorResponse(error);\n }\n }\n },\n FmMutation: {\n async createFile(_, args: any, context) {\n return resolve(() => {\n return context.fileManager.createFile(args.data, args.meta);\n });\n },\n async createFiles(_, args: any, context) {\n return resolve(() => {\n return context.fileManager.createFilesInBatch(args.data, args.meta);\n });\n },\n async updateFile(_, args: any, context) {\n return resolve(() => {\n return context.fileManager.updateFile(args.id, args.data);\n });\n },\n async deleteFile(_, args: any, context) {\n return resolve(async () => {\n // TODO: Ideally, this should work via a lifecycle hook; first we delete a record from DB, then from cloud storage.\n const file = await context.fileManager.getFile(args.id);\n return await context.fileManager.storage.delete({\n id: file.id,\n key: file.key\n });\n });\n }\n }\n }\n });\n fileManagerGraphQL.name = \"fm.graphql.files\";\n\n return fileManagerGraphQL;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["ErrorResponse","GraphQLSchemaPlugin","ListResponse","Response","emptyResolver","resolve","createFilesTypeDefs","NotAuthorizedResponse","GetFileUseCase","ListFilesUseCase","ListTagsUseCase","CreateFileUseCase","CreateFilesInBatchUseCase","UpdateFileUseCase","DeleteFileUseCase","GetSettingsUseCase","FileModel","createFilesSchema","params","fileManagerGraphQL","typeDefs","resolvers","Query","fileManager","Mutation","FmFile","src","file","_","context","getSettings","container","result","execute","settings","value","srcPrefix","key","FmQuery","getFileModel","__","identity","security","getIdentity","getFile","args","id","isFail","error","listFiles","items","meta","listTags","FmMutation","createFile","data","createFiles","createFilesInBatch","files","updateFile","deleteFile","name"],"sources":["filesSchema.ts"],"sourcesContent":["import {\n ErrorResponse,\n GraphQLSchemaPlugin,\n ListResponse,\n Response\n} from \"@webiny/handler-graphql\";\nimport { emptyResolver, resolve } from \"./utils.js\";\nimport type { CreateFilesTypeDefsParams } from \"~/graphql/createFilesTypeDefs.js\";\nimport { createFilesTypeDefs } from \"~/graphql/createFilesTypeDefs.js\";\nimport NotAuthorizedResponse from \"@webiny/api-core/graphql/security/NotAuthorizedResponse.js\";\nimport { GetFileUseCase } from \"~/features/file/GetFile/abstractions.js\";\nimport { ListFilesUseCase } from \"~/features/file/ListFiles/abstractions.js\";\nimport { ListTagsUseCase } from \"~/features/file/ListTags/abstractions.js\";\nimport { CreateFileUseCase } from \"~/features/file/CreateFile/abstractions.js\";\nimport { CreateFilesInBatchUseCase } from \"~/features/file/CreateFilesInBatch/abstractions.js\";\nimport { UpdateFileUseCase } from \"~/features/file/UpdateFile/abstractions.js\";\nimport { DeleteFileUseCase } from \"~/features/file/DeleteFile/abstractions.js\";\nimport { GetSettingsUseCase } from \"~/features/settings/GetSettings/abstractions.js\";\nimport type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\nimport { FileModel } from \"~/domain/file/abstractions.js\";\n\nexport const createFilesSchema = (params: CreateFilesTypeDefsParams) => {\n const fileManagerGraphQL = new GraphQLSchemaPlugin<ApiCoreContext>({\n typeDefs: createFilesTypeDefs(params),\n resolvers: {\n Query: {\n fileManager: emptyResolver\n },\n Mutation: {\n fileManager: emptyResolver\n },\n FmFile: {\n async src(file, _, context) {\n // TODO: create `FileUrlGenerator` service to use here\n const getSettings = context.container.resolve(GetSettingsUseCase);\n const result = await getSettings.execute();\n const settings = result.value;\n return (settings?.srcPrefix || \"\") + file.key;\n }\n },\n FmQuery: {\n getFileModel(_, __, context) {\n const identity = context.security.getIdentity();\n if (!identity) {\n return new NotAuthorizedResponse();\n }\n\n return resolve(async () => {\n return context.container.resolve(FileModel);\n });\n },\n async getFile(_, args: any, context) {\n const getFile = context.container.resolve(GetFileUseCase);\n const result = await getFile.execute(args.id);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(result.value);\n },\n async listFiles(_, args, context) {\n const listFiles = context.container.resolve(ListFilesUseCase);\n const result = await listFiles.execute(args);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new ListResponse(result.value.items, result.value.meta);\n },\n async listTags(_, args: any, context) {\n const listTags = context.container.resolve(ListTagsUseCase);\n const result = await listTags.execute(args || {});\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(result.value);\n }\n },\n FmMutation: {\n async createFile(_, args: any, context) {\n const createFile = context.container.resolve(CreateFileUseCase);\n const result = await createFile.execute(args.data);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(result.value);\n },\n async createFiles(_, args: any, context) {\n const createFilesInBatch = context.container.resolve(CreateFilesInBatchUseCase);\n const result = await createFilesInBatch.execute({\n files: args.data,\n meta: args.meta\n });\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(result.value);\n },\n async updateFile(_, args: any, context) {\n const updateFile = context.container.resolve(UpdateFileUseCase);\n const result = await updateFile.execute({\n id: args.id,\n ...args.data\n });\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(result.value);\n },\n async deleteFile(_, args: any, context) {\n const deleteFile = context.container.resolve(DeleteFileUseCase);\n const result = await deleteFile.execute(args.id);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n // TODO: deletion from Cloud storage should be implemented in the `api-file-manager-s3` as an event handler\n return new Response(true);\n }\n }\n }\n });\n fileManagerGraphQL.name = \"fm.graphql.files\";\n\n return fileManagerGraphQL;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,3 @@
1
1
  import { GraphQLSchemaPlugin } from "@webiny/handler-graphql";
2
- import type { FileManagerContext } from "../types";
3
- export declare const getFileByUrl: () => GraphQLSchemaPlugin<FileManagerContext>;
2
+ import type { ApiCoreContext } from "@webiny/api-core/types/core.js";
3
+ export declare const getFileByUrl: () => GraphQLSchemaPlugin<ApiCoreContext>;
@@ -1,13 +1,9 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getFileByUrl = void 0;
7
- var _handlerGraphql = require("@webiny/handler-graphql");
8
- var _apiSecurity = require("@webiny/api-security");
9
- const getFileByUrl = () => {
10
- const fileManagerGraphQL = new _handlerGraphql.GraphQLSchemaPlugin({
1
+ import { ErrorResponse, GraphQLSchemaPlugin } from "@webiny/handler-graphql";
2
+ import { Response, NotFoundResponse } from "@webiny/handler-graphql";
3
+ import { NotAuthorizedError } from "@webiny/api-core/features/security/shared/index.js";
4
+ import { ListFilesUseCase } from "../features/file/ListFiles/index.js";
5
+ export const getFileByUrl = () => {
6
+ const fileManagerGraphQL = new GraphQLSchemaPlugin({
11
7
  typeDefs: /* GraphQL */`
12
8
  extend type FmQuery {
13
9
  getFileByUrl(url: String!): FmFileResponse
@@ -19,15 +15,15 @@ const getFileByUrl = () => {
19
15
  const {
20
16
  url
21
17
  } = args;
22
- const useCase = new SecureGetFileByUrl(context.security, new GetFileByUrlUseCase(context.fileManager));
18
+ const useCase = new SecureGetFileByUrl(context.security, new GetFileByUrlUseCase(context.container.resolve(ListFilesUseCase)));
23
19
  try {
24
20
  const file = await useCase.execute(url);
25
21
  if (file) {
26
- return new _handlerGraphql.Response(file);
22
+ return new Response(file);
27
23
  }
28
- return new _handlerGraphql.NotFoundResponse("File not found!");
24
+ return new NotFoundResponse("File not found!");
29
25
  } catch (error) {
30
- return new _handlerGraphql.ErrorResponse(error);
26
+ return new ErrorResponse(error);
31
27
  }
32
28
  }
33
29
  }
@@ -36,27 +32,22 @@ const getFileByUrl = () => {
36
32
  fileManagerGraphQL.name = "fm.graphql.getFileByUrl";
37
33
  return fileManagerGraphQL;
38
34
  };
39
- exports.getFileByUrl = getFileByUrl;
40
35
  class GetFileByUrlUseCase {
41
- constructor(fileManager) {
42
- this.fileManager = fileManager;
36
+ constructor(listFiles) {
37
+ this.listFiles = listFiles;
43
38
  }
44
39
  async execute(url) {
45
40
  const {
46
41
  pathname
47
42
  } = new URL(url);
48
- const isAlias = !pathname.startsWith("/files/") && !pathname.startsWith("/private/");
49
- const query = isAlias ? pathname : pathname.replace("/files/", "").replace("/private/", "");
50
- const [files] = await this.fileManager.listFiles({
43
+ const query = pathname.replace("/files/", "").replace("/private/", "");
44
+ const filesResult = await this.listFiles.execute({
51
45
  where: {
52
- OR: [{
53
- key: query
54
- }, {
55
- aliases_contains: query
56
- }]
46
+ key: query
57
47
  },
58
48
  limit: 1
59
49
  });
50
+ const files = filesResult.value.items;
60
51
  return files.length ? files[0] : undefined;
61
52
  }
62
53
  }
@@ -67,7 +58,7 @@ class SecureGetFileByUrl {
67
58
  }
68
59
  execute(url) {
69
60
  if (!this.security.getIdentity()) {
70
- throw new _apiSecurity.NotAuthorizedError({
61
+ throw new NotAuthorizedError({
71
62
  message: "You're not authorized to edit this file!"
72
63
  });
73
64
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_handlerGraphql","require","_apiSecurity","getFileByUrl","fileManagerGraphQL","GraphQLSchemaPlugin","typeDefs","resolvers","FmQuery","_","args","context","url","useCase","SecureGetFileByUrl","security","GetFileByUrlUseCase","fileManager","file","execute","Response","NotFoundResponse","error","ErrorResponse","name","exports","constructor","pathname","URL","isAlias","startsWith","query","replace","files","listFiles","where","OR","key","aliases_contains","limit","length","undefined","getIdentity","NotAuthorizedError","message"],"sources":["getFileByUrl.ts"],"sourcesContent":["import { ErrorResponse, GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { Response, NotFoundResponse } from \"@webiny/handler-graphql\";\nimport type { FileManagerContext, FileManagerContextObject, File } from \"~/types\";\nimport type { Security } from \"@webiny/api-security/types\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\n\nexport const getFileByUrl = () => {\n const fileManagerGraphQL = new GraphQLSchemaPlugin<FileManagerContext>({\n typeDefs: /* GraphQL */ `\n extend type FmQuery {\n getFileByUrl(url: String!): FmFileResponse\n }\n `,\n resolvers: {\n FmQuery: {\n async getFileByUrl(_, args, context) {\n const { url } = args as { url: string };\n const useCase = new SecureGetFileByUrl(\n context.security,\n new GetFileByUrlUseCase(context.fileManager)\n );\n try {\n const file = await useCase.execute(url);\n if (file) {\n return new Response(file);\n }\n return new NotFoundResponse(\"File not found!\");\n } catch (error) {\n return new ErrorResponse(error);\n }\n }\n }\n }\n });\n fileManagerGraphQL.name = \"fm.graphql.getFileByUrl\";\n\n return fileManagerGraphQL;\n};\n\ninterface IGetFileByUrl {\n execute(url: string): Promise<File | undefined>;\n}\n\nclass GetFileByUrlUseCase implements IGetFileByUrl {\n private readonly fileManager: FileManagerContextObject;\n\n constructor(fileManager: FileManagerContextObject) {\n this.fileManager = fileManager;\n }\n\n async execute(url: string): Promise<File | undefined> {\n const { pathname } = new URL(url);\n const isAlias = !pathname.startsWith(\"/files/\") && !pathname.startsWith(\"/private/\");\n const query = isAlias ? pathname : pathname.replace(\"/files/\", \"\").replace(\"/private/\", \"\");\n\n const [files] = await this.fileManager.listFiles({\n where: {\n OR: [{ key: query }, { aliases_contains: query }]\n },\n limit: 1\n });\n\n return files.length ? files[0] : undefined;\n }\n}\n\nclass SecureGetFileByUrl implements IGetFileByUrl {\n private security: Security;\n private useCase: IGetFileByUrl;\n\n constructor(security: Security, useCase: IGetFileByUrl) {\n this.security = security;\n this.useCase = useCase;\n }\n\n execute(url: string): Promise<File | undefined> {\n if (!this.security.getIdentity()) {\n throw new NotAuthorizedError({ message: \"You're not authorized to edit this file!\" });\n }\n\n return this.useCase.execute(url);\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAIA,IAAAC,YAAA,GAAAD,OAAA;AAEO,MAAME,YAAY,GAAGA,CAAA,KAAM;EAC9B,MAAMC,kBAAkB,GAAG,IAAIC,mCAAmB,CAAqB;IACnEC,QAAQ,EAAE,aAAc;AAChC;AACA;AACA;AACA,SAAS;IACDC,SAAS,EAAE;MACPC,OAAO,EAAE;QACL,MAAML,YAAYA,CAACM,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE;UACjC,MAAM;YAAEC;UAAI,CAAC,GAAGF,IAAuB;UACvC,MAAMG,OAAO,GAAG,IAAIC,kBAAkB,CAClCH,OAAO,CAACI,QAAQ,EAChB,IAAIC,mBAAmB,CAACL,OAAO,CAACM,WAAW,CAC/C,CAAC;UACD,IAAI;YACA,MAAMC,IAAI,GAAG,MAAML,OAAO,CAACM,OAAO,CAACP,GAAG,CAAC;YACvC,IAAIM,IAAI,EAAE;cACN,OAAO,IAAIE,wBAAQ,CAACF,IAAI,CAAC;YAC7B;YACA,OAAO,IAAIG,gCAAgB,CAAC,iBAAiB,CAAC;UAClD,CAAC,CAAC,OAAOC,KAAK,EAAE;YACZ,OAAO,IAAIC,6BAAa,CAACD,KAAK,CAAC;UACnC;QACJ;MACJ;IACJ;EACJ,CAAC,CAAC;EACFlB,kBAAkB,CAACoB,IAAI,GAAG,yBAAyB;EAEnD,OAAOpB,kBAAkB;AAC7B,CAAC;AAACqB,OAAA,CAAAtB,YAAA,GAAAA,YAAA;AAMF,MAAMa,mBAAmB,CAA0B;EAG/CU,WAAWA,CAACT,WAAqC,EAAE;IAC/C,IAAI,CAACA,WAAW,GAAGA,WAAW;EAClC;EAEA,MAAME,OAAOA,CAACP,GAAW,EAA6B;IAClD,MAAM;MAAEe;IAAS,CAAC,GAAG,IAAIC,GAAG,CAAChB,GAAG,CAAC;IACjC,MAAMiB,OAAO,GAAG,CAACF,QAAQ,CAACG,UAAU,CAAC,SAAS,CAAC,IAAI,CAACH,QAAQ,CAACG,UAAU,CAAC,WAAW,CAAC;IACpF,MAAMC,KAAK,GAAGF,OAAO,GAAGF,QAAQ,GAAGA,QAAQ,CAACK,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;IAE3F,MAAM,CAACC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAChB,WAAW,CAACiB,SAAS,CAAC;MAC7CC,KAAK,EAAE;QACHC,EAAE,EAAE,CAAC;UAAEC,GAAG,EAAEN;QAAM,CAAC,EAAE;UAAEO,gBAAgB,EAAEP;QAAM,CAAC;MACpD,CAAC;MACDQ,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,OAAON,KAAK,CAACO,MAAM,GAAGP,KAAK,CAAC,CAAC,CAAC,GAAGQ,SAAS;EAC9C;AACJ;AAEA,MAAM3B,kBAAkB,CAA0B;EAI9CY,WAAWA,CAACX,QAAkB,EAAEF,OAAsB,EAAE;IACpD,IAAI,CAACE,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACF,OAAO,GAAGA,OAAO;EAC1B;EAEAM,OAAOA,CAACP,GAAW,EAA6B;IAC5C,IAAI,CAAC,IAAI,CAACG,QAAQ,CAAC2B,WAAW,CAAC,CAAC,EAAE;MAC9B,MAAM,IAAIC,+BAAkB,CAAC;QAAEC,OAAO,EAAE;MAA2C,CAAC,CAAC;IACzF;IAEA,OAAO,IAAI,CAAC/B,OAAO,CAACM,OAAO,CAACP,GAAG,CAAC;EACpC;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["ErrorResponse","GraphQLSchemaPlugin","Response","NotFoundResponse","NotAuthorizedError","ListFilesUseCase","getFileByUrl","fileManagerGraphQL","typeDefs","resolvers","FmQuery","_","args","context","url","useCase","SecureGetFileByUrl","security","GetFileByUrlUseCase","container","resolve","file","execute","error","name","constructor","listFiles","pathname","URL","query","replace","filesResult","where","key","limit","files","value","items","length","undefined","getIdentity","message"],"sources":["getFileByUrl.ts"],"sourcesContent":["import { ErrorResponse, GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { Response, NotFoundResponse } from \"@webiny/handler-graphql\";\nimport type { File } from \"~/domain/file/types.js\";\nimport type { Security } from \"@webiny/api-core/types/security.js\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/index.js\";\nimport type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\nimport { ListFilesUseCase } from \"~/features/file/ListFiles/index.js\";\n\nexport const getFileByUrl = () => {\n const fileManagerGraphQL = new GraphQLSchemaPlugin<ApiCoreContext>({\n typeDefs: /* GraphQL */ `\n extend type FmQuery {\n getFileByUrl(url: String!): FmFileResponse\n }\n `,\n resolvers: {\n FmQuery: {\n async getFileByUrl(_, args, context) {\n const { url } = args as { url: string };\n const useCase = new SecureGetFileByUrl(\n context.security,\n new GetFileByUrlUseCase(context.container.resolve(ListFilesUseCase))\n );\n try {\n const file = await useCase.execute(url);\n if (file) {\n return new Response(file);\n }\n return new NotFoundResponse(\"File not found!\");\n } catch (error) {\n return new ErrorResponse(error);\n }\n }\n }\n }\n });\n fileManagerGraphQL.name = \"fm.graphql.getFileByUrl\";\n\n return fileManagerGraphQL;\n};\n\ninterface IGetFileByUrl {\n execute(url: string): Promise<File | undefined>;\n}\n\nclass GetFileByUrlUseCase implements IGetFileByUrl {\n constructor(private listFiles: ListFilesUseCase.Interface) {}\n\n async execute(url: string): Promise<File | undefined> {\n const { pathname } = new URL(url);\n const query = pathname.replace(\"/files/\", \"\").replace(\"/private/\", \"\");\n\n const filesResult = await this.listFiles.execute({\n where: {\n key: query\n },\n limit: 1\n });\n\n const files = filesResult.value.items;\n\n return files.length ? files[0] : undefined;\n }\n}\n\nclass SecureGetFileByUrl implements IGetFileByUrl {\n private security: Security;\n private useCase: IGetFileByUrl;\n\n constructor(security: Security, useCase: IGetFileByUrl) {\n this.security = security;\n this.useCase = useCase;\n }\n\n execute(url: string): Promise<File | undefined> {\n if (!this.security.getIdentity()) {\n throw new NotAuthorizedError({ message: \"You're not authorized to edit this file!\" });\n }\n\n return this.useCase.execute(url);\n }\n}\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,mBAAmB,QAAQ,yBAAyB;AAC5E,SAASC,QAAQ,EAAEC,gBAAgB,QAAQ,yBAAyB;AAGpE,SAASC,kBAAkB,QAAQ,oDAAoD;AAEvF,SAASC,gBAAgB;AAEzB,OAAO,MAAMC,YAAY,GAAGA,CAAA,KAAM;EAC9B,MAAMC,kBAAkB,GAAG,IAAIN,mBAAmB,CAAiB;IAC/DO,QAAQ,EAAE,aAAc;AAChC;AACA;AACA;AACA,SAAS;IACDC,SAAS,EAAE;MACPC,OAAO,EAAE;QACL,MAAMJ,YAAYA,CAACK,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE;UACjC,MAAM;YAAEC;UAAI,CAAC,GAAGF,IAAuB;UACvC,MAAMG,OAAO,GAAG,IAAIC,kBAAkB,CAClCH,OAAO,CAACI,QAAQ,EAChB,IAAIC,mBAAmB,CAACL,OAAO,CAACM,SAAS,CAACC,OAAO,CAACf,gBAAgB,CAAC,CACvE,CAAC;UACD,IAAI;YACA,MAAMgB,IAAI,GAAG,MAAMN,OAAO,CAACO,OAAO,CAACR,GAAG,CAAC;YACvC,IAAIO,IAAI,EAAE;cACN,OAAO,IAAInB,QAAQ,CAACmB,IAAI,CAAC;YAC7B;YACA,OAAO,IAAIlB,gBAAgB,CAAC,iBAAiB,CAAC;UAClD,CAAC,CAAC,OAAOoB,KAAK,EAAE;YACZ,OAAO,IAAIvB,aAAa,CAACuB,KAAK,CAAC;UACnC;QACJ;MACJ;IACJ;EACJ,CAAC,CAAC;EACFhB,kBAAkB,CAACiB,IAAI,GAAG,yBAAyB;EAEnD,OAAOjB,kBAAkB;AAC7B,CAAC;AAMD,MAAMW,mBAAmB,CAA0B;EAC/CO,WAAWA,CAASC,SAAqC,EAAE;IAAA,KAAvCA,SAAqC,GAArCA,SAAqC;EAAG;EAE5D,MAAMJ,OAAOA,CAACR,GAAW,EAA6B;IAClD,MAAM;MAAEa;IAAS,CAAC,GAAG,IAAIC,GAAG,CAACd,GAAG,CAAC;IACjC,MAAMe,KAAK,GAAGF,QAAQ,CAACG,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;IAEtE,MAAMC,WAAW,GAAG,MAAM,IAAI,CAACL,SAAS,CAACJ,OAAO,CAAC;MAC7CU,KAAK,EAAE;QACHC,GAAG,EAAEJ;MACT,CAAC;MACDK,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,MAAMC,KAAK,GAAGJ,WAAW,CAACK,KAAK,CAACC,KAAK;IAErC,OAAOF,KAAK,CAACG,MAAM,GAAGH,KAAK,CAAC,CAAC,CAAC,GAAGI,SAAS;EAC9C;AACJ;AAEA,MAAMvB,kBAAkB,CAA0B;EAI9CS,WAAWA,CAACR,QAAkB,EAAEF,OAAsB,EAAE;IACpD,IAAI,CAACE,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACF,OAAO,GAAGA,OAAO;EAC1B;EAEAO,OAAOA,CAACR,GAAW,EAA6B;IAC5C,IAAI,CAAC,IAAI,CAACG,QAAQ,CAACuB,WAAW,CAAC,CAAC,EAAE;MAC9B,MAAM,IAAIpC,kBAAkB,CAAC;QAAEqC,OAAO,EAAE;MAA2C,CAAC,CAAC;IACzF;IAEA,OAAO,IAAI,CAAC1B,OAAO,CAACO,OAAO,CAACR,GAAG,CAAC;EACpC;AACJ","ignoreList":[]}
@@ -1,4 +1,4 @@
1
1
  import { ContextPlugin } from "@webiny/api";
2
+ import type { ApiCoreContext } from "@webiny/api-core/types/core.js";
2
3
  import { GraphQLSchemaPlugin } from "@webiny/handler-graphql";
3
- import type { FileManagerContext } from "../types";
4
- export declare const createGraphQLSchemaPlugin: () => (GraphQLSchemaPlugin<FileManagerContext> | ContextPlugin<FileManagerContext>)[];
4
+ export declare const createGraphQLSchemaPlugin: () => (GraphQLSchemaPlugin<ApiCoreContext> | ContextPlugin<ApiCoreContext>)[];
package/graphql/index.js CHANGED
@@ -1,33 +1,32 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createGraphQLSchemaPlugin = void 0;
7
- var _api = require("@webiny/api");
8
- var _apiHeadlessCms = require("@webiny/api-headless-cms");
9
- var _createFieldTypePluginRecords = require("@webiny/api-headless-cms/graphql/schema/createFieldTypePluginRecords");
10
- var _getSchemaFromFieldPlugins = require("@webiny/api-headless-cms/utils/getSchemaFromFieldPlugins");
11
- var _baseSchema = require("./baseSchema");
12
- var _handlerGraphql = require("@webiny/handler-graphql");
13
- var _filesSchema = require("./filesSchema");
14
- var _getFileByUrl = require("./getFileByUrl");
15
- const createGraphQLSchemaPlugin = () => {
16
- return [(0, _baseSchema.createBaseSchema)(),
1
+ import { ContextPlugin } from "@webiny/api";
2
+ import { GraphQLSchemaPlugin } from "@webiny/handler-graphql";
3
+ import { ListModelsUseCase } from "@webiny/api-headless-cms/features/contentModel/ListModels/index.js";
4
+ import { createFieldTypePluginRecords } from "@webiny/api-headless-cms/graphql/schema/createFieldTypePluginRecords.js";
5
+ import { createGraphQLSchemaPluginFromFieldPlugins } from "@webiny/api-headless-cms/utils/getSchemaFromFieldPlugins.js";
6
+ import { createBaseSchema } from "./baseSchema.js";
7
+ import { createFilesSchema } from "./filesSchema.js";
8
+ import { getFileByUrl } from "./getFileByUrl.js";
9
+ import { FileModel } from "../domain/file/abstractions.js";
10
+ import { TenantContext } from "@webiny/api-core/features/TenantContext";
11
+ export const createGraphQLSchemaPlugin = () => {
12
+ return [createBaseSchema(),
17
13
  // Files schema is generated dynamically, based on a CMS model, so we need to
18
14
  // register it from a ContextPlugin, to perform additional bootstrap.
19
- new _api.ContextPlugin(async context => {
20
- if (!(await (0, _apiHeadlessCms.isHeadlessCmsReady)(context))) {
15
+ new ContextPlugin(async context => {
16
+ const tenantContext = context.container.resolve(TenantContext);
17
+ if (!tenantContext.getTenant()) {
21
18
  return;
22
19
  }
20
+ const fileModel = context.container.resolve(FileModel);
21
+ const listModels = context.container.resolve(ListModelsUseCase);
23
22
  await context.security.withoutAuthorization(async () => {
24
- const fileModel = await context.cms.getModel("fmFile");
25
- const models = await context.cms.listModels();
26
- const fieldPlugins = (0, _createFieldTypePluginRecords.createFieldTypePluginRecords)(context.plugins);
23
+ const modelsResult = await listModels.execute();
24
+ const models = modelsResult.value;
25
+ const fieldPlugins = createFieldTypePluginRecords(context.plugins);
27
26
  /**
28
27
  * We need to register all plugins for all the CMS fields.
29
28
  */
30
- const plugins = (0, _getSchemaFromFieldPlugins.createGraphQLSchemaPluginFromFieldPlugins)({
29
+ const plugins = createGraphQLSchemaPluginFromFieldPlugins({
31
30
  models,
32
31
  type: "manage",
33
32
  fieldTypePlugins: fieldPlugins,
@@ -36,20 +35,19 @@ const createGraphQLSchemaPlugin = () => {
36
35
  type,
37
36
  fieldType
38
37
  }) => {
39
- const plugin = new _handlerGraphql.GraphQLSchemaPlugin(schema);
38
+ const plugin = new GraphQLSchemaPlugin(schema);
40
39
  plugin.name = `fm.graphql.schema.${type}.field.${fieldType}`;
41
40
  return plugin;
42
41
  }
43
42
  });
44
- const graphQlPlugin = (0, _filesSchema.createFilesSchema)({
43
+ const graphQlPlugin = createFilesSchema({
45
44
  model: fileModel,
46
45
  models,
47
46
  plugins: fieldPlugins
48
47
  });
49
- context.plugins.register([...plugins, graphQlPlugin, (0, _getFileByUrl.getFileByUrl)()]);
48
+ context.plugins.register([...plugins, graphQlPlugin, getFileByUrl()]);
50
49
  });
51
50
  })];
52
51
  };
53
- exports.createGraphQLSchemaPlugin = createGraphQLSchemaPlugin;
54
52
 
55
53
  //# sourceMappingURL=index.js.map