@webiny/api-aco 0.0.0-unstable.e6f0dc8ca7 → 0.0.0-unstable.e9333b3f0b

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 (471) hide show
  1. package/AcoFeature.d.ts +5 -0
  2. package/AcoFeature.js +132 -0
  3. package/AcoFeature.js.map +1 -0
  4. package/AcoFolderSchemaFactory.d.ts +32 -0
  5. package/AcoFolderSchemaFactory.js +82 -0
  6. package/AcoFolderSchemaFactory.js.map +1 -0
  7. package/constants.js +2 -1
  8. package/constants.js.map +1 -1
  9. package/createAcoGraphQL.d.ts +8 -4
  10. package/createAcoGraphQL.js +56 -97
  11. package/createAcoGraphQL.js.map +1 -1
  12. package/domain/folder/abstractions.d.ts +12 -5
  13. package/domain/folder/abstractions.js +2 -5
  14. package/domain/folder/abstractions.js.map +1 -1
  15. package/domain/folder/errors.js +42 -47
  16. package/domain/folder/errors.js.map +1 -1
  17. package/domain/folder/folder.model.js +53 -36
  18. package/domain/folder/folder.model.js.map +1 -1
  19. package/exports/api/aco/flp.d.ts +1 -0
  20. package/exports/api/aco/flp.js +1 -2
  21. package/exports/api/aco/folder.d.ts +2 -1
  22. package/exports/api/aco/folder.js +5 -7
  23. package/features/ai/CreateFolderTool.d.ts +51 -0
  24. package/features/ai/CreateFolderTool.js +65 -0
  25. package/features/ai/CreateFolderTool.js.map +1 -0
  26. package/features/ai/CreateTeamTool.d.ts +48 -0
  27. package/features/ai/CreateTeamTool.js +56 -0
  28. package/features/ai/CreateTeamTool.js.map +1 -0
  29. package/features/ai/DeleteFolderTool.d.ts +50 -0
  30. package/features/ai/DeleteFolderTool.js +62 -0
  31. package/features/ai/DeleteFolderTool.js.map +1 -0
  32. package/features/ai/GrantFolderAccessTool.d.ts +79 -0
  33. package/features/ai/GrantFolderAccessTool.js +87 -0
  34. package/features/ai/GrantFolderAccessTool.js.map +1 -0
  35. package/features/ai/ListFoldersTool.d.ts +47 -0
  36. package/features/ai/ListFoldersTool.js +57 -0
  37. package/features/ai/ListFoldersTool.js.map +1 -0
  38. package/features/ai/ListRolesTool.d.ts +39 -0
  39. package/features/ai/ListRolesTool.js +48 -0
  40. package/features/ai/ListRolesTool.js.map +1 -0
  41. package/features/ai/ListTeamsTool.d.ts +39 -0
  42. package/features/ai/ListTeamsTool.js +48 -0
  43. package/features/ai/ListTeamsTool.js.map +1 -0
  44. package/features/ai/NotifyFolderChange/NotifyFolderChangeUseCase.d.ts +11 -0
  45. package/features/ai/NotifyFolderChange/NotifyFolderChangeUseCase.js +37 -0
  46. package/features/ai/NotifyFolderChange/NotifyFolderChangeUseCase.js.map +1 -0
  47. package/features/ai/NotifyFolderChange/abstractions.d.ts +20 -0
  48. package/features/ai/NotifyFolderChange/abstractions.js +8 -0
  49. package/features/ai/NotifyFolderChange/abstractions.js.map +1 -0
  50. package/features/ai/NotifyFolderChange/index.d.ts +1 -0
  51. package/features/ai/NotifyFolderChange/index.js +1 -0
  52. package/features/ai/RevokeFolderAccessTool.d.ts +65 -0
  53. package/features/ai/RevokeFolderAccessTool.js +76 -0
  54. package/features/ai/RevokeFolderAccessTool.js.map +1 -0
  55. package/features/ai/assertTargetIsUsable.d.ts +10 -0
  56. package/features/ai/assertTargetIsUsable.js +14 -0
  57. package/features/ai/assertTargetIsUsable.js.map +1 -0
  58. package/features/ai/feature.d.ts +12 -0
  59. package/features/ai/feature.js +27 -0
  60. package/features/ai/feature.js.map +1 -0
  61. package/features/ai/index.d.ts +9 -0
  62. package/features/ai/index.js +9 -0
  63. package/features/ai/loadFolderPermissions.d.ts +16 -0
  64. package/features/ai/loadFolderPermissions.js +14 -0
  65. package/features/ai/loadFolderPermissions.js.map +1 -0
  66. package/features/cms/decorators/CreateEntryRevisionFromWithFlpDecorator.js +27 -31
  67. package/features/cms/decorators/CreateEntryRevisionFromWithFlpDecorator.js.map +1 -1
  68. package/features/cms/decorators/CreateEntryWithFlpDecorator.js +22 -25
  69. package/features/cms/decorators/CreateEntryWithFlpDecorator.js.map +1 -1
  70. package/features/cms/decorators/DeleteEntryRevisionWithFlpDecorator.js +27 -31
  71. package/features/cms/decorators/DeleteEntryRevisionWithFlpDecorator.js.map +1 -1
  72. package/features/cms/decorators/DeleteEntryWithFlpDecorator.js +29 -33
  73. package/features/cms/decorators/DeleteEntryWithFlpDecorator.js.map +1 -1
  74. package/features/cms/decorators/GetEntryByIdWithFlpDecorator.js +25 -30
  75. package/features/cms/decorators/GetEntryByIdWithFlpDecorator.js.map +1 -1
  76. package/features/cms/decorators/GetEntryWithFlpDecorator.js +25 -30
  77. package/features/cms/decorators/GetEntryWithFlpDecorator.js.map +1 -1
  78. package/features/cms/decorators/GetLatestEntriesByIdsWithFlpDecorator.js +31 -35
  79. package/features/cms/decorators/GetLatestEntriesByIdsWithFlpDecorator.js.map +1 -1
  80. package/features/cms/decorators/GetPublishedEntriesByIdsWithFlpDecorator.js +31 -34
  81. package/features/cms/decorators/GetPublishedEntriesByIdsWithFlpDecorator.js.map +1 -1
  82. package/features/cms/decorators/ListDeletedEntriesWithFlpDecorator.js +28 -28
  83. package/features/cms/decorators/ListDeletedEntriesWithFlpDecorator.js.map +1 -1
  84. package/features/cms/decorators/ListEntriesWithFlpDecorator.js +28 -27
  85. package/features/cms/decorators/ListEntriesWithFlpDecorator.js.map +1 -1
  86. package/features/cms/decorators/ListLatestEntriesWithFlpDecorator.js +28 -28
  87. package/features/cms/decorators/ListLatestEntriesWithFlpDecorator.js.map +1 -1
  88. package/features/cms/decorators/ListPublishedEntriesWithFlpDecorator.js +28 -28
  89. package/features/cms/decorators/ListPublishedEntriesWithFlpDecorator.js.map +1 -1
  90. package/features/cms/decorators/MoveEntryWithFlpDecorator.d.ts +1 -1
  91. package/features/cms/decorators/MoveEntryWithFlpDecorator.js +37 -51
  92. package/features/cms/decorators/MoveEntryWithFlpDecorator.js.map +1 -1
  93. package/features/cms/decorators/UpdateEntryWithFlpDecorator.d.ts +1 -2
  94. package/features/cms/decorators/UpdateEntryWithFlpDecorator.js +27 -31
  95. package/features/cms/decorators/UpdateEntryWithFlpDecorator.js.map +1 -1
  96. package/features/cms/feature.js +19 -25
  97. package/features/cms/feature.js.map +1 -1
  98. package/features/cms/index.js +0 -2
  99. package/features/flp/CreateFlp/CreateFlpUseCase.d.ts +3 -3
  100. package/features/flp/CreateFlp/CreateFlpUseCase.js +26 -33
  101. package/features/flp/CreateFlp/CreateFlpUseCase.js.map +1 -1
  102. package/features/flp/CreateFlp/abstractions.js +2 -5
  103. package/features/flp/CreateFlp/abstractions.js.map +1 -1
  104. package/features/flp/CreateFlp/feature.d.ts +1 -6
  105. package/features/flp/CreateFlp/feature.js +8 -8
  106. package/features/flp/CreateFlp/feature.js.map +1 -1
  107. package/features/flp/CreateFlp/index.js +0 -2
  108. package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.js +27 -27
  109. package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.js.map +1 -1
  110. package/features/flp/CreateFlpOnFolderCreated/feature.js +6 -5
  111. package/features/flp/CreateFlpOnFolderCreated/feature.js.map +1 -1
  112. package/features/flp/CreateFlpOnFolderCreated/index.js +0 -2
  113. package/features/flp/DeleteFlp/DeleteFlpUseCase.d.ts +3 -3
  114. package/features/flp/DeleteFlp/DeleteFlpUseCase.js +17 -18
  115. package/features/flp/DeleteFlp/DeleteFlpUseCase.js.map +1 -1
  116. package/features/flp/DeleteFlp/abstractions.js +2 -5
  117. package/features/flp/DeleteFlp/abstractions.js.map +1 -1
  118. package/features/flp/DeleteFlp/feature.d.ts +1 -6
  119. package/features/flp/DeleteFlp/feature.js +8 -8
  120. package/features/flp/DeleteFlp/feature.js.map +1 -1
  121. package/features/flp/DeleteFlp/index.js +0 -2
  122. package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.js +27 -27
  123. package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.js.map +1 -1
  124. package/features/flp/DeleteFlpOnFolderDeleted/feature.js +6 -5
  125. package/features/flp/DeleteFlpOnFolderDeleted/feature.js.map +1 -1
  126. package/features/flp/DeleteFlpOnFolderDeleted/index.js +0 -2
  127. package/features/flp/FolderLevelPermissions/FolderLevelPermissions.d.ts +3 -3
  128. package/features/flp/FolderLevelPermissions/FolderLevelPermissions.js +88 -109
  129. package/features/flp/FolderLevelPermissions/FolderLevelPermissions.js.map +1 -1
  130. package/features/flp/FolderLevelPermissions/NoopFolderLevelPermissions.d.ts +25 -0
  131. package/features/flp/FolderLevelPermissions/NoopFolderLevelPermissions.js +48 -0
  132. package/features/flp/FolderLevelPermissions/NoopFolderLevelPermissions.js.map +1 -0
  133. package/features/flp/FolderLevelPermissions/abstractions.js +2 -2
  134. package/features/flp/FolderLevelPermissions/abstractions.js.map +1 -1
  135. package/features/flp/FolderLevelPermissions/feature.js +6 -5
  136. package/features/flp/FolderLevelPermissions/feature.js.map +1 -1
  137. package/features/flp/FolderLevelPermissions/index.d.ts +1 -0
  138. package/features/flp/FolderLevelPermissions/index.js +1 -2
  139. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.js +14 -36
  140. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.js.map +1 -1
  141. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/ICanAccessFolder.js +0 -3
  142. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/index.js +0 -2
  143. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.js +12 -29
  144. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.js.map +1 -1
  145. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/ICanAccessFolderContent.js +0 -3
  146. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/index.js +0 -2
  147. package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.js +5 -4
  148. package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.js.map +1 -1
  149. package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/ICanCreateFolderInRoot.js +0 -3
  150. package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/index.js +0 -2
  151. package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.js +5 -4
  152. package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.js.map +1 -1
  153. package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/ICheckNotInheritedPermissions.js +0 -3
  154. package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/index.js +0 -2
  155. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/DefaultPermissionsMerger.js +43 -66
  156. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/DefaultPermissionsMerger.js.map +1 -1
  157. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.js +10 -9
  158. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.js.map +1 -1
  159. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js +22 -33
  160. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js.map +1 -1
  161. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/IGetDefaultPermissions.js +0 -3
  162. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/index.js +0 -2
  163. package/features/flp/FolderLevelPermissions/useCases/index.js +0 -2
  164. package/features/flp/GetFlp/GetFlpUseCase.js +8 -7
  165. package/features/flp/GetFlp/GetFlpUseCase.js.map +1 -1
  166. package/features/flp/GetFlp/abstractions.js +2 -2
  167. package/features/flp/GetFlp/abstractions.js.map +1 -1
  168. package/features/flp/GetFlp/decorators/GetFlpWithCodeFlps.d.ts +13 -0
  169. package/features/flp/GetFlp/decorators/GetFlpWithCodeFlps.js +26 -0
  170. package/features/flp/GetFlp/decorators/GetFlpWithCodeFlps.js.map +1 -0
  171. package/features/flp/GetFlp/feature.d.ts +1 -1
  172. package/features/flp/GetFlp/feature.js +8 -8
  173. package/features/flp/GetFlp/feature.js.map +1 -1
  174. package/features/flp/GetFlp/index.js +0 -2
  175. package/features/flp/ListFlps/ListFlpsUseCase.js +8 -7
  176. package/features/flp/ListFlps/ListFlpsUseCase.js.map +1 -1
  177. package/features/flp/ListFlps/abstractions.js +2 -2
  178. package/features/flp/ListFlps/abstractions.js.map +1 -1
  179. package/features/flp/ListFlps/decorators/ListFlpsWithCodeFlps.d.ts +13 -0
  180. package/features/flp/ListFlps/decorators/ListFlpsWithCodeFlps.js +27 -0
  181. package/features/flp/ListFlps/decorators/ListFlpsWithCodeFlps.js.map +1 -0
  182. package/features/flp/ListFlps/feature.d.ts +1 -1
  183. package/features/flp/ListFlps/feature.js +8 -8
  184. package/features/flp/ListFlps/feature.js.map +1 -1
  185. package/features/flp/ListFlps/index.js +0 -2
  186. package/features/flp/UpdateFlp/UpdateFlpUseCase.d.ts +15 -8
  187. package/features/flp/UpdateFlp/UpdateFlpUseCase.js +130 -186
  188. package/features/flp/UpdateFlp/UpdateFlpUseCase.js.map +1 -1
  189. package/features/flp/UpdateFlp/abstractions.d.ts +6 -2
  190. package/features/flp/UpdateFlp/abstractions.js +2 -5
  191. package/features/flp/UpdateFlp/abstractions.js.map +1 -1
  192. package/features/flp/UpdateFlp/feature.d.ts +1 -6
  193. package/features/flp/UpdateFlp/feature.js +12 -8
  194. package/features/flp/UpdateFlp/feature.js.map +1 -1
  195. package/features/flp/UpdateFlp/index.js +0 -2
  196. package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.js +29 -29
  197. package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.js.map +1 -1
  198. package/features/flp/UpdateFlpOnFolderUpdated/feature.js +6 -5
  199. package/features/flp/UpdateFlpOnFolderUpdated/feature.js.map +1 -1
  200. package/features/flp/UpdateFlpOnFolderUpdated/index.js +0 -2
  201. package/features/flp/shared/CodeFlpMerger.d.ts +26 -0
  202. package/features/flp/shared/CodeFlpMerger.js +20 -0
  203. package/features/flp/shared/CodeFlpMerger.js.map +1 -0
  204. package/features/flp/shared/CodeFlpPath.d.ts +15 -0
  205. package/features/flp/shared/CodeFlpPath.js +29 -0
  206. package/features/flp/shared/CodeFlpPath.js.map +1 -0
  207. package/features/flp/shared/CodeFlpTarget.d.ts +10 -0
  208. package/features/flp/shared/CodeFlpTarget.js +26 -0
  209. package/features/flp/shared/CodeFlpTarget.js.map +1 -0
  210. package/features/flp/shared/CodeFlpsProvider.d.ts +14 -0
  211. package/features/flp/shared/CodeFlpsProvider.js +33 -0
  212. package/features/flp/shared/CodeFlpsProvider.js.map +1 -0
  213. package/features/flp/shared/abstractions.d.ts +77 -0
  214. package/features/flp/shared/abstractions.js +19 -0
  215. package/features/flp/shared/abstractions.js.map +1 -0
  216. package/features/flp/shared/feature.d.ts +5 -0
  217. package/features/flp/shared/feature.js +17 -0
  218. package/features/flp/shared/feature.js.map +1 -0
  219. package/features/flp/shared/index.d.ts +4 -0
  220. package/features/flp/shared/index.js +4 -0
  221. package/features/folder/CreateFolder/CreateFolderRepository.d.ts +3 -3
  222. package/features/folder/CreateFolder/CreateFolderRepository.js +71 -91
  223. package/features/folder/CreateFolder/CreateFolderRepository.js.map +1 -1
  224. package/features/folder/CreateFolder/CreateFolderUseCase.js +27 -30
  225. package/features/folder/CreateFolder/CreateFolderUseCase.js.map +1 -1
  226. package/features/folder/CreateFolder/abstractions.js +5 -22
  227. package/features/folder/CreateFolder/abstractions.js.map +1 -1
  228. package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.d.ts +9 -1
  229. package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.js +45 -33
  230. package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.js.map +1 -1
  231. package/features/folder/CreateFolder/events.js +16 -14
  232. package/features/folder/CreateFolder/events.js.map +1 -1
  233. package/features/folder/CreateFolder/feature.js +8 -7
  234. package/features/folder/CreateFolder/feature.js.map +1 -1
  235. package/features/folder/CreateFolder/index.js +1 -3
  236. package/features/folder/DeleteFolder/DeleteFolderRepository.d.ts +3 -3
  237. package/features/folder/DeleteFolder/DeleteFolderRepository.js +24 -21
  238. package/features/folder/DeleteFolder/DeleteFolderRepository.js.map +1 -1
  239. package/features/folder/DeleteFolder/DeleteFolderUseCase.js +35 -43
  240. package/features/folder/DeleteFolder/DeleteFolderUseCase.js.map +1 -1
  241. package/features/folder/DeleteFolder/abstractions.js +5 -22
  242. package/features/folder/DeleteFolder/abstractions.js.map +1 -1
  243. package/features/folder/DeleteFolder/decorators/DeleteFolderWithFolderLevelPermissions.d.ts +1 -1
  244. package/features/folder/DeleteFolder/decorators/DeleteFolderWithFolderLevelPermissions.js +21 -20
  245. package/features/folder/DeleteFolder/decorators/DeleteFolderWithFolderLevelPermissions.js.map +1 -1
  246. package/features/folder/DeleteFolder/events.js +16 -14
  247. package/features/folder/DeleteFolder/events.js.map +1 -1
  248. package/features/folder/DeleteFolder/feature.js +8 -7
  249. package/features/folder/DeleteFolder/feature.js.map +1 -1
  250. package/features/folder/DeleteFolder/index.js +1 -3
  251. package/features/folder/EnsureFolderIsEmpty/EnsureFolderIsEmpty.js +47 -44
  252. package/features/folder/EnsureFolderIsEmpty/EnsureFolderIsEmpty.js.map +1 -1
  253. package/features/folder/EnsureFolderIsEmpty/abstractions.js +2 -2
  254. package/features/folder/EnsureFolderIsEmpty/abstractions.js.map +1 -1
  255. package/features/folder/EnsureFolderIsEmpty/feature.js +6 -5
  256. package/features/folder/EnsureFolderIsEmpty/feature.js.map +1 -1
  257. package/features/folder/EnsureFolderIsEmpty/index.js +0 -2
  258. package/features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.js +16 -20
  259. package/features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.js.map +1 -1
  260. package/features/folder/EnsureFolderIsEmptyOnDelete/feature.js +6 -12
  261. package/features/folder/EnsureFolderIsEmptyOnDelete/feature.js.map +1 -1
  262. package/features/folder/EnsureFolderIsEmptyOnDelete/index.js +0 -2
  263. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/ModelFolderBeforeDeleteHandler.js +40 -44
  264. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/ModelFolderBeforeDeleteHandler.js.map +1 -1
  265. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/feature.js +6 -5
  266. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/feature.js.map +1 -1
  267. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/index.js +0 -2
  268. package/features/folder/FolderModelProvider.d.ts +26 -0
  269. package/features/folder/FolderModelProvider.js +22 -0
  270. package/features/folder/FolderModelProvider.js.map +1 -0
  271. package/features/folder/GetAncestors/GetAncestorsRepository.d.ts +3 -3
  272. package/features/folder/GetAncestors/GetAncestorsRepository.js +47 -76
  273. package/features/folder/GetAncestors/GetAncestorsRepository.js.map +1 -1
  274. package/features/folder/GetAncestors/GetAncestorsUseCase.js +14 -11
  275. package/features/folder/GetAncestors/GetAncestorsUseCase.js.map +1 -1
  276. package/features/folder/GetAncestors/abstractions.js +3 -14
  277. package/features/folder/GetAncestors/abstractions.js.map +1 -1
  278. package/features/folder/GetAncestors/feature.js +7 -6
  279. package/features/folder/GetAncestors/feature.js.map +1 -1
  280. package/features/folder/GetAncestors/index.js +0 -2
  281. package/features/folder/GetFolder/GetFolderRepository.d.ts +3 -3
  282. package/features/folder/GetFolder/GetFolderRepository.js +23 -20
  283. package/features/folder/GetFolder/GetFolderRepository.js.map +1 -1
  284. package/features/folder/GetFolder/GetFolderUseCase.js +14 -11
  285. package/features/folder/GetFolder/GetFolderUseCase.js.map +1 -1
  286. package/features/folder/GetFolder/abstractions.js +5 -21
  287. package/features/folder/GetFolder/abstractions.js.map +1 -1
  288. package/features/folder/GetFolder/decorators/GetFolderWithFolderLevelPermissions.d.ts +8 -8
  289. package/features/folder/GetFolder/decorators/GetFolderWithFolderLevelPermissions.js +23 -26
  290. package/features/folder/GetFolder/decorators/GetFolderWithFolderLevelPermissions.js.map +1 -1
  291. package/features/folder/GetFolder/feature.js +8 -7
  292. package/features/folder/GetFolder/feature.js.map +1 -1
  293. package/features/folder/GetFolder/index.js +0 -2
  294. package/features/folder/GetFolderHierarchy/GetFolderHierarchyRepository.d.ts +3 -3
  295. package/features/folder/GetFolderHierarchy/GetFolderHierarchyRepository.js +70 -87
  296. package/features/folder/GetFolderHierarchy/GetFolderHierarchyRepository.js.map +1 -1
  297. package/features/folder/GetFolderHierarchy/GetFolderHierarchyUseCase.js +14 -11
  298. package/features/folder/GetFolderHierarchy/GetFolderHierarchyUseCase.js.map +1 -1
  299. package/features/folder/GetFolderHierarchy/abstractions.js +3 -14
  300. package/features/folder/GetFolderHierarchy/abstractions.js.map +1 -1
  301. package/features/folder/GetFolderHierarchy/decorators/GetFolderHierarchyWithFolderLevelPermissions.js +55 -56
  302. package/features/folder/GetFolderHierarchy/decorators/GetFolderHierarchyWithFolderLevelPermissions.js.map +1 -1
  303. package/features/folder/GetFolderHierarchy/feature.js +8 -7
  304. package/features/folder/GetFolderHierarchy/feature.js.map +1 -1
  305. package/features/folder/GetFolderHierarchy/index.js +0 -2
  306. package/features/folder/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargetsUseCase.js +65 -58
  307. package/features/folder/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargetsUseCase.js.map +1 -1
  308. package/features/folder/ListFolderLevelPermissionsTargets/abstractions.js +2 -5
  309. package/features/folder/ListFolderLevelPermissionsTargets/abstractions.js.map +1 -1
  310. package/features/folder/ListFolderLevelPermissionsTargets/feature.js +6 -5
  311. package/features/folder/ListFolderLevelPermissionsTargets/feature.js.map +1 -1
  312. package/features/folder/ListFolderLevelPermissionsTargets/index.js +0 -2
  313. package/features/folder/ListFolders/ListFoldersRepository.d.ts +3 -3
  314. package/features/folder/ListFolders/ListFoldersRepository.js +41 -42
  315. package/features/folder/ListFolders/ListFoldersRepository.js.map +1 -1
  316. package/features/folder/ListFolders/ListFoldersUseCase.js +14 -11
  317. package/features/folder/ListFolders/ListFoldersUseCase.js.map +1 -1
  318. package/features/folder/ListFolders/abstractions.js +3 -14
  319. package/features/folder/ListFolders/abstractions.js.map +1 -1
  320. package/features/folder/ListFolders/decorators/ListFoldersWithFolderLevelPermissions.js +55 -67
  321. package/features/folder/ListFolders/decorators/ListFoldersWithFolderLevelPermissions.js.map +1 -1
  322. package/features/folder/ListFolders/feature.js +8 -7
  323. package/features/folder/ListFolders/feature.js.map +1 -1
  324. package/features/folder/ListFolders/index.js +0 -2
  325. package/features/folder/UpdateFolder/UpdateFolderRepository.d.ts +3 -3
  326. package/features/folder/UpdateFolder/UpdateFolderRepository.js +70 -93
  327. package/features/folder/UpdateFolder/UpdateFolderRepository.js.map +1 -1
  328. package/features/folder/UpdateFolder/UpdateFolderUseCase.js +38 -45
  329. package/features/folder/UpdateFolder/UpdateFolderUseCase.js.map +1 -1
  330. package/features/folder/UpdateFolder/abstractions.js +5 -22
  331. package/features/folder/UpdateFolder/abstractions.js.map +1 -1
  332. package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.d.ts +14 -1
  333. package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.js +91 -62
  334. package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.js.map +1 -1
  335. package/features/folder/UpdateFolder/events.js +16 -14
  336. package/features/folder/UpdateFolder/events.js.map +1 -1
  337. package/features/folder/UpdateFolder/feature.js +8 -7
  338. package/features/folder/UpdateFolder/feature.js.map +1 -1
  339. package/features/folder/UpdateFolder/index.js +0 -2
  340. package/features/folder/shared/EntryToFolderMapper.js +20 -19
  341. package/features/folder/shared/EntryToFolderMapper.js.map +1 -1
  342. package/features/folder/shared/abstractions.d.ts +14 -0
  343. package/features/folder/shared/abstractions.js +5 -2
  344. package/features/folder/shared/abstractions.js.map +1 -1
  345. package/filter/filter.crud.js +28 -31
  346. package/filter/filter.crud.js.map +1 -1
  347. package/filter/filter.gql.d.ts +2 -3
  348. package/filter/filter.gql.js +72 -54
  349. package/filter/filter.gql.js.map +1 -1
  350. package/filter/filter.model.js +45 -35
  351. package/filter/filter.model.js.map +1 -1
  352. package/filter/filter.so.d.ts +8 -2
  353. package/filter/filter.so.js +85 -93
  354. package/filter/filter.so.js.map +1 -1
  355. package/filter/filter.types.js +5 -4
  356. package/filter/filter.types.js.map +1 -1
  357. package/flp/flp.crud.js +69 -86
  358. package/flp/flp.crud.js.map +1 -1
  359. package/flp/flp.types.d.ts +2 -1
  360. package/flp/flp.types.js +0 -3
  361. package/flp/index.d.ts +0 -1
  362. package/flp/index.js +0 -3
  363. package/flp/tasks/createFlp.task.d.ts +14 -8
  364. package/flp/tasks/createFlp.task.js +37 -28
  365. package/flp/tasks/createFlp.task.js.map +1 -1
  366. package/flp/tasks/deleteFlp.task.d.ts +14 -8
  367. package/flp/tasks/deleteFlp.task.js +37 -28
  368. package/flp/tasks/deleteFlp.task.js.map +1 -1
  369. package/flp/tasks/index.d.ts +0 -1
  370. package/flp/tasks/index.js +5 -17
  371. package/flp/tasks/index.js.map +1 -1
  372. package/flp/tasks/syncFlp.task.d.ts +14 -8
  373. package/flp/tasks/syncFlp.task.js +107 -114
  374. package/flp/tasks/syncFlp.task.js.map +1 -1
  375. package/flp/tasks/updateFlp.task.d.ts +14 -8
  376. package/flp/tasks/updateFlp.task.js +48 -33
  377. package/flp/tasks/updateFlp.task.js.map +1 -1
  378. package/folder/createFolderModelModifier.js +50 -50
  379. package/folder/createFolderModelModifier.js.map +1 -1
  380. package/folder/createFolderTypeDefs.js +43 -51
  381. package/folder/createFolderTypeDefs.js.map +1 -1
  382. package/folder/folder.gql.d.ts +1 -1
  383. package/folder/folder.gql.js +109 -136
  384. package/folder/folder.gql.js.map +1 -1
  385. package/folder/folder.types.js +0 -3
  386. package/index.d.ts +1 -6
  387. package/index.js +2 -9
  388. package/package.json +30 -29
  389. package/types.d.ts +1 -1
  390. package/types.js +5 -4
  391. package/types.js.map +1 -1
  392. package/utils/FoldersCacheFactory.js +20 -19
  393. package/utils/FoldersCacheFactory.js.map +1 -1
  394. package/utils/ListCache.js +20 -19
  395. package/utils/ListCache.js.map +1 -1
  396. package/utils/Path.js +5 -6
  397. package/utils/Path.js.map +1 -1
  398. package/utils/compress.js +8 -7
  399. package/utils/compress.js.map +1 -1
  400. package/utils/createListSort.js +4 -7
  401. package/utils/createListSort.js.map +1 -1
  402. package/utils/createOperationsWrapper.d.ts +5 -2
  403. package/utils/createOperationsWrapper.js +12 -19
  404. package/utils/createOperationsWrapper.js.map +1 -1
  405. package/utils/decorators/CmsEntriesCrudDecorators.js +169 -196
  406. package/utils/decorators/CmsEntriesCrudDecorators.js.map +1 -1
  407. package/utils/decorators/FilterEntriesByFolderFactory.js +18 -19
  408. package/utils/decorators/FilterEntriesByFolderFactory.js.map +1 -1
  409. package/utils/decorators/ListEntriesFactory.js +65 -98
  410. package/utils/decorators/ListEntriesFactory.js.map +1 -1
  411. package/utils/decorators/hasRootFolderId.js +6 -12
  412. package/utils/decorators/hasRootFolderId.js.map +1 -1
  413. package/utils/decorators/isPageModel.js +5 -10
  414. package/utils/decorators/isPageModel.js.map +1 -1
  415. package/utils/ensureAuthentication.js +6 -7
  416. package/utils/ensureAuthentication.js.map +1 -1
  417. package/utils/pickEntryFieldValues.js +24 -18
  418. package/utils/pickEntryFieldValues.js.map +1 -1
  419. package/utils/resolve.d.ts +2 -2
  420. package/utils/resolve.js +8 -7
  421. package/utils/resolve.js.map +1 -1
  422. package/createAcoContext.d.ts +0 -9
  423. package/createAcoContext.js +0 -137
  424. package/createAcoContext.js.map +0 -1
  425. package/createAcoStorageOperations.d.ts +0 -12
  426. package/createAcoStorageOperations.js +0 -10
  427. package/createAcoStorageOperations.js.map +0 -1
  428. package/createAcoTasks.d.ts +0 -1
  429. package/createAcoTasks.js +0 -15
  430. package/createAcoTasks.js.map +0 -1
  431. package/exports/api/aco/flp.js.map +0 -1
  432. package/exports/api/aco/folder.js.map +0 -1
  433. package/features/cms/index.js.map +0 -1
  434. package/features/flp/CreateFlp/index.js.map +0 -1
  435. package/features/flp/CreateFlpOnFolderCreated/index.js.map +0 -1
  436. package/features/flp/DeleteFlp/index.js.map +0 -1
  437. package/features/flp/DeleteFlpOnFolderDeleted/index.js.map +0 -1
  438. package/features/flp/FolderLevelPermissions/index.js.map +0 -1
  439. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/ICanAccessFolder.js.map +0 -1
  440. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/index.js.map +0 -1
  441. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/ICanAccessFolderContent.js.map +0 -1
  442. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/index.js.map +0 -1
  443. package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/ICanCreateFolderInRoot.js.map +0 -1
  444. package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/index.js.map +0 -1
  445. package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/ICheckNotInheritedPermissions.js.map +0 -1
  446. package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/index.js.map +0 -1
  447. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/IGetDefaultPermissions.js.map +0 -1
  448. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/index.js.map +0 -1
  449. package/features/flp/FolderLevelPermissions/useCases/index.js.map +0 -1
  450. package/features/flp/GetFlp/index.js.map +0 -1
  451. package/features/flp/ListFlps/index.js.map +0 -1
  452. package/features/flp/UpdateFlp/index.js.map +0 -1
  453. package/features/flp/UpdateFlpOnFolderUpdated/index.js.map +0 -1
  454. package/features/folder/CreateFolder/index.js.map +0 -1
  455. package/features/folder/DeleteFolder/index.js.map +0 -1
  456. package/features/folder/EnsureFolderIsEmpty/index.js.map +0 -1
  457. package/features/folder/EnsureFolderIsEmptyOnDelete/index.js.map +0 -1
  458. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/index.js.map +0 -1
  459. package/features/folder/GetAncestors/index.js.map +0 -1
  460. package/features/folder/GetFolder/index.js.map +0 -1
  461. package/features/folder/GetFolderHierarchy/index.js.map +0 -1
  462. package/features/folder/ListFolderLevelPermissionsTargets/index.js.map +0 -1
  463. package/features/folder/ListFolders/index.js.map +0 -1
  464. package/features/folder/UpdateFolder/index.js.map +0 -1
  465. package/flp/flp.so.d.ts +0 -20
  466. package/flp/flp.so.js +0 -220
  467. package/flp/flp.so.js.map +0 -1
  468. package/flp/flp.types.js.map +0 -1
  469. package/flp/index.js.map +0 -1
  470. package/folder/folder.types.js.map +0 -1
  471. package/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["Result","CreateFolderRepository","RepositoryAbstraction","CreateEntryUseCase","ListLatestEntriesUseCase","GetEntryByIdUseCase","FolderModel","EntryToFolderMapper","FolderPersistenceError","FolderValidationError","Path","EntryId","CreateFolderRepositoryImpl","constructor","createEntry","listLatestEntries","getEntryById","folderModel","execute","data","checkResult","checkExistingFolder","type","slug","parentId","isFail","fail","error","pathResult","createFolderPath","result","values","path","value","code","message","folder","toFolder","ok","params","excludeId","where","latest","entryId_not","limit","entries","length","create","parentResult","from","toString","Error","parentFolder","createImplementation","implementation","dependencies"],"sources":["CreateFolderRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n CreateFolderRepository as RepositoryAbstraction,\n type ICreateFolderRepository\n} from \"./abstractions.js\";\nimport { CreateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry\";\nimport { ListLatestEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById\";\nimport { FolderModel } from \"~/domain/folder/abstractions.js\";\nimport type { CmsEntryFolder, CreateFolderParams, Folder } from \"~/folder/folder.types.js\";\nimport { EntryToFolderMapper } from \"../shared/EntryToFolderMapper.js\";\nimport { FolderPersistenceError, FolderValidationError } from \"~/domain/folder/errors.js\";\nimport { Path } from \"~/utils/Path.js\";\nimport { EntryId } from \"@webiny/api-headless-cms/exports/api/cms/entry.js\";\n\nclass CreateFolderRepositoryImpl implements ICreateFolderRepository {\n constructor(\n private createEntry: CreateEntryUseCase.Interface,\n private listLatestEntries: ListLatestEntriesUseCase.Interface,\n private getEntryById: GetEntryByIdUseCase.Interface,\n private folderModel: FolderModel.Interface\n ) {}\n\n async execute(data: CreateFolderParams): Promise<Result<Folder, RepositoryAbstraction.Error>> {\n // Check if folder already exists\n const checkResult = await this.checkExistingFolder({\n type: data.type,\n slug: data.slug,\n parentId: data.parentId\n });\n\n if (checkResult.isFail()) {\n return Result.fail(checkResult.error);\n }\n\n // Create folder path\n const pathResult = await this.createFolderPath({\n slug: data.slug,\n parentId: data.parentId\n });\n\n if (pathResult.isFail()) {\n return Result.fail(pathResult.error);\n }\n\n // Create the entry\n const result = await this.createEntry.execute<CmsEntryFolder>(this.folderModel, {\n values: {\n ...data,\n parentId: data.parentId || null,\n path: pathResult.value\n }\n });\n\n if (result.isFail()) {\n if (result.error.code === \"Cms/Entry/ValidationError\") {\n return Result.fail(new FolderValidationError(result.error.message));\n }\n return Result.fail(new FolderPersistenceError(result.error));\n }\n\n const folder = EntryToFolderMapper.toFolder(result.value);\n return Result.ok(folder);\n }\n\n private async checkExistingFolder(params: {\n type: string;\n slug: string;\n parentId?: string | null;\n excludeId?: string;\n }): Promise<Result<void, RepositoryAbstraction.Error>> {\n const { type, slug, parentId, excludeId } = params;\n\n const result = await this.listLatestEntries.execute<CmsEntryFolder>(this.folderModel, {\n where: {\n latest: true,\n values: {\n type,\n slug,\n parentId\n },\n ...(excludeId ? { entryId_not: excludeId } : {})\n },\n limit: 1\n });\n\n if (result.isFail()) {\n return Result.fail(new FolderPersistenceError(result.error));\n }\n\n const { entries } = result.value;\n\n if (entries.length > 0) {\n return Result.fail(\n new FolderValidationError(\n `Folder with slug \"${slug}\" already exists at this level.`\n )\n );\n }\n\n return Result.ok();\n }\n\n private async createFolderPath(params: {\n slug: string;\n parentId?: string | null;\n }): Promise<Result<string, RepositoryAbstraction.Error>> {\n const { slug, parentId } = params;\n\n if (!parentId) {\n return Result.ok(Path.create(slug));\n }\n\n const parentResult = await this.getEntryById.execute<CmsEntryFolder>(\n this.folderModel,\n EntryId.from(parentId).toString()\n );\n\n if (parentResult.isFail()) {\n return Result.fail(\n new FolderPersistenceError(\n new Error(\"Parent folder not found. Unable to create the folder path\")\n )\n );\n }\n\n const parentFolder = EntryToFolderMapper.toFolder(parentResult.value);\n return Result.ok(Path.create(slug, parentFolder.path));\n }\n}\n\nexport const CreateFolderRepository = RepositoryAbstraction.createImplementation({\n implementation: CreateFolderRepositoryImpl,\n dependencies: [CreateEntryUseCase, ListLatestEntriesUseCase, GetEntryByIdUseCase, FolderModel]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"features/folder/CreateFolder/CreateFolderRepository.js","sources":["../../../../src/features/folder/CreateFolder/CreateFolderRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n CreateFolderRepository as RepositoryAbstraction,\n type ICreateFolderRepository\n} from \"./abstractions.js\";\nimport { CreateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry\";\nimport { ListLatestEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById\";\nimport { FolderModelProvider } from \"~/domain/folder/abstractions.js\";\nimport type { CmsEntryFolder, CreateFolderParams, Folder } from \"~/folder/folder.types.js\";\nimport { EntryToFolderMapper } from \"../shared/EntryToFolderMapper.js\";\nimport { FolderPersistenceError, FolderValidationError } from \"~/domain/folder/errors.js\";\nimport { Path } from \"~/utils/Path.js\";\nimport { EntryId } from \"@webiny/api-headless-cms/exports/api/cms/entry.js\";\n\nclass CreateFolderRepositoryImpl implements ICreateFolderRepository {\n constructor(\n private createEntry: CreateEntryUseCase.Interface,\n private listLatestEntries: ListLatestEntriesUseCase.Interface,\n private getEntryById: GetEntryByIdUseCase.Interface,\n private folderModelProvider: FolderModelProvider.Interface\n ) {}\n\n async execute(data: CreateFolderParams): Promise<Result<Folder, RepositoryAbstraction.Error>> {\n const folderModel = await this.folderModelProvider.get();\n // Check if folder already exists\n const checkResult = await this.checkExistingFolder({\n type: data.type,\n slug: data.slug,\n parentId: data.parentId\n });\n\n if (checkResult.isFail()) {\n return Result.fail(checkResult.error);\n }\n\n // Create folder path\n const pathResult = await this.createFolderPath({\n slug: data.slug,\n parentId: data.parentId\n });\n\n if (pathResult.isFail()) {\n return Result.fail(pathResult.error);\n }\n\n // Create the entry\n const result = await this.createEntry.execute<CmsEntryFolder>(folderModel, {\n values: {\n ...data,\n parentId: data.parentId || null,\n path: pathResult.value\n }\n });\n\n if (result.isFail()) {\n if (result.error.code === \"Cms/Entry/ValidationError\") {\n return Result.fail(new FolderValidationError(result.error.message));\n }\n return Result.fail(new FolderPersistenceError(result.error));\n }\n\n const folder = EntryToFolderMapper.toFolder(result.value);\n return Result.ok(folder);\n }\n\n private async checkExistingFolder(params: {\n type: string;\n slug: string;\n parentId?: string | null;\n excludeId?: string;\n }): Promise<Result<void, RepositoryAbstraction.Error>> {\n const folderModel = await this.folderModelProvider.get();\n const { type, slug, parentId, excludeId } = params;\n\n const result = await this.listLatestEntries.execute<CmsEntryFolder>(folderModel, {\n where: {\n latest: true,\n values: {\n type,\n slug,\n parentId\n },\n ...(excludeId ? { entryId_not: excludeId } : {})\n },\n limit: 1\n });\n\n if (result.isFail()) {\n return Result.fail(new FolderPersistenceError(result.error));\n }\n\n const { entries } = result.value;\n\n if (entries.length > 0) {\n return Result.fail(\n new FolderValidationError(\n `Folder with slug \"${slug}\" already exists at this level.`\n )\n );\n }\n\n return Result.ok();\n }\n\n private async createFolderPath(params: {\n slug: string;\n parentId?: string | null;\n }): Promise<Result<string, RepositoryAbstraction.Error>> {\n const folderModel = await this.folderModelProvider.get();\n const { slug, parentId } = params;\n\n if (!parentId) {\n return Result.ok(Path.create(slug));\n }\n\n const parentResult = await this.getEntryById.execute<CmsEntryFolder>(\n folderModel,\n EntryId.from(parentId).toString()\n );\n\n if (parentResult.isFail()) {\n return Result.fail(\n new FolderPersistenceError(\n new Error(\"Parent folder not found. Unable to create the folder path\")\n )\n );\n }\n\n const parentFolder = EntryToFolderMapper.toFolder(parentResult.value);\n return Result.ok(Path.create(slug, parentFolder.path));\n }\n}\n\nexport const CreateFolderRepository = RepositoryAbstraction.createImplementation({\n implementation: CreateFolderRepositoryImpl,\n dependencies: [\n CreateEntryUseCase,\n ListLatestEntriesUseCase,\n GetEntryByIdUseCase,\n FolderModelProvider\n ]\n});\n"],"names":["CreateFolderRepositoryImpl","createEntry","listLatestEntries","getEntryById","folderModelProvider","data","folderModel","checkResult","Result","pathResult","result","FolderValidationError","FolderPersistenceError","folder","EntryToFolderMapper","params","type","slug","parentId","excludeId","entries","Path","parentResult","EntryId","Error","parentFolder","CreateFolderRepository","RepositoryAbstraction","CreateEntryUseCase","ListLatestEntriesUseCase","GetEntryByIdUseCase","FolderModelProvider"],"mappings":"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"}
