@webiny/api-aco 6.3.0 → 6.4.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/constants.js +2 -1
  2. package/constants.js.map +1 -1
  3. package/createAcoContext.js +69 -103
  4. package/createAcoContext.js.map +1 -1
  5. package/createAcoGraphQL.js +42 -43
  6. package/createAcoGraphQL.js.map +1 -1
  7. package/createAcoStorageOperations.js +5 -6
  8. package/createAcoStorageOperations.js.map +1 -1
  9. package/createAcoTasks.js +7 -8
  10. package/createAcoTasks.js.map +1 -1
  11. package/domain/folder/abstractions.js +2 -5
  12. package/domain/folder/abstractions.js.map +1 -1
  13. package/domain/folder/errors.js +42 -47
  14. package/domain/folder/errors.js.map +1 -1
  15. package/domain/folder/folder.model.js +52 -36
  16. package/domain/folder/folder.model.js.map +1 -1
  17. package/exports/api/aco/flp.js +0 -2
  18. package/exports/api/aco/folder.js +4 -6
  19. package/features/cms/decorators/CreateEntryRevisionFromWithFlpDecorator.js +27 -31
  20. package/features/cms/decorators/CreateEntryRevisionFromWithFlpDecorator.js.map +1 -1
  21. package/features/cms/decorators/CreateEntryWithFlpDecorator.js +22 -25
  22. package/features/cms/decorators/CreateEntryWithFlpDecorator.js.map +1 -1
  23. package/features/cms/decorators/DeleteEntryRevisionWithFlpDecorator.js +27 -31
  24. package/features/cms/decorators/DeleteEntryRevisionWithFlpDecorator.js.map +1 -1
  25. package/features/cms/decorators/DeleteEntryWithFlpDecorator.js +29 -33
  26. package/features/cms/decorators/DeleteEntryWithFlpDecorator.js.map +1 -1
  27. package/features/cms/decorators/GetEntryByIdWithFlpDecorator.js +25 -30
  28. package/features/cms/decorators/GetEntryByIdWithFlpDecorator.js.map +1 -1
  29. package/features/cms/decorators/GetEntryWithFlpDecorator.js +25 -30
  30. package/features/cms/decorators/GetEntryWithFlpDecorator.js.map +1 -1
  31. package/features/cms/decorators/GetLatestEntriesByIdsWithFlpDecorator.js +31 -35
  32. package/features/cms/decorators/GetLatestEntriesByIdsWithFlpDecorator.js.map +1 -1
  33. package/features/cms/decorators/GetPublishedEntriesByIdsWithFlpDecorator.js +31 -34
  34. package/features/cms/decorators/GetPublishedEntriesByIdsWithFlpDecorator.js.map +1 -1
  35. package/features/cms/decorators/ListDeletedEntriesWithFlpDecorator.js +27 -28
  36. package/features/cms/decorators/ListDeletedEntriesWithFlpDecorator.js.map +1 -1
  37. package/features/cms/decorators/ListEntriesWithFlpDecorator.js +27 -27
  38. package/features/cms/decorators/ListEntriesWithFlpDecorator.js.map +1 -1
  39. package/features/cms/decorators/ListLatestEntriesWithFlpDecorator.js +27 -28
  40. package/features/cms/decorators/ListLatestEntriesWithFlpDecorator.js.map +1 -1
  41. package/features/cms/decorators/ListPublishedEntriesWithFlpDecorator.js +27 -28
  42. package/features/cms/decorators/ListPublishedEntriesWithFlpDecorator.js.map +1 -1
  43. package/features/cms/decorators/MoveEntryWithFlpDecorator.js +37 -51
  44. package/features/cms/decorators/MoveEntryWithFlpDecorator.js.map +1 -1
  45. package/features/cms/decorators/UpdateEntryWithFlpDecorator.d.ts +1 -2
  46. package/features/cms/decorators/UpdateEntryWithFlpDecorator.js +27 -31
  47. package/features/cms/decorators/UpdateEntryWithFlpDecorator.js.map +1 -1
  48. package/features/cms/feature.js +19 -25
  49. package/features/cms/feature.js.map +1 -1
  50. package/features/cms/index.js +0 -2
  51. package/features/flp/CreateFlp/CreateFlpUseCase.js +26 -33
  52. package/features/flp/CreateFlp/CreateFlpUseCase.js.map +1 -1
  53. package/features/flp/CreateFlp/abstractions.js +2 -5
  54. package/features/flp/CreateFlp/abstractions.js.map +1 -1
  55. package/features/flp/CreateFlp/feature.js +7 -8
  56. package/features/flp/CreateFlp/feature.js.map +1 -1
  57. package/features/flp/CreateFlp/index.js +0 -2
  58. package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.js +27 -27
  59. package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.js.map +1 -1
  60. package/features/flp/CreateFlpOnFolderCreated/feature.js +6 -5
  61. package/features/flp/CreateFlpOnFolderCreated/feature.js.map +1 -1
  62. package/features/flp/CreateFlpOnFolderCreated/index.js +0 -2
  63. package/features/flp/DeleteFlp/DeleteFlpUseCase.js +17 -18
  64. package/features/flp/DeleteFlp/DeleteFlpUseCase.js.map +1 -1
  65. package/features/flp/DeleteFlp/abstractions.js +2 -5
  66. package/features/flp/DeleteFlp/abstractions.js.map +1 -1
  67. package/features/flp/DeleteFlp/feature.js +7 -8
  68. package/features/flp/DeleteFlp/feature.js.map +1 -1
  69. package/features/flp/DeleteFlp/index.js +0 -2
  70. package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.js +27 -27
  71. package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.js.map +1 -1
  72. package/features/flp/DeleteFlpOnFolderDeleted/feature.js +6 -5
  73. package/features/flp/DeleteFlpOnFolderDeleted/feature.js.map +1 -1
  74. package/features/flp/DeleteFlpOnFolderDeleted/index.js +0 -2
  75. package/features/flp/FolderLevelPermissions/FolderLevelPermissions.js +87 -108
  76. package/features/flp/FolderLevelPermissions/FolderLevelPermissions.js.map +1 -1
  77. package/features/flp/FolderLevelPermissions/abstractions.js +2 -2
  78. package/features/flp/FolderLevelPermissions/abstractions.js.map +1 -1
  79. package/features/flp/FolderLevelPermissions/feature.js +6 -5
  80. package/features/flp/FolderLevelPermissions/feature.js.map +1 -1
  81. package/features/flp/FolderLevelPermissions/index.js +0 -2
  82. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.js +14 -36
  83. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.js.map +1 -1
  84. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/ICanAccessFolder.js +0 -3
  85. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/index.js +0 -2
  86. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.js +12 -29
  87. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.js.map +1 -1
  88. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/ICanAccessFolderContent.js +0 -3
  89. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/index.js +0 -2
  90. package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.js +5 -4
  91. package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.js.map +1 -1
  92. package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/ICanCreateFolderInRoot.js +0 -3
  93. package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/index.js +0 -2
  94. package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.js +5 -4
  95. package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.js.map +1 -1
  96. package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/ICheckNotInheritedPermissions.js +0 -3
  97. package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/index.js +0 -2
  98. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/DefaultPermissionsMerger.js +43 -66
  99. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/DefaultPermissionsMerger.js.map +1 -1
  100. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.js +10 -9
  101. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.js.map +1 -1
  102. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js +22 -33
  103. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js.map +1 -1
  104. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/IGetDefaultPermissions.js +0 -3
  105. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/index.js +0 -2
  106. package/features/flp/FolderLevelPermissions/useCases/index.js +0 -2
  107. package/features/flp/GetFlp/GetFlpUseCase.js +8 -7
  108. package/features/flp/GetFlp/GetFlpUseCase.js.map +1 -1
  109. package/features/flp/GetFlp/abstractions.js +2 -2
  110. package/features/flp/GetFlp/abstractions.js.map +1 -1
  111. package/features/flp/GetFlp/feature.js +7 -8
  112. package/features/flp/GetFlp/feature.js.map +1 -1
  113. package/features/flp/GetFlp/index.js +0 -2
  114. package/features/flp/ListFlps/ListFlpsUseCase.js +8 -7
  115. package/features/flp/ListFlps/ListFlpsUseCase.js.map +1 -1
  116. package/features/flp/ListFlps/abstractions.js +2 -2
  117. package/features/flp/ListFlps/abstractions.js.map +1 -1
  118. package/features/flp/ListFlps/feature.js +7 -8
  119. package/features/flp/ListFlps/feature.js.map +1 -1
  120. package/features/flp/ListFlps/index.js +0 -2
  121. package/features/flp/UpdateFlp/UpdateFlpUseCase.js +133 -184
  122. package/features/flp/UpdateFlp/UpdateFlpUseCase.js.map +1 -1
  123. package/features/flp/UpdateFlp/abstractions.js +2 -5
  124. package/features/flp/UpdateFlp/abstractions.js.map +1 -1
  125. package/features/flp/UpdateFlp/feature.js +7 -8
  126. package/features/flp/UpdateFlp/feature.js.map +1 -1
  127. package/features/flp/UpdateFlp/index.js +0 -2
  128. package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.js +29 -29
  129. package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.js.map +1 -1
  130. package/features/flp/UpdateFlpOnFolderUpdated/feature.js +6 -5
  131. package/features/flp/UpdateFlpOnFolderUpdated/feature.js.map +1 -1
  132. package/features/flp/UpdateFlpOnFolderUpdated/index.js +0 -2
  133. package/features/folder/CreateFolder/CreateFolderRepository.js +67 -90
  134. package/features/folder/CreateFolder/CreateFolderRepository.js.map +1 -1
  135. package/features/folder/CreateFolder/CreateFolderUseCase.js +27 -30
  136. package/features/folder/CreateFolder/CreateFolderUseCase.js.map +1 -1
  137. package/features/folder/CreateFolder/abstractions.js +5 -22
  138. package/features/folder/CreateFolder/abstractions.js.map +1 -1
  139. package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.js +29 -34
  140. package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.js.map +1 -1
  141. package/features/folder/CreateFolder/events.js +16 -14
  142. package/features/folder/CreateFolder/events.js.map +1 -1
  143. package/features/folder/CreateFolder/feature.js +8 -7
  144. package/features/folder/CreateFolder/feature.js.map +1 -1
  145. package/features/folder/CreateFolder/index.js +1 -3
  146. package/features/folder/DeleteFolder/DeleteFolderRepository.js +22 -20
  147. package/features/folder/DeleteFolder/DeleteFolderRepository.js.map +1 -1
  148. package/features/folder/DeleteFolder/DeleteFolderUseCase.js +35 -43
  149. package/features/folder/DeleteFolder/DeleteFolderUseCase.js.map +1 -1
  150. package/features/folder/DeleteFolder/abstractions.js +5 -22
  151. package/features/folder/DeleteFolder/abstractions.js.map +1 -1
  152. package/features/folder/DeleteFolder/decorators/DeleteFolderWithFolderLevelPermissions.js +21 -20
  153. package/features/folder/DeleteFolder/decorators/DeleteFolderWithFolderLevelPermissions.js.map +1 -1
  154. package/features/folder/DeleteFolder/events.js +16 -14
  155. package/features/folder/DeleteFolder/events.js.map +1 -1
  156. package/features/folder/DeleteFolder/feature.js +8 -7
  157. package/features/folder/DeleteFolder/feature.js.map +1 -1
  158. package/features/folder/DeleteFolder/index.js +1 -3
  159. package/features/folder/EnsureFolderIsEmpty/EnsureFolderIsEmpty.js +43 -44
  160. package/features/folder/EnsureFolderIsEmpty/EnsureFolderIsEmpty.js.map +1 -1
  161. package/features/folder/EnsureFolderIsEmpty/abstractions.js +2 -2
  162. package/features/folder/EnsureFolderIsEmpty/abstractions.js.map +1 -1
  163. package/features/folder/EnsureFolderIsEmpty/feature.js +6 -5
  164. package/features/folder/EnsureFolderIsEmpty/feature.js.map +1 -1
  165. package/features/folder/EnsureFolderIsEmpty/index.js +0 -2
  166. package/features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.js +16 -20
  167. package/features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.js.map +1 -1
  168. package/features/folder/EnsureFolderIsEmptyOnDelete/feature.js +6 -12
  169. package/features/folder/EnsureFolderIsEmptyOnDelete/feature.js.map +1 -1
  170. package/features/folder/EnsureFolderIsEmptyOnDelete/index.js +0 -2
  171. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/ModelFolderBeforeDeleteHandler.js +36 -44
  172. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/ModelFolderBeforeDeleteHandler.js.map +1 -1
  173. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/feature.js +6 -5
  174. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/feature.js.map +1 -1
  175. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/index.js +0 -2
  176. package/features/folder/GetAncestors/GetAncestorsRepository.js +45 -75
  177. package/features/folder/GetAncestors/GetAncestorsRepository.js.map +1 -1
  178. package/features/folder/GetAncestors/GetAncestorsUseCase.js +14 -11
  179. package/features/folder/GetAncestors/GetAncestorsUseCase.js.map +1 -1
  180. package/features/folder/GetAncestors/abstractions.js +3 -14
  181. package/features/folder/GetAncestors/abstractions.js.map +1 -1
  182. package/features/folder/GetAncestors/feature.js +7 -6
  183. package/features/folder/GetAncestors/feature.js.map +1 -1
  184. package/features/folder/GetAncestors/index.js +0 -2
  185. package/features/folder/GetFolder/GetFolderRepository.js +21 -19
  186. package/features/folder/GetFolder/GetFolderRepository.js.map +1 -1
  187. package/features/folder/GetFolder/GetFolderUseCase.js +14 -11
  188. package/features/folder/GetFolder/GetFolderUseCase.js.map +1 -1
  189. package/features/folder/GetFolder/abstractions.js +5 -21
  190. package/features/folder/GetFolder/abstractions.js.map +1 -1
  191. package/features/folder/GetFolder/decorators/GetFolderWithFolderLevelPermissions.js +23 -26
  192. package/features/folder/GetFolder/decorators/GetFolderWithFolderLevelPermissions.js.map +1 -1
  193. package/features/folder/GetFolder/feature.js +8 -7
  194. package/features/folder/GetFolder/feature.js.map +1 -1
  195. package/features/folder/GetFolder/index.js +0 -2
  196. package/features/folder/GetFolderHierarchy/GetFolderHierarchyRepository.js +67 -86
  197. package/features/folder/GetFolderHierarchy/GetFolderHierarchyRepository.js.map +1 -1
  198. package/features/folder/GetFolderHierarchy/GetFolderHierarchyUseCase.js +14 -11
  199. package/features/folder/GetFolderHierarchy/GetFolderHierarchyUseCase.js.map +1 -1
  200. package/features/folder/GetFolderHierarchy/abstractions.js +3 -14
  201. package/features/folder/GetFolderHierarchy/abstractions.js.map +1 -1
  202. package/features/folder/GetFolderHierarchy/decorators/GetFolderHierarchyWithFolderLevelPermissions.js +55 -56
  203. package/features/folder/GetFolderHierarchy/decorators/GetFolderHierarchyWithFolderLevelPermissions.js.map +1 -1
  204. package/features/folder/GetFolderHierarchy/feature.js +8 -7
  205. package/features/folder/GetFolderHierarchy/feature.js.map +1 -1
  206. package/features/folder/GetFolderHierarchy/index.js +0 -2
  207. package/features/folder/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargetsUseCase.js +65 -58
  208. package/features/folder/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargetsUseCase.js.map +1 -1
  209. package/features/folder/ListFolderLevelPermissionsTargets/abstractions.js +2 -5
  210. package/features/folder/ListFolderLevelPermissionsTargets/abstractions.js.map +1 -1
  211. package/features/folder/ListFolderLevelPermissionsTargets/feature.js +6 -5
  212. package/features/folder/ListFolderLevelPermissionsTargets/feature.js.map +1 -1
  213. package/features/folder/ListFolderLevelPermissionsTargets/index.js +0 -2
  214. package/features/folder/ListFolders/ListFoldersRepository.js +39 -41
  215. package/features/folder/ListFolders/ListFoldersRepository.js.map +1 -1
  216. package/features/folder/ListFolders/ListFoldersUseCase.js +14 -11
  217. package/features/folder/ListFolders/ListFoldersUseCase.js.map +1 -1
  218. package/features/folder/ListFolders/abstractions.js +3 -14
  219. package/features/folder/ListFolders/abstractions.js.map +1 -1
  220. package/features/folder/ListFolders/decorators/ListFoldersWithFolderLevelPermissions.js +55 -67
  221. package/features/folder/ListFolders/decorators/ListFoldersWithFolderLevelPermissions.js.map +1 -1
  222. package/features/folder/ListFolders/feature.js +8 -7
  223. package/features/folder/ListFolders/feature.js.map +1 -1
  224. package/features/folder/ListFolders/index.js +0 -2
  225. package/features/folder/UpdateFolder/UpdateFolderRepository.js +66 -92
  226. package/features/folder/UpdateFolder/UpdateFolderRepository.js.map +1 -1
  227. package/features/folder/UpdateFolder/UpdateFolderUseCase.js +38 -45
  228. package/features/folder/UpdateFolder/UpdateFolderUseCase.js.map +1 -1
  229. package/features/folder/UpdateFolder/abstractions.js +5 -22
  230. package/features/folder/UpdateFolder/abstractions.js.map +1 -1
  231. package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.js +45 -64
  232. package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.js.map +1 -1
  233. package/features/folder/UpdateFolder/events.js +16 -14
  234. package/features/folder/UpdateFolder/events.js.map +1 -1
  235. package/features/folder/UpdateFolder/feature.js +8 -7
  236. package/features/folder/UpdateFolder/feature.js.map +1 -1
  237. package/features/folder/UpdateFolder/index.js +0 -2
  238. package/features/folder/shared/EntryToFolderMapper.js +20 -19
  239. package/features/folder/shared/EntryToFolderMapper.js.map +1 -1
  240. package/features/folder/shared/abstractions.js +2 -2
  241. package/features/folder/shared/abstractions.js.map +1 -1
  242. package/filter/filter.crud.js +28 -31
  243. package/filter/filter.crud.js.map +1 -1
  244. package/filter/filter.gql.js +32 -48
  245. package/filter/filter.gql.js.map +1 -1
  246. package/filter/filter.model.js +44 -35
  247. package/filter/filter.model.js.map +1 -1
  248. package/filter/filter.so.js +73 -93
  249. package/filter/filter.so.js.map +1 -1
  250. package/filter/filter.types.js +5 -4
  251. package/filter/filter.types.js.map +1 -1
  252. package/flp/flp.crud.js +69 -86
  253. package/flp/flp.crud.js.map +1 -1
  254. package/flp/flp.so.js +162 -199
  255. package/flp/flp.so.js.map +1 -1
  256. package/flp/flp.types.js +0 -3
  257. package/flp/index.js +0 -2
  258. package/flp/tasks/createFlp.task.js +26 -27
  259. package/flp/tasks/createFlp.task.js.map +1 -1
  260. package/flp/tasks/deleteFlp.task.js +26 -27
  261. package/flp/tasks/deleteFlp.task.js.map +1 -1
  262. package/flp/tasks/index.js +13 -12
  263. package/flp/tasks/index.js.map +1 -1
  264. package/flp/tasks/syncFlp.task.js +83 -112
  265. package/flp/tasks/syncFlp.task.js.map +1 -1
  266. package/flp/tasks/updateFlp.task.js +33 -32
  267. package/flp/tasks/updateFlp.task.js.map +1 -1
  268. package/folder/createFolderModelModifier.js +50 -50
  269. package/folder/createFolderModelModifier.js.map +1 -1
  270. package/folder/createFolderTypeDefs.js +39 -50
  271. package/folder/createFolderTypeDefs.js.map +1 -1
  272. package/folder/folder.gql.js +100 -133
  273. package/folder/folder.gql.js.map +1 -1
  274. package/folder/folder.types.js +0 -3
  275. package/index.js +7 -4
  276. package/index.js.map +1 -1
  277. package/package.json +24 -24
  278. package/types.js +5 -4
  279. package/types.js.map +1 -1
  280. package/utils/FoldersCacheFactory.js +20 -19
  281. package/utils/FoldersCacheFactory.js.map +1 -1
  282. package/utils/ListCache.js +20 -19
  283. package/utils/ListCache.js.map +1 -1
  284. package/utils/Path.js +5 -6
  285. package/utils/Path.js.map +1 -1
  286. package/utils/compress.js +8 -7
  287. package/utils/compress.js.map +1 -1
  288. package/utils/createListSort.js +4 -7
  289. package/utils/createListSort.js.map +1 -1
  290. package/utils/createOperationsWrapper.js +12 -19
  291. package/utils/createOperationsWrapper.js.map +1 -1
  292. package/utils/decorators/CmsEntriesCrudDecorators.js +165 -196
  293. package/utils/decorators/CmsEntriesCrudDecorators.js.map +1 -1
  294. package/utils/decorators/FilterEntriesByFolderFactory.js +18 -19
  295. package/utils/decorators/FilterEntriesByFolderFactory.js.map +1 -1
  296. package/utils/decorators/ListEntriesFactory.js +65 -98
  297. package/utils/decorators/ListEntriesFactory.js.map +1 -1
  298. package/utils/decorators/hasRootFolderId.js +6 -12
  299. package/utils/decorators/hasRootFolderId.js.map +1 -1
  300. package/utils/decorators/isPageModel.js +5 -10
  301. package/utils/decorators/isPageModel.js.map +1 -1
  302. package/utils/ensureAuthentication.js +6 -7
  303. package/utils/ensureAuthentication.js.map +1 -1
  304. package/utils/pickEntryFieldValues.js +24 -18
  305. package/utils/pickEntryFieldValues.js.map +1 -1
  306. package/utils/resolve.js +7 -6
  307. package/utils/resolve.js.map +1 -1
  308. package/exports/api/aco/flp.js.map +0 -1
  309. package/exports/api/aco/folder.js.map +0 -1
  310. package/features/cms/index.js.map +0 -1
  311. package/features/flp/CreateFlp/index.js.map +0 -1
  312. package/features/flp/CreateFlpOnFolderCreated/index.js.map +0 -1
  313. package/features/flp/DeleteFlp/index.js.map +0 -1
  314. package/features/flp/DeleteFlpOnFolderDeleted/index.js.map +0 -1
  315. package/features/flp/FolderLevelPermissions/index.js.map +0 -1
  316. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/ICanAccessFolder.js.map +0 -1
  317. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/index.js.map +0 -1
  318. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/ICanAccessFolderContent.js.map +0 -1
  319. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/index.js.map +0 -1
  320. package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/ICanCreateFolderInRoot.js.map +0 -1
  321. package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/index.js.map +0 -1
  322. package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/ICheckNotInheritedPermissions.js.map +0 -1
  323. package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/index.js.map +0 -1
  324. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/IGetDefaultPermissions.js.map +0 -1
  325. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/index.js.map +0 -1
  326. package/features/flp/FolderLevelPermissions/useCases/index.js.map +0 -1
  327. package/features/flp/GetFlp/index.js.map +0 -1
  328. package/features/flp/ListFlps/index.js.map +0 -1
  329. package/features/flp/UpdateFlp/index.js.map +0 -1
  330. package/features/flp/UpdateFlpOnFolderUpdated/index.js.map +0 -1
  331. package/features/folder/CreateFolder/index.js.map +0 -1
  332. package/features/folder/DeleteFolder/index.js.map +0 -1
  333. package/features/folder/EnsureFolderIsEmpty/index.js.map +0 -1
  334. package/features/folder/EnsureFolderIsEmptyOnDelete/index.js.map +0 -1
  335. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/index.js.map +0 -1
  336. package/features/folder/GetAncestors/index.js.map +0 -1
  337. package/features/folder/GetFolder/index.js.map +0 -1
  338. package/features/folder/GetFolderHierarchy/index.js.map +0 -1
  339. package/features/folder/ListFolderLevelPermissionsTargets/index.js.map +0 -1
  340. package/features/folder/ListFolders/index.js.map +0 -1
  341. package/features/folder/UpdateFolder/index.js.map +0 -1
  342. package/flp/flp.types.js.map +0 -1
  343. package/flp/index.js.map +0 -1
  344. package/folder/folder.types.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","UpdateFlpUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Folder } from \"~/folder/folder.types.js\";\n\nexport interface UpdateFlpParams {\n folder: Folder;\n queued?: string[];\n isCloseToTimeout?: () => boolean;\n handleTimeout?: (queued: string[]) => void;\n}\n\n// Use Case Abstraction\nexport interface IUpdateFlpUseCase {\n execute: (params: UpdateFlpParams) => Promise<void>;\n}\n\n/** Update a folder-level permission. */\nexport const UpdateFlpUseCase = createAbstraction<IUpdateFlpUseCase>(\"UpdateFlpUseCase\");\n\nexport namespace UpdateFlpUseCase {\n export type Interface = IUpdateFlpUseCase;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAUvD;;AAKA;AACA,OAAO,MAAMC,gBAAgB,GAAGD,iBAAiB,CAAoB,kBAAkB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/flp/UpdateFlp/abstractions.js","sources":["../../../../src/features/flp/UpdateFlp/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Folder } from \"~/folder/folder.types.js\";\n\nexport interface UpdateFlpParams {\n folder: Folder;\n queued?: string[];\n isCloseToTimeout?: () => boolean;\n handleTimeout?: (queued: string[]) => void;\n}\n\n// Use Case Abstraction\nexport interface IUpdateFlpUseCase {\n execute: (params: UpdateFlpParams) => Promise<void>;\n}\n\n/** Update a folder-level permission. */\nexport const UpdateFlpUseCase = createAbstraction<IUpdateFlpUseCase>(\"UpdateFlpUseCase\");\n\nexport namespace UpdateFlpUseCase {\n export type Interface = IUpdateFlpUseCase;\n}\n"],"names":["UpdateFlpUseCase","createAbstraction"],"mappings":";AAgBO,MAAMA,mBAAmBC,kBAAqC"}
