@webiny/api-aco 0.0.0-unstable.6f45466a1d → 0.0.0-unstable.7be00a75a9

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 (412) hide show
  1. package/constants.js +2 -1
  2. package/constants.js.map +1 -1
  3. package/createAcoContext.d.ts +1 -1
  4. package/createAcoContext.js +75 -107
  5. package/createAcoContext.js.map +1 -1
  6. package/createAcoGraphQL.js +43 -44
  7. package/createAcoGraphQL.js.map +1 -1
  8. package/createAcoStorageOperations.js +5 -6
  9. package/createAcoStorageOperations.js.map +1 -1
  10. package/createAcoTasks.js +7 -8
  11. package/createAcoTasks.js.map +1 -1
  12. package/domain/folder/abstractions.js +2 -5
  13. package/domain/folder/abstractions.js.map +1 -1
  14. package/domain/folder/errors.js +42 -47
  15. package/domain/folder/errors.js.map +1 -1
  16. package/domain/folder/folder.model.js +52 -33
  17. package/domain/folder/folder.model.js.map +1 -1
  18. package/exports/api/aco/flp.d.ts +6 -0
  19. package/exports/api/aco/flp.js +6 -0
  20. package/exports/api/aco/folder.d.ts +10 -0
  21. package/exports/api/aco/folder.js +10 -0
  22. package/features/cms/decorators/CreateEntryRevisionFromWithFlpDecorator.js +27 -31
  23. package/features/cms/decorators/CreateEntryRevisionFromWithFlpDecorator.js.map +1 -1
  24. package/features/cms/decorators/CreateEntryWithFlpDecorator.js +22 -25
  25. package/features/cms/decorators/CreateEntryWithFlpDecorator.js.map +1 -1
  26. package/features/cms/decorators/DeleteEntryRevisionWithFlpDecorator.js +27 -31
  27. package/features/cms/decorators/DeleteEntryRevisionWithFlpDecorator.js.map +1 -1
  28. package/features/cms/decorators/DeleteEntryWithFlpDecorator.js +29 -33
  29. package/features/cms/decorators/DeleteEntryWithFlpDecorator.js.map +1 -1
  30. package/features/cms/decorators/GetEntryByIdWithFlpDecorator.js +25 -30
  31. package/features/cms/decorators/GetEntryByIdWithFlpDecorator.js.map +1 -1
  32. package/features/cms/decorators/GetEntryWithFlpDecorator.js +25 -30
  33. package/features/cms/decorators/GetEntryWithFlpDecorator.js.map +1 -1
  34. package/features/cms/decorators/GetLatestEntriesByIdsWithFlpDecorator.js +31 -35
  35. package/features/cms/decorators/GetLatestEntriesByIdsWithFlpDecorator.js.map +1 -1
  36. package/features/cms/decorators/GetPublishedEntriesByIdsWithFlpDecorator.js +31 -34
  37. package/features/cms/decorators/GetPublishedEntriesByIdsWithFlpDecorator.js.map +1 -1
  38. package/features/cms/decorators/ListDeletedEntriesWithFlpDecorator.js +27 -28
  39. package/features/cms/decorators/ListDeletedEntriesWithFlpDecorator.js.map +1 -1
  40. package/features/cms/decorators/ListEntriesWithFlpDecorator.js +27 -27
  41. package/features/cms/decorators/ListEntriesWithFlpDecorator.js.map +1 -1
  42. package/features/cms/decorators/ListLatestEntriesWithFlpDecorator.js +27 -28
  43. package/features/cms/decorators/ListLatestEntriesWithFlpDecorator.js.map +1 -1
  44. package/features/cms/decorators/ListPublishedEntriesWithFlpDecorator.js +27 -28
  45. package/features/cms/decorators/ListPublishedEntriesWithFlpDecorator.js.map +1 -1
  46. package/features/cms/decorators/MoveEntryWithFlpDecorator.js +37 -51
  47. package/features/cms/decorators/MoveEntryWithFlpDecorator.js.map +1 -1
  48. package/features/cms/decorators/UpdateEntryWithFlpDecorator.d.ts +1 -2
  49. package/features/cms/decorators/UpdateEntryWithFlpDecorator.js +27 -31
  50. package/features/cms/decorators/UpdateEntryWithFlpDecorator.js.map +1 -1
  51. package/features/cms/feature.d.ts +4 -1
  52. package/features/cms/feature.js +19 -25
  53. package/features/cms/feature.js.map +1 -1
  54. package/features/cms/index.js +0 -2
  55. package/features/flp/CreateFlp/CreateFlpUseCase.js +26 -33
  56. package/features/flp/CreateFlp/CreateFlpUseCase.js.map +1 -1
  57. package/features/flp/CreateFlp/abstractions.d.ts +1 -0
  58. package/features/flp/CreateFlp/abstractions.js +2 -4
  59. package/features/flp/CreateFlp/abstractions.js.map +1 -1
  60. package/features/flp/CreateFlp/feature.d.ts +5 -1
  61. package/features/flp/CreateFlp/feature.js +7 -8
  62. package/features/flp/CreateFlp/feature.js.map +1 -1
  63. package/features/flp/CreateFlp/index.js +0 -2
  64. package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.d.ts +3 -3
  65. package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.js +28 -28
  66. package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.js.map +1 -1
  67. package/features/flp/CreateFlpOnFolderCreated/feature.d.ts +4 -1
  68. package/features/flp/CreateFlpOnFolderCreated/feature.js +6 -5
  69. package/features/flp/CreateFlpOnFolderCreated/feature.js.map +1 -1
  70. package/features/flp/CreateFlpOnFolderCreated/index.js +0 -2
  71. package/features/flp/DeleteFlp/DeleteFlpUseCase.js +17 -18
  72. package/features/flp/DeleteFlp/DeleteFlpUseCase.js.map +1 -1
  73. package/features/flp/DeleteFlp/abstractions.d.ts +1 -0
  74. package/features/flp/DeleteFlp/abstractions.js +2 -4
  75. package/features/flp/DeleteFlp/abstractions.js.map +1 -1
  76. package/features/flp/DeleteFlp/feature.d.ts +5 -1
  77. package/features/flp/DeleteFlp/feature.js +7 -8
  78. package/features/flp/DeleteFlp/feature.js.map +1 -1
  79. package/features/flp/DeleteFlp/index.js +0 -2
  80. package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.d.ts +3 -3
  81. package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.js +28 -28
  82. package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.js.map +1 -1
  83. package/features/flp/DeleteFlpOnFolderDeleted/feature.d.ts +4 -1
  84. package/features/flp/DeleteFlpOnFolderDeleted/feature.js +6 -5
  85. package/features/flp/DeleteFlpOnFolderDeleted/feature.js.map +1 -1
  86. package/features/flp/DeleteFlpOnFolderDeleted/index.js +0 -2
  87. package/features/flp/FolderLevelPermissions/FolderLevelPermissions.d.ts +3 -3
  88. package/features/flp/FolderLevelPermissions/FolderLevelPermissions.js +90 -111
  89. package/features/flp/FolderLevelPermissions/FolderLevelPermissions.js.map +1 -1
  90. package/features/flp/FolderLevelPermissions/abstractions.d.ts +1 -0
  91. package/features/flp/FolderLevelPermissions/abstractions.js +2 -1
  92. package/features/flp/FolderLevelPermissions/abstractions.js.map +1 -1
  93. package/features/flp/FolderLevelPermissions/feature.d.ts +5 -1
  94. package/features/flp/FolderLevelPermissions/feature.js +6 -5
  95. package/features/flp/FolderLevelPermissions/feature.js.map +1 -1
  96. package/features/flp/FolderLevelPermissions/index.js +0 -2
  97. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.d.ts +1 -1
  98. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.js +14 -36
  99. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.js.map +1 -1
  100. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/ICanAccessFolder.js +0 -3
  101. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/index.js +0 -2
  102. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.d.ts +1 -1
  103. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.js +12 -29
  104. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.js.map +1 -1
  105. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/ICanAccessFolderContent.js +0 -3
  106. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/index.js +0 -2
  107. package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.js +5 -4
  108. package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.js.map +1 -1
  109. package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/ICanCreateFolderInRoot.js +0 -3
  110. package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/index.js +0 -2
  111. package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.js +5 -4
  112. package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.js.map +1 -1
  113. package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/ICheckNotInheritedPermissions.js +0 -3
  114. package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/index.js +0 -2
  115. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/DefaultPermissionsMerger.js +43 -66
  116. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/DefaultPermissionsMerger.js.map +1 -1
  117. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.d.ts +1 -1
  118. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.js +10 -9
  119. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.js.map +1 -1
  120. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.d.ts +2 -2
  121. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js +22 -33
  122. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js.map +1 -1
  123. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/IGetDefaultPermissions.js +0 -3
  124. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/index.js +0 -2
  125. package/features/flp/FolderLevelPermissions/useCases/index.js +0 -2
  126. package/features/flp/GetFlp/GetFlpUseCase.js +8 -7
  127. package/features/flp/GetFlp/GetFlpUseCase.js.map +1 -1
  128. package/features/flp/GetFlp/abstractions.d.ts +1 -0
  129. package/features/flp/GetFlp/abstractions.js +2 -1
  130. package/features/flp/GetFlp/abstractions.js.map +1 -1
  131. package/features/flp/GetFlp/feature.d.ts +4 -1
  132. package/features/flp/GetFlp/feature.js +7 -8
  133. package/features/flp/GetFlp/feature.js.map +1 -1
  134. package/features/flp/GetFlp/index.js +0 -2
  135. package/features/flp/ListFlps/ListFlpsUseCase.js +8 -7
  136. package/features/flp/ListFlps/ListFlpsUseCase.js.map +1 -1
  137. package/features/flp/ListFlps/abstractions.d.ts +1 -0
  138. package/features/flp/ListFlps/abstractions.js +2 -1
  139. package/features/flp/ListFlps/abstractions.js.map +1 -1
  140. package/features/flp/ListFlps/feature.d.ts +4 -1
  141. package/features/flp/ListFlps/feature.js +7 -8
  142. package/features/flp/ListFlps/feature.js.map +1 -1
  143. package/features/flp/ListFlps/index.js +0 -2
  144. package/features/flp/UpdateFlp/UpdateFlpUseCase.js +133 -184
  145. package/features/flp/UpdateFlp/UpdateFlpUseCase.js.map +1 -1
  146. package/features/flp/UpdateFlp/abstractions.d.ts +1 -0
  147. package/features/flp/UpdateFlp/abstractions.js +2 -4
  148. package/features/flp/UpdateFlp/abstractions.js.map +1 -1
  149. package/features/flp/UpdateFlp/feature.d.ts +5 -1
  150. package/features/flp/UpdateFlp/feature.js +7 -8
  151. package/features/flp/UpdateFlp/feature.js.map +1 -1
  152. package/features/flp/UpdateFlp/index.js +0 -2
  153. package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.d.ts +3 -3
  154. package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.js +30 -30
  155. package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.js.map +1 -1
  156. package/features/flp/UpdateFlpOnFolderUpdated/feature.d.ts +4 -1
  157. package/features/flp/UpdateFlpOnFolderUpdated/feature.js +6 -5
  158. package/features/flp/UpdateFlpOnFolderUpdated/feature.js.map +1 -1
  159. package/features/flp/UpdateFlpOnFolderUpdated/index.js +0 -2
  160. package/features/folder/CreateFolder/CreateFolderRepository.js +67 -90
  161. package/features/folder/CreateFolder/CreateFolderRepository.js.map +1 -1
  162. package/features/folder/CreateFolder/CreateFolderUseCase.d.ts +1 -1
  163. package/features/folder/CreateFolder/CreateFolderUseCase.js +28 -31
  164. package/features/folder/CreateFolder/CreateFolderUseCase.js.map +1 -1
  165. package/features/folder/CreateFolder/abstractions.d.ts +9 -5
  166. package/features/folder/CreateFolder/abstractions.js +5 -18
  167. package/features/folder/CreateFolder/abstractions.js.map +1 -1
  168. package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.js +29 -34
  169. package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.js.map +1 -1
  170. package/features/folder/CreateFolder/events.d.ts +3 -3
  171. package/features/folder/CreateFolder/events.js +17 -15
  172. package/features/folder/CreateFolder/events.js.map +1 -1
  173. package/features/folder/CreateFolder/feature.d.ts +5 -1
  174. package/features/folder/CreateFolder/feature.js +8 -7
  175. package/features/folder/CreateFolder/feature.js.map +1 -1
  176. package/features/folder/CreateFolder/index.d.ts +1 -1
  177. package/features/folder/CreateFolder/index.js +1 -3
  178. package/features/folder/DeleteFolder/DeleteFolderRepository.js +22 -20
  179. package/features/folder/DeleteFolder/DeleteFolderRepository.js.map +1 -1
  180. package/features/folder/DeleteFolder/DeleteFolderUseCase.d.ts +1 -1
  181. package/features/folder/DeleteFolder/DeleteFolderUseCase.js +36 -44
  182. package/features/folder/DeleteFolder/DeleteFolderUseCase.js.map +1 -1
  183. package/features/folder/DeleteFolder/abstractions.d.ts +9 -5
  184. package/features/folder/DeleteFolder/abstractions.js +5 -18
  185. package/features/folder/DeleteFolder/abstractions.js.map +1 -1
  186. package/features/folder/DeleteFolder/decorators/DeleteFolderWithFolderLevelPermissions.js +21 -20
  187. package/features/folder/DeleteFolder/decorators/DeleteFolderWithFolderLevelPermissions.js.map +1 -1
  188. package/features/folder/DeleteFolder/events.d.ts +3 -3
  189. package/features/folder/DeleteFolder/events.js +17 -15
  190. package/features/folder/DeleteFolder/events.js.map +1 -1
  191. package/features/folder/DeleteFolder/feature.d.ts +5 -1
  192. package/features/folder/DeleteFolder/feature.js +8 -7
  193. package/features/folder/DeleteFolder/feature.js.map +1 -1
  194. package/features/folder/DeleteFolder/index.d.ts +1 -1
  195. package/features/folder/DeleteFolder/index.js +1 -3
  196. package/features/folder/EnsureFolderIsEmpty/EnsureFolderIsEmpty.js +43 -44
  197. package/features/folder/EnsureFolderIsEmpty/EnsureFolderIsEmpty.js.map +1 -1
  198. package/features/folder/EnsureFolderIsEmpty/abstractions.d.ts +1 -0
  199. package/features/folder/EnsureFolderIsEmpty/abstractions.js +2 -1
  200. package/features/folder/EnsureFolderIsEmpty/abstractions.js.map +1 -1
  201. package/features/folder/EnsureFolderIsEmpty/feature.d.ts +4 -1
  202. package/features/folder/EnsureFolderIsEmpty/feature.js +6 -5
  203. package/features/folder/EnsureFolderIsEmpty/feature.js.map +1 -1
  204. package/features/folder/EnsureFolderIsEmpty/index.js +0 -2
  205. package/features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.d.ts +3 -3
  206. package/features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.js +17 -21
  207. package/features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.js.map +1 -1
  208. package/features/folder/EnsureFolderIsEmptyOnDelete/feature.d.ts +4 -1
  209. package/features/folder/EnsureFolderIsEmptyOnDelete/feature.js +6 -12
  210. package/features/folder/EnsureFolderIsEmptyOnDelete/feature.js.map +1 -1
  211. package/features/folder/EnsureFolderIsEmptyOnDelete/index.js +0 -2
  212. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/ModelFolderBeforeDeleteHandler.d.ts +3 -3
  213. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/ModelFolderBeforeDeleteHandler.js +37 -45
  214. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/ModelFolderBeforeDeleteHandler.js.map +1 -1
  215. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/feature.d.ts +4 -1
  216. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/feature.js +6 -5
  217. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/feature.js.map +1 -1
  218. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/index.js +0 -2
  219. package/features/folder/GetAncestors/GetAncestorsRepository.js +45 -75
  220. package/features/folder/GetAncestors/GetAncestorsRepository.js.map +1 -1
  221. package/features/folder/GetAncestors/GetAncestorsUseCase.js +14 -11
  222. package/features/folder/GetAncestors/GetAncestorsUseCase.js.map +1 -1
  223. package/features/folder/GetAncestors/abstractions.d.ts +2 -0
  224. package/features/folder/GetAncestors/abstractions.js +3 -12
  225. package/features/folder/GetAncestors/abstractions.js.map +1 -1
  226. package/features/folder/GetAncestors/feature.d.ts +5 -1
  227. package/features/folder/GetAncestors/feature.js +7 -6
  228. package/features/folder/GetAncestors/feature.js.map +1 -1
  229. package/features/folder/GetAncestors/index.js +0 -2
  230. package/features/folder/GetFolder/GetFolderRepository.js +21 -19
  231. package/features/folder/GetFolder/GetFolderRepository.js.map +1 -1
  232. package/features/folder/GetFolder/GetFolderUseCase.js +14 -11
  233. package/features/folder/GetFolder/GetFolderUseCase.js.map +1 -1
  234. package/features/folder/GetFolder/abstractions.d.ts +8 -5
  235. package/features/folder/GetFolder/abstractions.js +5 -18
  236. package/features/folder/GetFolder/abstractions.js.map +1 -1
  237. package/features/folder/GetFolder/decorators/GetFolderWithFolderLevelPermissions.js +23 -26
  238. package/features/folder/GetFolder/decorators/GetFolderWithFolderLevelPermissions.js.map +1 -1
  239. package/features/folder/GetFolder/feature.d.ts +5 -1
  240. package/features/folder/GetFolder/feature.js +8 -7
  241. package/features/folder/GetFolder/feature.js.map +1 -1
  242. package/features/folder/GetFolder/index.d.ts +1 -1
  243. package/features/folder/GetFolder/index.js +1 -3
  244. package/features/folder/GetFolderHierarchy/GetFolderHierarchyRepository.js +67 -86
  245. package/features/folder/GetFolderHierarchy/GetFolderHierarchyRepository.js.map +1 -1
  246. package/features/folder/GetFolderHierarchy/GetFolderHierarchyUseCase.js +14 -11
  247. package/features/folder/GetFolderHierarchy/GetFolderHierarchyUseCase.js.map +1 -1
  248. package/features/folder/GetFolderHierarchy/abstractions.d.ts +2 -0
  249. package/features/folder/GetFolderHierarchy/abstractions.js +3 -12
  250. package/features/folder/GetFolderHierarchy/abstractions.js.map +1 -1
  251. package/features/folder/GetFolderHierarchy/decorators/GetFolderHierarchyWithFolderLevelPermissions.js +55 -56
  252. package/features/folder/GetFolderHierarchy/decorators/GetFolderHierarchyWithFolderLevelPermissions.js.map +1 -1
  253. package/features/folder/GetFolderHierarchy/feature.d.ts +5 -1
  254. package/features/folder/GetFolderHierarchy/feature.js +8 -7
  255. package/features/folder/GetFolderHierarchy/feature.js.map +1 -1
  256. package/features/folder/GetFolderHierarchy/index.js +0 -2
  257. package/features/folder/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargetsUseCase.d.ts +2 -2
  258. package/features/folder/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargetsUseCase.js +67 -60
  259. package/features/folder/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargetsUseCase.js.map +1 -1
  260. package/features/folder/ListFolderLevelPermissionsTargets/abstractions.d.ts +1 -0
  261. package/features/folder/ListFolderLevelPermissionsTargets/abstractions.js +2 -4
  262. package/features/folder/ListFolderLevelPermissionsTargets/abstractions.js.map +1 -1
  263. package/features/folder/ListFolderLevelPermissionsTargets/feature.d.ts +4 -1
  264. package/features/folder/ListFolderLevelPermissionsTargets/feature.js +6 -5
  265. package/features/folder/ListFolderLevelPermissionsTargets/feature.js.map +1 -1
  266. package/features/folder/ListFolderLevelPermissionsTargets/index.js +0 -2
  267. package/features/folder/ListFolders/ListFoldersRepository.js +39 -41
  268. package/features/folder/ListFolders/ListFoldersRepository.js.map +1 -1
  269. package/features/folder/ListFolders/ListFoldersUseCase.js +14 -11
  270. package/features/folder/ListFolders/ListFoldersUseCase.js.map +1 -1
  271. package/features/folder/ListFolders/abstractions.d.ts +2 -0
  272. package/features/folder/ListFolders/abstractions.js +3 -12
  273. package/features/folder/ListFolders/abstractions.js.map +1 -1
  274. package/features/folder/ListFolders/decorators/ListFoldersWithFolderLevelPermissions.js +55 -67
  275. package/features/folder/ListFolders/decorators/ListFoldersWithFolderLevelPermissions.js.map +1 -1
  276. package/features/folder/ListFolders/feature.d.ts +5 -1
  277. package/features/folder/ListFolders/feature.js +8 -7
  278. package/features/folder/ListFolders/feature.js.map +1 -1
  279. package/features/folder/ListFolders/index.js +0 -2
  280. package/features/folder/UpdateFolder/UpdateFolderRepository.js +66 -92
  281. package/features/folder/UpdateFolder/UpdateFolderRepository.js.map +1 -1
  282. package/features/folder/UpdateFolder/UpdateFolderUseCase.d.ts +1 -1
  283. package/features/folder/UpdateFolder/UpdateFolderUseCase.js +39 -46
  284. package/features/folder/UpdateFolder/UpdateFolderUseCase.js.map +1 -1
  285. package/features/folder/UpdateFolder/abstractions.d.ts +9 -5
  286. package/features/folder/UpdateFolder/abstractions.js +5 -18
  287. package/features/folder/UpdateFolder/abstractions.js.map +1 -1
  288. package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.js +45 -64
  289. package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.js.map +1 -1
  290. package/features/folder/UpdateFolder/events.d.ts +3 -3
  291. package/features/folder/UpdateFolder/events.js +17 -15
  292. package/features/folder/UpdateFolder/events.js.map +1 -1
  293. package/features/folder/UpdateFolder/feature.d.ts +5 -1
  294. package/features/folder/UpdateFolder/feature.js +8 -7
  295. package/features/folder/UpdateFolder/feature.js.map +1 -1
  296. package/features/folder/UpdateFolder/index.d.ts +1 -1
  297. package/features/folder/UpdateFolder/index.js +1 -3
  298. package/features/folder/shared/EntryToFolderMapper.js +20 -19
  299. package/features/folder/shared/EntryToFolderMapper.js.map +1 -1
  300. package/features/folder/shared/abstractions.d.ts +1 -0
  301. package/features/folder/shared/abstractions.js +2 -1
  302. package/features/folder/shared/abstractions.js.map +1 -1
  303. package/filter/filter.crud.js +28 -31
  304. package/filter/filter.crud.js.map +1 -1
  305. package/filter/filter.gql.js +32 -48
  306. package/filter/filter.gql.js.map +1 -1
  307. package/filter/filter.model.js +44 -32
  308. package/filter/filter.model.js.map +1 -1
  309. package/filter/filter.so.js +73 -93
  310. package/filter/filter.so.js.map +1 -1
  311. package/filter/filter.types.js +5 -4
  312. package/filter/filter.types.js.map +1 -1
  313. package/flp/flp.crud.js +69 -86
  314. package/flp/flp.crud.js.map +1 -1
  315. package/flp/flp.so.js +162 -199
  316. package/flp/flp.so.js.map +1 -1
  317. package/flp/flp.types.js +0 -3
  318. package/flp/index.js +0 -2
  319. package/flp/tasks/createFlp.task.d.ts +6 -4
  320. package/flp/tasks/createFlp.task.js +27 -26
  321. package/flp/tasks/createFlp.task.js.map +1 -1
  322. package/flp/tasks/deleteFlp.task.d.ts +6 -4
  323. package/flp/tasks/deleteFlp.task.js +27 -26
  324. package/flp/tasks/deleteFlp.task.js.map +1 -1
  325. package/flp/tasks/index.js +13 -12
  326. package/flp/tasks/index.js.map +1 -1
  327. package/flp/tasks/syncFlp.task.d.ts +6 -4
  328. package/flp/tasks/syncFlp.task.js +84 -111
  329. package/flp/tasks/syncFlp.task.js.map +1 -1
  330. package/flp/tasks/updateFlp.task.d.ts +6 -4
  331. package/flp/tasks/updateFlp.task.js +34 -31
  332. package/flp/tasks/updateFlp.task.js.map +1 -1
  333. package/folder/createFolderModelModifier.js +50 -50
  334. package/folder/createFolderModelModifier.js.map +1 -1
  335. package/folder/createFolderTypeDefs.d.ts +3 -2
  336. package/folder/createFolderTypeDefs.js +39 -50
  337. package/folder/createFolderTypeDefs.js.map +1 -1
  338. package/folder/folder.gql.js +100 -133
  339. package/folder/folder.gql.js.map +1 -1
  340. package/folder/folder.types.js +0 -3
  341. package/index.d.ts +1 -1
  342. package/index.js +7 -4
  343. package/index.js.map +1 -1
  344. package/package.json +31 -41
  345. package/types.js +5 -4
  346. package/types.js.map +1 -1
  347. package/utils/FoldersCacheFactory.js +20 -19
  348. package/utils/FoldersCacheFactory.js.map +1 -1
  349. package/utils/ListCache.js +20 -19
  350. package/utils/ListCache.js.map +1 -1
  351. package/utils/Path.js +5 -6
  352. package/utils/Path.js.map +1 -1
  353. package/utils/compress.js +8 -7
  354. package/utils/compress.js.map +1 -1
  355. package/utils/createListSort.js +4 -7
  356. package/utils/createListSort.js.map +1 -1
  357. package/utils/createOperationsWrapper.js +12 -19
  358. package/utils/createOperationsWrapper.js.map +1 -1
  359. package/utils/decorators/CmsEntriesCrudDecorators.js +165 -196
  360. package/utils/decorators/CmsEntriesCrudDecorators.js.map +1 -1
  361. package/utils/decorators/FilterEntriesByFolderFactory.js +18 -19
  362. package/utils/decorators/FilterEntriesByFolderFactory.js.map +1 -1
  363. package/utils/decorators/ListEntriesFactory.js +65 -98
  364. package/utils/decorators/ListEntriesFactory.js.map +1 -1
  365. package/utils/decorators/hasRootFolderId.js +6 -12
  366. package/utils/decorators/hasRootFolderId.js.map +1 -1
  367. package/utils/decorators/isPageModel.js +5 -10
  368. package/utils/decorators/isPageModel.js.map +1 -1
  369. package/utils/ensureAuthentication.js +6 -7
  370. package/utils/ensureAuthentication.js.map +1 -1
  371. package/utils/pickEntryFieldValues.js +24 -18
  372. package/utils/pickEntryFieldValues.js.map +1 -1
  373. package/utils/resolve.js +7 -6
  374. package/utils/resolve.js.map +1 -1
  375. package/features/cms/index.js.map +0 -1
  376. package/features/flp/CreateFlp/index.js.map +0 -1
  377. package/features/flp/CreateFlpOnFolderCreated/index.js.map +0 -1
  378. package/features/flp/DeleteFlp/index.js.map +0 -1
  379. package/features/flp/DeleteFlpOnFolderDeleted/index.js.map +0 -1
  380. package/features/flp/FolderLevelPermissions/index.js.map +0 -1
  381. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/ICanAccessFolder.js.map +0 -1
  382. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/index.js.map +0 -1
  383. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/ICanAccessFolderContent.js.map +0 -1
  384. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/index.js.map +0 -1
  385. package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/ICanCreateFolderInRoot.js.map +0 -1
  386. package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/index.js.map +0 -1
  387. package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/ICheckNotInheritedPermissions.js.map +0 -1
  388. package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/index.js.map +0 -1
  389. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/IGetDefaultPermissions.js.map +0 -1
  390. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/index.js.map +0 -1
  391. package/features/flp/FolderLevelPermissions/useCases/index.js.map +0 -1
  392. package/features/flp/GetFlp/index.js.map +0 -1
  393. package/features/flp/ListFlps/index.js.map +0 -1
  394. package/features/flp/UpdateFlp/index.js.map +0 -1
  395. package/features/flp/UpdateFlpOnFolderUpdated/index.js.map +0 -1
  396. package/features/folder/CreateFolder/index.js.map +0 -1
  397. package/features/folder/DeleteFolder/index.js.map +0 -1
  398. package/features/folder/EnsureFolderIsEmpty/index.js.map +0 -1
  399. package/features/folder/EnsureFolderIsEmptyOnDelete/index.js.map +0 -1
  400. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/index.js.map +0 -1
  401. package/features/folder/GetAncestors/index.js.map +0 -1
  402. package/features/folder/GetFolder/index.js.map +0 -1
  403. package/features/folder/GetFolderHierarchy/index.js.map +0 -1
  404. package/features/folder/ListFolderLevelPermissionsTargets/index.js.map +0 -1
  405. package/features/folder/ListFolders/index.js.map +0 -1
  406. package/features/folder/UpdateFolder/index.js.map +0 -1
  407. package/flp/flp.types.js.map +0 -1
  408. package/flp/index.js.map +0 -1
  409. package/folder/folder.types.js.map +0 -1
  410. package/utils/acoRecordId.d.ts +0 -6
  411. package/utils/acoRecordId.js +0 -27
  412. package/utils/acoRecordId.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["Result","ListFoldersUseCase","FolderLevelPermissions","ROOT_FOLDER","ListFoldersWithFolderLevelPermissionsImpl","flpCatalog","Map","constructor","folderLevelPermissions","decoratee","execute","params","result","isFail","fail","error","folders","meta","value","rootFlps","listFolderLevelPermissions","where","type","parentId","forEach","flp","setFlp","id","permissions","Promise","all","map","folder","hasFlp","getFolderLevelPermissions","foldersWithPermissions","getFlp","canAccessFolder","rwd","folderWithFlp","ok","filter","Boolean","has","get","set","ListFoldersWithFolderLevelPermissions","createDecorator","decorator","dependencies"],"sources":["ListFoldersWithFolderLevelPermissions.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport type { Folder, ListFoldersParams } from \"~/folder/folder.types.js\";\nimport { ListFoldersUseCase } from \"../abstractions.js\";\nimport { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport type { FolderPermission } from \"~/flp/flp.types.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\n\nclass ListFoldersWithFolderLevelPermissionsImpl implements ListFoldersUseCase.Interface {\n private flpCatalog: Map<string, FolderPermission[]> = new Map();\n\n constructor(\n private folderLevelPermissions: FolderLevelPermissions.Interface,\n private decoratee: ListFoldersUseCase.Interface\n ) {}\n\n async execute(params: ListFoldersParams): ListFoldersUseCase.Return {\n const result = await this.decoratee.execute(params);\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n const { folders, meta } = result.value;\n\n // Fetch FLP records for ROOT folders and populate the catalog.\n const rootFlps = await this.folderLevelPermissions.listFolderLevelPermissions({\n where: {\n type: params.where.type,\n parentId: ROOT_FOLDER\n }\n });\n\n rootFlps.forEach(flp => this.setFlp(flp.id, flp.permissions));\n\n // Fetch FLP for folders not already in the catalog.\n await Promise.all(\n folders.map(async folder => {\n if (!this.hasFlp(folder.id)) {\n const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(\n folder.id\n );\n this.setFlp(folder.id, permissions);\n }\n })\n );\n\n // Filter folders based on permissions.\n const foldersWithPermissions = await Promise.all(\n folders.map(async folder => {\n const permissions = this.getFlp(folder.id);\n if (!permissions) {\n return null;\n }\n\n const canAccessFolder = await this.folderLevelPermissions.canAccessFolder({\n permissions,\n rwd: \"r\"\n });\n\n if (!canAccessFolder) {\n return null;\n }\n\n const folderWithFlp = { ...folder, permissions };\n return canAccessFolder ? folderWithFlp : null;\n })\n );\n\n return Result.ok({ folders: foldersWithPermissions.filter(Boolean) as Folder[], meta });\n }\n\n private hasFlp(id: string): boolean {\n return this.flpCatalog.has(id);\n }\n\n private getFlp(id: string): FolderPermission[] | undefined {\n return this.flpCatalog.get(id);\n }\n\n private setFlp(id: string, permissions: FolderPermission[]): void {\n this.flpCatalog.set(id, permissions);\n }\n}\n\nexport const ListFoldersWithFolderLevelPermissions = ListFoldersUseCase.createDecorator({\n decorator: ListFoldersWithFolderLevelPermissionsImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"features/folder/ListFolders/decorators/ListFoldersWithFolderLevelPermissions.js","sources":["../../../../../src/features/folder/ListFolders/decorators/ListFoldersWithFolderLevelPermissions.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport type { Folder, ListFoldersParams } from \"~/folder/folder.types.js\";\nimport { ListFoldersUseCase } from \"../abstractions.js\";\nimport { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport type { FolderPermission } from \"~/flp/flp.types.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\n\nclass ListFoldersWithFolderLevelPermissionsImpl implements ListFoldersUseCase.Interface {\n private flpCatalog: Map<string, FolderPermission[]> = new Map();\n\n constructor(\n private folderLevelPermissions: FolderLevelPermissions.Interface,\n private decoratee: ListFoldersUseCase.Interface\n ) {}\n\n async execute(params: ListFoldersParams): ListFoldersUseCase.Return {\n const result = await this.decoratee.execute(params);\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n const { folders, meta } = result.value;\n\n // Fetch FLP records for ROOT folders and populate the catalog.\n const rootFlps = await this.folderLevelPermissions.listFolderLevelPermissions({\n where: {\n type: params.where.type,\n parentId: ROOT_FOLDER\n }\n });\n\n rootFlps.forEach(flp => this.setFlp(flp.id, flp.permissions));\n\n // Fetch FLP for folders not already in the catalog.\n await Promise.all(\n folders.map(async folder => {\n if (!this.hasFlp(folder.id)) {\n const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(\n folder.id\n );\n this.setFlp(folder.id, permissions);\n }\n })\n );\n\n // Filter folders based on permissions.\n const foldersWithPermissions = await Promise.all(\n folders.map(async folder => {\n const permissions = this.getFlp(folder.id);\n if (!permissions) {\n return null;\n }\n\n const canAccessFolder = await this.folderLevelPermissions.canAccessFolder({\n permissions,\n rwd: \"r\"\n });\n\n if (!canAccessFolder) {\n return null;\n }\n\n const folderWithFlp = { ...folder, permissions };\n return canAccessFolder ? folderWithFlp : null;\n })\n );\n\n return Result.ok({ folders: foldersWithPermissions.filter(Boolean) as Folder[], meta });\n }\n\n private hasFlp(id: string): boolean {\n return this.flpCatalog.has(id);\n }\n\n private getFlp(id: string): FolderPermission[] | undefined {\n return this.flpCatalog.get(id);\n }\n\n private setFlp(id: string, permissions: FolderPermission[]): void {\n this.flpCatalog.set(id, permissions);\n }\n}\n\nexport const ListFoldersWithFolderLevelPermissions = ListFoldersUseCase.createDecorator({\n decorator: ListFoldersWithFolderLevelPermissionsImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"names":["ListFoldersWithFolderLevelPermissionsImpl","folderLevelPermissions","decoratee","Map","params","result","Result","folders","meta","rootFlps","ROOT_FOLDER","flp","Promise","folder","permissions","foldersWithPermissions","canAccessFolder","folderWithFlp","Boolean","id","ListFoldersWithFolderLevelPermissions","ListFoldersUseCase","FolderLevelPermissions"],"mappings":";;;;AAOA,MAAMA;IAGF,YACYC,sBAAwD,EACxDC,SAAuC,CACjD;aAFUD,sBAAsB,GAAtBA;aACAC,SAAS,GAATA;aAJJ,UAAU,GAAoC,IAAIC;IAKvD;IAEH,MAAM,QAAQC,MAAyB,EAA6B;QAChE,MAAMC,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAACD;QAC5C,IAAIC,OAAO,MAAM,IACb,OAAOC,OAAO,IAAI,CAACD,OAAO,KAAK;QAGnC,MAAM,EAAEE,OAAO,EAAEC,IAAI,EAAE,GAAGH,OAAO,KAAK;QAGtC,MAAMI,WAAW,MAAM,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,CAAC;YAC1E,OAAO;gBACH,MAAML,OAAO,KAAK,CAAC,IAAI;gBACvB,UAAUM;YACd;QACJ;QAEAD,SAAS,OAAO,CAACE,CAAAA,MAAO,IAAI,CAAC,MAAM,CAACA,IAAI,EAAE,EAAEA,IAAI,WAAW;QAG3D,MAAMC,QAAQ,GAAG,CACbL,QAAQ,GAAG,CAAC,OAAMM;YACd,IAAI,CAAC,IAAI,CAAC,MAAM,CAACA,OAAO,EAAE,GAAG;gBACzB,MAAMC,cAAc,MAAM,IAAI,CAAC,sBAAsB,CAAC,yBAAyB,CAC3ED,OAAO,EAAE;gBAEb,IAAI,CAAC,MAAM,CAACA,OAAO,EAAE,EAAEC;YAC3B;QACJ;QAIJ,MAAMC,yBAAyB,MAAMH,QAAQ,GAAG,CAC5CL,QAAQ,GAAG,CAAC,OAAMM;YACd,MAAMC,cAAc,IAAI,CAAC,MAAM,CAACD,OAAO,EAAE;YACzC,IAAI,CAACC,aACD,OAAO;YAGX,MAAME,kBAAkB,MAAM,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC;gBACtEF;gBACA,KAAK;YACT;YAEA,IAAI,CAACE,iBACD,OAAO;YAGX,MAAMC,gBAAgB;gBAAE,GAAGJ,MAAM;gBAAEC;YAAY;YAC/C,OAAOE,kBAAkBC,gBAAgB;QAC7C;QAGJ,OAAOX,OAAO,EAAE,CAAC;YAAE,SAASS,uBAAuB,MAAM,CAACG;YAAsBV;QAAK;IACzF;IAEQ,OAAOW,EAAU,EAAW;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAACA;IAC/B;IAEQ,OAAOA,EAAU,EAAkC;QACvD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAACA;IAC/B;IAEQ,OAAOA,EAAU,EAAEL,WAA+B,EAAQ;QAC9D,IAAI,CAAC,UAAU,CAAC,GAAG,CAACK,IAAIL;IAC5B;AACJ;AAEO,MAAMM,wCAAwCC,mBAAmB,eAAe,CAAC;IACpF,WAAWrB;IACX,cAAc;QAACsB;KAAuB;AAC1C"}
@@ -1 +1,5 @@
1
- export declare const ListFoldersFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ import type { Container } from "@webiny/di";
2
+ export declare const ListFoldersFeature: {
3
+ name: string;
4
+ register(container: Container): void;
5
+ };
@@ -2,13 +2,14 @@ import { createFeature } from "@webiny/feature/api";
2
2
  import { ListFoldersRepository } from "./ListFoldersRepository.js";
3
3
  import { ListFoldersUseCase } from "./ListFoldersUseCase.js";
4
4
  import { ListFoldersWithFolderLevelPermissions } from "./decorators/ListFoldersWithFolderLevelPermissions.js";
5
- export const ListFoldersFeature = createFeature({
6
- name: "ListFolders",
7
- register(container) {
8
- container.register(ListFoldersRepository).inSingletonScope();
9
- container.register(ListFoldersUseCase);
10
- container.registerDecorator(ListFoldersWithFolderLevelPermissions);
11
- }
5
+ const ListFoldersFeature = createFeature({
6
+ name: "ListFolders",
7
+ register (container) {
8
+ container.register(ListFoldersRepository).inSingletonScope();
9
+ container.register(ListFoldersUseCase);
10
+ container.registerDecorator(ListFoldersWithFolderLevelPermissions);
11
+ }
12
12
  });
13
+ export { ListFoldersFeature };
13
14
 
14
15
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","ListFoldersRepository","ListFoldersUseCase","ListFoldersWithFolderLevelPermissions","ListFoldersFeature","name","register","container","inSingletonScope","registerDecorator"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport type { Container } from \"@webiny/di\";\nimport { ListFoldersRepository } from \"./ListFoldersRepository.js\";\nimport { ListFoldersUseCase } from \"./ListFoldersUseCase.js\";\nimport { ListFoldersWithFolderLevelPermissions } from \"./decorators/ListFoldersWithFolderLevelPermissions.js\";\n\nexport const ListFoldersFeature = createFeature({\n name: \"ListFolders\",\n register(container: Container) {\n container.register(ListFoldersRepository).inSingletonScope();\n container.register(ListFoldersUseCase);\n container.registerDecorator(ListFoldersWithFolderLevelPermissions);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AAEnD,SAASC,qBAAqB;AAC9B,SAASC,kBAAkB;AAC3B,SAASC,qCAAqC;AAE9C,OAAO,MAAMC,kBAAkB,GAAGJ,aAAa,CAAC;EAC5CK,IAAI,EAAE,aAAa;EACnBC,QAAQA,CAACC,SAAoB,EAAE;IAC3BA,SAAS,CAACD,QAAQ,CAACL,qBAAqB,CAAC,CAACO,gBAAgB,CAAC,CAAC;IAC5DD,SAAS,CAACD,QAAQ,CAACJ,kBAAkB,CAAC;IACtCK,SAAS,CAACE,iBAAiB,CAACN,qCAAqC,CAAC;EACtE;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/folder/ListFolders/feature.js","sources":["../../../../src/features/folder/ListFolders/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport type { Container } from \"@webiny/di\";\nimport { ListFoldersRepository } from \"./ListFoldersRepository.js\";\nimport { ListFoldersUseCase } from \"./ListFoldersUseCase.js\";\nimport { ListFoldersWithFolderLevelPermissions } from \"./decorators/ListFoldersWithFolderLevelPermissions.js\";\n\nexport const ListFoldersFeature = createFeature({\n name: \"ListFolders\",\n register(container: Container) {\n container.register(ListFoldersRepository).inSingletonScope();\n container.register(ListFoldersUseCase);\n container.registerDecorator(ListFoldersWithFolderLevelPermissions);\n }\n});\n"],"names":["ListFoldersFeature","createFeature","container","ListFoldersRepository","ListFoldersUseCase","ListFoldersWithFolderLevelPermissions"],"mappings":";;;;AAMO,MAAMA,qBAAqBC,cAAc;IAC5C,MAAM;IACN,UAASC,SAAoB;QACzBA,UAAU,QAAQ,CAACC,uBAAuB,gBAAgB;QAC1DD,UAAU,QAAQ,CAACE;QACnBF,UAAU,iBAAiB,CAACG;IAChC;AACJ"}
@@ -1,4 +1,2 @@
1
1
  export { ListFoldersFeature } from "./feature.js";
2
2
  export { ListFoldersUseCase } from "./abstractions.js";
3
-
4
- //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { UpdateFolderRepository as RepositoryAbstraction } from "./abstractions.js";
2
+ import { UpdateFolderRepository } from "./abstractions.js";
3
3
  import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry";
4
4
  import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById";
5
5
  import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries";
@@ -9,102 +9,76 @@ import { FolderPersistenceError, FolderValidationError } from "../../../domain/f
9
9
  import { Path } from "../../../utils/Path.js";
10
10
  import { EntryId } from "@webiny/api-headless-cms/exports/api/cms/entry.js";
11
11
  class UpdateFolderRepositoryImpl {
12
- constructor(updateEntry, getEntryById, listLatestEntries, folderModel) {
13
- this.updateEntry = updateEntry;
14
- this.getEntryById = getEntryById;
15
- this.listLatestEntries = listLatestEntries;
16
- this.folderModel = folderModel;
17
- }
18
- async execute(id, data) {
19
- const entryId = EntryId.from(id);
20
-
21
- // Get the original folder
22
- const originalResult = await this.getEntryById.execute(this.folderModel, entryId.toString());
23
- if (originalResult.isFail()) {
24
- return Result.fail(new FolderPersistenceError(originalResult.error));
25
- }
26
- const original = EntryToFolderMapper.toFolder(originalResult.value);
27
-
28
- // Check if folder with new slug already exists
29
- const checkResult = await this.checkExistingFolder({
30
- id,
31
- type: original.type,
32
- slug: data.slug || original.slug,
33
- parentId: data.parentId !== undefined ? data.parentId : original.parentId
34
- });
35
- if (checkResult.isFail()) {
36
- return Result.fail(checkResult.error);
37
- }
38
-
39
- // Create new path if slug or parentId changed
40
- const pathResult = await this.createFolderPath({
41
- slug: data.slug || original.slug,
42
- parentId: data.parentId !== undefined ? data.parentId : original.parentId
43
- });
44
- if (pathResult.isFail()) {
45
- return Result.fail(pathResult.error);
46
- }
47
- const result = await this.updateEntry.execute(this.folderModel, entryId.toString(), {
48
- values: {
49
- ...data,
50
- path: pathResult.value
51
- }
52
- });
53
- if (result.isFail()) {
54
- return Result.fail(new FolderPersistenceError(result.error));
55
- }
56
- const updatedFolder = EntryToFolderMapper.toFolder(result.value);
57
- return Result.ok(updatedFolder);
58
- }
59
- async checkExistingFolder(params) {
60
- const {
61
- id,
62
- type,
63
- slug,
64
- parentId
65
- } = params;
66
- const result = await this.listLatestEntries.execute(this.folderModel, {
67
- where: {
68
- latest: true,
69
- entryId_not: id,
70
- values: {
71
- type,
72
- slug,
73
- parentId
74
- }
75
- },
76
- limit: 1
77
- });
78
- if (result.isFail()) {
79
- return Result.fail(new FolderPersistenceError(result.error));
12
+ constructor(updateEntry, getEntryById, listLatestEntries, folderModel){
13
+ this.updateEntry = updateEntry;
14
+ this.getEntryById = getEntryById;
15
+ this.listLatestEntries = listLatestEntries;
16
+ this.folderModel = folderModel;
80
17
  }
81
- const {
82
- entries
83
- } = result.value;
84
- if (entries.length > 0) {
85
- return Result.fail(new FolderValidationError(`Folder with slug "${slug}" already exists at this level.`));
18
+ async execute(id, data) {
19
+ const entryId = EntryId.from(id);
20
+ const originalResult = await this.getEntryById.execute(this.folderModel, entryId.toString());
21
+ if (originalResult.isFail()) return Result.fail(new FolderPersistenceError(originalResult.error));
22
+ const original = EntryToFolderMapper.toFolder(originalResult.value);
23
+ const checkResult = await this.checkExistingFolder({
24
+ id,
25
+ type: original.type,
26
+ slug: data.slug || original.slug,
27
+ parentId: void 0 !== data.parentId ? data.parentId : original.parentId
28
+ });
29
+ if (checkResult.isFail()) return Result.fail(checkResult.error);
30
+ const pathResult = await this.createFolderPath({
31
+ slug: data.slug || original.slug,
32
+ parentId: void 0 !== data.parentId ? data.parentId : original.parentId
33
+ });
34
+ if (pathResult.isFail()) return Result.fail(pathResult.error);
35
+ const result = await this.updateEntry.execute(this.folderModel, entryId.toString(), {
36
+ values: {
37
+ ...data,
38
+ path: pathResult.value
39
+ }
40
+ });
41
+ if (result.isFail()) return Result.fail(new FolderPersistenceError(result.error));
42
+ const updatedFolder = EntryToFolderMapper.toFolder(result.value);
43
+ return Result.ok(updatedFolder);
86
44
  }
87
- return Result.ok();
88
- }
89
- async createFolderPath(params) {
90
- const {
91
- slug,
92
- parentId
93
- } = params;
94
- if (!parentId) {
95
- return Result.ok(Path.create(slug));
45
+ async checkExistingFolder(params) {
46
+ const { id, type, slug, parentId } = params;
47
+ const result = await this.listLatestEntries.execute(this.folderModel, {
48
+ where: {
49
+ latest: true,
50
+ entryId_not: id,
51
+ values: {
52
+ type,
53
+ slug,
54
+ parentId
55
+ }
56
+ },
57
+ limit: 1
58
+ });
59
+ if (result.isFail()) return Result.fail(new FolderPersistenceError(result.error));
60
+ const { entries } = result.value;
61
+ if (entries.length > 0) return Result.fail(new FolderValidationError(`Folder with slug "${slug}" already exists at this level.`));
62
+ return Result.ok();
96
63
  }
97
- const parentResult = await this.getEntryById.execute(this.folderModel, EntryId.from(parentId).toString());
98
- if (parentResult.isFail()) {
99
- return Result.fail(new FolderPersistenceError(new Error("Parent folder not found. Unable to create the folder path")));
64
+ async createFolderPath(params) {
65
+ const { slug, parentId } = params;
66
+ if (!parentId) return Result.ok(Path.create(slug));
67
+ const parentResult = await this.getEntryById.execute(this.folderModel, EntryId.from(parentId).toString());
68
+ if (parentResult.isFail()) return Result.fail(new FolderPersistenceError(new Error("Parent folder not found. Unable to create the folder path")));
69
+ const parentFolder = EntryToFolderMapper.toFolder(parentResult.value);
70
+ return Result.ok(Path.create(slug, parentFolder.path));
100
71
  }
101
- const parentFolder = EntryToFolderMapper.toFolder(parentResult.value);
102
- return Result.ok(Path.create(slug, parentFolder.path));
103
- }
104
72
  }
105
- export const UpdateFolderRepository = RepositoryAbstraction.createImplementation({
106
- implementation: UpdateFolderRepositoryImpl,
107
- dependencies: [UpdateEntryUseCase, GetEntryByIdUseCase, ListLatestEntriesUseCase, FolderModel]
73
+ const UpdateFolderRepository_UpdateFolderRepository = UpdateFolderRepository.createImplementation({
74
+ implementation: UpdateFolderRepositoryImpl,
75
+ dependencies: [
76
+ UpdateEntryUseCase,
77
+ GetEntryByIdUseCase,
78
+ ListLatestEntriesUseCase,
79
+ FolderModel
80
+ ]
108
81
  });
82
+ export { UpdateFolderRepository_UpdateFolderRepository as UpdateFolderRepository };
109
83
 
110
84
  //# sourceMappingURL=UpdateFolderRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","UpdateFolderRepository","RepositoryAbstraction","UpdateEntryUseCase","GetEntryByIdUseCase","ListLatestEntriesUseCase","FolderModel","EntryToFolderMapper","FolderPersistenceError","FolderValidationError","Path","EntryId","UpdateFolderRepositoryImpl","constructor","updateEntry","getEntryById","listLatestEntries","folderModel","execute","id","data","entryId","from","originalResult","toString","isFail","fail","error","original","toFolder","value","checkResult","checkExistingFolder","type","slug","parentId","undefined","pathResult","createFolderPath","result","values","path","updatedFolder","ok","params","where","latest","entryId_not","limit","entries","length","create","parentResult","Error","parentFolder","createImplementation","implementation","dependencies"],"sources":["UpdateFolderRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n type IUpdateFolderRepository,\n UpdateFolderRepository as RepositoryAbstraction\n} from \"./abstractions.js\";\nimport { UpdateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/UpdateEntry\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById\";\nimport { ListLatestEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries\";\nimport { FolderModel } from \"~/domain/folder/abstractions.js\";\nimport type { CmsEntryFolder, Folder, UpdateFolderParams } 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 UpdateFolderRepositoryImpl implements IUpdateFolderRepository {\n constructor(\n private updateEntry: UpdateEntryUseCase.Interface,\n private getEntryById: GetEntryByIdUseCase.Interface,\n private listLatestEntries: ListLatestEntriesUseCase.Interface,\n private folderModel: FolderModel.Interface\n ) {}\n\n async execute(\n id: string,\n data: UpdateFolderParams\n ): Promise<Result<Folder, RepositoryAbstraction.Error>> {\n const entryId = EntryId.from(id);\n\n // Get the original folder\n const originalResult = await this.getEntryById.execute<CmsEntryFolder>(\n this.folderModel,\n entryId.toString()\n );\n\n if (originalResult.isFail()) {\n return Result.fail(new FolderPersistenceError(originalResult.error));\n }\n\n const original = EntryToFolderMapper.toFolder(originalResult.value);\n\n // Check if folder with new slug already exists\n const checkResult = await this.checkExistingFolder({\n id,\n type: original.type,\n slug: data.slug || original.slug,\n parentId: data.parentId !== undefined ? data.parentId : original.parentId\n });\n\n if (checkResult.isFail()) {\n return Result.fail(checkResult.error);\n }\n\n // Create new path if slug or parentId changed\n const pathResult = await this.createFolderPath({\n slug: data.slug || original.slug,\n parentId: data.parentId !== undefined ? data.parentId : original.parentId\n });\n\n if (pathResult.isFail()) {\n return Result.fail(pathResult.error);\n }\n\n const result = await this.updateEntry.execute<CmsEntryFolder>(\n this.folderModel,\n entryId.toString(),\n {\n values: {\n ...data,\n path: pathResult.value\n }\n }\n );\n\n if (result.isFail()) {\n return Result.fail(new FolderPersistenceError(result.error));\n }\n\n const updatedFolder = EntryToFolderMapper.toFolder(result.value);\n return Result.ok(updatedFolder);\n }\n\n private async checkExistingFolder(params: {\n id: string;\n type: string;\n slug: string;\n parentId?: string | null;\n }): Promise<Result<void, RepositoryAbstraction.Error>> {\n const { id, type, slug, parentId } = params;\n\n const result = await this.listLatestEntries.execute<CmsEntryFolder>(this.folderModel, {\n where: {\n latest: true,\n entryId_not: id,\n values: {\n type,\n slug,\n parentId\n }\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 UpdateFolderRepository = RepositoryAbstraction.createImplementation({\n implementation: UpdateFolderRepositoryImpl,\n dependencies: [UpdateEntryUseCase, GetEntryByIdUseCase, ListLatestEntriesUseCase, FolderModel]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"features/folder/UpdateFolder/UpdateFolderRepository.js","sources":["../../../../src/features/folder/UpdateFolder/UpdateFolderRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n type IUpdateFolderRepository,\n UpdateFolderRepository as RepositoryAbstraction\n} from \"./abstractions.js\";\nimport { UpdateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/UpdateEntry\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById\";\nimport { ListLatestEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries\";\nimport { FolderModel } from \"~/domain/folder/abstractions.js\";\nimport type { CmsEntryFolder, Folder, UpdateFolderParams } 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 UpdateFolderRepositoryImpl implements IUpdateFolderRepository {\n constructor(\n private updateEntry: UpdateEntryUseCase.Interface,\n private getEntryById: GetEntryByIdUseCase.Interface,\n private listLatestEntries: ListLatestEntriesUseCase.Interface,\n private folderModel: FolderModel.Interface\n ) {}\n\n async execute(\n id: string,\n data: UpdateFolderParams\n ): Promise<Result<Folder, RepositoryAbstraction.Error>> {\n const entryId = EntryId.from(id);\n\n // Get the original folder\n const originalResult = await this.getEntryById.execute<CmsEntryFolder>(\n this.folderModel,\n entryId.toString()\n );\n\n if (originalResult.isFail()) {\n return Result.fail(new FolderPersistenceError(originalResult.error));\n }\n\n const original = EntryToFolderMapper.toFolder(originalResult.value);\n\n // Check if folder with new slug already exists\n const checkResult = await this.checkExistingFolder({\n id,\n type: original.type,\n slug: data.slug || original.slug,\n parentId: data.parentId !== undefined ? data.parentId : original.parentId\n });\n\n if (checkResult.isFail()) {\n return Result.fail(checkResult.error);\n }\n\n // Create new path if slug or parentId changed\n const pathResult = await this.createFolderPath({\n slug: data.slug || original.slug,\n parentId: data.parentId !== undefined ? data.parentId : original.parentId\n });\n\n if (pathResult.isFail()) {\n return Result.fail(pathResult.error);\n }\n\n const result = await this.updateEntry.execute<CmsEntryFolder>(\n this.folderModel,\n entryId.toString(),\n {\n values: {\n ...data,\n path: pathResult.value\n }\n }\n );\n\n if (result.isFail()) {\n return Result.fail(new FolderPersistenceError(result.error));\n }\n\n const updatedFolder = EntryToFolderMapper.toFolder(result.value);\n return Result.ok(updatedFolder);\n }\n\n private async checkExistingFolder(params: {\n id: string;\n type: string;\n slug: string;\n parentId?: string | null;\n }): Promise<Result<void, RepositoryAbstraction.Error>> {\n const { id, type, slug, parentId } = params;\n\n const result = await this.listLatestEntries.execute<CmsEntryFolder>(this.folderModel, {\n where: {\n latest: true,\n entryId_not: id,\n values: {\n type,\n slug,\n parentId\n }\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 UpdateFolderRepository = RepositoryAbstraction.createImplementation({\n implementation: UpdateFolderRepositoryImpl,\n dependencies: [UpdateEntryUseCase, GetEntryByIdUseCase, ListLatestEntriesUseCase, FolderModel]\n});\n"],"names":["UpdateFolderRepositoryImpl","updateEntry","getEntryById","listLatestEntries","folderModel","id","data","entryId","EntryId","originalResult","Result","FolderPersistenceError","original","EntryToFolderMapper","checkResult","undefined","pathResult","result","updatedFolder","params","type","slug","parentId","entries","FolderValidationError","Path","parentResult","Error","parentFolder","UpdateFolderRepository","RepositoryAbstraction","UpdateEntryUseCase","GetEntryByIdUseCase","ListLatestEntriesUseCase","FolderModel"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/EventPublisher";
2
+ import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import { UpdateFolderRepository, UpdateFolderUseCase as UseCaseAbstraction } from "./abstractions.js";
4
4
  import { GetFolderRepository } from "../GetFolder/abstractions.js";
5
5
  import type { Folder, UpdateFolderParams } from "../../../folder/folder.types.js";
@@ -1,55 +1,48 @@
1
- import { createImplementation, Result } from "@webiny/feature/api";
2
- import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
3
- import { UpdateFolderRepository, UpdateFolderUseCase as UseCaseAbstraction } from "./abstractions.js";
1
+ import { Result, createImplementation } from "@webiny/feature/api";
2
+ import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
3
+ import { UpdateFolderRepository, UpdateFolderUseCase } from "./abstractions.js";
4
4
  import { GetFolderRepository } from "../GetFolder/abstractions.js";
5
5
  import { FolderAfterUpdateEvent, FolderBeforeUpdateEvent } from "./events.js";
6
6
  class UpdateFolderUseCaseImpl {
7
- constructor(eventPublisher, getFolderRepository, repository) {
8
- this.eventPublisher = eventPublisher;
9
- this.getFolderRepository = getFolderRepository;
10
- this.repository = repository;
11
- }
12
- async execute(id, input) {
13
- const useCaseInput = {
14
- id,
15
- data: input
16
- };
17
-
18
- // Get original folder for events
19
- const originalResult = await this.getFolderRepository.execute(id);
20
- if (originalResult.isFail()) {
21
- return originalResult;
7
+ constructor(eventPublisher, getFolderRepository, repository){
8
+ this.eventPublisher = eventPublisher;
9
+ this.getFolderRepository = getFolderRepository;
10
+ this.repository = repository;
22
11
  }
23
- const original = originalResult.value;
24
-
25
- // Publish before update event
26
- const beforeUpdateEvent = new FolderBeforeUpdateEvent({
27
- original,
28
- input: useCaseInput
29
- });
30
- await this.eventPublisher.publish(beforeUpdateEvent);
31
-
32
- // Execute the update operation
33
- const result = await this.repository.execute(id, input);
34
- if (result.isFail()) {
35
- return result;
12
+ async execute(id, input) {
13
+ const useCaseInput = {
14
+ id,
15
+ data: input
16
+ };
17
+ const originalResult = await this.getFolderRepository.execute(id);
18
+ if (originalResult.isFail()) return originalResult;
19
+ const original = originalResult.value;
20
+ const beforeUpdateEvent = new FolderBeforeUpdateEvent({
21
+ original,
22
+ input: useCaseInput
23
+ });
24
+ await this.eventPublisher.publish(beforeUpdateEvent);
25
+ const result = await this.repository.execute(id, input);
26
+ if (result.isFail()) return result;
27
+ const folder = result.value;
28
+ const afterUpdateEvent = new FolderAfterUpdateEvent({
29
+ original,
30
+ folder,
31
+ input: useCaseInput
32
+ });
33
+ await this.eventPublisher.publish(afterUpdateEvent);
34
+ return Result.ok(folder);
36
35
  }
37
- const folder = result.value;
38
-
39
- // Publish after update event
40
- const afterUpdateEvent = new FolderAfterUpdateEvent({
41
- original,
42
- folder,
43
- input: useCaseInput
44
- });
45
- await this.eventPublisher.publish(afterUpdateEvent);
46
- return Result.ok(folder);
47
- }
48
36
  }
49
- export const UpdateFolderUseCase = createImplementation({
50
- abstraction: UseCaseAbstraction,
51
- implementation: UpdateFolderUseCaseImpl,
52
- dependencies: [EventPublisher, GetFolderRepository, UpdateFolderRepository]
37
+ const UpdateFolderUseCase_UpdateFolderUseCase = createImplementation({
38
+ abstraction: UpdateFolderUseCase,
39
+ implementation: UpdateFolderUseCaseImpl,
40
+ dependencies: [
41
+ EventPublisher,
42
+ GetFolderRepository,
43
+ UpdateFolderRepository
44
+ ]
53
45
  });
46
+ export { UpdateFolderUseCase_UpdateFolderUseCase as UpdateFolderUseCase };
54
47
 
55
48
  //# sourceMappingURL=UpdateFolderUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createImplementation","Result","EventPublisher","UpdateFolderRepository","UpdateFolderUseCase","UseCaseAbstraction","GetFolderRepository","FolderAfterUpdateEvent","FolderBeforeUpdateEvent","UpdateFolderUseCaseImpl","constructor","eventPublisher","getFolderRepository","repository","execute","id","input","useCaseInput","data","originalResult","isFail","original","value","beforeUpdateEvent","publish","result","folder","afterUpdateEvent","ok","abstraction","implementation","dependencies"],"sources":["UpdateFolderUseCase.ts"],"sourcesContent":["import { createImplementation, Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport {\n UpdateFolderRepository,\n UpdateFolderUseCase as UseCaseAbstraction\n} from \"./abstractions.js\";\nimport { GetFolderRepository } from \"../GetFolder/abstractions.js\";\nimport { FolderAfterUpdateEvent, FolderBeforeUpdateEvent } from \"./events.js\";\nimport type { Folder, UpdateFolderParams } from \"~/folder/folder.types.js\";\n\nclass UpdateFolderUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getFolderRepository: GetFolderRepository.Interface,\n private repository: UpdateFolderRepository.Interface\n ) {}\n\n async execute(\n id: string,\n input: UpdateFolderParams\n ): Promise<Result<Folder, UseCaseAbstraction.Error>> {\n const useCaseInput = { id, data: input };\n\n // Get original folder for events\n const originalResult = await this.getFolderRepository.execute(id);\n\n if (originalResult.isFail()) {\n return originalResult;\n }\n\n const original = originalResult.value;\n\n // Publish before update event\n const beforeUpdateEvent = new FolderBeforeUpdateEvent({\n original,\n input: useCaseInput\n });\n\n await this.eventPublisher.publish(beforeUpdateEvent);\n\n // Execute the update operation\n const result = await this.repository.execute(id, input);\n\n if (result.isFail()) {\n return result;\n }\n\n const folder = result.value;\n\n // Publish after update event\n const afterUpdateEvent = new FolderAfterUpdateEvent({\n original,\n folder,\n input: useCaseInput\n });\n\n await this.eventPublisher.publish(afterUpdateEvent);\n\n return Result.ok(folder);\n }\n}\n\nexport const UpdateFolderUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: UpdateFolderUseCaseImpl,\n dependencies: [EventPublisher, GetFolderRepository, UpdateFolderRepository]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,EAAEC,MAAM,QAAQ,qBAAqB;AAClE,SACIC,cAAc,QAEX,0CAA0C;AACjD,SACIC,sBAAsB,EACtBC,mBAAmB,IAAIC,kBAAkB;AAE7C,SAASC,mBAAmB;AAC5B,SAASC,sBAAsB,EAAEC,uBAAuB;AAGxD,MAAMC,uBAAuB,CAAyC;EAClEC,WAAWA,CACCC,cAAmD,EACnDC,mBAAkD,EAClDC,UAA4C,EACtD;IAAA,KAHUF,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,mBAAkD,GAAlDA,mBAAkD;IAAA,KAClDC,UAA4C,GAA5CA,UAA4C;EACrD;EAEH,MAAMC,OAAOA,CACTC,EAAU,EACVC,KAAyB,EACwB;IACjD,MAAMC,YAAY,GAAG;MAAEF,EAAE;MAAEG,IAAI,EAAEF;IAAM,CAAC;;IAExC;IACA,MAAMG,cAAc,GAAG,MAAM,IAAI,CAACP,mBAAmB,CAACE,OAAO,CAACC,EAAE,CAAC;IAEjE,IAAII,cAAc,CAACC,MAAM,CAAC,CAAC,EAAE;MACzB,OAAOD,cAAc;IACzB;IAEA,MAAME,QAAQ,GAAGF,cAAc,CAACG,KAAK;;IAErC;IACA,MAAMC,iBAAiB,GAAG,IAAIf,uBAAuB,CAAC;MAClDa,QAAQ;MACRL,KAAK,EAAEC;IACX,CAAC,CAAC;IAEF,MAAM,IAAI,CAACN,cAAc,CAACa,OAAO,CAACD,iBAAiB,CAAC;;IAEpD;IACA,MAAME,MAAM,GAAG,MAAM,IAAI,CAACZ,UAAU,CAACC,OAAO,CAACC,EAAE,EAAEC,KAAK,CAAC;IAEvD,IAAIS,MAAM,CAACL,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOK,MAAM;IACjB;IAEA,MAAMC,MAAM,GAAGD,MAAM,CAACH,KAAK;;IAE3B;IACA,MAAMK,gBAAgB,GAAG,IAAIpB,sBAAsB,CAAC;MAChDc,QAAQ;MACRK,MAAM;MACNV,KAAK,EAAEC;IACX,CAAC,CAAC;IAEF,MAAM,IAAI,CAACN,cAAc,CAACa,OAAO,CAACG,gBAAgB,CAAC;IAEnD,OAAO1B,MAAM,CAAC2B,EAAE,CAACF,MAAM,CAAC;EAC5B;AACJ;AAEA,OAAO,MAAMtB,mBAAmB,GAAGJ,oBAAoB,CAAC;EACpD6B,WAAW,EAAExB,kBAAkB;EAC/ByB,cAAc,EAAErB,uBAAuB;EACvCsB,YAAY,EAAE,CAAC7B,cAAc,EAAEI,mBAAmB,EAAEH,sBAAsB;AAC9E,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/folder/UpdateFolder/UpdateFolderUseCase.js","sources":["../../../../src/features/folder/UpdateFolder/UpdateFolderUseCase.ts"],"sourcesContent":["import { createImplementation, Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport {\n UpdateFolderRepository,\n UpdateFolderUseCase as UseCaseAbstraction\n} from \"./abstractions.js\";\nimport { GetFolderRepository } from \"../GetFolder/abstractions.js\";\nimport { FolderAfterUpdateEvent, FolderBeforeUpdateEvent } from \"./events.js\";\nimport type { Folder, UpdateFolderParams } from \"~/folder/folder.types.js\";\n\nclass UpdateFolderUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getFolderRepository: GetFolderRepository.Interface,\n private repository: UpdateFolderRepository.Interface\n ) {}\n\n async execute(\n id: string,\n input: UpdateFolderParams\n ): Promise<Result<Folder, UseCaseAbstraction.Error>> {\n const useCaseInput = { id, data: input };\n\n // Get original folder for events\n const originalResult = await this.getFolderRepository.execute(id);\n\n if (originalResult.isFail()) {\n return originalResult;\n }\n\n const original = originalResult.value;\n\n // Publish before update event\n const beforeUpdateEvent = new FolderBeforeUpdateEvent({\n original,\n input: useCaseInput\n });\n\n await this.eventPublisher.publish(beforeUpdateEvent);\n\n // Execute the update operation\n const result = await this.repository.execute(id, input);\n\n if (result.isFail()) {\n return result;\n }\n\n const folder = result.value;\n\n // Publish after update event\n const afterUpdateEvent = new FolderAfterUpdateEvent({\n original,\n folder,\n input: useCaseInput\n });\n\n await this.eventPublisher.publish(afterUpdateEvent);\n\n return Result.ok(folder);\n }\n}\n\nexport const UpdateFolderUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: UpdateFolderUseCaseImpl,\n dependencies: [EventPublisher, GetFolderRepository, UpdateFolderRepository]\n});\n"],"names":["UpdateFolderUseCaseImpl","eventPublisher","getFolderRepository","repository","id","input","useCaseInput","originalResult","original","beforeUpdateEvent","FolderBeforeUpdateEvent","result","folder","afterUpdateEvent","FolderAfterUpdateEvent","Result","UpdateFolderUseCase","createImplementation","UseCaseAbstraction","EventPublisher","GetFolderRepository","UpdateFolderRepository"],"mappings":";;;;;AAaA,MAAMA;IACF,YACYC,cAAmD,EACnDC,mBAAkD,EAClDC,UAA4C,CACtD;aAHUF,cAAc,GAAdA;aACAC,mBAAmB,GAAnBA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,QACFC,EAAU,EACVC,KAAyB,EACwB;QACjD,MAAMC,eAAe;YAAEF;YAAI,MAAMC;QAAM;QAGvC,MAAME,iBAAiB,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAACH;QAE9D,IAAIG,eAAe,MAAM,IACrB,OAAOA;QAGX,MAAMC,WAAWD,eAAe,KAAK;QAGrC,MAAME,oBAAoB,IAAIC,wBAAwB;YAClDF;YACA,OAAOF;QACX;QAEA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAACG;QAGlC,MAAME,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACP,IAAIC;QAEjD,IAAIM,OAAO,MAAM,IACb,OAAOA;QAGX,MAAMC,SAASD,OAAO,KAAK;QAG3B,MAAME,mBAAmB,IAAIC,uBAAuB;YAChDN;YACAI;YACA,OAAON;QACX;QAEA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAACO;QAElC,OAAOE,OAAO,EAAE,CAACH;IACrB;AACJ;AAEO,MAAMI,0CAAsBC,qBAAqB;IACpD,aAAaC;IACb,gBAAgBlB;IAChB,cAAc;QAACmB;QAAgBC;QAAqBC;KAAuB;AAC/E"}
@@ -1,5 +1,5 @@
1
1
  import type { Result } from "@webiny/feature/api";
2
- import type { DomainEvent, IEventHandler } from "@webiny/api-core/features/EventPublisher";
2
+ import type { DomainEvent, IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import type { Folder, UpdateFolderParams } from "../../../folder/folder.types.js";
4
4
  import { FolderCannotMoveToNewParent, type FolderNotAuthorizedError, type FolderNotFoundError, type FolderPersistenceError, type FolderValidationError } from "../../../domain/folder/errors.js";
5
5
  /**
@@ -13,6 +13,7 @@ export interface IUpdateFolderRepositoryErrors {
13
13
  validation: FolderValidationError;
14
14
  }
15
15
  type RepositoryError = IUpdateFolderRepositoryErrors[keyof IUpdateFolderRepositoryErrors];
16
+ /** Persist folder updates. */
16
17
  export declare const UpdateFolderRepository: import("@webiny/di").Abstraction<IUpdateFolderRepository>;
17
18
  export declare namespace UpdateFolderRepository {
18
19
  type Interface = IUpdateFolderRepository;
@@ -32,6 +33,7 @@ export interface IUpdateFolderUseCaseErrors {
32
33
  validation: FolderValidationError;
33
34
  }
34
35
  type UseCaseError = IUpdateFolderUseCaseErrors[keyof IUpdateFolderUseCaseErrors];
36
+ /** Update a folder. */
35
37
  export declare const UpdateFolderUseCase: import("@webiny/di").Abstraction<IUpdateFolderUseCase>;
36
38
  export declare namespace UpdateFolderUseCase {
37
39
  type Interface = IUpdateFolderUseCase;
@@ -47,13 +49,15 @@ export interface FolderAfterUpdatePayload {
47
49
  folder: Folder;
48
50
  input: Record<string, any>;
49
51
  }
50
- export declare const FolderBeforeUpdateHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<FolderBeforeUpdatePayload>>>;
51
- export declare namespace FolderBeforeUpdateHandler {
52
+ /** Hook into folder lifecycle before a folder is updated. */
53
+ export declare const FolderBeforeUpdateEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<FolderBeforeUpdatePayload>>>;
54
+ export declare namespace FolderBeforeUpdateEventHandler {
52
55
  type Interface = IEventHandler<DomainEvent<FolderBeforeUpdatePayload>>;
53
56
  type Event = DomainEvent<FolderBeforeUpdatePayload>;
54
57
  }
55
- export declare const FolderAfterUpdateHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<FolderAfterUpdatePayload>>>;
56
- export declare namespace FolderAfterUpdateHandler {
58
+ /** Hook into folder lifecycle after a folder is updated. */
59
+ export declare const FolderAfterUpdateEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<FolderAfterUpdatePayload>>>;
60
+ export declare namespace FolderAfterUpdateEventHandler {
57
61
  type Interface = IEventHandler<DomainEvent<FolderAfterUpdatePayload>>;
58
62
  type Event = DomainEvent<FolderAfterUpdatePayload>;
59
63
  }
@@ -1,21 +1,8 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
-
3
- /**
4
- * UpdateFolder repository interface
5
- */
6
-
7
- export const UpdateFolderRepository = createAbstraction("UpdateFolderRepository");
8
-
9
- /**
10
- * UpdateFolder use case interface
11
- */
12
-
13
- export const UpdateFolderUseCase = createAbstraction("UpdateFolderUseCase");
14
-
15
- // Event Payload Types
16
-
17
- // Event Handler Abstractions
18
- export const FolderBeforeUpdateHandler = createAbstraction("FolderBeforeUpdateHandler");
19
- export const FolderAfterUpdateHandler = createAbstraction("FolderAfterUpdateHandler");
2
+ const UpdateFolderRepository = createAbstraction("UpdateFolderRepository");
3
+ const UpdateFolderUseCase = createAbstraction("UpdateFolderUseCase");
4
+ const FolderBeforeUpdateEventHandler = createAbstraction("FolderBeforeUpdateEventHandler");
5
+ const FolderAfterUpdateEventHandler = createAbstraction("FolderAfterUpdateEventHandler");
6
+ export { FolderAfterUpdateEventHandler, FolderBeforeUpdateEventHandler, UpdateFolderRepository, UpdateFolderUseCase };
20
7
 
21
8
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","UpdateFolderRepository","UpdateFolderUseCase","FolderBeforeUpdateHandler","FolderAfterUpdateHandler"],"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\";\nimport type { Folder, UpdateFolderParams } from \"~/folder/folder.types.js\";\nimport {\n FolderCannotMoveToNewParent,\n type FolderNotAuthorizedError,\n type FolderNotFoundError,\n type FolderPersistenceError,\n type FolderValidationError\n} from \"~/domain/folder/errors.js\";\n\n/**\n * UpdateFolder repository interface\n */\nexport interface IUpdateFolderRepository {\n execute(id: string, data: UpdateFolderParams): Promise<Result<Folder, RepositoryError>>;\n}\n\nexport interface IUpdateFolderRepositoryErrors {\n persistence: FolderPersistenceError;\n validation: FolderValidationError;\n}\n\ntype RepositoryError = IUpdateFolderRepositoryErrors[keyof IUpdateFolderRepositoryErrors];\n\nexport const UpdateFolderRepository =\n createAbstraction<IUpdateFolderRepository>(\"UpdateFolderRepository\");\n\nexport namespace UpdateFolderRepository {\n export type Interface = IUpdateFolderRepository;\n export type Error = RepositoryError;\n}\n\n/**\n * UpdateFolder use case interface\n */\nexport interface IUpdateFolderUseCase {\n execute(id: string, data: UpdateFolderParams): Promise<Result<Folder, UseCaseError>>;\n}\n\nexport interface IUpdateFolderUseCaseErrors {\n notAuthorized: FolderNotAuthorizedError;\n notFound: FolderNotFoundError;\n cannotMoveToNewParent: FolderCannotMoveToNewParent;\n persistence: FolderPersistenceError;\n validation: FolderValidationError;\n}\n\ntype UseCaseError = IUpdateFolderUseCaseErrors[keyof IUpdateFolderUseCaseErrors];\n\nexport const UpdateFolderUseCase = createAbstraction<IUpdateFolderUseCase>(\"UpdateFolderUseCase\");\n\nexport namespace UpdateFolderUseCase {\n export type Interface = IUpdateFolderUseCase;\n export type Return = Promise<Result<Folder, UseCaseError>>;\n export type Error = UseCaseError;\n}\n\n// Event Payload Types\nexport interface FolderBeforeUpdatePayload {\n original: Folder;\n input: Record<string, any>;\n}\n\nexport interface FolderAfterUpdatePayload {\n original: Folder;\n folder: Folder;\n input: Record<string, any>;\n}\n\n// Event Handler Abstractions\nexport const FolderBeforeUpdateHandler = createAbstraction<\n IEventHandler<DomainEvent<FolderBeforeUpdatePayload>>\n>(\"FolderBeforeUpdateHandler\");\n\nexport namespace FolderBeforeUpdateHandler {\n export type Interface = IEventHandler<DomainEvent<FolderBeforeUpdatePayload>>;\n export type Event = DomainEvent<FolderBeforeUpdatePayload>;\n}\n\nexport const FolderAfterUpdateHandler = createAbstraction<\n IEventHandler<DomainEvent<FolderAfterUpdatePayload>>\n>(\"FolderAfterUpdateHandler\");\n\nexport namespace FolderAfterUpdateHandler {\n export type Interface = IEventHandler<DomainEvent<FolderAfterUpdatePayload>>;\n export type Event = DomainEvent<FolderAfterUpdatePayload>;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAYvD;AACA;AACA;;AAYA,OAAO,MAAMC,sBAAsB,GAC/BD,iBAAiB,CAA0B,wBAAwB,CAAC;;AAOxE;AACA;AACA;;AAeA,OAAO,MAAME,mBAAmB,GAAGF,iBAAiB,CAAuB,qBAAqB,CAAC;;AAQjG;;AAYA;AACA,OAAO,MAAMG,yBAAyB,GAAGH,iBAAiB,CAExD,2BAA2B,CAAC;AAO9B,OAAO,MAAMI,wBAAwB,GAAGJ,iBAAiB,CAEvD,0BAA0B,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/folder/UpdateFolder/abstractions.js","sources":["../../../../src/features/folder/UpdateFolder/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, UpdateFolderParams } from \"~/folder/folder.types.js\";\nimport {\n FolderCannotMoveToNewParent,\n type FolderNotAuthorizedError,\n type FolderNotFoundError,\n type FolderPersistenceError,\n type FolderValidationError\n} from \"~/domain/folder/errors.js\";\n\n/**\n * UpdateFolder repository interface\n */\nexport interface IUpdateFolderRepository {\n execute(id: string, data: UpdateFolderParams): Promise<Result<Folder, RepositoryError>>;\n}\n\nexport interface IUpdateFolderRepositoryErrors {\n persistence: FolderPersistenceError;\n validation: FolderValidationError;\n}\n\ntype RepositoryError = IUpdateFolderRepositoryErrors[keyof IUpdateFolderRepositoryErrors];\n\n/** Persist folder updates. */\nexport const UpdateFolderRepository =\n createAbstraction<IUpdateFolderRepository>(\"UpdateFolderRepository\");\n\nexport namespace UpdateFolderRepository {\n export type Interface = IUpdateFolderRepository;\n export type Error = RepositoryError;\n}\n\n/**\n * UpdateFolder use case interface\n */\nexport interface IUpdateFolderUseCase {\n execute(id: string, data: UpdateFolderParams): Promise<Result<Folder, UseCaseError>>;\n}\n\nexport interface IUpdateFolderUseCaseErrors {\n notAuthorized: FolderNotAuthorizedError;\n notFound: FolderNotFoundError;\n cannotMoveToNewParent: FolderCannotMoveToNewParent;\n persistence: FolderPersistenceError;\n validation: FolderValidationError;\n}\n\ntype UseCaseError = IUpdateFolderUseCaseErrors[keyof IUpdateFolderUseCaseErrors];\n\n/** Update a folder. */\nexport const UpdateFolderUseCase = createAbstraction<IUpdateFolderUseCase>(\"UpdateFolderUseCase\");\n\nexport namespace UpdateFolderUseCase {\n export type Interface = IUpdateFolderUseCase;\n export type Return = Promise<Result<Folder, UseCaseError>>;\n export type Error = UseCaseError;\n}\n\n// Event Payload Types\nexport interface FolderBeforeUpdatePayload {\n original: Folder;\n input: Record<string, any>;\n}\n\nexport interface FolderAfterUpdatePayload {\n original: Folder;\n folder: Folder;\n input: Record<string, any>;\n}\n\n// Event Handler Abstractions\n/** Hook into folder lifecycle before a folder is updated. */\nexport const FolderBeforeUpdateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<FolderBeforeUpdatePayload>>\n>(\"FolderBeforeUpdateEventHandler\");\n\nexport namespace FolderBeforeUpdateEventHandler {\n export type Interface = IEventHandler<DomainEvent<FolderBeforeUpdatePayload>>;\n export type Event = DomainEvent<FolderBeforeUpdatePayload>;\n}\n\n/** Hook into folder lifecycle after a folder is updated. */\nexport const FolderAfterUpdateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<FolderAfterUpdatePayload>>\n>(\"FolderAfterUpdateEventHandler\");\n\nexport namespace FolderAfterUpdateEventHandler {\n export type Interface = IEventHandler<DomainEvent<FolderAfterUpdatePayload>>;\n export type Event = DomainEvent<FolderAfterUpdatePayload>;\n}\n"],"names":["UpdateFolderRepository","createAbstraction","UpdateFolderUseCase","FolderBeforeUpdateEventHandler","FolderAfterUpdateEventHandler"],"mappings":";AA2BO,MAAMA,yBACTC,kBAA2C;AAyBxC,MAAMC,sBAAsBD,kBAAwC;AAsBpE,MAAME,iCAAiCF,kBAE5C;AAQK,MAAMG,gCAAgCH,kBAE3C"}