@@ -1,39 +1,36 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import { createImplementation } from "@webiny/di";
4
- import { CreateFolderUseCase as UseCaseAbstraction, CreateFolderRepository } from "./abstractions.js";
5
- import { FolderBeforeCreateEvent, FolderAfterCreateEvent } from "./events.js";
4
+ import { CreateFolderRepository, CreateFolderUseCase } from "./abstractions.js";
5
+ import { FolderAfterCreateEvent, FolderBeforeCreateEvent } from "./events.js";
6
6
  class CreateFolderUseCaseImpl {
7
- constructor(eventPublisher, repository) {
8
- this.eventPublisher = eventPublisher;
9
- this.repository = repository;
10
- }
11
- async execute(params) {
12
- // Publish before create event
13
- const beforeCreateEvent = new FolderBeforeCreateEvent({
14
- input: params
15
- });
16
- await this.eventPublisher.publish(beforeCreateEvent);
17
-
18
- // Execute the create operation
19
- const result = await this.repository.execute(params);
20
- if (result.isFail()) {
21
- return result;
7
+ constructor(eventPublisher, repository){
8
+ this.eventPublisher = eventPublisher;
9
+ this.repository = repository;
10
+ }
11
+ async execute(params) {
12
+ const beforeCreateEvent = new FolderBeforeCreateEvent({
13
+ input: params
14
+ });
15
+ await this.eventPublisher.publish(beforeCreateEvent);
16
+ const result = await this.repository.execute(params);
17
+ if (result.isFail()) return result;
18
+ const folder = result.value;
19
+ const afterCreateEvent = new FolderAfterCreateEvent({
20
+ folder
21
+ });
22
+ await this.eventPublisher.publish(afterCreateEvent);
23
+ return Result.ok(folder);
22
24
  }
23
- const folder = result.value;
24
-
25
- // Publish after create event
26
- const afterCreateEvent = new FolderAfterCreateEvent({
27
- folder
28
- });
29
- await this.eventPublisher.publish(afterCreateEvent);
30
- return Result.ok(folder);
31
- }
32
25
  }
33
- export const CreateFolderUseCase = createImplementation({
34
- abstraction: UseCaseAbstraction,
35
- implementation: CreateFolderUseCaseImpl,
36
- dependencies: [EventPublisher, CreateFolderRepository]
26
+ const CreateFolderUseCase_CreateFolderUseCase = createImplementation({
27
+ abstraction: CreateFolderUseCase,
28
+ implementation: CreateFolderUseCaseImpl,
29
+ dependencies: [
30
+ EventPublisher,
31
+ CreateFolderRepository
32
+ ]
37
33
  });
34
+ export { CreateFolderUseCase_CreateFolderUseCase as CreateFolderUseCase };
38
35
 
39
36
  //# sourceMappingURL=CreateFolderUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","EventPublisher","createImplementation","CreateFolderUseCase","UseCaseAbstraction","CreateFolderRepository","FolderBeforeCreateEvent","FolderAfterCreateEvent","CreateFolderUseCaseImpl","constructor","eventPublisher","repository","execute","params","beforeCreateEvent","input","publish","result","isFail","folder","value","afterCreateEvent","ok","abstraction","implementation","dependencies"],"sources":["CreateFolderUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { createImplementation } from \"@webiny/di\";\nimport {\n CreateFolderUseCase as UseCaseAbstraction,\n CreateFolderRepository\n} from \"./abstractions.js\";\nimport { FolderBeforeCreateEvent, FolderAfterCreateEvent } from \"./events.js\";\nimport type { Folder, CreateFolderParams } from \"~/folder/folder.types.js\";\n\nclass CreateFolderUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private eventPublisher: EventPublisherAbstraction.Interface,\n private repository: CreateFolderRepository.Interface\n ) {}\n\n async execute(params: CreateFolderParams): Promise<Result<Folder, UseCaseAbstraction.Error>> {\n // Publish before create event\n const beforeCreateEvent = new FolderBeforeCreateEvent({\n input: params\n });\n\n await this.eventPublisher.publish(beforeCreateEvent);\n\n // Execute the create operation\n const result = await this.repository.execute(params);\n\n if (result.isFail()) {\n return result;\n }\n\n const folder = result.value;\n\n // Publish after create event\n const afterCreateEvent = new FolderAfterCreateEvent({\n folder\n });\n\n await this.eventPublisher.publish(afterCreateEvent);\n\n return Result.ok(folder);\n }\n}\n\nexport const CreateFolderUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: CreateFolderUseCaseImpl,\n dependencies: [EventPublisher, CreateFolderRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,cAAc,QAEX,mDAAmD;AAC1D,SAASC,oBAAoB,QAAQ,YAAY;AACjD,SACIC,mBAAmB,IAAIC,kBAAkB,EACzCC,sBAAsB;AAE1B,SAASC,uBAAuB,EAAEC,sBAAsB;AAGxD,MAAMC,uBAAuB,CAAyC;EAClEC,WAAWA,CACCC,cAAmD,EACnDC,UAA4C,EACtD;IAAA,KAFUD,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,UAA4C,GAA5CA,UAA4C;EACrD;EAEH,MAAMC,OAAOA,CAACC,MAA0B,EAAqD;IACzF;IACA,MAAMC,iBAAiB,GAAG,IAAIR,uBAAuB,CAAC;MAClDS,KAAK,EAAEF;IACX,CAAC,CAAC;IAEF,MAAM,IAAI,CAACH,cAAc,CAACM,OAAO,CAACF,iBAAiB,CAAC;;IAEpD;IACA,MAAMG,MAAM,GAAG,MAAM,IAAI,CAACN,UAAU,CAACC,OAAO,CAACC,MAAM,CAAC;IAEpD,IAAII,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOD,MAAM;IACjB;IAEA,MAAME,MAAM,GAAGF,MAAM,CAACG,KAAK;;IAE3B;IACA,MAAMC,gBAAgB,GAAG,IAAId,sBAAsB,CAAC;MAChDY;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,CAACT,cAAc,CAACM,OAAO,CAACK,gBAAgB,CAAC;IAEnD,OAAOrB,MAAM,CAACsB,EAAE,CAACH,MAAM,CAAC;EAC5B;AACJ;AAEA,OAAO,MAAMhB,mBAAmB,GAAGD,oBAAoB,CAAC;EACpDqB,WAAW,EAAEnB,kBAAkB;EAC/BoB,cAAc,EAAEhB,uBAAuB;EACvCiB,YAAY,EAAE,CAACxB,cAAc,EAAEI,sBAAsB;AACzD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/folder/CreateFolder/CreateFolderUseCase.js","sources":["../../../../src/features/folder/CreateFolder/CreateFolderUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { createImplementation } from \"@webiny/di\";\nimport {\n CreateFolderUseCase as UseCaseAbstraction,\n CreateFolderRepository\n} from \"./abstractions.js\";\nimport { FolderBeforeCreateEvent, FolderAfterCreateEvent } from \"./events.js\";\nimport type { Folder, CreateFolderParams } from \"~/folder/folder.types.js\";\n\nclass CreateFolderUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private eventPublisher: EventPublisherAbstraction.Interface,\n private repository: CreateFolderRepository.Interface\n ) {}\n\n async execute(params: CreateFolderParams): Promise<Result<Folder, UseCaseAbstraction.Error>> {\n // Publish before create event\n const beforeCreateEvent = new FolderBeforeCreateEvent({\n input: params\n });\n\n await this.eventPublisher.publish(beforeCreateEvent);\n\n // Execute the create operation\n const result = await this.repository.execute(params);\n\n if (result.isFail()) {\n return result;\n }\n\n const folder = result.value;\n\n // Publish after create event\n const afterCreateEvent = new FolderAfterCreateEvent({\n folder\n });\n\n await this.eventPublisher.publish(afterCreateEvent);\n\n return Result.ok(folder);\n }\n}\n\nexport const CreateFolderUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: CreateFolderUseCaseImpl,\n dependencies: [EventPublisher, CreateFolderRepository]\n});\n"],"names":["CreateFolderUseCaseImpl","eventPublisher","repository","params","beforeCreateEvent","FolderBeforeCreateEvent","result","folder","afterCreateEvent","FolderAfterCreateEvent","Result","CreateFolderUseCase","createImplementation","UseCaseAbstraction","EventPublisher","CreateFolderRepository"],"mappings":";;;;;AAaA,MAAMA;IACF,YACYC,cAAmD,EACnDC,UAA4C,CACtD;aAFUD,cAAc,GAAdA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,QAAQC,MAA0B,EAAqD;QAEzF,MAAMC,oBAAoB,IAAIC,wBAAwB;YAClD,OAAOF;QACX;QAEA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAACC;QAGlC,MAAME,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACH;QAE7C,IAAIG,OAAO,MAAM,IACb,OAAOA;QAGX,MAAMC,SAASD,OAAO,KAAK;QAG3B,MAAME,mBAAmB,IAAIC,uBAAuB;YAChDF;QACJ;QAEA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAACC;QAElC,OAAOE,OAAO,EAAE,CAACH;IACrB;AACJ;AAEO,MAAMI,0CAAsBC,qBAAqB;IACpD,aAAaC;IACb,gBAAgBb;IAChB,cAAc;QAACc;QAAgBC;KAAuB;AAC1D"}
@@ -1,25 +1,8 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
-
3
- /**
4
- * CreateFolder repository interface
5
- */
6
-
7
- /** Persist a newly created folder. */
8
- export const CreateFolderRepository = createAbstraction("CreateFolderRepository");
9
-
10
- /**
11
- * CreateFolder use case interface
12
- */
13
-
14
- /** Create a new folder. */
15
- export const CreateFolderUseCase = createAbstraction("CreateFolderUseCase");
16
-
17
- // Event Payload Types
18
-
19
- // Event Handler Abstractions
20
- /** Hook into folder lifecycle before a folder is created. */
21
- export const FolderBeforeCreateEventHandler = createAbstraction("FolderBeforeCreateEventHandler");
22
- /** Hook into folder lifecycle after a folder is created. */
23
- export const FolderAfterCreateEventHandler = createAbstraction("FolderAfterCreateEventHandler");
2
+ const CreateFolderRepository = createAbstraction("CreateFolderRepository");
3
+ const CreateFolderUseCase = createAbstraction("CreateFolderUseCase");
4
+ const FolderBeforeCreateEventHandler = createAbstraction("FolderBeforeCreateEventHandler");
5
+ const FolderAfterCreateEventHandler = createAbstraction("FolderAfterCreateEventHandler");
6
+ export { CreateFolderRepository, CreateFolderUseCase, FolderAfterCreateEventHandler, FolderBeforeCreateEventHandler };
24
7
 
25
8
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","CreateFolderRepository","CreateFolderUseCase","FolderBeforeCreateEventHandler","FolderAfterCreateEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { DomainEvent, IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { Folder, CreateFolderParams } from \"~/folder/folder.types.js\";\nimport type {\n FolderNotAuthorizedError,\n FolderPersistenceError,\n FolderValidationError\n} from \"~/domain/folder/errors.js\";\n\n/**\n * CreateFolder repository interface\n */\nexport interface ICreateFolderRepository {\n execute(data: CreateFolderParams): Promise<Result<Folder, RepositoryError>>;\n}\n\nexport interface ICreateFolderRepositoryErrors {\n validation: FolderValidationError;\n persistence: FolderPersistenceError;\n}\n\ntype RepositoryError = ICreateFolderRepositoryErrors[keyof ICreateFolderRepositoryErrors];\n\n/** Persist a newly created folder. */\nexport const CreateFolderRepository =\n createAbstraction<ICreateFolderRepository>(\"CreateFolderRepository\");\n\nexport namespace CreateFolderRepository {\n export type Interface = ICreateFolderRepository;\n export type Error = RepositoryError;\n}\n\n/**\n * CreateFolder use case interface\n */\nexport interface ICreateFolderUseCase {\n execute(params: CreateFolderParams): Promise<Result<Folder, UseCaseError>>;\n}\n\nexport interface ICreateFolderUseCaseErrors {\n notAuthorized: FolderNotAuthorizedError;\n persistence: FolderPersistenceError;\n validation: FolderValidationError;\n}\n\ntype UseCaseError = ICreateFolderUseCaseErrors[keyof ICreateFolderUseCaseErrors];\n\n/** Create a new folder. */\nexport const CreateFolderUseCase = createAbstraction<ICreateFolderUseCase>(\"CreateFolderUseCase\");\n\nexport namespace CreateFolderUseCase {\n export type Interface = ICreateFolderUseCase;\n export type Return = Promise<Result<Folder, UseCaseError>>;\n export type Error = UseCaseError;\n}\n\n// Event Payload Types\nexport interface FolderBeforeCreatePayload {\n input: CreateFolderParams;\n}\n\nexport interface FolderAfterCreatePayload {\n folder: Folder;\n}\n\n// Event Handler Abstractions\n/** Hook into folder lifecycle before a folder is created. */\nexport const FolderBeforeCreateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<FolderBeforeCreatePayload>>\n>(\"FolderBeforeCreateEventHandler\");\n\nexport namespace FolderBeforeCreateEventHandler {\n export type Interface = IEventHandler<DomainEvent<FolderBeforeCreatePayload>>;\n export type Event = DomainEvent<FolderBeforeCreatePayload>;\n}\n\n/** Hook into folder lifecycle after a folder is created. */\nexport const FolderAfterCreateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<FolderAfterCreatePayload>>\n>(\"FolderAfterCreateEventHandler\");\n\nexport namespace FolderAfterCreateEventHandler {\n export type Interface = IEventHandler<DomainEvent<FolderAfterCreatePayload>>;\n export type Event = DomainEvent<FolderAfterCreatePayload>;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAUvD;AACA;AACA;;AAYA;AACA,OAAO,MAAMC,sBAAsB,GAC/BD,iBAAiB,CAA0B,wBAAwB,CAAC;;AAOxE;AACA;AACA;;AAaA;AACA,OAAO,MAAME,mBAAmB,GAAGF,iBAAiB,CAAuB,qBAAqB,CAAC;;AAQjG;;AASA;AACA;AACA,OAAO,MAAMG,8BAA8B,GAAGH,iBAAiB,CAE7D,gCAAgC,CAAC;AAOnC;AACA,OAAO,MAAMI,6BAA6B,GAAGJ,iBAAiB,CAE5D,+BAA+B,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/folder/CreateFolder/abstractions.js","sources":["../../../../src/features/folder/CreateFolder/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { DomainEvent, IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { Folder, CreateFolderParams } from \"~/folder/folder.types.js\";\nimport type {\n FolderNotAuthorizedError,\n FolderPersistenceError,\n FolderValidationError\n} from \"~/domain/folder/errors.js\";\n\n/**\n * CreateFolder repository interface\n */\nexport interface ICreateFolderRepository {\n execute(data: CreateFolderParams): Promise<Result<Folder, RepositoryError>>;\n}\n\nexport interface ICreateFolderRepositoryErrors {\n validation: FolderValidationError;\n persistence: FolderPersistenceError;\n}\n\ntype RepositoryError = ICreateFolderRepositoryErrors[keyof ICreateFolderRepositoryErrors];\n\n/** Persist a newly created folder. */\nexport const CreateFolderRepository =\n createAbstraction<ICreateFolderRepository>(\"CreateFolderRepository\");\n\nexport namespace CreateFolderRepository {\n export type Interface = ICreateFolderRepository;\n export type Error = RepositoryError;\n}\n\n/**\n * CreateFolder use case interface\n */\nexport interface ICreateFolderUseCase {\n execute(params: CreateFolderParams): Promise<Result<Folder, UseCaseError>>;\n}\n\nexport interface ICreateFolderUseCaseErrors {\n notAuthorized: FolderNotAuthorizedError;\n persistence: FolderPersistenceError;\n validation: FolderValidationError;\n}\n\ntype UseCaseError = ICreateFolderUseCaseErrors[keyof ICreateFolderUseCaseErrors];\n\n/** Create a new folder. */\nexport const CreateFolderUseCase = createAbstraction<ICreateFolderUseCase>(\"CreateFolderUseCase\");\n\nexport namespace CreateFolderUseCase {\n export type Interface = ICreateFolderUseCase;\n export type Return = Promise<Result<Folder, UseCaseError>>;\n export type Error = UseCaseError;\n}\n\n// Event Payload Types\nexport interface FolderBeforeCreatePayload {\n input: CreateFolderParams;\n}\n\nexport interface FolderAfterCreatePayload {\n folder: Folder;\n}\n\n// Event Handler Abstractions\n/** Hook into folder lifecycle before a folder is created. */\nexport const FolderBeforeCreateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<FolderBeforeCreatePayload>>\n>(\"FolderBeforeCreateEventHandler\");\n\nexport namespace FolderBeforeCreateEventHandler {\n export type Interface = IEventHandler<DomainEvent<FolderBeforeCreatePayload>>;\n export type Event = DomainEvent<FolderBeforeCreatePayload>;\n}\n\n/** Hook into folder lifecycle after a folder is created. */\nexport const FolderAfterCreateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<FolderAfterCreatePayload>>\n>(\"FolderAfterCreateEventHandler\");\n\nexport namespace FolderAfterCreateEventHandler {\n export type Interface = IEventHandler<DomainEvent<FolderAfterCreatePayload>>;\n export type Event = DomainEvent<FolderAfterCreatePayload>;\n}\n"],"names":["CreateFolderRepository","createAbstraction","CreateFolderUseCase","FolderBeforeCreateEventHandler","FolderAfterCreateEventHandler"],"mappings":";AAyBO,MAAMA,yBACTC,kBAA2C;AAuBxC,MAAMC,sBAAsBD,kBAAwC;AAmBpE,MAAME,iCAAiCF,kBAE5C;AAQK,MAAMG,gCAAgCH,kBAE3C"}
@@ -1,11 +1,19 @@
1
1
  import { FolderLevelPermissions } from "../../../../features/flp/FolderLevelPermissions/index.js";
2
2
  import { CreateFolderUseCase } from "../abstractions.js";
3
3
  import type { CreateFolderParams } from "../../../../folder/folder.types.js";
4
+ import { CodeFlpsProvider } from "../../../../features/flp/shared/index.js";
4
5
  declare class CreateFolderWithFolderLevelPermissionsImpl implements CreateFolderUseCase.Interface {
5
6
  private folderLevelPermissions;
6
7
  private readonly decoretee;
7
- constructor(folderLevelPermissions: FolderLevelPermissions.Interface, decoretee: CreateFolderUseCase.Interface);
8
+ private readonly codeFlpsProvider?;
9
+ constructor(folderLevelPermissions: FolderLevelPermissions.Interface, codeFlpsProvider: CodeFlpsProvider.Interface | undefined, decoretee: CreateFolderUseCase.Interface);
8
10
  execute(params: CreateFolderParams): CreateFolderUseCase.Return;
11
+ /**
12
+ * Code-defined permissions are resolved from the folder's own type and path rather than the FLP
13
+ * catalog: the record for a folder this new is written by an event handler and may not exist
14
+ * yet. Without this the response would omit them until something refetched the folder.
15
+ */
16
+ private withCodePermissions;
9
17
  }
10
18
  export declare const CreateFolderWithFolderLevelPermissions: typeof CreateFolderWithFolderLevelPermissionsImpl;
11
19
  export {};
@@ -1,44 +1,56 @@
1
1
  import { FolderLevelPermissions } from "../../../flp/FolderLevelPermissions/index.js";
2
2
  import { CreateFolderUseCase } from "../abstractions.js";
3
- import { createDecorator, Result } from "@webiny/feature/api";
3
+ import { Result, createDecorator } from "@webiny/feature/api";
4
4
  import { FolderNotAuthorizedError } from "../../../../domain/folder/errors.js";
5
+ import { CodeFlpMerger, CodeFlpsProvider } from "../../../flp/shared/index.js";
5
6
  class CreateFolderWithFolderLevelPermissionsImpl {
6
- constructor(folderLevelPermissions, decoretee) {
7
- this.folderLevelPermissions = folderLevelPermissions;
8
- this.decoretee = decoretee;
9
- }
10
- async execute(params) {
11
- let canCreateFolder;
12
- if (params.parentId) {
13
- const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(params.parentId);
14
- canCreateFolder = await this.folderLevelPermissions.canAccessFolder({
15
- permissions,
16
- rwd: "w"
17
- });
18
- } else {
19
- canCreateFolder = this.folderLevelPermissions.canCreateFolderInRoot();
7
+ constructor(folderLevelPermissions, codeFlpsProvider, decoretee){
8
+ this.folderLevelPermissions = folderLevelPermissions;
9
+ this.codeFlpsProvider = codeFlpsProvider;
10
+ this.decoretee = decoretee;
20
11
  }
21
- if (!canCreateFolder) {
22
- return Result.fail(new FolderNotAuthorizedError());
12
+ async execute(params) {
13
+ let canCreateFolder;
14
+ if (params.parentId) {
15
+ const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(params.parentId);
16
+ canCreateFolder = await this.folderLevelPermissions.canAccessFolder({
17
+ permissions,
18
+ rwd: "w"
19
+ });
20
+ } else canCreateFolder = this.folderLevelPermissions.canCreateFolderInRoot();
21
+ if (!canCreateFolder) return Result.fail(new FolderNotAuthorizedError());
22
+ const result = await this.decoretee.execute(params);
23
+ if (result.isFail()) return Result.fail(result.error);
24
+ const folder = result.value;
25
+ const permissions = await this.withCodePermissions(folder, folder?.permissions ?? []);
26
+ const permissionsWithDefaults = await this.folderLevelPermissions.getDefaultPermissions(permissions);
27
+ return Result.ok({
28
+ ...folder,
29
+ permissions: permissionsWithDefaults
30
+ });
23
31
  }
24
- const result = await this.decoretee.execute(params);
25
- if (result.isFail()) {
26
- return Result.fail(result.error);
32
+ async withCodePermissions(folder, permissions) {
33
+ if (!this.codeFlpsProvider) return permissions;
34
+ const codePermissions = await this.codeFlpsProvider.getPermissions({
35
+ type: folder.type,
36
+ path: folder.path
37
+ });
38
+ return CodeFlpMerger.mergePermissions(permissions, codePermissions);
27
39
  }
28
- const folder = result.value;
29
-
30
- // Let's set default permissions based on the current user.
31
- const permissionsWithDefaults = await this.folderLevelPermissions.getDefaultPermissions(folder?.permissions ?? []);
32
- return Result.ok({
33
- ...folder,
34
- permissions: permissionsWithDefaults
35
- });
36
- }
37
40
  }
38
- export const CreateFolderWithFolderLevelPermissions = createDecorator({
39
- abstraction: CreateFolderUseCase,
40
- decorator: CreateFolderWithFolderLevelPermissionsImpl,
41
- dependencies: [FolderLevelPermissions]
41
+ const CreateFolderWithFolderLevelPermissions = createDecorator({
42
+ abstraction: CreateFolderUseCase,
43
+ decorator: CreateFolderWithFolderLevelPermissionsImpl,
44
+ dependencies: [
45
+ FolderLevelPermissions,
46
+ [
47
+ CodeFlpsProvider,
48
+ {
49
+ optional: true
50
+ }
51
+ ]
52
+ ]
42
53
  });
54
+ export { CreateFolderWithFolderLevelPermissions };
43
55
 
44
56
  //# sourceMappingURL=CreateFolderWithFolderLevelPermissions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["FolderLevelPermissions","CreateFolderUseCase","createDecorator","Result","FolderNotAuthorizedError","CreateFolderWithFolderLevelPermissionsImpl","constructor","folderLevelPermissions","decoretee","execute","params","canCreateFolder","parentId","permissions","getFolderLevelPermissions","canAccessFolder","rwd","canCreateFolderInRoot","fail","result","isFail","error","folder","value","permissionsWithDefaults","getDefaultPermissions","ok","CreateFolderWithFolderLevelPermissions","abstraction","decorator","dependencies"],"sources":["CreateFolderWithFolderLevelPermissions.ts"],"sourcesContent":["import { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport { CreateFolderUseCase } from \"../abstractions.js\";\nimport type { CreateFolderParams } from \"~/folder/folder.types.js\";\nimport { createDecorator, Result } from \"@webiny/feature/api\";\nimport { FolderNotAuthorizedError } from \"~/domain/folder/errors.js\";\n\nclass CreateFolderWithFolderLevelPermissionsImpl implements CreateFolderUseCase.Interface {\n private folderLevelPermissions: FolderLevelPermissions.Interface;\n private readonly decoretee: CreateFolderUseCase.Interface;\n\n constructor(\n folderLevelPermissions: FolderLevelPermissions.Interface,\n decoretee: CreateFolderUseCase.Interface\n ) {\n this.folderLevelPermissions = folderLevelPermissions;\n this.decoretee = decoretee;\n }\n\n async execute(params: CreateFolderParams): CreateFolderUseCase.Return {\n let canCreateFolder: boolean;\n if (params.parentId) {\n const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(\n params.parentId\n );\n canCreateFolder = await this.folderLevelPermissions.canAccessFolder({\n permissions,\n rwd: \"w\"\n });\n } else {\n canCreateFolder = this.folderLevelPermissions.canCreateFolderInRoot();\n }\n\n if (!canCreateFolder) {\n return Result.fail(new FolderNotAuthorizedError());\n }\n\n const result = await this.decoretee.execute(params);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n const folder = result.value;\n\n // Let's set default permissions based on the current user.\n const permissionsWithDefaults = await this.folderLevelPermissions.getDefaultPermissions(\n folder?.permissions ?? []\n );\n\n return Result.ok({\n ...folder,\n permissions: permissionsWithDefaults\n });\n }\n}\n\nexport const CreateFolderWithFolderLevelPermissions = createDecorator({\n abstraction: CreateFolderUseCase,\n decorator: CreateFolderWithFolderLevelPermissionsImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"mappings":"AAAA,SAASA,sBAAsB;AAC/B,SAASC,mBAAmB;AAE5B,SAASC,eAAe,EAAEC,MAAM,QAAQ,qBAAqB;AAC7D,SAASC,wBAAwB;AAEjC,MAAMC,0CAA0C,CAA0C;EAItFC,WAAWA,CACPC,sBAAwD,EACxDC,SAAwC,EAC1C;IACE,IAAI,CAACD,sBAAsB,GAAGA,sBAAsB;IACpD,IAAI,CAACC,SAAS,GAAGA,SAAS;EAC9B;EAEA,MAAMC,OAAOA,CAACC,MAA0B,EAA8B;IAClE,IAAIC,eAAwB;IAC5B,IAAID,MAAM,CAACE,QAAQ,EAAE;MACjB,MAAMC,WAAW,GAAG,MAAM,IAAI,CAACN,sBAAsB,CAACO,yBAAyB,CAC3EJ,MAAM,CAACE,QACX,CAAC;MACDD,eAAe,GAAG,MAAM,IAAI,CAACJ,sBAAsB,CAACQ,eAAe,CAAC;QAChEF,WAAW;QACXG,GAAG,EAAE;MACT,CAAC,CAAC;IACN,CAAC,MAAM;MACHL,eAAe,GAAG,IAAI,CAACJ,sBAAsB,CAACU,qBAAqB,CAAC,CAAC;IACzE;IAEA,IAAI,CAACN,eAAe,EAAE;MAClB,OAAOR,MAAM,CAACe,IAAI,CAAC,IAAId,wBAAwB,CAAC,CAAC,CAAC;IACtD;IAEA,MAAMe,MAAM,GAAG,MAAM,IAAI,CAACX,SAAS,CAACC,OAAO,CAACC,MAAM,CAAC;IAEnD,IAAIS,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOjB,MAAM,CAACe,IAAI,CAACC,MAAM,CAACE,KAAK,CAAC;IACpC;IAEA,MAAMC,MAAM,GAAGH,MAAM,CAACI,KAAK;;IAE3B;IACA,MAAMC,uBAAuB,GAAG,MAAM,IAAI,CAACjB,sBAAsB,CAACkB,qBAAqB,CACnFH,MAAM,EAAET,WAAW,IAAI,EAC3B,CAAC;IAED,OAAOV,MAAM,CAACuB,EAAE,CAAC;MACb,GAAGJ,MAAM;MACTT,WAAW,EAAEW;IACjB,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMG,sCAAsC,GAAGzB,eAAe,CAAC;EAClE0B,WAAW,EAAE3B,mBAAmB;EAChC4B,SAAS,EAAExB,0CAA0C;EACrDyB,YAAY,EAAE,CAAC9B,sBAAsB;AACzC,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.js","sources":["../../../../../src/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.ts"],"sourcesContent":["import { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport { CreateFolderUseCase } from \"../abstractions.js\";\nimport type { CreateFolderParams } from \"~/folder/folder.types.js\";\nimport type { Folder } from \"~/folder/folder.types.js\";\nimport type { FolderPermission } from \"~/flp/flp.types.js\";\nimport { createDecorator, Result } from \"@webiny/feature/api\";\nimport { FolderNotAuthorizedError } from \"~/domain/folder/errors.js\";\nimport { CodeFlpMerger } from \"~/features/flp/shared/index.js\";\nimport { CodeFlpsProvider } from \"~/features/flp/shared/index.js\";\n\nclass CreateFolderWithFolderLevelPermissionsImpl implements CreateFolderUseCase.Interface {\n private folderLevelPermissions: FolderLevelPermissions.Interface;\n private readonly decoretee: CreateFolderUseCase.Interface;\n private readonly codeFlpsProvider?: CodeFlpsProvider.Interface;\n\n constructor(\n folderLevelPermissions: FolderLevelPermissions.Interface,\n codeFlpsProvider: CodeFlpsProvider.Interface | undefined,\n decoretee: CreateFolderUseCase.Interface\n ) {\n this.folderLevelPermissions = folderLevelPermissions;\n this.codeFlpsProvider = codeFlpsProvider;\n this.decoretee = decoretee;\n }\n\n async execute(params: CreateFolderParams): CreateFolderUseCase.Return {\n let canCreateFolder: boolean;\n if (params.parentId) {\n const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(\n params.parentId\n );\n canCreateFolder = await this.folderLevelPermissions.canAccessFolder({\n permissions,\n rwd: \"w\"\n });\n } else {\n canCreateFolder = this.folderLevelPermissions.canCreateFolderInRoot();\n }\n\n if (!canCreateFolder) {\n return Result.fail(new FolderNotAuthorizedError());\n }\n\n const result = await this.decoretee.execute(params);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n const folder = result.value;\n\n const permissions = await this.withCodePermissions(folder, folder?.permissions ?? []);\n\n // Let's set default permissions based on the current user.\n const permissionsWithDefaults =\n await this.folderLevelPermissions.getDefaultPermissions(permissions);\n\n return Result.ok({\n ...folder,\n permissions: permissionsWithDefaults\n });\n }\n\n /**\n * Code-defined permissions are resolved from the folder's own type and path rather than the FLP\n * catalog: the record for a folder this new is written by an event handler and may not exist\n * yet. Without this the response would omit them until something refetched the folder.\n */\n private async withCodePermissions(\n folder: Pick<Folder, \"type\" | \"path\">,\n permissions: FolderPermission[]\n ): Promise<FolderPermission[]> {\n if (!this.codeFlpsProvider) {\n return permissions;\n }\n\n const codePermissions = await this.codeFlpsProvider.getPermissions({\n type: folder.type,\n path: folder.path\n });\n\n return CodeFlpMerger.mergePermissions(permissions, codePermissions);\n }\n}\n\nexport const CreateFolderWithFolderLevelPermissions = createDecorator({\n abstraction: CreateFolderUseCase,\n decorator: CreateFolderWithFolderLevelPermissionsImpl,\n // `CodeFlpsProvider` is optional: `CodeFlpsFeature` does not register it unless the project has\n // the folder-level permissions entitlement.\n dependencies: [FolderLevelPermissions, [CodeFlpsProvider, { optional: true }]]\n});\n"],"names":["CreateFolderWithFolderLevelPermissionsImpl","folderLevelPermissions","codeFlpsProvider","decoretee","params","canCreateFolder","permissions","Result","FolderNotAuthorizedError","result","folder","permissionsWithDefaults","codePermissions","CodeFlpMerger","CreateFolderWithFolderLevelPermissions","createDecorator","CreateFolderUseCase","FolderLevelPermissions","CodeFlpsProvider"],"mappings":";;;;;AAUA,MAAMA;IAKF,YACIC,sBAAwD,EACxDC,gBAAwD,EACxDC,SAAwC,CAC1C;QACE,IAAI,CAAC,sBAAsB,GAAGF;QAC9B,IAAI,CAAC,gBAAgB,GAAGC;QACxB,IAAI,CAAC,SAAS,GAAGC;IACrB;IAEA,MAAM,QAAQC,MAA0B,EAA8B;QAClE,IAAIC;QACJ,IAAID,OAAO,QAAQ,EAAE;YACjB,MAAME,cAAc,MAAM,IAAI,CAAC,sBAAsB,CAAC,yBAAyB,CAC3EF,OAAO,QAAQ;YAEnBC,kBAAkB,MAAM,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC;gBAChEC;gBACA,KAAK;YACT;QACJ,OACID,kBAAkB,IAAI,CAAC,sBAAsB,CAAC,qBAAqB;QAGvE,IAAI,CAACA,iBACD,OAAOE,OAAO,IAAI,CAAC,IAAIC;QAG3B,MAAMC,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAACL;QAE5C,IAAIK,OAAO,MAAM,IACb,OAAOF,OAAO,IAAI,CAACE,OAAO,KAAK;QAGnC,MAAMC,SAASD,OAAO,KAAK;QAE3B,MAAMH,cAAc,MAAM,IAAI,CAAC,mBAAmB,CAACI,QAAQA,QAAQ,eAAe,EAAE;QAGpF,MAAMC,0BACF,MAAM,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAACL;QAE5D,OAAOC,OAAO,EAAE,CAAC;YACb,GAAGG,MAAM;YACT,aAAaC;QACjB;IACJ;IAOA,MAAc,oBACVD,MAAqC,EACrCJ,WAA+B,EACJ;QAC3B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EACtB,OAAOA;QAGX,MAAMM,kBAAkB,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC;YAC/D,MAAMF,OAAO,IAAI;YACjB,MAAMA,OAAO,IAAI;QACrB;QAEA,OAAOG,cAAc,gBAAgB,CAACP,aAAaM;IACvD;AACJ;AAEO,MAAME,yCAAyCC,gBAAgB;IAClE,aAAaC;IACb,WAAWhB;IAGX,cAAc;QAACiB;QAAwB;YAACC;YAAkB;gBAAE,UAAU;YAAK;SAAE;KAAC;AAClF"}
@@ -1,19 +1,21 @@
1
1
  import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
2
- import { FolderBeforeCreateEventHandler, FolderAfterCreateEventHandler } from "./abstractions.js";
3
- // FolderBeforeCreate Event
4
- export class FolderBeforeCreateEvent extends DomainEvent {
5
- eventType = "folder.beforeCreate";
6
- getHandlerAbstraction() {
7
- return FolderBeforeCreateEventHandler;
8
- }
2
+ import { FolderAfterCreateEventHandler, FolderBeforeCreateEventHandler } from "./abstractions.js";
3
+ class FolderBeforeCreateEvent extends DomainEvent {
4
+ getHandlerAbstraction() {
5
+ return FolderBeforeCreateEventHandler;
6
+ }
7
+ constructor(...args){
8
+ super(...args), this.eventType = "folder.beforeCreate";
9
+ }
9
10
  }
10
-
11
- // FolderAfterCreate Event
12
- export class FolderAfterCreateEvent extends DomainEvent {
13
- eventType = "folder.afterCreate";
14
- getHandlerAbstraction() {
15
- return FolderAfterCreateEventHandler;
16
- }
11
+ class FolderAfterCreateEvent extends DomainEvent {
12
+ getHandlerAbstraction() {
13
+ return FolderAfterCreateEventHandler;
14
+ }
15
+ constructor(...args){
16
+ super(...args), this.eventType = "folder.afterCreate";
17
+ }
17
18
  }
19
+ export { FolderAfterCreateEvent, FolderBeforeCreateEvent };
18
20
 
19
21
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DomainEvent","FolderBeforeCreateEventHandler","FolderAfterCreateEventHandler","FolderBeforeCreateEvent","eventType","getHandlerAbstraction","FolderAfterCreateEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { FolderBeforeCreateEventHandler, FolderAfterCreateEventHandler } from \"./abstractions.js\";\nimport type { FolderBeforeCreatePayload, FolderAfterCreatePayload } from \"./abstractions.js\";\n\n// FolderBeforeCreate Event\nexport class FolderBeforeCreateEvent extends DomainEvent<FolderBeforeCreatePayload> {\n eventType = \"folder.beforeCreate\" as const;\n\n getHandlerAbstraction() {\n return FolderBeforeCreateEventHandler;\n }\n}\n\n// FolderAfterCreate Event\nexport class FolderAfterCreateEvent extends DomainEvent<FolderAfterCreatePayload> {\n eventType = \"folder.afterCreate\" as const;\n\n getHandlerAbstraction() {\n return FolderAfterCreateEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,mDAAmD;AAC/E,SAASC,8BAA8B,EAAEC,6BAA6B;AAGtE;AACA,OAAO,MAAMC,uBAAuB,SAASH,WAAW,CAA4B;EAChFI,SAAS,GAAG,qBAAqB;EAEjCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,8BAA8B;EACzC;AACJ;;AAEA;AACA,OAAO,MAAMK,sBAAsB,SAASN,WAAW,CAA2B;EAC9EI,SAAS,GAAG,oBAAoB;EAEhCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,6BAA6B;EACxC;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"features/folder/CreateFolder/events.js","sources":["../../../../src/features/folder/CreateFolder/events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { FolderBeforeCreateEventHandler, FolderAfterCreateEventHandler } from \"./abstractions.js\";\nimport type { FolderBeforeCreatePayload, FolderAfterCreatePayload } from \"./abstractions.js\";\n\n// FolderBeforeCreate Event\nexport class FolderBeforeCreateEvent extends DomainEvent<FolderBeforeCreatePayload> {\n eventType = \"folder.beforeCreate\" as const;\n\n getHandlerAbstraction() {\n return FolderBeforeCreateEventHandler;\n }\n}\n\n// FolderAfterCreate Event\nexport class FolderAfterCreateEvent extends DomainEvent<FolderAfterCreatePayload> {\n eventType = \"folder.afterCreate\" as const;\n\n getHandlerAbstraction() {\n return FolderAfterCreateEventHandler;\n }\n}\n"],"names":["FolderBeforeCreateEvent","DomainEvent","FolderBeforeCreateEventHandler","FolderAfterCreateEvent","FolderAfterCreateEventHandler"],"mappings":";;AAKO,MAAMA,gCAAgCC;IAGzC,wBAAwB;QACpB,OAAOC;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB;AAGO,MAAMC,+BAA+BF;IAGxC,wBAAwB;QACpB,OAAOG;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB"}
@@ -2,13 +2,14 @@ import { createFeature } from "@webiny/feature/api";
2
2
  import { CreateFolderRepository } from "./CreateFolderRepository.js";
3
3
  import { CreateFolderUseCase } from "./CreateFolderUseCase.js";
4
4
  import { CreateFolderWithFolderLevelPermissions } from "./decorators/CreateFolderWithFolderLevelPermissions.js";
5
- export const CreateFolderFeature = createFeature({
6
- name: "CreateFolder",
7
- register(container) {
8
- container.register(CreateFolderRepository).inSingletonScope();
9
- container.register(CreateFolderUseCase);
10
- container.registerDecorator(CreateFolderWithFolderLevelPermissions);
11
- }
5
+ const CreateFolderFeature = createFeature({
6
+ name: "CreateFolder",
7
+ register (container) {
8
+ container.register(CreateFolderRepository).inSingletonScope();
9
+ container.register(CreateFolderUseCase);
10
+ container.registerDecorator(CreateFolderWithFolderLevelPermissions);
11
+ }
12
12
  });
13
+ export { CreateFolderFeature };
13
14
 
14
15
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","CreateFolderRepository","CreateFolderUseCase","CreateFolderWithFolderLevelPermissions","CreateFolderFeature","name","register","container","inSingletonScope","registerDecorator"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport type { Container } from \"@webiny/di\";\nimport { CreateFolderRepository } from \"./CreateFolderRepository.js\";\nimport { CreateFolderUseCase } from \"./CreateFolderUseCase.js\";\nimport { CreateFolderWithFolderLevelPermissions } from \"./decorators/CreateFolderWithFolderLevelPermissions.js\";\n\nexport const CreateFolderFeature = createFeature({\n name: \"CreateFolder\",\n register(container: Container) {\n container.register(CreateFolderRepository).inSingletonScope();\n container.register(CreateFolderUseCase);\n container.registerDecorator(CreateFolderWithFolderLevelPermissions);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AAEnD,SAASC,sBAAsB;AAC/B,SAASC,mBAAmB;AAC5B,SAASC,sCAAsC;AAE/C,OAAO,MAAMC,mBAAmB,GAAGJ,aAAa,CAAC;EAC7CK,IAAI,EAAE,cAAc;EACpBC,QAAQA,CAACC,SAAoB,EAAE;IAC3BA,SAAS,CAACD,QAAQ,CAACL,sBAAsB,CAAC,CAACO,gBAAgB,CAAC,CAAC;IAC7DD,SAAS,CAACD,QAAQ,CAACJ,mBAAmB,CAAC;IACvCK,SAAS,CAACE,iBAAiB,CAACN,sCAAsC,CAAC;EACvE;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/folder/CreateFolder/feature.js","sources":["../../../../src/features/folder/CreateFolder/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport type { Container } from \"@webiny/di\";\nimport { CreateFolderRepository } from \"./CreateFolderRepository.js\";\nimport { CreateFolderUseCase } from \"./CreateFolderUseCase.js\";\nimport { CreateFolderWithFolderLevelPermissions } from \"./decorators/CreateFolderWithFolderLevelPermissions.js\";\n\nexport const CreateFolderFeature = createFeature({\n name: \"CreateFolder\",\n register(container: Container) {\n container.register(CreateFolderRepository).inSingletonScope();\n container.register(CreateFolderUseCase);\n container.registerDecorator(CreateFolderWithFolderLevelPermissions);\n }\n});\n"],"names":["CreateFolderFeature","createFeature","container","CreateFolderRepository","CreateFolderUseCase","CreateFolderWithFolderLevelPermissions"],"mappings":";;;;AAMO,MAAMA,sBAAsBC,cAAc;IAC7C,MAAM;IACN,UAASC,SAAoB;QACzBA,UAAU,QAAQ,CAACC,wBAAwB,gBAAgB;QAC3DD,UAAU,QAAQ,CAACE;QACnBF,UAAU,iBAAiB,CAACG;IAChC;AACJ"}
@@ -1,4 +1,2 @@
1
1
  export { CreateFolderFeature } from "./feature.js";
2
- export { FolderAfterCreateEventHandler, FolderBeforeCreateEventHandler, CreateFolderUseCase } from "./abstractions.js";
3
-
4
- //# sourceMappingURL=index.js.map
2
+ export { CreateFolderUseCase, FolderAfterCreateEventHandler, FolderBeforeCreateEventHandler } from "./abstractions.js";
@@ -1,12 +1,12 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { DeleteFolderRepository as RepositoryAbstraction, type IDeleteFolderRepository } from "./abstractions.js";
3
3
  import { DeleteEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry";
4
- import { FolderModel } from "../../../domain/folder/abstractions.js";
4
+ import { FolderModelProvider } from "../../../domain/folder/abstractions.js";
5
5
  import type { Folder } from "../../../folder/folder.types.js";
6
6
  declare class DeleteFolderRepositoryImpl implements IDeleteFolderRepository {
7
7
  private deleteEntry;
8
- private folderModel;
9
- constructor(deleteEntry: DeleteEntryUseCase.Interface, folderModel: FolderModel.Interface);
8
+ private folderModelProvider;
9
+ constructor(deleteEntry: DeleteEntryUseCase.Interface, folderModelProvider: FolderModelProvider.Interface);
10
10
  execute(folder: Folder): Promise<Result<void, RepositoryAbstraction.Error>>;
11
11
  }
12
12
  export declare const DeleteFolderRepository: typeof DeleteFolderRepositoryImpl & {
@@ -1,30 +1,33 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { DeleteFolderRepository as RepositoryAbstraction } from "./abstractions.js";
2
+ import { DeleteFolderRepository } from "./abstractions.js";
3
3
  import { DeleteEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry";
4
- import { FolderModel } from "../../../domain/folder/abstractions.js";
4
+ import { FolderModelProvider } from "../../../domain/folder/abstractions.js";
5
5
  import { FolderNotAuthorizedError, FolderPersistenceError } from "../../../domain/folder/errors.js";
6
6
  class DeleteFolderRepositoryImpl {
7
- constructor(deleteEntry, folderModel) {
8
- this.deleteEntry = deleteEntry;
9
- this.folderModel = folderModel;
10
- }
11
- async execute(folder) {
12
- const result = await this.deleteEntry.execute(this.folderModel, folder.id, {
13
- permanently: true,
14
- force: true
15
- });
16
- if (result.isFail()) {
17
- if (result.error.code === "Cms/Entry/NotAuthorized") {
18
- return Result.fail(new FolderNotAuthorizedError());
19
- }
20
- return Result.fail(new FolderPersistenceError(result.error));
7
+ constructor(deleteEntry, folderModelProvider){
8
+ this.deleteEntry = deleteEntry;
9
+ this.folderModelProvider = folderModelProvider;
10
+ }
11
+ async execute(folder) {
12
+ const folderModel = await this.folderModelProvider.get();
13
+ const result = await this.deleteEntry.execute(folderModel, folder.id, {
14
+ permanently: true,
15
+ force: true
16
+ });
17
+ if (result.isFail()) {
18
+ if ("Cms/Entry/NotAuthorized" === result.error.code) return Result.fail(new FolderNotAuthorizedError());
19
+ return Result.fail(new FolderPersistenceError(result.error));
20
+ }
21
+ return Result.ok();
21
22
  }
22
- return Result.ok();
23
- }
24
23
  }
25
- export const DeleteFolderRepository = RepositoryAbstraction.createImplementation({
26
- implementation: DeleteFolderRepositoryImpl,
27
- dependencies: [DeleteEntryUseCase, FolderModel]
24
+ const DeleteFolderRepository_DeleteFolderRepository = DeleteFolderRepository.createImplementation({
25
+ implementation: DeleteFolderRepositoryImpl,
26
+ dependencies: [
27
+ DeleteEntryUseCase,
28
+ FolderModelProvider
29
+ ]
28
30
  });
31
+ export { DeleteFolderRepository_DeleteFolderRepository as DeleteFolderRepository };
29
32
 
30
33
  //# sourceMappingURL=DeleteFolderRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","DeleteFolderRepository","RepositoryAbstraction","DeleteEntryUseCase","FolderModel","FolderNotAuthorizedError","FolderPersistenceError","DeleteFolderRepositoryImpl","constructor","deleteEntry","folderModel","execute","folder","result","id","permanently","force","isFail","error","code","fail","ok","createImplementation","implementation","dependencies"],"sources":["DeleteFolderRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n DeleteFolderRepository as RepositoryAbstraction,\n type IDeleteFolderRepository\n} from \"./abstractions.js\";\nimport { DeleteEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/DeleteEntry\";\nimport { FolderModel } from \"~/domain/folder/abstractions.js\";\nimport type { Folder } from \"~/folder/folder.types.js\";\nimport { FolderNotAuthorizedError, FolderPersistenceError } from \"~/domain/folder/errors.js\";\n\nclass DeleteFolderRepositoryImpl implements IDeleteFolderRepository {\n constructor(\n private deleteEntry: DeleteEntryUseCase.Interface,\n private folderModel: FolderModel.Interface\n ) {}\n\n async execute(folder: Folder): Promise<Result<void, RepositoryAbstraction.Error>> {\n const result = await this.deleteEntry.execute(this.folderModel, folder.id, {\n permanently: true,\n force: true\n });\n\n if (result.isFail()) {\n if (result.error.code === \"Cms/Entry/NotAuthorized\") {\n return Result.fail(new FolderNotAuthorizedError());\n }\n return Result.fail(new FolderPersistenceError(result.error));\n }\n\n return Result.ok();\n }\n}\n\nexport const DeleteFolderRepository = RepositoryAbstraction.createImplementation({\n implementation: DeleteFolderRepositoryImpl,\n dependencies: [DeleteEntryUseCase, FolderModel]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,sBAAsB,IAAIC,qBAAqB;AAGnD,SAASC,kBAAkB,QAAQ,4DAA4D;AAC/F,SAASC,WAAW;AAEpB,SAASC,wBAAwB,EAAEC,sBAAsB;AAEzD,MAAMC,0BAA0B,CAAoC;EAChEC,WAAWA,CACCC,WAAyC,EACzCC,WAAkC,EAC5C;IAAA,KAFUD,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,WAAkC,GAAlCA,WAAkC;EAC3C;EAEH,MAAMC,OAAOA,CAACC,MAAc,EAAsD;IAC9E,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACJ,WAAW,CAACE,OAAO,CAAC,IAAI,CAACD,WAAW,EAAEE,MAAM,CAACE,EAAE,EAAE;MACvEC,WAAW,EAAE,IAAI;MACjBC,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,IAAIH,MAAM,CAACI,MAAM,CAAC,CAAC,EAAE;MACjB,IAAIJ,MAAM,CAACK,KAAK,CAACC,IAAI,KAAK,yBAAyB,EAAE;QACjD,OAAOnB,MAAM,CAACoB,IAAI,CAAC,IAAIf,wBAAwB,CAAC,CAAC,CAAC;MACtD;MACA,OAAOL,MAAM,CAACoB,IAAI,CAAC,IAAId,sBAAsB,CAACO,MAAM,CAACK,KAAK,CAAC,CAAC;IAChE;IAEA,OAAOlB,MAAM,CAACqB,EAAE,CAAC,CAAC;EACtB;AACJ;AAEA,OAAO,MAAMpB,sBAAsB,GAAGC,qBAAqB,CAACoB,oBAAoB,CAAC;EAC7EC,cAAc,EAAEhB,0BAA0B;EAC1CiB,YAAY,EAAE,CAACrB,kBAAkB,EAAEC,WAAW;AAClD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/folder/DeleteFolder/DeleteFolderRepository.js","sources":["../../../../src/features/folder/DeleteFolder/DeleteFolderRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n DeleteFolderRepository as RepositoryAbstraction,\n type IDeleteFolderRepository\n} from \"./abstractions.js\";\nimport { DeleteEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/DeleteEntry\";\nimport { FolderModelProvider } from \"~/domain/folder/abstractions.js\";\nimport type { Folder } from \"~/folder/folder.types.js\";\nimport { FolderNotAuthorizedError, FolderPersistenceError } from \"~/domain/folder/errors.js\";\n\nclass DeleteFolderRepositoryImpl implements IDeleteFolderRepository {\n constructor(\n private deleteEntry: DeleteEntryUseCase.Interface,\n private folderModelProvider: FolderModelProvider.Interface\n ) {}\n\n async execute(folder: Folder): Promise<Result<void, RepositoryAbstraction.Error>> {\n const folderModel = await this.folderModelProvider.get();\n const result = await this.deleteEntry.execute(folderModel, folder.id, {\n permanently: true,\n force: true\n });\n\n if (result.isFail()) {\n if (result.error.code === \"Cms/Entry/NotAuthorized\") {\n return Result.fail(new FolderNotAuthorizedError());\n }\n return Result.fail(new FolderPersistenceError(result.error));\n }\n\n return Result.ok();\n }\n}\n\nexport const DeleteFolderRepository = RepositoryAbstraction.createImplementation({\n implementation: DeleteFolderRepositoryImpl,\n dependencies: [DeleteEntryUseCase, FolderModelProvider]\n});\n"],"names":["DeleteFolderRepositoryImpl","deleteEntry","folderModelProvider","folder","folderModel","result","Result","FolderNotAuthorizedError","FolderPersistenceError","DeleteFolderRepository","RepositoryAbstraction","DeleteEntryUseCase","FolderModelProvider"],"mappings":";;;;;AAUA,MAAMA;IACF,YACYC,WAAyC,EACzCC,mBAAkD,CAC5D;aAFUD,WAAW,GAAXA;aACAC,mBAAmB,GAAnBA;IACT;IAEH,MAAM,QAAQC,MAAc,EAAsD;QAC9E,MAAMC,cAAc,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG;QACtD,MAAMC,SAAS,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAACD,aAAaD,OAAO,EAAE,EAAE;YAClE,aAAa;YACb,OAAO;QACX;QAEA,IAAIE,OAAO,MAAM,IAAI;YACjB,IAAIA,AAAsB,8BAAtBA,OAAO,KAAK,CAAC,IAAI,EACjB,OAAOC,OAAO,IAAI,CAAC,IAAIC;YAE3B,OAAOD,OAAO,IAAI,CAAC,IAAIE,uBAAuBH,OAAO,KAAK;QAC9D;QAEA,OAAOC,OAAO,EAAE;IACpB;AACJ;AAEO,MAAMG,gDAAyBC,uBAAAA,oBAA0C,CAAC;IAC7E,gBAAgBV;IAChB,cAAc;QAACW;QAAoBC;KAAoB;AAC3D"}