@@ -1,13 +1,12 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { UpdateFlpUseCase } from "./UpdateFlpUseCase.js";
3
- import { UpdateFlpUseCase as UseCaseAbstraction } from "./abstractions.js";
4
- export const UpdateFlpFeature = createFeature({
5
- name: "UpdateFlp",
6
- register(container, deps) {
7
- container.registerFactory(UseCaseAbstraction, () => {
8
- return new UpdateFlpUseCase(deps.context);
9
- });
10
- }
3
+ import { UpdateFlpUseCase as external_abstractions_js_UpdateFlpUseCase } from "./abstractions.js";
4
+ const UpdateFlpFeature = createFeature({
5
+ name: "UpdateFlp",
6
+ register (container, deps) {
7
+ container.registerFactory(external_abstractions_js_UpdateFlpUseCase, ()=>new UpdateFlpUseCase(deps.context));
8
+ }
11
9
  });
10
+ export { UpdateFlpFeature };
12
11
 
13
12
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","UpdateFlpUseCase","UseCaseAbstraction","UpdateFlpFeature","name","register","container","deps","registerFactory","context"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport type { Container } from \"@webiny/di\";\nimport { UpdateFlpUseCase } from \"./UpdateFlpUseCase.js\";\nimport { UpdateFlpUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport type { AcoContext } from \"~/types.js\";\n\ninterface LegacyDeps {\n context: AcoContext;\n}\n\nexport const UpdateFlpFeature = createFeature({\n name: \"UpdateFlp\",\n register(container: Container, deps: LegacyDeps) {\n container.registerFactory(UseCaseAbstraction, () => {\n return new UpdateFlpUseCase(deps.context);\n });\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AAEnD,SAASC,gBAAgB;AACzB,SAASA,gBAAgB,IAAIC,kBAAkB;AAO/C,OAAO,MAAMC,gBAAgB,GAAGH,aAAa,CAAC;EAC1CI,IAAI,EAAE,WAAW;EACjBC,QAAQA,CAACC,SAAoB,EAAEC,IAAgB,EAAE;IAC7CD,SAAS,CAACE,eAAe,CAACN,kBAAkB,EAAE,MAAM;MAChD,OAAO,IAAID,gBAAgB,CAACM,IAAI,CAACE,OAAO,CAAC;IAC7C,CAAC,CAAC;EACN;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/flp/UpdateFlp/feature.js","sources":["../../../../src/features/flp/UpdateFlp/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport type { Container } from \"@webiny/di\";\nimport { UpdateFlpUseCase } from \"./UpdateFlpUseCase.js\";\nimport { UpdateFlpUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport type { AcoContext } from \"~/types.js\";\n\ninterface LegacyDeps {\n context: AcoContext;\n}\n\nexport const UpdateFlpFeature = createFeature({\n name: \"UpdateFlp\",\n register(container: Container, deps: LegacyDeps) {\n container.registerFactory(UseCaseAbstraction, () => {\n return new UpdateFlpUseCase(deps.context);\n });\n }\n});\n"],"names":["UpdateFlpFeature","createFeature","container","deps","UseCaseAbstraction","UpdateFlpUseCase"],"mappings":";;;AAUO,MAAMA,mBAAmBC,cAAc;IAC1C,MAAM;IACN,UAASC,SAAoB,EAAEC,IAAgB;QAC3CD,UAAU,eAAe,CAACE,2CAAoB,IACnC,IAAIC,iBAAiBF,KAAK,OAAO;IAEhD;AACJ"}
@@ -1,4 +1,2 @@
1
1
  export { UpdateFlpFeature } from "./feature.js";
2
2
  export { UpdateFlpUseCase } from "./abstractions.js";
3
-
4
- //# sourceMappingURL=index.js.map
@@ -3,37 +3,37 @@ import { UpdateFlpUseCase } from "../UpdateFlp/abstractions.js";
3
3
  import { UPDATE_FLP_TASK_ID } from "../../../flp/tasks/index.js";
4
4
  import { FolderAfterUpdateEventHandler } from "../../folder/UpdateFolder/index.js";
5
5
  class UpdateFlpOnFolderUpdatedHandlerImpl {
6
- constructor(updateFlpUseCase, tasks) {
7
- this.updateFlpUseCase = updateFlpUseCase;
8
- this.tasks = tasks;
9
- }
10
- async handle(event) {
11
- const {
12
- folder
13
- } = event.payload;
14
- try {
15
- if (this.tasks) {
16
- await this.tasks.trigger({
17
- definition: UPDATE_FLP_TASK_ID,
18
- input: {
19
- folder
20
- }
21
- });
22
- } else {
23
- await this.updateFlpUseCase.execute({
24
- folder
25
- });
26
- }
27
- } catch {
28
- // Ignore errors
6
+ constructor(updateFlpUseCase, tasks){
7
+ this.updateFlpUseCase = updateFlpUseCase;
8
+ this.tasks = tasks;
9
+ }
10
+ async handle(event) {
11
+ const { folder } = event.payload;
12
+ try {
13
+ if (this.tasks) await this.tasks.trigger({
14
+ definition: UPDATE_FLP_TASK_ID,
15
+ input: {
16
+ folder
17
+ }
18
+ });
19
+ else await this.updateFlpUseCase.execute({
20
+ folder
21
+ });
22
+ } catch {}
29
23
  }
30
- }
31
24
  }
32
- export const UpdateFlpOnFolderUpdatedHandler = FolderAfterUpdateEventHandler.createImplementation({
33
- implementation: UpdateFlpOnFolderUpdatedHandlerImpl,
34
- dependencies: [UpdateFlpUseCase, [TaskService, {
35
- optional: true
36
- }]]
25
+ const UpdateFlpOnFolderUpdatedHandler = FolderAfterUpdateEventHandler.createImplementation({
26
+ implementation: UpdateFlpOnFolderUpdatedHandlerImpl,
27
+ dependencies: [
28
+ UpdateFlpUseCase,
29
+ [
30
+ TaskService,
31
+ {
32
+ optional: true
33
+ }
34
+ ]
35
+ ]
37
36
  });
37
+ export { UpdateFlpOnFolderUpdatedHandler };
38
38
 
39
39
  //# sourceMappingURL=UpdateFlpOnFolderUpdatedHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["TaskService","UpdateFlpUseCase","UPDATE_FLP_TASK_ID","FolderAfterUpdateEventHandler","UpdateFlpOnFolderUpdatedHandlerImpl","constructor","updateFlpUseCase","tasks","handle","event","folder","payload","trigger","definition","input","execute","UpdateFlpOnFolderUpdatedHandler","createImplementation","implementation","dependencies","optional"],"sources":["UpdateFlpOnFolderUpdatedHandler.ts"],"sourcesContent":["import { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport { UpdateFlpUseCase } from \"../UpdateFlp/abstractions.js\";\nimport type { FolderAfterUpdateEvent } from \"~/features/folder/UpdateFolder/events.js\";\nimport type { IUpdateFlpTaskInput } from \"~/types.js\";\nimport { UPDATE_FLP_TASK_ID } from \"~/flp/tasks/index.js\";\nimport { FolderAfterUpdateEventHandler } from \"~/features/folder/UpdateFolder/index.js\";\n\nclass UpdateFlpOnFolderUpdatedHandlerImpl implements FolderAfterUpdateEventHandler.Interface {\n constructor(\n private updateFlpUseCase: UpdateFlpUseCase.Interface,\n private tasks?: TaskService.Interface\n ) {}\n\n async handle(event: FolderAfterUpdateEvent): Promise<void> {\n const { folder } = event.payload;\n\n try {\n if (this.tasks) {\n await this.tasks.trigger<IUpdateFlpTaskInput>({\n definition: UPDATE_FLP_TASK_ID,\n input: { folder }\n });\n } else {\n await this.updateFlpUseCase.execute({ folder });\n }\n } catch {\n // Ignore errors\n }\n }\n}\n\nexport const UpdateFlpOnFolderUpdatedHandler = FolderAfterUpdateEventHandler.createImplementation({\n implementation: UpdateFlpOnFolderUpdatedHandlerImpl,\n dependencies: [UpdateFlpUseCase, [TaskService, { optional: true }]]\n});\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,qDAAqD;AACjF,SAASC,gBAAgB;AAGzB,SAASC,kBAAkB;AAC3B,SAASC,6BAA6B;AAEtC,MAAMC,mCAAmC,CAAoD;EACzFC,WAAWA,CACCC,gBAA4C,EAC5CC,KAA6B,EACvC;IAAA,KAFUD,gBAA4C,GAA5CA,gBAA4C;IAAA,KAC5CC,KAA6B,GAA7BA,KAA6B;EACtC;EAEH,MAAMC,MAAMA,CAACC,KAA6B,EAAiB;IACvD,MAAM;MAAEC;IAAO,CAAC,GAAGD,KAAK,CAACE,OAAO;IAEhC,IAAI;MACA,IAAI,IAAI,CAACJ,KAAK,EAAE;QACZ,MAAM,IAAI,CAACA,KAAK,CAACK,OAAO,CAAsB;UAC1CC,UAAU,EAAEX,kBAAkB;UAC9BY,KAAK,EAAE;YAAEJ;UAAO;QACpB,CAAC,CAAC;MACN,CAAC,MAAM;QACH,MAAM,IAAI,CAACJ,gBAAgB,CAACS,OAAO,CAAC;UAAEL;QAAO,CAAC,CAAC;MACnD;IACJ,CAAC,CAAC,MAAM;MACJ;IAAA;EAER;AACJ;AAEA,OAAO,MAAMM,+BAA+B,GAAGb,6BAA6B,CAACc,oBAAoB,CAAC;EAC9FC,cAAc,EAAEd,mCAAmC;EACnDe,YAAY,EAAE,CAAClB,gBAAgB,EAAE,CAACD,WAAW,EAAE;IAAEoB,QAAQ,EAAE;EAAK,CAAC,CAAC;AACtE,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.js","sources":["../../../../src/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.ts"],"sourcesContent":["import { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport { UpdateFlpUseCase } from \"../UpdateFlp/abstractions.js\";\nimport type { FolderAfterUpdateEvent } from \"~/features/folder/UpdateFolder/events.js\";\nimport type { IUpdateFlpTaskInput } from \"~/types.js\";\nimport { UPDATE_FLP_TASK_ID } from \"~/flp/tasks/index.js\";\nimport { FolderAfterUpdateEventHandler } from \"~/features/folder/UpdateFolder/index.js\";\n\nclass UpdateFlpOnFolderUpdatedHandlerImpl implements FolderAfterUpdateEventHandler.Interface {\n constructor(\n private updateFlpUseCase: UpdateFlpUseCase.Interface,\n private tasks?: TaskService.Interface\n ) {}\n\n async handle(event: FolderAfterUpdateEvent): Promise<void> {\n const { folder } = event.payload;\n\n try {\n if (this.tasks) {\n await this.tasks.trigger<IUpdateFlpTaskInput>({\n definition: UPDATE_FLP_TASK_ID,\n input: { folder }\n });\n } else {\n await this.updateFlpUseCase.execute({ folder });\n }\n } catch {\n // Ignore errors\n }\n }\n}\n\nexport const UpdateFlpOnFolderUpdatedHandler = FolderAfterUpdateEventHandler.createImplementation({\n implementation: UpdateFlpOnFolderUpdatedHandlerImpl,\n dependencies: [UpdateFlpUseCase, [TaskService, { optional: true }]]\n});\n"],"names":["UpdateFlpOnFolderUpdatedHandlerImpl","updateFlpUseCase","tasks","event","folder","UPDATE_FLP_TASK_ID","UpdateFlpOnFolderUpdatedHandler","FolderAfterUpdateEventHandler","UpdateFlpUseCase","TaskService"],"mappings":";;;;AAOA,MAAMA;IACF,YACYC,gBAA4C,EAC5CC,KAA6B,CACvC;aAFUD,gBAAgB,GAAhBA;aACAC,KAAK,GAALA;IACT;IAEH,MAAM,OAAOC,KAA6B,EAAiB;QACvD,MAAM,EAAEC,MAAM,EAAE,GAAGD,MAAM,OAAO;QAEhC,IAAI;YACA,IAAI,IAAI,CAAC,KAAK,EACV,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB;gBAC1C,YAAYE;gBACZ,OAAO;oBAAED;gBAAO;YACpB;iBAEA,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;gBAAEA;YAAO;QAErD,EAAE,OAAM,CAER;IACJ;AACJ;AAEO,MAAME,kCAAkCC,8BAA8B,oBAAoB,CAAC;IAC9F,gBAAgBP;IAChB,cAAc;QAACQ;QAAkB;YAACC;YAAa;gBAAE,UAAU;YAAK;SAAE;KAAC;AACvE"}
@@ -1,10 +1,11 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { UpdateFlpOnFolderUpdatedHandler } from "./UpdateFlpOnFolderUpdatedHandler.js";
3
- export const UpdateFlpOnFolderUpdatedFeature = createFeature({
4
- name: "UpdateFlpOnFolderUpdated",
5
- register(container) {
6
- container.register(UpdateFlpOnFolderUpdatedHandler);
7
- }
3
+ const UpdateFlpOnFolderUpdatedFeature = createFeature({
4
+ name: "UpdateFlpOnFolderUpdated",
5
+ register (container) {
6
+ container.register(UpdateFlpOnFolderUpdatedHandler);
7
+ }
8
8
  });
9
+ export { UpdateFlpOnFolderUpdatedFeature };
9
10
 
10
11
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","UpdateFlpOnFolderUpdatedHandler","UpdateFlpOnFolderUpdatedFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { UpdateFlpOnFolderUpdatedHandler } from \"./UpdateFlpOnFolderUpdatedHandler.js\";\n\nexport const UpdateFlpOnFolderUpdatedFeature = createFeature({\n name: \"UpdateFlpOnFolderUpdated\",\n register(container) {\n container.register(UpdateFlpOnFolderUpdatedHandler);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,+BAA+B;AAExC,OAAO,MAAMC,+BAA+B,GAAGF,aAAa,CAAC;EACzDG,IAAI,EAAE,0BAA0B;EAChCC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,+BAA+B,CAAC;EACvD;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/flp/UpdateFlpOnFolderUpdated/feature.js","sources":["../../../../src/features/flp/UpdateFlpOnFolderUpdated/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { UpdateFlpOnFolderUpdatedHandler } from \"./UpdateFlpOnFolderUpdatedHandler.js\";\n\nexport const UpdateFlpOnFolderUpdatedFeature = createFeature({\n name: \"UpdateFlpOnFolderUpdated\",\n register(container) {\n container.register(UpdateFlpOnFolderUpdatedHandler);\n }\n});\n"],"names":["UpdateFlpOnFolderUpdatedFeature","createFeature","container","UpdateFlpOnFolderUpdatedHandler"],"mappings":";;AAGO,MAAMA,kCAAkCC,cAAc;IACzD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -1,3 +1 @@
1
1
  export { UpdateFlpOnFolderUpdatedFeature } from "./feature.js";
2
-
3
- //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { CreateFolderRepository as RepositoryAbstraction } from "./abstractions.js";
2
+ import { CreateFolderRepository } from "./abstractions.js";
3
3
  import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry";
4
4
  import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries";
5
5
  import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById";
@@ -9,100 +9,77 @@ 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 CreateFolderRepositoryImpl {
12
- constructor(createEntry, listLatestEntries, getEntryById, folderModel) {
13
- this.createEntry = createEntry;
14
- this.listLatestEntries = listLatestEntries;
15
- this.getEntryById = getEntryById;
16
- this.folderModel = folderModel;
17
- }
18
- async execute(data) {
19
- // Check if folder already exists
20
- const checkResult = await this.checkExistingFolder({
21
- type: data.type,
22
- slug: data.slug,
23
- parentId: data.parentId
24
- });
25
- if (checkResult.isFail()) {
26
- return Result.fail(checkResult.error);
12
+ constructor(createEntry, listLatestEntries, getEntryById, folderModel){
13
+ this.createEntry = createEntry;
14
+ this.listLatestEntries = listLatestEntries;
15
+ this.getEntryById = getEntryById;
16
+ this.folderModel = folderModel;
27
17
  }
28
-
29
- // Create folder path
30
- const pathResult = await this.createFolderPath({
31
- slug: data.slug,
32
- parentId: data.parentId
33
- });
34
- if (pathResult.isFail()) {
35
- return Result.fail(pathResult.error);
36
- }
37
-
38
- // Create the entry
39
- const result = await this.createEntry.execute(this.folderModel, {
40
- values: {
41
- ...data,
42
- parentId: data.parentId || null,
43
- path: pathResult.value
44
- }
45
- });
46
- if (result.isFail()) {
47
- if (result.error.code === "Cms/Entry/ValidationError") {
48
- return Result.fail(new FolderValidationError(result.error.message));
49
- }
50
- return Result.fail(new FolderPersistenceError(result.error));
51
- }
52
- const folder = EntryToFolderMapper.toFolder(result.value);
53
- return Result.ok(folder);
54
- }
55
- async checkExistingFolder(params) {
56
- const {
57
- type,
58
- slug,
59
- parentId,
60
- excludeId
61
- } = params;
62
- const result = await this.listLatestEntries.execute(this.folderModel, {
63
- where: {
64
- latest: true,
65
- values: {
66
- type,
67
- slug,
68
- parentId
69
- },
70
- ...(excludeId ? {
71
- entryId_not: excludeId
72
- } : {})
73
- },
74
- limit: 1
75
- });
76
- if (result.isFail()) {
77
- return Result.fail(new FolderPersistenceError(result.error));
78
- }
79
- const {
80
- entries
81
- } = result.value;
82
- if (entries.length > 0) {
83
- return Result.fail(new FolderValidationError(`Folder with slug "${slug}" already exists at this level.`));
18
+ async execute(data) {
19
+ const checkResult = await this.checkExistingFolder({
20
+ type: data.type,
21
+ slug: data.slug,
22
+ parentId: data.parentId
23
+ });
24
+ if (checkResult.isFail()) return Result.fail(checkResult.error);
25
+ const pathResult = await this.createFolderPath({
26
+ slug: data.slug,
27
+ parentId: data.parentId
28
+ });
29
+ if (pathResult.isFail()) return Result.fail(pathResult.error);
30
+ const result = await this.createEntry.execute(this.folderModel, {
31
+ values: {
32
+ ...data,
33
+ parentId: data.parentId || null,
34
+ path: pathResult.value
35
+ }
36
+ });
37
+ if (result.isFail()) {
38
+ if ("Cms/Entry/ValidationError" === result.error.code) return Result.fail(new FolderValidationError(result.error.message));
39
+ return Result.fail(new FolderPersistenceError(result.error));
40
+ }
41
+ const folder = EntryToFolderMapper.toFolder(result.value);
42
+ return Result.ok(folder);
84
43
  }
85
- return Result.ok();
86
- }
87
- async createFolderPath(params) {
88
- const {
89
- slug,
90
- parentId
91
- } = params;
92
- if (!parentId) {
93
- return Result.ok(Path.create(slug));
44
+ async checkExistingFolder(params) {
45
+ const { type, slug, parentId, excludeId } = params;
46
+ const result = await this.listLatestEntries.execute(this.folderModel, {
47
+ where: {
48
+ latest: true,
49
+ values: {
50
+ type,
51
+ slug,
52
+ parentId
53
+ },
54
+ ...excludeId ? {
55
+ entryId_not: excludeId
56
+ } : {}
57
+ },
58
+ limit: 1
59
+ });
60
+ if (result.isFail()) return Result.fail(new FolderPersistenceError(result.error));
61
+ const { entries } = result.value;
62
+ if (entries.length > 0) return Result.fail(new FolderValidationError(`Folder with slug "${slug}" already exists at this level.`));
63
+ return Result.ok();
94
64
  }
95
- const parentResult = await this.getEntryById.execute(this.folderModel, EntryId.from(parentId).toString());
96
- if (parentResult.isFail()) {
97
- return Result.fail(new FolderPersistenceError(new Error("Parent folder not found. Unable to create the folder path")));
65
+ async createFolderPath(params) {
66
+ const { slug, parentId } = params;
67
+ if (!parentId) return Result.ok(Path.create(slug));
68
+ const parentResult = await this.getEntryById.execute(this.folderModel, EntryId.from(parentId).toString());
69
+ if (parentResult.isFail()) return Result.fail(new FolderPersistenceError(new Error("Parent folder not found. Unable to create the folder path")));
70
+ const parentFolder = EntryToFolderMapper.toFolder(parentResult.value);
71
+ return Result.ok(Path.create(slug, parentFolder.path));
98
72
  }
99
- const parentFolder = EntryToFolderMapper.toFolder(parentResult.value);
100
- return Result.ok(Path.create(slug, parentFolder.path));
101
- }
102
73
  }
103
- export const CreateFolderRepository = RepositoryAbstraction.createImplementation({
104
- implementation: CreateFolderRepositoryImpl,
105
- dependencies: [CreateEntryUseCase, ListLatestEntriesUseCase, GetEntryByIdUseCase, FolderModel]
74
+ const CreateFolderRepository_CreateFolderRepository = CreateFolderRepository.createImplementation({
75
+ implementation: CreateFolderRepositoryImpl,
76
+ dependencies: [
77
+ CreateEntryUseCase,
78
+ ListLatestEntriesUseCase,
79
+ GetEntryByIdUseCase,
80
+ FolderModel
81
+ ]
106
82
  });
83
+ export { CreateFolderRepository_CreateFolderRepository as CreateFolderRepository };
107
84
 
108
85
  //# sourceMappingURL=CreateFolderRepository.js.map
@@ -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":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,sBAAsB,IAAIC,qBAAqB;AAGnD,SAASC,kBAAkB,QAAQ,4DAA4D;AAC/F,SAASC,wBAAwB,QAAQ,4DAA4D;AACrG,SAASC,mBAAmB,QAAQ,6DAA6D;AACjG,SAASC,WAAW;AAEpB,SAASC,mBAAmB;AAC5B,SAASC,sBAAsB,EAAEC,qBAAqB;AACtD,SAASC,IAAI;AACb,SAASC,OAAO,QAAQ,mDAAmD;AAE3E,MAAMC,0BAA0B,CAAoC;EAChEC,WAAWA,CACCC,WAAyC,EACzCC,iBAAqD,EACrDC,YAA2C,EAC3CC,WAAkC,EAC5C;IAAA,KAJUH,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,iBAAqD,GAArDA,iBAAqD;IAAA,KACrDC,YAA2C,GAA3CA,YAA2C;IAAA,KAC3CC,WAAkC,GAAlCA,WAAkC;EAC3C;EAEH,MAAMC,OAAOA,CAACC,IAAwB,EAAwD;IAC1F;IACA,MAAMC,WAAW,GAAG,MAAM,IAAI,CAACC,mBAAmB,CAAC;MAC/CC,IAAI,EAAEH,IAAI,CAACG,IAAI;MACfC,IAAI,EAAEJ,IAAI,CAACI,IAAI;MACfC,QAAQ,EAAEL,IAAI,CAACK;IACnB,CAAC,CAAC;IAEF,IAAIJ,WAAW,CAACK,MAAM,CAAC,CAAC,EAAE;MACtB,OAAOzB,MAAM,CAAC0B,IAAI,CAACN,WAAW,CAACO,KAAK,CAAC;IACzC;;IAEA;IACA,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACC,gBAAgB,CAAC;MAC3CN,IAAI,EAAEJ,IAAI,CAACI,IAAI;MACfC,QAAQ,EAAEL,IAAI,CAACK;IACnB,CAAC,CAAC;IAEF,IAAII,UAAU,CAACH,MAAM,CAAC,CAAC,EAAE;MACrB,OAAOzB,MAAM,CAAC0B,IAAI,CAACE,UAAU,CAACD,KAAK,CAAC;IACxC;;IAEA;IACA,MAAMG,MAAM,GAAG,MAAM,IAAI,CAAChB,WAAW,CAACI,OAAO,CAAiB,IAAI,CAACD,WAAW,EAAE;MAC5Ec,MAAM,EAAE;QACJ,GAAGZ,IAAI;QACPK,QAAQ,EAAEL,IAAI,CAACK,QAAQ,IAAI,IAAI;QAC/BQ,IAAI,EAAEJ,UAAU,CAACK;MACrB;IACJ,CAAC,CAAC;IAEF,IAAIH,MAAM,CAACL,MAAM,CAAC,CAAC,EAAE;MACjB,IAAIK,MAAM,CAACH,KAAK,CAACO,IAAI,KAAK,2BAA2B,EAAE;QACnD,OAAOlC,MAAM,CAAC0B,IAAI,CAAC,IAAIjB,qBAAqB,CAACqB,MAAM,CAACH,KAAK,CAACQ,OAAO,CAAC,CAAC;MACvE;MACA,OAAOnC,MAAM,CAAC0B,IAAI,CAAC,IAAIlB,sBAAsB,CAACsB,MAAM,CAACH,KAAK,CAAC,CAAC;IAChE;IAEA,MAAMS,MAAM,GAAG7B,mBAAmB,CAAC8B,QAAQ,CAACP,MAAM,CAACG,KAAK,CAAC;IACzD,OAAOjC,MAAM,CAACsC,EAAE,CAACF,MAAM,CAAC;EAC5B;EAEA,MAAcf,mBAAmBA,CAACkB,MAKjC,EAAsD;IACnD,MAAM;MAAEjB,IAAI;MAAEC,IAAI;MAAEC,QAAQ;MAAEgB;IAAU,CAAC,GAAGD,MAAM;IAElD,MAAMT,MAAM,GAAG,MAAM,IAAI,CAACf,iBAAiB,CAACG,OAAO,CAAiB,IAAI,CAACD,WAAW,EAAE;MAClFwB,KAAK,EAAE;QACHC,MAAM,EAAE,IAAI;QACZX,MAAM,EAAE;UACJT,IAAI;UACJC,IAAI;UACJC;QACJ,CAAC;QACD,IAAIgB,SAAS,GAAG;UAAEG,WAAW,EAAEH;QAAU,CAAC,GAAG,CAAC,CAAC;MACnD,CAAC;MACDI,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,IAAId,MAAM,CAACL,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOzB,MAAM,CAAC0B,IAAI,CAAC,IAAIlB,sBAAsB,CAACsB,MAAM,CAACH,KAAK,CAAC,CAAC;IAChE;IAEA,MAAM;MAAEkB;IAAQ,CAAC,GAAGf,MAAM,CAACG,KAAK;IAEhC,IAAIY,OAAO,CAACC,MAAM,GAAG,CAAC,EAAE;MACpB,OAAO9C,MAAM,CAAC0B,IAAI,CACd,IAAIjB,qBAAqB,CACrB,qBAAqBc,IAAI,iCAC7B,CACJ,CAAC;IACL;IAEA,OAAOvB,MAAM,CAACsC,EAAE,CAAC,CAAC;EACtB;EAEA,MAAcT,gBAAgBA,CAACU,MAG9B,EAAwD;IACrD,MAAM;MAAEhB,IAAI;MAAEC;IAAS,CAAC,GAAGe,MAAM;IAEjC,IAAI,CAACf,QAAQ,EAAE;MACX,OAAOxB,MAAM,CAACsC,EAAE,CAAC5B,IAAI,CAACqC,MAAM,CAACxB,IAAI,CAAC,CAAC;IACvC;IAEA,MAAMyB,YAAY,GAAG,MAAM,IAAI,CAAChC,YAAY,CAACE,OAAO,CAChD,IAAI,CAACD,WAAW,EAChBN,OAAO,CAACsC,IAAI,CAACzB,QAAQ,CAAC,CAAC0B,QAAQ,CAAC,CACpC,CAAC;IAED,IAAIF,YAAY,CAACvB,MAAM,CAAC,CAAC,EAAE;MACvB,OAAOzB,MAAM,CAAC0B,IAAI,CACd,IAAIlB,sBAAsB,CACtB,IAAI2C,KAAK,CAAC,2DAA2D,CACzE,CACJ,CAAC;IACL;IAEA,MAAMC,YAAY,GAAG7C,mBAAmB,CAAC8B,QAAQ,CAACW,YAAY,CAACf,KAAK,CAAC;IACrE,OAAOjC,MAAM,CAACsC,EAAE,CAAC5B,IAAI,CAACqC,MAAM,CAACxB,IAAI,EAAE6B,YAAY,CAACpB,IAAI,CAAC,CAAC;EAC1D;AACJ;AAEA,OAAO,MAAM/B,sBAAsB,GAAGC,qBAAqB,CAACmD,oBAAoB,CAAC;EAC7EC,cAAc,EAAE1C,0BAA0B;EAC1C2C,YAAY,EAAE,CAACpD,kBAAkB,EAAEC,wBAAwB,EAAEC,mBAAmB,EAAEC,WAAW;AACjG,CAAC,CAAC","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 { 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"],"names":["CreateFolderRepositoryImpl","createEntry","listLatestEntries","getEntryById","folderModel","data","checkResult","Result","pathResult","result","FolderValidationError","FolderPersistenceError","folder","EntryToFolderMapper","params","type","slug","parentId","excludeId","entries","Path","parentResult","EntryId","Error","parentFolder","CreateFolderRepository","RepositoryAbstraction","CreateEntryUseCase","ListLatestEntriesUseCase","GetEntryByIdUseCase","FolderModel"],"mappings":";;;;;;;;;;AAeA,MAAMA;IACF,YACYC,WAAyC,EACzCC,iBAAqD,EACrDC,YAA2C,EAC3CC,WAAkC,CAC5C;aAJUH,WAAW,GAAXA;aACAC,iBAAiB,GAAjBA;aACAC,YAAY,GAAZA;aACAC,WAAW,GAAXA;IACT;IAEH,MAAM,QAAQC,IAAwB,EAAwD;QAE1F,MAAMC,cAAc,MAAM,IAAI,CAAC,mBAAmB,CAAC;YAC/C,MAAMD,KAAK,IAAI;YACf,MAAMA,KAAK,IAAI;YACf,UAAUA,KAAK,QAAQ;QAC3B;QAEA,IAAIC,YAAY,MAAM,IAClB,OAAOC,OAAO,IAAI,CAACD,YAAY,KAAK;QAIxC,MAAME,aAAa,MAAM,IAAI,CAAC,gBAAgB,CAAC;YAC3C,MAAMH,KAAK,IAAI;YACf,UAAUA,KAAK,QAAQ;QAC3B;QAEA,IAAIG,WAAW,MAAM,IACjB,OAAOD,OAAO,IAAI,CAACC,WAAW,KAAK;QAIvC,MAAMC,SAAS,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAiB,IAAI,CAAC,WAAW,EAAE;YAC5E,QAAQ;gBACJ,GAAGJ,IAAI;gBACP,UAAUA,KAAK,QAAQ,IAAI;gBAC3B,MAAMG,WAAW,KAAK;YAC1B;QACJ;QAEA,IAAIC,OAAO,MAAM,IAAI;YACjB,IAAIA,AAAsB,gCAAtBA,OAAO,KAAK,CAAC,IAAI,EACjB,OAAOF,OAAO,IAAI,CAAC,IAAIG,sBAAsBD,OAAO,KAAK,CAAC,OAAO;YAErE,OAAOF,OAAO,IAAI,CAAC,IAAII,uBAAuBF,OAAO,KAAK;QAC9D;QAEA,MAAMG,SAASC,oBAAoB,QAAQ,CAACJ,OAAO,KAAK;QACxD,OAAOF,OAAO,EAAE,CAACK;IACrB;IAEA,MAAc,oBAAoBE,MAKjC,EAAsD;QACnD,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGJ;QAE5C,MAAML,SAAS,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAiB,IAAI,CAAC,WAAW,EAAE;YAClF,OAAO;gBACH,QAAQ;gBACR,QAAQ;oBACJM;oBACAC;oBACAC;gBACJ;gBACA,GAAIC,YAAY;oBAAE,aAAaA;gBAAU,IAAI,CAAC,CAAC;YACnD;YACA,OAAO;QACX;QAEA,IAAIT,OAAO,MAAM,IACb,OAAOF,OAAO,IAAI,CAAC,IAAII,uBAAuBF,OAAO,KAAK;QAG9D,MAAM,EAAEU,OAAO,EAAE,GAAGV,OAAO,KAAK;QAEhC,IAAIU,QAAQ,MAAM,GAAG,GACjB,OAAOZ,OAAO,IAAI,CACd,IAAIG,sBACA,CAAC,kBAAkB,EAAEM,KAAK,+BAA+B,CAAC;QAKtE,OAAOT,OAAO,EAAE;IACpB;IAEA,MAAc,iBAAiBO,MAG9B,EAAwD;QACrD,MAAM,EAAEE,IAAI,EAAEC,QAAQ,EAAE,GAAGH;QAE3B,IAAI,CAACG,UACD,OAAOV,OAAO,EAAE,CAACa,KAAK,MAAM,CAACJ;QAGjC,MAAMK,eAAe,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAChD,IAAI,CAAC,WAAW,EAChBC,QAAQ,IAAI,CAACL,UAAU,QAAQ;QAGnC,IAAII,aAAa,MAAM,IACnB,OAAOd,OAAO,IAAI,CACd,IAAII,uBACA,IAAIY,MAAM;QAKtB,MAAMC,eAAeX,oBAAoB,QAAQ,CAACQ,aAAa,KAAK;QACpE,OAAOd,OAAO,EAAE,CAACa,KAAK,MAAM,CAACJ,MAAMQ,aAAa,IAAI;IACxD;AACJ;AAEO,MAAMC,gDAAyBC,uBAAAA,oBAA0C,CAAC;IAC7E,gBAAgB1B;IAChB,cAAc;QAAC2B;QAAoBC;QAA0BC;QAAqBC;KAAY;AAClG"}
@@ -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,44 +1,39 @@
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
5
  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();
6
+ constructor(folderLevelPermissions, decoretee){
7
+ this.folderLevelPermissions = folderLevelPermissions;
8
+ this.decoretee = decoretee;
20
9
  }
21
- if (!canCreateFolder) {
22
- return Result.fail(new FolderNotAuthorizedError());
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 canCreateFolder = this.folderLevelPermissions.canCreateFolderInRoot();
19
+ if (!canCreateFolder) return Result.fail(new FolderNotAuthorizedError());
20
+ const result = await this.decoretee.execute(params);
21
+ if (result.isFail()) return Result.fail(result.error);
22
+ const folder = result.value;
23
+ const permissionsWithDefaults = await this.folderLevelPermissions.getDefaultPermissions(folder?.permissions ?? []);
24
+ return Result.ok({
25
+ ...folder,
26
+ permissions: permissionsWithDefaults
27
+ });
23
28
  }
24
- const result = await this.decoretee.execute(params);
25
- if (result.isFail()) {
26
- return Result.fail(result.error);
27
- }
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
29
  }
38
- export const CreateFolderWithFolderLevelPermissions = createDecorator({
39
- abstraction: CreateFolderUseCase,
40
- decorator: CreateFolderWithFolderLevelPermissionsImpl,
41
- dependencies: [FolderLevelPermissions]
30
+ const CreateFolderWithFolderLevelPermissions = createDecorator({
31
+ abstraction: CreateFolderUseCase,
32
+ decorator: CreateFolderWithFolderLevelPermissionsImpl,
33
+ dependencies: [
34
+ FolderLevelPermissions
35
+ ]
42
36
  });
37
+ export { CreateFolderWithFolderLevelPermissions };
43
38
 
44
39
  //# sourceMappingURL=CreateFolderWithFolderLevelPermissions.js.map