@webiny/api-aco 5.43.0-beta.0 → 5.43.0-beta.2

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 (384) hide show
  1. package/apps/AcoApp.js +4 -4
  2. package/apps/AcoApp.js.map +1 -1
  3. package/constants.d.ts +3 -0
  4. package/constants.js +11 -0
  5. package/constants.js.map +1 -0
  6. package/createAcoContext.d.ts +3 -1
  7. package/createAcoContext.js +13 -99
  8. package/createAcoContext.js.map +1 -1
  9. package/createAcoHooks.js +2 -0
  10. package/createAcoHooks.js.map +1 -1
  11. package/createAcoStorageOperations.d.ts +2 -0
  12. package/createAcoStorageOperations.js +5 -3
  13. package/createAcoStorageOperations.js.map +1 -1
  14. package/createAcoTasks.d.ts +1 -0
  15. package/createAcoTasks.js +13 -0
  16. package/createAcoTasks.js.map +1 -0
  17. package/filter/filter.crud.js +7 -7
  18. package/filter/filter.crud.js.map +1 -1
  19. package/flp/FolderLevelPermissions/gateways/GetIdentityGateway/GetIdentityGatewayFromContext.d.ts +7 -0
  20. package/flp/FolderLevelPermissions/gateways/GetIdentityGateway/GetIdentityGatewayFromContext.js +17 -0
  21. package/flp/FolderLevelPermissions/gateways/GetIdentityGateway/GetIdentityGatewayFromContext.js.map +1 -0
  22. package/flp/FolderLevelPermissions/gateways/GetIdentityGateway/IGetIdentityGateway.d.ts +4 -0
  23. package/flp/FolderLevelPermissions/gateways/GetIdentityGateway/IGetIdentityGateway.js +7 -0
  24. package/flp/FolderLevelPermissions/gateways/GetIdentityGateway/IGetIdentityGateway.js.map +1 -0
  25. package/flp/FolderLevelPermissions/gateways/GetIdentityGateway/index.d.ts +2 -0
  26. package/flp/FolderLevelPermissions/gateways/GetIdentityGateway/index.js +29 -0
  27. package/flp/FolderLevelPermissions/gateways/GetIdentityGateway/index.js.map +1 -0
  28. package/flp/FolderLevelPermissions/gateways/GetWcpGateway/GetWcpGatewayFromContext.d.ts +7 -0
  29. package/flp/FolderLevelPermissions/gateways/GetWcpGateway/GetWcpGatewayFromContext.js +17 -0
  30. package/flp/FolderLevelPermissions/gateways/GetWcpGateway/GetWcpGatewayFromContext.js.map +1 -0
  31. package/flp/FolderLevelPermissions/gateways/GetWcpGateway/IGetWcpGateway.d.ts +4 -0
  32. package/flp/FolderLevelPermissions/gateways/GetWcpGateway/IGetWcpGateway.js +7 -0
  33. package/flp/FolderLevelPermissions/gateways/GetWcpGateway/IGetWcpGateway.js.map +1 -0
  34. package/flp/FolderLevelPermissions/gateways/GetWcpGateway/index.d.ts +2 -0
  35. package/flp/FolderLevelPermissions/gateways/GetWcpGateway/index.js +29 -0
  36. package/flp/FolderLevelPermissions/gateways/GetWcpGateway/index.js.map +1 -0
  37. package/flp/FolderLevelPermissions/gateways/IsAuthorizationEnabled/IIsAuthorizationEnabledGateway.d.ts +3 -0
  38. package/flp/FolderLevelPermissions/gateways/IsAuthorizationEnabled/IIsAuthorizationEnabledGateway.js +7 -0
  39. package/flp/FolderLevelPermissions/gateways/IsAuthorizationEnabled/IIsAuthorizationEnabledGateway.js.map +1 -0
  40. package/flp/FolderLevelPermissions/gateways/IsAuthorizationEnabled/IsAuthorizationEnabledGatewayFromContext.d.ts +7 -0
  41. package/flp/FolderLevelPermissions/gateways/IsAuthorizationEnabled/IsAuthorizationEnabledGatewayFromContext.js +17 -0
  42. package/flp/FolderLevelPermissions/gateways/IsAuthorizationEnabled/IsAuthorizationEnabledGatewayFromContext.js.map +1 -0
  43. package/flp/FolderLevelPermissions/gateways/IsAuthorizationEnabled/index.d.ts +2 -0
  44. package/flp/FolderLevelPermissions/gateways/IsAuthorizationEnabled/index.js +29 -0
  45. package/flp/FolderLevelPermissions/gateways/IsAuthorizationEnabled/index.js.map +1 -0
  46. package/flp/FolderLevelPermissions/gateways/ListIdentityTeamsGateway/IListIdentityTeamsGateway.d.ts +4 -0
  47. package/flp/FolderLevelPermissions/gateways/ListIdentityTeamsGateway/IListIdentityTeamsGateway.js +7 -0
  48. package/flp/FolderLevelPermissions/gateways/ListIdentityTeamsGateway/IListIdentityTeamsGateway.js.map +1 -0
  49. package/flp/FolderLevelPermissions/gateways/ListIdentityTeamsGateway/ListIdentityTeamsGatewayFromContext.d.ts +7 -0
  50. package/flp/FolderLevelPermissions/gateways/ListIdentityTeamsGateway/ListIdentityTeamsGatewayFromContext.js +39 -0
  51. package/flp/FolderLevelPermissions/gateways/ListIdentityTeamsGateway/ListIdentityTeamsGatewayFromContext.js.map +1 -0
  52. package/flp/FolderLevelPermissions/gateways/ListIdentityTeamsGateway/index.d.ts +2 -0
  53. package/flp/FolderLevelPermissions/gateways/ListIdentityTeamsGateway/index.js +29 -0
  54. package/flp/FolderLevelPermissions/gateways/ListIdentityTeamsGateway/index.js.map +1 -0
  55. package/flp/FolderLevelPermissions/gateways/ListPermissionsGateway/IListPermissionsGateway.d.ts +4 -0
  56. package/flp/FolderLevelPermissions/gateways/ListPermissionsGateway/IListPermissionsGateway.js +7 -0
  57. package/flp/FolderLevelPermissions/gateways/ListPermissionsGateway/IListPermissionsGateway.js.map +1 -0
  58. package/flp/FolderLevelPermissions/gateways/ListPermissionsGateway/ListPermissionsGatewayFromContext.d.ts +7 -0
  59. package/flp/FolderLevelPermissions/gateways/ListPermissionsGateway/ListPermissionsGatewayFromContext.js +17 -0
  60. package/flp/FolderLevelPermissions/gateways/ListPermissionsGateway/ListPermissionsGatewayFromContext.js.map +1 -0
  61. package/flp/FolderLevelPermissions/gateways/ListPermissionsGateway/index.d.ts +2 -0
  62. package/flp/FolderLevelPermissions/gateways/ListPermissionsGateway/index.js +29 -0
  63. package/flp/FolderLevelPermissions/gateways/ListPermissionsGateway/index.js.map +1 -0
  64. package/flp/FolderLevelPermissions/gateways/index.d.ts +5 -0
  65. package/flp/FolderLevelPermissions/gateways/index.js +62 -0
  66. package/flp/FolderLevelPermissions/gateways/index.js.map +1 -0
  67. package/flp/FolderLevelPermissions/index.d.ts +33 -0
  68. package/flp/FolderLevelPermissions/index.js +116 -0
  69. package/flp/FolderLevelPermissions/index.js.map +1 -0
  70. package/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.d.ts +7 -0
  71. package/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.js +48 -0
  72. package/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.js.map +1 -0
  73. package/flp/FolderLevelPermissions/useCases/CanAccessFolder/ICanAccessFolder.d.ts +9 -0
  74. package/flp/FolderLevelPermissions/useCases/CanAccessFolder/ICanAccessFolder.js +7 -0
  75. package/flp/FolderLevelPermissions/useCases/CanAccessFolder/ICanAccessFolder.js.map +1 -0
  76. package/flp/FolderLevelPermissions/useCases/CanAccessFolder/index.d.ts +2 -0
  77. package/flp/FolderLevelPermissions/useCases/CanAccessFolder/index.js +29 -0
  78. package/flp/FolderLevelPermissions/useCases/CanAccessFolder/index.js.map +1 -0
  79. package/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.d.ts +7 -0
  80. package/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.js +41 -0
  81. package/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.js.map +1 -0
  82. package/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/ICanAccessFolderContent.d.ts +8 -0
  83. package/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/ICanAccessFolderContent.js +7 -0
  84. package/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/ICanAccessFolderContent.js.map +1 -0
  85. package/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/index.d.ts +2 -0
  86. package/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/index.js +29 -0
  87. package/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/index.js.map +1 -0
  88. package/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.d.ts +4 -0
  89. package/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.js +14 -0
  90. package/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.js.map +1 -0
  91. package/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/ICanCreateFolderInRoot.d.ts +3 -0
  92. package/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/ICanCreateFolderInRoot.js +7 -0
  93. package/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/ICanCreateFolderInRoot.js.map +1 -0
  94. package/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/index.d.ts +2 -0
  95. package/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/index.js +29 -0
  96. package/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/index.js.map +1 -0
  97. package/flp/FolderLevelPermissions/useCases/CanUseFolderLevelPermissions/CanUseFolderLevelPermissions.d.ts +9 -0
  98. package/flp/FolderLevelPermissions/useCases/CanUseFolderLevelPermissions/CanUseFolderLevelPermissions.js +34 -0
  99. package/flp/FolderLevelPermissions/useCases/CanUseFolderLevelPermissions/CanUseFolderLevelPermissions.js.map +1 -0
  100. package/flp/FolderLevelPermissions/useCases/CanUseFolderLevelPermissions/ICanUseFolderPermissions.d.ts +3 -0
  101. package/flp/FolderLevelPermissions/useCases/CanUseFolderLevelPermissions/ICanUseFolderPermissions.js +7 -0
  102. package/flp/FolderLevelPermissions/useCases/CanUseFolderLevelPermissions/ICanUseFolderPermissions.js.map +1 -0
  103. package/flp/FolderLevelPermissions/useCases/CanUseFolderLevelPermissions/index.d.ts +2 -0
  104. package/flp/FolderLevelPermissions/useCases/CanUseFolderLevelPermissions/index.js +29 -0
  105. package/flp/FolderLevelPermissions/useCases/CanUseFolderLevelPermissions/index.js.map +1 -0
  106. package/flp/FolderLevelPermissions/useCases/CanUseTeams/CanUseTeams.d.ts +7 -0
  107. package/flp/FolderLevelPermissions/useCases/CanUseTeams/CanUseTeams.js +17 -0
  108. package/flp/FolderLevelPermissions/useCases/CanUseTeams/CanUseTeams.js.map +1 -0
  109. package/flp/FolderLevelPermissions/useCases/CanUseTeams/ICanUseTeams.d.ts +3 -0
  110. package/flp/FolderLevelPermissions/useCases/CanUseTeams/ICanUseTeams.js +7 -0
  111. package/flp/FolderLevelPermissions/useCases/CanUseTeams/ICanUseTeams.js.map +1 -0
  112. package/flp/FolderLevelPermissions/useCases/CanUseTeams/index.d.ts +2 -0
  113. package/flp/FolderLevelPermissions/useCases/CanUseTeams/index.js +29 -0
  114. package/flp/FolderLevelPermissions/useCases/CanUseTeams/index.js.map +1 -0
  115. package/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.d.ts +5 -0
  116. package/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.js +14 -0
  117. package/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.js.map +1 -0
  118. package/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/ICheckNotInheritedPermissions.d.ts +4 -0
  119. package/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/ICheckNotInheritedPermissions.js +7 -0
  120. package/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/ICheckNotInheritedPermissions.js.map +1 -0
  121. package/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/index.d.ts +2 -0
  122. package/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/index.js +29 -0
  123. package/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/index.js.map +1 -0
  124. package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.d.ts +10 -0
  125. package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.js +53 -0
  126. package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.js.map +1 -0
  127. package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.d.ts +10 -0
  128. package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js +40 -0
  129. package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js.map +1 -0
  130. package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/IGetDefaultPermissions.d.ts +4 -0
  131. package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/IGetDefaultPermissions.js +7 -0
  132. package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/IGetDefaultPermissions.js.map +1 -0
  133. package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/index.d.ts +3 -0
  134. package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/index.js +40 -0
  135. package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/index.js.map +1 -0
  136. package/flp/FolderLevelPermissions/useCases/GetFolderPermission/GetFolderPermission.d.ts +7 -0
  137. package/flp/FolderLevelPermissions/useCases/GetFolderPermission/GetFolderPermission.js +17 -0
  138. package/flp/FolderLevelPermissions/useCases/GetFolderPermission/GetFolderPermission.js.map +1 -0
  139. package/flp/FolderLevelPermissions/useCases/GetFolderPermission/IGetFolderPermission.d.ts +4 -0
  140. package/flp/FolderLevelPermissions/useCases/GetFolderPermission/IGetFolderPermission.js +7 -0
  141. package/flp/FolderLevelPermissions/useCases/GetFolderPermission/IGetFolderPermission.js.map +1 -0
  142. package/flp/FolderLevelPermissions/useCases/GetFolderPermission/index.d.ts +2 -0
  143. package/flp/FolderLevelPermissions/useCases/GetFolderPermission/index.js +29 -0
  144. package/flp/FolderLevelPermissions/useCases/GetFolderPermission/index.js.map +1 -0
  145. package/flp/FolderLevelPermissions/useCases/ListFolderPermissions/IListFolderPermissions.d.ts +4 -0
  146. package/flp/FolderLevelPermissions/useCases/ListFolderPermissions/IListFolderPermissions.js +7 -0
  147. package/flp/FolderLevelPermissions/useCases/ListFolderPermissions/IListFolderPermissions.js.map +1 -0
  148. package/flp/FolderLevelPermissions/useCases/ListFolderPermissions/ListFolderPermissions.d.ts +7 -0
  149. package/flp/FolderLevelPermissions/useCases/ListFolderPermissions/ListFolderPermissions.js +17 -0
  150. package/flp/FolderLevelPermissions/useCases/ListFolderPermissions/ListFolderPermissions.js.map +1 -0
  151. package/flp/FolderLevelPermissions/useCases/ListFolderPermissions/index.d.ts +2 -0
  152. package/flp/FolderLevelPermissions/useCases/ListFolderPermissions/index.js +18 -0
  153. package/flp/FolderLevelPermissions/useCases/ListFolderPermissions/index.js.map +1 -0
  154. package/flp/FolderLevelPermissions/useCases/index.d.ts +9 -0
  155. package/flp/FolderLevelPermissions/useCases/index.js +106 -0
  156. package/flp/FolderLevelPermissions/useCases/index.js.map +1 -0
  157. package/flp/flp.crud.d.ts +9 -0
  158. package/flp/flp.crud.js +172 -0
  159. package/flp/flp.crud.js.map +1 -0
  160. package/flp/flp.so.d.ts +26 -0
  161. package/flp/flp.so.js +304 -0
  162. package/flp/flp.so.js.map +1 -0
  163. package/flp/flp.types.d.ts +159 -0
  164. package/flp/flp.types.js +7 -0
  165. package/flp/flp.types.js.map +1 -0
  166. package/flp/hooks/index.d.ts +2 -0
  167. package/flp/hooks/index.js +17 -0
  168. package/flp/hooks/index.js.map +1 -0
  169. package/flp/hooks/onFolderAfterCreateFlp.hook.d.ts +2 -0
  170. package/flp/hooks/onFolderAfterCreateFlp.hook.js +37 -0
  171. package/flp/hooks/onFolderAfterCreateFlp.hook.js.map +1 -0
  172. package/flp/hooks/onFolderAfterDeleteFlp.hook.d.ts +2 -0
  173. package/flp/hooks/onFolderAfterDeleteFlp.hook.js +37 -0
  174. package/flp/hooks/onFolderAfterDeleteFlp.hook.js.map +1 -0
  175. package/flp/hooks/onFolderAfterUpdateFlp.hook.d.ts +2 -0
  176. package/flp/hooks/onFolderAfterUpdateFlp.hook.js +39 -0
  177. package/flp/hooks/onFolderAfterUpdateFlp.hook.js.map +1 -0
  178. package/flp/index.d.ts +5 -0
  179. package/flp/index.js +62 -0
  180. package/flp/index.js.map +1 -0
  181. package/flp/tasks/createFlp.task.d.ts +2 -0
  182. package/flp/tasks/createFlp.task.js +49 -0
  183. package/flp/tasks/createFlp.task.js.map +1 -0
  184. package/flp/tasks/deleteFlp.task.d.ts +2 -0
  185. package/flp/tasks/deleteFlp.task.js +49 -0
  186. package/flp/tasks/deleteFlp.task.js.map +1 -0
  187. package/flp/tasks/index.d.ts +5 -0
  188. package/flp/tasks/index.js +20 -0
  189. package/flp/tasks/index.js.map +1 -0
  190. package/flp/tasks/syncFlp.task.d.ts +2 -0
  191. package/flp/tasks/syncFlp.task.js +126 -0
  192. package/flp/tasks/syncFlp.task.js.map +1 -0
  193. package/flp/tasks/updateFlp.task.d.ts +2 -0
  194. package/flp/tasks/updateFlp.task.js +55 -0
  195. package/flp/tasks/updateFlp.task.js.map +1 -0
  196. package/flp/useCases/CreateFlp.d.ts +7 -0
  197. package/flp/useCases/CreateFlp.js +52 -0
  198. package/flp/useCases/CreateFlp.js.map +1 -0
  199. package/flp/useCases/DeleteFlp.d.ts +6 -0
  200. package/flp/useCases/DeleteFlp.js +30 -0
  201. package/flp/useCases/DeleteFlp.js.map +1 -0
  202. package/flp/useCases/Path.d.ts +3 -0
  203. package/flp/useCases/Path.js +18 -0
  204. package/flp/useCases/Path.js.map +1 -0
  205. package/flp/useCases/Permissions.d.ts +4 -0
  206. package/flp/useCases/Permissions.js +38 -0
  207. package/flp/useCases/Permissions.js.map +1 -0
  208. package/flp/useCases/UpdateFlp.d.ts +25 -0
  209. package/flp/useCases/UpdateFlp.js +182 -0
  210. package/flp/useCases/UpdateFlp.js.map +1 -0
  211. package/flp/useCases/index.d.ts +3 -0
  212. package/flp/useCases/index.js +40 -0
  213. package/flp/useCases/index.js.map +1 -0
  214. package/folder/createFolderTypeDefs.js +13 -2
  215. package/folder/createFolderTypeDefs.js.map +1 -1
  216. package/folder/folder.crud.d.ts +3 -6
  217. package/folder/folder.crud.js +90 -231
  218. package/folder/folder.crud.js.map +1 -1
  219. package/folder/folder.gql.js +30 -8
  220. package/folder/folder.gql.js.map +1 -1
  221. package/folder/folder.model.js +3 -0
  222. package/folder/folder.model.js.map +1 -1
  223. package/folder/folder.so.js +4 -1
  224. package/folder/folder.so.js.map +1 -1
  225. package/folder/folder.types.d.ts +17 -3
  226. package/folder/folder.types.js.map +1 -1
  227. package/folder/useCases/CreateFolder/CreateFolder.d.ts +7 -0
  228. package/folder/useCases/CreateFolder/CreateFolder.js +19 -0
  229. package/folder/useCases/CreateFolder/CreateFolder.js.map +1 -0
  230. package/folder/useCases/CreateFolder/CreateFolderWithEvents.d.ts +9 -0
  231. package/folder/useCases/CreateFolder/CreateFolderWithEvents.js +25 -0
  232. package/folder/useCases/CreateFolder/CreateFolderWithEvents.js.map +1 -0
  233. package/folder/useCases/CreateFolder/CreateFolderWithFolderLevelPermissions.d.ts +24 -0
  234. package/folder/useCases/CreateFolder/CreateFolderWithFolderLevelPermissions.js +39 -0
  235. package/folder/useCases/CreateFolder/CreateFolderWithFolderLevelPermissions.js.map +1 -0
  236. package/folder/useCases/CreateFolder/ICreateFolder.d.ts +4 -0
  237. package/folder/useCases/CreateFolder/ICreateFolder.js +7 -0
  238. package/folder/useCases/CreateFolder/ICreateFolder.js.map +1 -0
  239. package/folder/useCases/CreateFolder/index.d.ts +17 -0
  240. package/folder/useCases/CreateFolder/index.js +20 -0
  241. package/folder/useCases/CreateFolder/index.js.map +1 -0
  242. package/folder/useCases/DeleteFolder/DeleteFolder.d.ts +7 -0
  243. package/folder/useCases/DeleteFolder/DeleteFolder.js +18 -0
  244. package/folder/useCases/DeleteFolder/DeleteFolder.js.map +1 -0
  245. package/folder/useCases/DeleteFolder/DeleteFolderWithEvents.d.ts +10 -0
  246. package/folder/useCases/DeleteFolder/DeleteFolderWithEvents.js +29 -0
  247. package/folder/useCases/DeleteFolder/DeleteFolderWithEvents.js.map +1 -0
  248. package/folder/useCases/DeleteFolder/DeleteFolderWithFolderLevelPermissions.d.ts +9 -0
  249. package/folder/useCases/DeleteFolder/DeleteFolderWithFolderLevelPermissions.js +24 -0
  250. package/folder/useCases/DeleteFolder/DeleteFolderWithFolderLevelPermissions.js.map +1 -0
  251. package/folder/useCases/DeleteFolder/IDeleteFolder.d.ts +4 -0
  252. package/folder/useCases/DeleteFolder/IDeleteFolder.js +7 -0
  253. package/folder/useCases/DeleteFolder/IDeleteFolder.js.map +1 -0
  254. package/folder/useCases/DeleteFolder/index.d.ts +18 -0
  255. package/folder/useCases/DeleteFolder/index.js +20 -0
  256. package/folder/useCases/DeleteFolder/index.js.map +1 -0
  257. package/folder/useCases/GetAncestors/GetAncestors.d.ts +5 -0
  258. package/folder/useCases/GetAncestors/GetAncestors.js +57 -0
  259. package/folder/useCases/GetAncestors/GetAncestors.js.map +1 -0
  260. package/folder/useCases/GetAncestors/IGetAncestors.d.ts +8 -0
  261. package/folder/useCases/GetAncestors/IGetAncestors.js +7 -0
  262. package/folder/useCases/GetAncestors/IGetAncestors.js.map +1 -0
  263. package/folder/useCases/GetAncestors/index.d.ts +4 -0
  264. package/folder/useCases/GetAncestors/index.js +16 -0
  265. package/folder/useCases/GetAncestors/index.js.map +1 -0
  266. package/folder/useCases/GetFolder/GetFolder.d.ts +7 -0
  267. package/folder/useCases/GetFolder/GetFolder.js +17 -0
  268. package/folder/useCases/GetFolder/GetFolder.js.map +1 -0
  269. package/folder/useCases/GetFolder/GetFolderWithFolderLevelPermissions.d.ts +24 -0
  270. package/folder/useCases/GetFolder/GetFolderWithFolderLevelPermissions.js +33 -0
  271. package/folder/useCases/GetFolder/GetFolderWithFolderLevelPermissions.js.map +1 -0
  272. package/folder/useCases/GetFolder/IGetFolder.d.ts +4 -0
  273. package/folder/useCases/GetFolder/IGetFolder.js +7 -0
  274. package/folder/useCases/GetFolder/IGetFolder.js.map +1 -0
  275. package/folder/useCases/GetFolder/index.d.ts +13 -0
  276. package/folder/useCases/GetFolder/index.js +19 -0
  277. package/folder/useCases/GetFolder/index.js.map +1 -0
  278. package/folder/useCases/GetFolderHierarchy/GetFolderHierarchy.d.ts +11 -0
  279. package/folder/useCases/GetFolderHierarchy/GetFolderHierarchy.js +63 -0
  280. package/folder/useCases/GetFolderHierarchy/GetFolderHierarchy.js.map +1 -0
  281. package/folder/useCases/GetFolderHierarchy/GetFolderHierarchyWithFolderLevelPermissions.d.ts +17 -0
  282. package/folder/useCases/GetFolderHierarchy/GetFolderHierarchyWithFolderLevelPermissions.js +59 -0
  283. package/folder/useCases/GetFolderHierarchy/GetFolderHierarchyWithFolderLevelPermissions.js.map +1 -0
  284. package/folder/useCases/GetFolderHierarchy/IGetFolderHierarchy.d.ts +4 -0
  285. package/folder/useCases/GetFolderHierarchy/IGetFolderHierarchy.js +7 -0
  286. package/folder/useCases/GetFolderHierarchy/IGetFolderHierarchy.js.map +1 -0
  287. package/folder/useCases/GetFolderHierarchy/index.d.ts +12 -0
  288. package/folder/useCases/GetFolderHierarchy/index.js +18 -0
  289. package/folder/useCases/GetFolderHierarchy/index.js.map +1 -0
  290. package/folder/useCases/ListFolderLevelPermissionsTargets/IListAdminUsersGateway.d.ts +4 -0
  291. package/folder/useCases/ListFolderLevelPermissionsTargets/IListAdminUsersGateway.js +7 -0
  292. package/folder/useCases/ListFolderLevelPermissionsTargets/IListAdminUsersGateway.js.map +1 -0
  293. package/folder/useCases/ListFolderLevelPermissionsTargets/IListFolderLevelPermissionsTargets.d.ts +4 -0
  294. package/folder/useCases/ListFolderLevelPermissionsTargets/IListFolderLevelPermissionsTargets.js +7 -0
  295. package/folder/useCases/ListFolderLevelPermissionsTargets/IListFolderLevelPermissionsTargets.js.map +1 -0
  296. package/folder/useCases/ListFolderLevelPermissionsTargets/IListTeamsGateway.d.ts +4 -0
  297. package/folder/useCases/ListFolderLevelPermissionsTargets/IListTeamsGateway.js +7 -0
  298. package/folder/useCases/ListFolderLevelPermissionsTargets/IListTeamsGateway.js.map +1 -0
  299. package/folder/useCases/ListFolderLevelPermissionsTargets/ListAdminUsersGatewayFromContext.d.ts +7 -0
  300. package/folder/useCases/ListFolderLevelPermissionsTargets/ListAdminUsersGatewayFromContext.js +23 -0
  301. package/folder/useCases/ListFolderLevelPermissionsTargets/ListAdminUsersGatewayFromContext.js.map +1 -0
  302. package/folder/useCases/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargets.d.ts +13 -0
  303. package/folder/useCases/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargets.js +60 -0
  304. package/folder/useCases/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargets.js.map +1 -0
  305. package/folder/useCases/ListFolderLevelPermissionsTargets/ListTeamsGatewayFromContext.d.ts +7 -0
  306. package/folder/useCases/ListFolderLevelPermissionsTargets/ListTeamsGatewayFromContext.js +22 -0
  307. package/folder/useCases/ListFolderLevelPermissionsTargets/ListTeamsGatewayFromContext.js.map +1 -0
  308. package/folder/useCases/ListFolderLevelPermissionsTargets/index.d.ts +9 -0
  309. package/folder/useCases/ListFolderLevelPermissionsTargets/index.js +20 -0
  310. package/folder/useCases/ListFolderLevelPermissionsTargets/index.js.map +1 -0
  311. package/folder/useCases/ListFolders/IListFolders.d.ts +5 -0
  312. package/folder/useCases/ListFolders/IListFolders.js +7 -0
  313. package/folder/useCases/ListFolders/IListFolders.js.map +1 -0
  314. package/folder/useCases/ListFolders/ListFolders.d.ts +8 -0
  315. package/folder/useCases/ListFolders/ListFolders.js +17 -0
  316. package/folder/useCases/ListFolders/ListFolders.js.map +1 -0
  317. package/folder/useCases/ListFolders/ListFoldersWithFolderLevelPermissions.d.ts +14 -0
  318. package/folder/useCases/ListFolders/ListFoldersWithFolderLevelPermissions.js +67 -0
  319. package/folder/useCases/ListFolders/ListFoldersWithFolderLevelPermissions.js.map +1 -0
  320. package/folder/useCases/ListFolders/index.d.ts +13 -0
  321. package/folder/useCases/ListFolders/index.js +19 -0
  322. package/folder/useCases/ListFolders/index.js.map +1 -0
  323. package/folder/useCases/UpdateFolder/IUpdateFolder.d.ts +4 -0
  324. package/folder/useCases/UpdateFolder/IUpdateFolder.js +7 -0
  325. package/folder/useCases/UpdateFolder/IUpdateFolder.js.map +1 -0
  326. package/folder/useCases/UpdateFolder/UpdateFolder.d.ts +7 -0
  327. package/folder/useCases/UpdateFolder/UpdateFolder.js +20 -0
  328. package/folder/useCases/UpdateFolder/UpdateFolder.js.map +1 -0
  329. package/folder/useCases/UpdateFolder/UpdateFolderWithEvents.d.ts +10 -0
  330. package/folder/useCases/UpdateFolder/UpdateFolderWithEvents.js +38 -0
  331. package/folder/useCases/UpdateFolder/UpdateFolderWithEvents.js.map +1 -0
  332. package/folder/useCases/UpdateFolder/UpdateFolderWithFolderLevelPermissions.d.ts +25 -0
  333. package/folder/useCases/UpdateFolder/UpdateFolderWithFolderLevelPermissions.js +78 -0
  334. package/folder/useCases/UpdateFolder/UpdateFolderWithFolderLevelPermissions.js.map +1 -0
  335. package/folder/useCases/UpdateFolder/index.d.ts +18 -0
  336. package/folder/useCases/UpdateFolder/index.js +20 -0
  337. package/folder/useCases/UpdateFolder/index.js.map +1 -0
  338. package/folder/useCases/index.d.ts +8 -0
  339. package/folder/useCases/index.js +95 -0
  340. package/folder/useCases/index.js.map +1 -0
  341. package/index.d.ts +3 -1
  342. package/index.js +3 -2
  343. package/index.js.map +1 -1
  344. package/package.json +28 -26
  345. package/record/record.crud.js +10 -10
  346. package/record/record.crud.js.map +1 -1
  347. package/record/record.so.js +2 -1
  348. package/record/record.so.js.map +1 -1
  349. package/types.d.ts +17 -8
  350. package/types.js +12 -0
  351. package/types.js.map +1 -1
  352. package/utils/decorators/CmsEntriesCrudDecorators.js +41 -65
  353. package/utils/decorators/CmsEntriesCrudDecorators.js.map +1 -1
  354. package/utils/decorators/FilterEntriesByFolderFactory.d.ts +7 -0
  355. package/utils/decorators/FilterEntriesByFolderFactory.js +30 -0
  356. package/utils/decorators/FilterEntriesByFolderFactory.js.map +1 -0
  357. package/utils/decorators/ListEntriesFactory.d.ts +15 -0
  358. package/utils/decorators/ListEntriesFactory.js +107 -0
  359. package/utils/decorators/ListEntriesFactory.js.map +1 -0
  360. package/utils/decorators/decorateIfModelAuthorizationEnabled.js +7 -0
  361. package/utils/decorators/decorateIfModelAuthorizationEnabled.js.map +1 -1
  362. package/utils/decorators/hasRootFolderId.d.ts +7 -0
  363. package/utils/decorators/hasRootFolderId.js +27 -0
  364. package/utils/decorators/hasRootFolderId.js.map +1 -0
  365. package/utils/pickEntryFieldValues.js +1 -1
  366. package/utils/pickEntryFieldValues.js.map +1 -1
  367. package/utils/FolderLevelPermissions.d.ts +0 -75
  368. package/utils/FolderLevelPermissions.js +0 -390
  369. package/utils/FolderLevelPermissions.js.map +0 -1
  370. package/utils/decorators/constants.d.ts +0 -1
  371. package/utils/decorators/constants.js +0 -9
  372. package/utils/decorators/constants.js.map +0 -1
  373. package/utils/decorators/createFolderType.d.ts +0 -2
  374. package/utils/decorators/createFolderType.js +0 -18
  375. package/utils/decorators/createFolderType.js.map +0 -1
  376. package/utils/decorators/filterEntriesByFolderFactory.d.ts +0 -6
  377. package/utils/decorators/filterEntriesByFolderFactory.js +0 -37
  378. package/utils/decorators/filterEntriesByFolderFactory.js.map +0 -1
  379. package/utils/decorators/where.d.ts +0 -15
  380. package/utils/decorators/where.js +0 -60
  381. package/utils/decorators/where.js.map +0 -1
  382. package/utils/getFolderAndItsAncestors.d.ts +0 -7
  383. package/utils/getFolderAndItsAncestors.js +0 -53
  384. package/utils/getFolderAndItsAncestors.js.map +0 -1
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.syncFlpTask = void 0;
7
+ var _tasks = require("@webiny/tasks");
8
+ var _ = require("./");
9
+ var _constants = require("../../constants");
10
+ class SyncFlpTask {
11
+ init = () => {
12
+ return (0, _tasks.createTaskDefinition)({
13
+ id: _.SYNC_FLP_TASK_ID,
14
+ title: "ACO - Sync FLP record",
15
+ description: "Synchronizes the FLP catalog by updating the FLP record and its descendants.",
16
+ disableDatabaseLogs: true,
17
+ run: async params => {
18
+ const {
19
+ response,
20
+ isAborted,
21
+ input,
22
+ context,
23
+ store
24
+ } = params;
25
+ try {
26
+ if (isAborted()) {
27
+ return response.aborted();
28
+ }
29
+
30
+ /**
31
+ * `folderId` provided in the task input. We need to:
32
+ *
33
+ * - update the FLP records for the found folder and all its descendants.
34
+ */
35
+ if (input.folderId) {
36
+ const folder = await context.aco.folder.get(input.folderId, true);
37
+ await context.tasks.trigger({
38
+ definition: _.UPDATE_FLP_TASK_ID,
39
+ input: {
40
+ folder
41
+ }
42
+ });
43
+ return response.done(`Task completed successfully: all FLP records for folderId "${input.folderId}" and its children have been queued to be synchronized.`);
44
+ }
45
+
46
+ /**
47
+ * Full update required. We need to:
48
+ *
49
+ * - list cms models to collect their types, together with the default ones [PB_PAGE_TYPE, FM_FILE_TYPE]
50
+ * - list all root folders
51
+ * - update the FLP records for the found folders and all its descendants.
52
+ */
53
+ if (input.type && input.type === "*") {
54
+ // Some folder types are fixed: pages and files.
55
+ const folderTypes = [_constants.PB_PAGE_TYPE, _constants.FM_FILE_TYPE];
56
+
57
+ // List all non-private models for the current locale.
58
+ const models = await context.security.withoutAuthorization(async () => await context.cms.listModels());
59
+ for (const model of models) {
60
+ folderTypes.push(`cms:${model.modelId}`);
61
+ }
62
+ for (const folderType of folderTypes) {
63
+ const [folders] = await context.aco.folder.list({
64
+ where: {
65
+ type: folderType,
66
+ parentId: null
67
+ },
68
+ disablePermissions: true
69
+ });
70
+ for (const folder of folders) {
71
+ await context.tasks.trigger({
72
+ definition: _.UPDATE_FLP_TASK_ID,
73
+ input: {
74
+ folder
75
+ }
76
+ });
77
+ }
78
+ await store.addInfoLog({
79
+ message: `FLP Update task triggered for type ${folderType}`,
80
+ data: {
81
+ type: folderType
82
+ }
83
+ });
84
+ }
85
+ return response.done(`Task completed successfully: all FLP records have been queued to be synchronized.`);
86
+ }
87
+
88
+ /**
89
+ * `type` provided in the task input. We need to:
90
+ *
91
+ * - list all root folders for the provided type
92
+ * - update the FLP records for the found folders and all its descendants.
93
+ */
94
+ if (input.type) {
95
+ const [folders] = await context.aco.folder.list({
96
+ where: {
97
+ type: input.type,
98
+ parentId: null
99
+ },
100
+ disablePermissions: true
101
+ });
102
+ for (const folder of folders) {
103
+ await context.tasks.trigger({
104
+ definition: _.UPDATE_FLP_TASK_ID,
105
+ input: {
106
+ folder
107
+ }
108
+ });
109
+ }
110
+ return response.done(`Task completed successfully: all FLP records for type "${input.type}" have been queued to be synchronized.`);
111
+ }
112
+ return response.error("Invalid input: please provide either `type` or `folderId`.");
113
+ } catch (error) {
114
+ return response.error(error);
115
+ }
116
+ }
117
+ });
118
+ };
119
+ }
120
+ const syncFlpTask = () => {
121
+ const task = new SyncFlpTask();
122
+ return task.init();
123
+ };
124
+ exports.syncFlpTask = syncFlpTask;
125
+
126
+ //# sourceMappingURL=syncFlp.task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_tasks","require","_","_constants","SyncFlpTask","init","createTaskDefinition","id","SYNC_FLP_TASK_ID","title","description","disableDatabaseLogs","run","params","response","isAborted","input","context","store","aborted","folderId","folder","aco","get","tasks","trigger","definition","UPDATE_FLP_TASK_ID","done","type","folderTypes","PB_PAGE_TYPE","FM_FILE_TYPE","models","security","withoutAuthorization","cms","listModels","model","push","modelId","folderType","folders","list","where","parentId","disablePermissions","addInfoLog","message","data","error","syncFlpTask","task","exports"],"sources":["syncFlp.task.ts"],"sourcesContent":["import { createTaskDefinition } from \"@webiny/tasks\";\nimport { SYNC_FLP_TASK_ID, UPDATE_FLP_TASK_ID } from \"~/flp/tasks\";\nimport {\n type AcoContext,\n type ISyncFlpTaskInput,\n type ISyncFlpTaskParams,\n type IUpdateFlpTaskInput\n} from \"~/types\";\nimport { PB_PAGE_TYPE, FM_FILE_TYPE } from \"~/constants\";\n\nclass SyncFlpTask {\n public init = () => {\n return createTaskDefinition<AcoContext, ISyncFlpTaskInput>({\n id: SYNC_FLP_TASK_ID,\n title: \"ACO - Sync FLP record\",\n description:\n \"Synchronizes the FLP catalog by updating the FLP record and its descendants.\",\n disableDatabaseLogs: true,\n run: async (params: ISyncFlpTaskParams) => {\n const { response, isAborted, input, context, store } = params;\n try {\n if (isAborted()) {\n return response.aborted();\n }\n\n /**\n * `folderId` provided in the task input. We need to:\n *\n * - update the FLP records for the found folder and all its descendants.\n */\n if (input.folderId) {\n const folder = await context.aco.folder.get(input.folderId, true);\n await context.tasks.trigger<IUpdateFlpTaskInput>({\n definition: UPDATE_FLP_TASK_ID,\n input: {\n folder\n }\n });\n\n return response.done(\n `Task completed successfully: all FLP records for folderId \"${input.folderId}\" and its children have been queued to be synchronized.`\n );\n }\n\n /**\n * Full update required. We need to:\n *\n * - list cms models to collect their types, together with the default ones [PB_PAGE_TYPE, FM_FILE_TYPE]\n * - list all root folders\n * - update the FLP records for the found folders and all its descendants.\n */\n if (input.type && input.type === \"*\") {\n // Some folder types are fixed: pages and files.\n const folderTypes = [PB_PAGE_TYPE, FM_FILE_TYPE];\n\n // List all non-private models for the current locale.\n const models = await context.security.withoutAuthorization(\n async () => await context.cms.listModels()\n );\n\n for (const model of models) {\n folderTypes.push(`cms:${model.modelId}`);\n }\n\n for (const folderType of folderTypes) {\n const [folders] = await context.aco.folder.list({\n where: {\n type: folderType,\n parentId: null\n },\n disablePermissions: true\n });\n\n for (const folder of folders) {\n await context.tasks.trigger<IUpdateFlpTaskInput>({\n definition: UPDATE_FLP_TASK_ID,\n input: {\n folder\n }\n });\n }\n\n await store.addInfoLog({\n message: `FLP Update task triggered for type ${folderType}`,\n data: {\n type: folderType\n }\n });\n }\n\n return response.done(\n `Task completed successfully: all FLP records have been queued to be synchronized.`\n );\n }\n\n /**\n * `type` provided in the task input. We need to:\n *\n * - list all root folders for the provided type\n * - update the FLP records for the found folders and all its descendants.\n */\n if (input.type) {\n const [folders] = await context.aco.folder.list({\n where: {\n type: input.type,\n parentId: null\n },\n disablePermissions: true\n });\n\n for (const folder of folders) {\n await context.tasks.trigger<IUpdateFlpTaskInput>({\n definition: UPDATE_FLP_TASK_ID,\n input: {\n folder\n }\n });\n }\n\n return response.done(\n `Task completed successfully: all FLP records for type \"${input.type}\" have been queued to be synchronized.`\n );\n }\n\n return response.error(\n \"Invalid input: please provide either `type` or `folderId`.\"\n );\n } catch (error) {\n return response.error(error);\n }\n }\n });\n };\n}\n\nexport const syncFlpTask = () => {\n const task = new SyncFlpTask();\n return task.init();\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,CAAA,GAAAD,OAAA;AAOA,IAAAE,UAAA,GAAAF,OAAA;AAEA,MAAMG,WAAW,CAAC;EACPC,IAAI,GAAGA,CAAA,KAAM;IAChB,OAAO,IAAAC,2BAAoB,EAAgC;MACvDC,EAAE,EAAEC,kBAAgB;MACpBC,KAAK,EAAE,uBAAuB;MAC9BC,WAAW,EACP,8EAA8E;MAClFC,mBAAmB,EAAE,IAAI;MACzBC,GAAG,EAAE,MAAOC,MAA0B,IAAK;QACvC,MAAM;UAAEC,QAAQ;UAAEC,SAAS;UAAEC,KAAK;UAAEC,OAAO;UAAEC;QAAM,CAAC,GAAGL,MAAM;QAC7D,IAAI;UACA,IAAIE,SAAS,CAAC,CAAC,EAAE;YACb,OAAOD,QAAQ,CAACK,OAAO,CAAC,CAAC;UAC7B;;UAEA;AACpB;AACA;AACA;AACA;UACoB,IAAIH,KAAK,CAACI,QAAQ,EAAE;YAChB,MAAMC,MAAM,GAAG,MAAMJ,OAAO,CAACK,GAAG,CAACD,MAAM,CAACE,GAAG,CAACP,KAAK,CAACI,QAAQ,EAAE,IAAI,CAAC;YACjE,MAAMH,OAAO,CAACO,KAAK,CAACC,OAAO,CAAsB;cAC7CC,UAAU,EAAEC,oBAAkB;cAC9BX,KAAK,EAAE;gBACHK;cACJ;YACJ,CAAC,CAAC;YAEF,OAAOP,QAAQ,CAACc,IAAI,CAChB,8DAA8DZ,KAAK,CAACI,QAAQ,yDAChF,CAAC;UACL;;UAEA;AACpB;AACA;AACA;AACA;AACA;AACA;UACoB,IAAIJ,KAAK,CAACa,IAAI,IAAIb,KAAK,CAACa,IAAI,KAAK,GAAG,EAAE;YAClC;YACA,MAAMC,WAAW,GAAG,CAACC,uBAAY,EAAEC,uBAAY,CAAC;;YAEhD;YACA,MAAMC,MAAM,GAAG,MAAMhB,OAAO,CAACiB,QAAQ,CAACC,oBAAoB,CACtD,YAAY,MAAMlB,OAAO,CAACmB,GAAG,CAACC,UAAU,CAAC,CAC7C,CAAC;YAED,KAAK,MAAMC,KAAK,IAAIL,MAAM,EAAE;cACxBH,WAAW,CAACS,IAAI,CAAC,OAAOD,KAAK,CAACE,OAAO,EAAE,CAAC;YAC5C;YAEA,KAAK,MAAMC,UAAU,IAAIX,WAAW,EAAE;cAClC,MAAM,CAACY,OAAO,CAAC,GAAG,MAAMzB,OAAO,CAACK,GAAG,CAACD,MAAM,CAACsB,IAAI,CAAC;gBAC5CC,KAAK,EAAE;kBACHf,IAAI,EAAEY,UAAU;kBAChBI,QAAQ,EAAE;gBACd,CAAC;gBACDC,kBAAkB,EAAE;cACxB,CAAC,CAAC;cAEF,KAAK,MAAMzB,MAAM,IAAIqB,OAAO,EAAE;gBAC1B,MAAMzB,OAAO,CAACO,KAAK,CAACC,OAAO,CAAsB;kBAC7CC,UAAU,EAAEC,oBAAkB;kBAC9BX,KAAK,EAAE;oBACHK;kBACJ;gBACJ,CAAC,CAAC;cACN;cAEA,MAAMH,KAAK,CAAC6B,UAAU,CAAC;gBACnBC,OAAO,EAAE,sCAAsCP,UAAU,EAAE;gBAC3DQ,IAAI,EAAE;kBACFpB,IAAI,EAAEY;gBACV;cACJ,CAAC,CAAC;YACN;YAEA,OAAO3B,QAAQ,CAACc,IAAI,CAChB,mFACJ,CAAC;UACL;;UAEA;AACpB;AACA;AACA;AACA;AACA;UACoB,IAAIZ,KAAK,CAACa,IAAI,EAAE;YACZ,MAAM,CAACa,OAAO,CAAC,GAAG,MAAMzB,OAAO,CAACK,GAAG,CAACD,MAAM,CAACsB,IAAI,CAAC;cAC5CC,KAAK,EAAE;gBACHf,IAAI,EAAEb,KAAK,CAACa,IAAI;gBAChBgB,QAAQ,EAAE;cACd,CAAC;cACDC,kBAAkB,EAAE;YACxB,CAAC,CAAC;YAEF,KAAK,MAAMzB,MAAM,IAAIqB,OAAO,EAAE;cAC1B,MAAMzB,OAAO,CAACO,KAAK,CAACC,OAAO,CAAsB;gBAC7CC,UAAU,EAAEC,oBAAkB;gBAC9BX,KAAK,EAAE;kBACHK;gBACJ;cACJ,CAAC,CAAC;YACN;YAEA,OAAOP,QAAQ,CAACc,IAAI,CAChB,0DAA0DZ,KAAK,CAACa,IAAI,wCACxE,CAAC;UACL;UAEA,OAAOf,QAAQ,CAACoC,KAAK,CACjB,4DACJ,CAAC;QACL,CAAC,CAAC,OAAOA,KAAK,EAAE;UACZ,OAAOpC,QAAQ,CAACoC,KAAK,CAACA,KAAK,CAAC;QAChC;MACJ;IACJ,CAAC,CAAC;EACN,CAAC;AACL;AAEO,MAAMC,WAAW,GAAGA,CAAA,KAAM;EAC7B,MAAMC,IAAI,GAAG,IAAIhD,WAAW,CAAC,CAAC;EAC9B,OAAOgD,IAAI,CAAC/C,IAAI,CAAC,CAAC;AACtB,CAAC;AAACgD,OAAA,CAAAF,WAAA,GAAAA,WAAA","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import { type AcoContext, type IUpdateFlpTaskInput } from "../../types";
2
+ export declare const updateFlpTask: () => import("@webiny/tasks").TaskDefinitionPlugin<AcoContext, IUpdateFlpTaskInput, import("@webiny/tasks").ITaskResponseDoneResultOutput>;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.updateFlpTask = void 0;
7
+ var _tasks = require("@webiny/tasks");
8
+ var _ = require("./");
9
+ class UpdateFlpTask {
10
+ init = () => {
11
+ return (0, _tasks.createPrivateTaskDefinition)({
12
+ id: _.UPDATE_FLP_TASK_ID,
13
+ title: "ACO - Update FLP record",
14
+ description: "Synchronizes the FLP catalog by updating the FLP record and its descendants based on the provided folder.",
15
+ disableDatabaseLogs: true,
16
+ run: async params => {
17
+ const {
18
+ response,
19
+ isAborted,
20
+ input,
21
+ context,
22
+ isCloseToTimeout
23
+ } = params;
24
+ const {
25
+ UpdateFlp
26
+ } = await import(/* webpackChunkName: "UpdateFlp" */"../useCases/UpdateFlp");
27
+ const useCase = new UpdateFlp({
28
+ context,
29
+ queued: input.queued,
30
+ isCloseToTimeout: isCloseToTimeout,
31
+ handleTimeout: queued => response.continue({
32
+ ...input,
33
+ queued
34
+ })
35
+ });
36
+ try {
37
+ if (isAborted()) {
38
+ return response.aborted();
39
+ }
40
+ await useCase.execute(input.folder);
41
+ return response.done("Task done: FLP record updated.");
42
+ } catch (error) {
43
+ return response.error(error);
44
+ }
45
+ }
46
+ });
47
+ };
48
+ }
49
+ const updateFlpTask = () => {
50
+ const task = new UpdateFlpTask();
51
+ return task.init();
52
+ };
53
+ exports.updateFlpTask = updateFlpTask;
54
+
55
+ //# sourceMappingURL=updateFlp.task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_tasks","require","_","UpdateFlpTask","init","createPrivateTaskDefinition","id","UPDATE_FLP_TASK_ID","title","description","disableDatabaseLogs","run","params","response","isAborted","input","context","isCloseToTimeout","UpdateFlp","useCase","queued","handleTimeout","continue","aborted","execute","folder","done","error","updateFlpTask","task","exports"],"sources":["updateFlp.task.ts"],"sourcesContent":["import { createPrivateTaskDefinition } from \"@webiny/tasks\";\nimport { UPDATE_FLP_TASK_ID } from \"~/flp/tasks\";\nimport { type AcoContext, type IUpdateFlpTaskInput, type IUpdateFlpTaskParams } from \"~/types\";\n\nclass UpdateFlpTask {\n public init = () => {\n return createPrivateTaskDefinition<AcoContext, IUpdateFlpTaskInput>({\n id: UPDATE_FLP_TASK_ID,\n title: \"ACO - Update FLP record\",\n description:\n \"Synchronizes the FLP catalog by updating the FLP record and its descendants based on the provided folder.\",\n disableDatabaseLogs: true,\n run: async (params: IUpdateFlpTaskParams) => {\n const { response, isAborted, input, context, isCloseToTimeout } = params;\n\n const { UpdateFlp } = await import(\n /* webpackChunkName: \"UpdateFlp\" */ \"../useCases/UpdateFlp\"\n );\n\n const useCase = new UpdateFlp({\n context,\n queued: input.queued,\n isCloseToTimeout: isCloseToTimeout,\n handleTimeout: (queued: string[]) => response.continue({ ...input, queued })\n });\n\n try {\n if (isAborted()) {\n return response.aborted();\n }\n await useCase.execute(input.folder);\n return response.done(\"Task done: FLP record updated.\");\n } catch (error) {\n return response.error(error);\n }\n }\n });\n };\n}\n\nexport const updateFlpTask = () => {\n const task = new UpdateFlpTask();\n return task.init();\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,CAAA,GAAAD,OAAA;AAGA,MAAME,aAAa,CAAC;EACTC,IAAI,GAAGA,CAAA,KAAM;IAChB,OAAO,IAAAC,kCAA2B,EAAkC;MAChEC,EAAE,EAAEC,oBAAkB;MACtBC,KAAK,EAAE,yBAAyB;MAChCC,WAAW,EACP,2GAA2G;MAC/GC,mBAAmB,EAAE,IAAI;MACzBC,GAAG,EAAE,MAAOC,MAA4B,IAAK;QACzC,MAAM;UAAEC,QAAQ;UAAEC,SAAS;UAAEC,KAAK;UAAEC,OAAO;UAAEC;QAAiB,CAAC,GAAGL,MAAM;QAExE,MAAM;UAAEM;QAAU,CAAC,GAAG,MAAM,MAAM,CAC9B,0DACJ,CAAC;QAED,MAAMC,OAAO,GAAG,IAAID,SAAS,CAAC;UAC1BF,OAAO;UACPI,MAAM,EAAEL,KAAK,CAACK,MAAM;UACpBH,gBAAgB,EAAEA,gBAAgB;UAClCI,aAAa,EAAGD,MAAgB,IAAKP,QAAQ,CAACS,QAAQ,CAAC;YAAE,GAAGP,KAAK;YAAEK;UAAO,CAAC;QAC/E,CAAC,CAAC;QAEF,IAAI;UACA,IAAIN,SAAS,CAAC,CAAC,EAAE;YACb,OAAOD,QAAQ,CAACU,OAAO,CAAC,CAAC;UAC7B;UACA,MAAMJ,OAAO,CAACK,OAAO,CAACT,KAAK,CAACU,MAAM,CAAC;UACnC,OAAOZ,QAAQ,CAACa,IAAI,CAAC,gCAAgC,CAAC;QAC1D,CAAC,CAAC,OAAOC,KAAK,EAAE;UACZ,OAAOd,QAAQ,CAACc,KAAK,CAACA,KAAK,CAAC;QAChC;MACJ;IACJ,CAAC,CAAC;EACN,CAAC;AACL;AAEO,MAAMC,aAAa,GAAGA,CAAA,KAAM;EAC/B,MAAMC,IAAI,GAAG,IAAI1B,aAAa,CAAC,CAAC;EAChC,OAAO0B,IAAI,CAACzB,IAAI,CAAC,CAAC;AACtB,CAAC;AAAC0B,OAAA,CAAAF,aAAA,GAAAA,aAAA","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import type { Folder } from "../../folder/folder.types";
2
+ import type { AcoContext } from "../../types";
3
+ export declare class CreateFlp {
4
+ private context;
5
+ constructor(context: AcoContext);
6
+ execute(folder: Folder): Promise<void>;
7
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CreateFlp = void 0;
7
+ var _error = require("@webiny/error");
8
+ var _Path = require("./Path");
9
+ var _Permissions = require("./Permissions");
10
+ var _constants = require("../../constants");
11
+ class CreateFlp {
12
+ constructor(context) {
13
+ this.context = context;
14
+ }
15
+ async execute(folder) {
16
+ try {
17
+ if (!folder) {
18
+ throw new _error.WebinyError("Missing `folder`, I can't create a new record into the FLP catalog.", "ERROR_CREATE_FLP_USE_CASE_FOLDER_NOT_PROVIDED");
19
+ }
20
+ const {
21
+ id,
22
+ type,
23
+ slug,
24
+ parentId,
25
+ permissions
26
+ } = folder;
27
+ let parentFlp = null;
28
+ if (parentId) {
29
+ parentFlp = await this.context.aco.flp.get(parentId);
30
+ if (!parentFlp) {
31
+ throw new _error.WebinyError("Parent folder level permission not found. Unable to create a new record in the FLP catalog.", "ERROR_CREATE_FLP_USE_CASE_PARENT_FLP_NOT_FOUND");
32
+ }
33
+ }
34
+ await this.context.aco.flp.create({
35
+ id,
36
+ type,
37
+ slug,
38
+ parentId: parentId ?? _constants.ROOT_FOLDER,
39
+ path: _Path.Path.create(slug, parentFlp?.path),
40
+ permissions: _Permissions.Permissions.create(permissions, parentFlp)
41
+ });
42
+ } catch (error) {
43
+ throw _error.WebinyError.from(error, {
44
+ message: "Error while creating FLP",
45
+ code: "ERROR_CREATE_FLP_USE_CASE"
46
+ });
47
+ }
48
+ }
49
+ }
50
+ exports.CreateFlp = CreateFlp;
51
+
52
+ //# sourceMappingURL=CreateFlp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_error","require","_Path","_Permissions","_constants","CreateFlp","constructor","context","execute","folder","WebinyError","id","type","slug","parentId","permissions","parentFlp","aco","flp","get","create","ROOT_FOLDER","path","Path","Permissions","error","from","message","code","exports"],"sources":["CreateFlp.ts"],"sourcesContent":["import { WebinyError } from \"@webiny/error\";\nimport { Path } from \"./Path\";\nimport { Permissions } from \"./Permissions\";\nimport type { FolderLevelPermission as IFolderLevelPermission } from \"~/flp/flp.types\";\nimport type { Folder } from \"~/folder/folder.types\";\nimport type { AcoContext } from \"~/types\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\nexport class CreateFlp {\n private context: AcoContext;\n\n constructor(context: AcoContext) {\n this.context = context;\n }\n\n async execute(folder: Folder) {\n try {\n if (!folder) {\n throw new WebinyError(\n \"Missing `folder`, I can't create a new record into the FLP catalog.\",\n \"ERROR_CREATE_FLP_USE_CASE_FOLDER_NOT_PROVIDED\"\n );\n }\n\n const { id, type, slug, parentId, permissions } = folder;\n let parentFlp: IFolderLevelPermission | null = null;\n\n if (parentId) {\n parentFlp = await this.context.aco.flp.get(parentId);\n\n if (!parentFlp) {\n throw new WebinyError(\n \"Parent folder level permission not found. Unable to create a new record in the FLP catalog.\",\n \"ERROR_CREATE_FLP_USE_CASE_PARENT_FLP_NOT_FOUND\"\n );\n }\n }\n\n await this.context.aco.flp.create({\n id,\n type,\n slug,\n parentId: parentId ?? ROOT_FOLDER,\n path: Path.create(slug, parentFlp?.path),\n permissions: Permissions.create(permissions, parentFlp)\n });\n } catch (error) {\n throw WebinyError.from(error, {\n message: \"Error while creating FLP\",\n code: \"ERROR_CREATE_FLP_USE_CASE\"\n });\n }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAIA,IAAAG,UAAA,GAAAH,OAAA;AAEO,MAAMI,SAAS,CAAC;EAGnBC,WAAWA,CAACC,OAAmB,EAAE;IAC7B,IAAI,CAACA,OAAO,GAAGA,OAAO;EAC1B;EAEA,MAAMC,OAAOA,CAACC,MAAc,EAAE;IAC1B,IAAI;MACA,IAAI,CAACA,MAAM,EAAE;QACT,MAAM,IAAIC,kBAAW,CACjB,qEAAqE,EACrE,+CACJ,CAAC;MACL;MAEA,MAAM;QAAEC,EAAE;QAAEC,IAAI;QAAEC,IAAI;QAAEC,QAAQ;QAAEC;MAAY,CAAC,GAAGN,MAAM;MACxD,IAAIO,SAAwC,GAAG,IAAI;MAEnD,IAAIF,QAAQ,EAAE;QACVE,SAAS,GAAG,MAAM,IAAI,CAACT,OAAO,CAACU,GAAG,CAACC,GAAG,CAACC,GAAG,CAACL,QAAQ,CAAC;QAEpD,IAAI,CAACE,SAAS,EAAE;UACZ,MAAM,IAAIN,kBAAW,CACjB,6FAA6F,EAC7F,gDACJ,CAAC;QACL;MACJ;MAEA,MAAM,IAAI,CAACH,OAAO,CAACU,GAAG,CAACC,GAAG,CAACE,MAAM,CAAC;QAC9BT,EAAE;QACFC,IAAI;QACJC,IAAI;QACJC,QAAQ,EAAEA,QAAQ,IAAIO,sBAAW;QACjCC,IAAI,EAAEC,UAAI,CAACH,MAAM,CAACP,IAAI,EAAEG,SAAS,EAAEM,IAAI,CAAC;QACxCP,WAAW,EAAES,wBAAW,CAACJ,MAAM,CAACL,WAAW,EAAEC,SAAS;MAC1D,CAAC,CAAC;IACN,CAAC,CAAC,OAAOS,KAAK,EAAE;MACZ,MAAMf,kBAAW,CAACgB,IAAI,CAACD,KAAK,EAAE;QAC1BE,OAAO,EAAE,0BAA0B;QACnCC,IAAI,EAAE;MACV,CAAC,CAAC;IACN;EACJ;AACJ;AAACC,OAAA,CAAAxB,SAAA,GAAAA,SAAA","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ import type { AcoContext, Folder } from "../../types";
2
+ export declare class DeleteFlp {
3
+ private context;
4
+ constructor(context: AcoContext);
5
+ execute(folder: Folder): Promise<void>;
6
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DeleteFlp = void 0;
7
+ var _error = require("@webiny/error");
8
+ class DeleteFlp {
9
+ constructor(context) {
10
+ this.context = context;
11
+ }
12
+ async execute(folder) {
13
+ try {
14
+ if (!folder) {
15
+ throw new _error.WebinyError("Missing `folder` from the task input, I can't delete the record from the FLP catalog.", "ERROR_DELETE_FLP_USE_CASE_FOLDER_NOT_PROVIDED", {
16
+ folder
17
+ });
18
+ }
19
+ await this.context.aco.flp.delete(folder.id);
20
+ } catch (error) {
21
+ throw _error.WebinyError.from(error, {
22
+ message: "Error while deleting FLP",
23
+ code: "ERROR_DELETE_FLP_USE_CASE"
24
+ });
25
+ }
26
+ }
27
+ }
28
+ exports.DeleteFlp = DeleteFlp;
29
+
30
+ //# sourceMappingURL=DeleteFlp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_error","require","DeleteFlp","constructor","context","execute","folder","WebinyError","aco","flp","delete","id","error","from","message","code","exports"],"sources":["DeleteFlp.ts"],"sourcesContent":["import { WebinyError } from \"@webiny/error\";\nimport type { AcoContext, Folder } from \"~/types\";\n\nexport class DeleteFlp {\n private context: AcoContext;\n\n constructor(context: AcoContext) {\n this.context = context;\n }\n\n async execute(folder: Folder) {\n try {\n if (!folder) {\n throw new WebinyError(\n \"Missing `folder` from the task input, I can't delete the record from the FLP catalog.\",\n \"ERROR_DELETE_FLP_USE_CASE_FOLDER_NOT_PROVIDED\",\n { folder }\n );\n }\n await this.context.aco.flp.delete(folder.id);\n } catch (error) {\n throw WebinyError.from(error, {\n message: \"Error while deleting FLP\",\n code: \"ERROR_DELETE_FLP_USE_CASE\"\n });\n }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGO,MAAMC,SAAS,CAAC;EAGnBC,WAAWA,CAACC,OAAmB,EAAE;IAC7B,IAAI,CAACA,OAAO,GAAGA,OAAO;EAC1B;EAEA,MAAMC,OAAOA,CAACC,MAAc,EAAE;IAC1B,IAAI;MACA,IAAI,CAACA,MAAM,EAAE;QACT,MAAM,IAAIC,kBAAW,CACjB,uFAAuF,EACvF,+CAA+C,EAC/C;UAAED;QAAO,CACb,CAAC;MACL;MACA,MAAM,IAAI,CAACF,OAAO,CAACI,GAAG,CAACC,GAAG,CAACC,MAAM,CAACJ,MAAM,CAACK,EAAE,CAAC;IAChD,CAAC,CAAC,OAAOC,KAAK,EAAE;MACZ,MAAML,kBAAW,CAACM,IAAI,CAACD,KAAK,EAAE;QAC1BE,OAAO,EAAE,0BAA0B;QACnCC,IAAI,EAAE;MACV,CAAC,CAAC;IACN;EACJ;AACJ;AAACC,OAAA,CAAAd,SAAA,GAAAA,SAAA","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export declare class Path {
2
+ static create(slug: string, parentPath?: string): string;
3
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Path = void 0;
7
+ var _constants = require("../../constants");
8
+ class Path {
9
+ static create(slug, parentPath) {
10
+ if (parentPath) {
11
+ return `${parentPath}/${slug}`;
12
+ }
13
+ return `${_constants.ROOT_FOLDER}/${slug}`;
14
+ }
15
+ }
16
+ exports.Path = Path;
17
+
18
+ //# sourceMappingURL=Path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_constants","require","Path","create","slug","parentPath","ROOT_FOLDER","exports"],"sources":["Path.ts"],"sourcesContent":["import { ROOT_FOLDER } from \"~/constants\";\n\nexport class Path {\n static create(slug: string, parentPath?: string) {\n if (parentPath) {\n return `${parentPath}/${slug}`;\n }\n\n return `${ROOT_FOLDER}/${slug}`;\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAEO,MAAMC,IAAI,CAAC;EACd,OAAOC,MAAMA,CAACC,IAAY,EAAEC,UAAmB,EAAE;IAC7C,IAAIA,UAAU,EAAE;MACZ,OAAO,GAAGA,UAAU,IAAID,IAAI,EAAE;IAClC;IAEA,OAAO,GAAGE,sBAAW,IAAIF,IAAI,EAAE;EACnC;AACJ;AAACG,OAAA,CAAAL,IAAA,GAAAA,IAAA","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ import type { FolderLevelPermission as IFolderLevelPermission, FolderPermission } from "../flp.types";
2
+ export declare class Permissions {
3
+ static create(permissions?: FolderPermission[], parentFlp?: Pick<IFolderLevelPermission, "id" | "permissions"> | null): FolderPermission[];
4
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Permissions = void 0;
7
+ class Permissions {
8
+ static create(permissions, parentFlp) {
9
+ const folderPermissions = permissions ?? [];
10
+
11
+ // No permissions from the parent, let's return the permissions provided by the folder.
12
+ if (!parentFlp || !parentFlp.permissions?.length) {
13
+ return folderPermissions;
14
+ }
15
+ const {
16
+ id: parentId,
17
+ permissions: parentPermissions
18
+ } = parentFlp;
19
+
20
+ // Remove all previously inherited permissions
21
+ const cleanedPermissions = folderPermissions.filter(p => p.inheritedFrom !== `parent:${parentId}`);
22
+
23
+ // Store the `target` values from the current cleaned permissions.
24
+ // These will be used to exclude inherited permissions that target the same entities as the current folder's permissions.
25
+ const permissionsTargets = new Set(cleanedPermissions.map(p => p.target));
26
+
27
+ // Get inherited permissions from parent, preserving the original inheritance chain
28
+ const inheritedPermissions = parentPermissions.filter(p => !permissionsTargets.has(p.target)).map(p => ({
29
+ ...p,
30
+ // If the permission was already inherited, keep its original source
31
+ inheritedFrom: `parent:${parentId}`
32
+ }));
33
+ return [...cleanedPermissions, ...inheritedPermissions];
34
+ }
35
+ }
36
+ exports.Permissions = Permissions;
37
+
38
+ //# sourceMappingURL=Permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Permissions","create","permissions","parentFlp","folderPermissions","length","id","parentId","parentPermissions","cleanedPermissions","filter","p","inheritedFrom","permissionsTargets","Set","map","target","inheritedPermissions","has","exports"],"sources":["Permissions.ts"],"sourcesContent":["import type {\n FolderLevelPermission as IFolderLevelPermission,\n FolderPermission\n} from \"~/flp/flp.types\";\n\nexport class Permissions {\n public static create(\n permissions?: FolderPermission[],\n parentFlp?: Pick<IFolderLevelPermission, \"id\" | \"permissions\"> | null\n ): FolderPermission[] {\n const folderPermissions = permissions ?? [];\n\n // No permissions from the parent, let's return the permissions provided by the folder.\n if (!parentFlp || !parentFlp.permissions?.length) {\n return folderPermissions;\n }\n\n const { id: parentId, permissions: parentPermissions } = parentFlp;\n\n // Remove all previously inherited permissions\n const cleanedPermissions = folderPermissions.filter(\n p => p.inheritedFrom !== `parent:${parentId}`\n );\n\n // Store the `target` values from the current cleaned permissions.\n // These will be used to exclude inherited permissions that target the same entities as the current folder's permissions.\n const permissionsTargets = new Set(cleanedPermissions.map(p => p.target));\n\n // Get inherited permissions from parent, preserving the original inheritance chain\n const inheritedPermissions = parentPermissions\n .filter(p => !permissionsTargets.has(p.target))\n .map(p => ({\n ...p,\n // If the permission was already inherited, keep its original source\n inheritedFrom: `parent:${parentId}`\n }));\n\n return [...cleanedPermissions, ...inheritedPermissions];\n }\n}\n"],"mappings":";;;;;;AAKO,MAAMA,WAAW,CAAC;EACrB,OAAcC,MAAMA,CAChBC,WAAgC,EAChCC,SAAqE,EACnD;IAClB,MAAMC,iBAAiB,GAAGF,WAAW,IAAI,EAAE;;IAE3C;IACA,IAAI,CAACC,SAAS,IAAI,CAACA,SAAS,CAACD,WAAW,EAAEG,MAAM,EAAE;MAC9C,OAAOD,iBAAiB;IAC5B;IAEA,MAAM;MAAEE,EAAE,EAAEC,QAAQ;MAAEL,WAAW,EAAEM;IAAkB,CAAC,GAAGL,SAAS;;IAElE;IACA,MAAMM,kBAAkB,GAAGL,iBAAiB,CAACM,MAAM,CAC/CC,CAAC,IAAIA,CAAC,CAACC,aAAa,KAAK,UAAUL,QAAQ,EAC/C,CAAC;;IAED;IACA;IACA,MAAMM,kBAAkB,GAAG,IAAIC,GAAG,CAACL,kBAAkB,CAACM,GAAG,CAACJ,CAAC,IAAIA,CAAC,CAACK,MAAM,CAAC,CAAC;;IAEzE;IACA,MAAMC,oBAAoB,GAAGT,iBAAiB,CACzCE,MAAM,CAACC,CAAC,IAAI,CAACE,kBAAkB,CAACK,GAAG,CAACP,CAAC,CAACK,MAAM,CAAC,CAAC,CAC9CD,GAAG,CAACJ,CAAC,KAAK;MACP,GAAGA,CAAC;MACJ;MACAC,aAAa,EAAE,UAAUL,QAAQ;IACrC,CAAC,CAAC,CAAC;IAEP,OAAO,CAAC,GAAGE,kBAAkB,EAAE,GAAGQ,oBAAoB,CAAC;EAC3D;AACJ;AAACE,OAAA,CAAAnB,WAAA,GAAAA,WAAA","ignoreList":[]}
@@ -0,0 +1,25 @@
1
+ import type { AcoContext, Folder } from "../../types";
2
+ interface UpdateFlpParams {
3
+ context: AcoContext;
4
+ queued?: string[];
5
+ isCloseToTimeout?: () => boolean;
6
+ handleTimeout?: (queued: string[]) => void;
7
+ }
8
+ export declare class UpdateFlp {
9
+ private context;
10
+ private readonly isCloseToTimeout?;
11
+ private readonly handleTimeout?;
12
+ private readonly queued;
13
+ private readonly flpsToUpdate;
14
+ constructor(params: UpdateFlpParams);
15
+ execute(folder: Folder): Promise<void>;
16
+ private collectBranchForUpdate;
17
+ private executeBatchUpdate;
18
+ private getQueuedList;
19
+ private setQueued;
20
+ private isQueued;
21
+ private clearQueuedList;
22
+ private listDirectChildren;
23
+ private getFlp;
24
+ }
25
+ export {};
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.UpdateFlp = void 0;
7
+ var _error = require("@webiny/error");
8
+ var _Path = require("./Path");
9
+ var _Permissions = require("./Permissions");
10
+ var _constants = require("../../constants");
11
+ class UpdateFlp {
12
+ queued = new Set();
13
+ flpsToUpdate = new Map();
14
+ constructor(params) {
15
+ this.context = params.context;
16
+ this.queued = new Set(params.queued);
17
+ this.isCloseToTimeout = params.isCloseToTimeout;
18
+ this.handleTimeout = params.handleTimeout;
19
+ }
20
+ async execute(folder) {
21
+ try {
22
+ if (!folder) {
23
+ throw new _error.WebinyError("Missing `folder`, I can't update the FLP record.", "ERROR_UPDATING_FLP_USE_CASE_FOLDER_NOT_PROVIDED", {
24
+ folder
25
+ });
26
+ }
27
+ const flp = await this.getFlp(folder);
28
+ const parentFlp = folder.parentId ? await this.context.aco.flp.get(folder.parentId) : null;
29
+
30
+ // Add the root folder to the update collection
31
+ this.flpsToUpdate.set(folder.id, {
32
+ slug: folder.slug,
33
+ parentId: folder.parentId ?? _constants.ROOT_FOLDER,
34
+ path: _Path.Path.create(folder.slug, parentFlp?.path),
35
+ permissions: _Permissions.Permissions.create(folder.permissions, parentFlp)
36
+ });
37
+
38
+ // Let's set the FLP as in queue
39
+ this.setQueued(flp.id);
40
+
41
+ // Get direct children and process each branch completely
42
+ const directChildren = await this.listDirectChildren(flp);
43
+ for (const child of directChildren) {
44
+ if (this.isCloseToTimeout?.()) {
45
+ await this.executeBatchUpdate();
46
+ this.handleTimeout?.(this.getQueuedList());
47
+ return;
48
+ }
49
+ await this.collectBranchForUpdate(child, flp);
50
+ }
51
+
52
+ // Execute batch update
53
+ await this.executeBatchUpdate();
54
+ } catch (error) {
55
+ // Clear the update collection in case of error
56
+ this.flpsToUpdate.clear();
57
+ this.queued.clear();
58
+ throw _error.WebinyError.from(error, {
59
+ message: "Error while updating FLP",
60
+ code: "ERROR_UPDATING_FLP_USE_CASE"
61
+ });
62
+ }
63
+ }
64
+ async collectBranchForUpdate(flp, parentFlp) {
65
+ if (this.isQueued(flp.id)) {
66
+ return;
67
+ }
68
+
69
+ // Get the parent's permissions from the update collection if available
70
+ const parentFlpData = this.flpsToUpdate.get(parentFlp.id);
71
+ const currentParentFlp = {
72
+ ...parentFlp,
73
+ ...(parentFlpData && {
74
+ ...parentFlpData
75
+ })
76
+ };
77
+
78
+ // Add the FLP to the update collection with inherited permissions
79
+ this.flpsToUpdate.set(flp.id, {
80
+ slug: flp.slug,
81
+ parentId: flp.parentId,
82
+ path: _Path.Path.create(flp.slug, currentParentFlp.path),
83
+ permissions: _Permissions.Permissions.create(flp.permissions, currentParentFlp)
84
+ });
85
+
86
+ // Add the FLP to the queue list so we don't fetch it again
87
+ this.setQueued(flp.id);
88
+
89
+ // Process all children of this folder before moving to siblings
90
+ const children = await this.listDirectChildren(flp);
91
+ for (const child of children) {
92
+ if (this.isCloseToTimeout?.()) {
93
+ await this.executeBatchUpdate();
94
+ this.handleTimeout?.(this.getQueuedList());
95
+ return;
96
+ }
97
+ // Pass the current FLP as the parent for the child
98
+ await this.collectBranchForUpdate(child, flp);
99
+ }
100
+ }
101
+ async executeBatchUpdate() {
102
+ try {
103
+ const items = Array.from(this.flpsToUpdate.entries()).map(([id, {
104
+ slug,
105
+ parentId,
106
+ path,
107
+ permissions
108
+ }]) => {
109
+ return {
110
+ id,
111
+ data: {
112
+ slug,
113
+ parentId,
114
+ path,
115
+ permissions
116
+ }
117
+ };
118
+ });
119
+ await this.context.aco.flp.batchUpdate(items);
120
+ } catch (error) {
121
+ throw _error.WebinyError.from(error, {
122
+ message: "Error while executing batch update of FLPs",
123
+ code: "BATCH_UPDATE_FLP_ERROR",
124
+ data: {
125
+ items: Array.from(this.flpsToUpdate.keys())
126
+ }
127
+ });
128
+ } finally {
129
+ // Clear the update collection after the batch update
130
+ this.flpsToUpdate.clear();
131
+
132
+ //Let's remove all the updated FLPs ids from the queue cache
133
+ this.clearQueuedList();
134
+ }
135
+ }
136
+ getQueuedList() {
137
+ return Array.from(this.queued);
138
+ }
139
+ setQueued(id) {
140
+ this.queued.add(id);
141
+ }
142
+ isQueued(id) {
143
+ return this.queued.has(id);
144
+ }
145
+ clearQueuedList() {
146
+ return this.queued.clear();
147
+ }
148
+ async listDirectChildren(flp) {
149
+ const [folders] = await this.context.aco.folder.listAll({
150
+ where: {
151
+ type: flp.type,
152
+ parentId: flp.id
153
+ },
154
+ disablePermissions: true
155
+ });
156
+ return await Promise.all(folders.map(folder => this.getFlp(folder)));
157
+ }
158
+ async getFlp({
159
+ id,
160
+ type,
161
+ parentId,
162
+ slug,
163
+ permissions
164
+ }) {
165
+ const flp = await this.context.aco.flp.get(id);
166
+ if (!flp) {
167
+ const parentFlp = parentId ? await this.context.aco.flp.get(parentId) : null;
168
+ return await this.context.aco.flp.create({
169
+ id,
170
+ type,
171
+ slug,
172
+ parentId: parentId ?? _constants.ROOT_FOLDER,
173
+ path: _Path.Path.create(slug, parentFlp?.path),
174
+ permissions: _Permissions.Permissions.create(permissions, parentFlp)
175
+ });
176
+ }
177
+ return flp;
178
+ }
179
+ }
180
+ exports.UpdateFlp = UpdateFlp;
181
+
182
+ //# sourceMappingURL=UpdateFlp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_error","require","_Path","_Permissions","_constants","UpdateFlp","queued","Set","flpsToUpdate","Map","constructor","params","context","isCloseToTimeout","handleTimeout","execute","folder","WebinyError","flp","getFlp","parentFlp","parentId","aco","get","set","id","slug","ROOT_FOLDER","path","Path","create","permissions","Permissions","setQueued","directChildren","listDirectChildren","child","executeBatchUpdate","getQueuedList","collectBranchForUpdate","error","clear","from","message","code","isQueued","parentFlpData","currentParentFlp","children","items","Array","entries","map","data","batchUpdate","keys","clearQueuedList","add","has","folders","listAll","where","type","disablePermissions","Promise","all","exports"],"sources":["UpdateFlp.ts"],"sourcesContent":["import { WebinyError } from \"@webiny/error\";\nimport { Path } from \"./Path\";\nimport { Permissions } from \"./Permissions\";\nimport { ROOT_FOLDER } from \"~/constants\";\nimport type { AcoContext, Folder, FolderLevelPermission, FolderPermission } from \"~/types\";\n\ninterface UpdateFlpParams {\n context: AcoContext;\n queued?: string[];\n isCloseToTimeout?: () => boolean;\n handleTimeout?: (queued: string[]) => void;\n}\n\ninterface FlpUpdateData {\n parentId: string;\n slug: string;\n path: string;\n permissions: FolderPermission[];\n}\n\nexport class UpdateFlp {\n private context: AcoContext;\n private readonly isCloseToTimeout?: () => boolean;\n private readonly handleTimeout?: (updated: string[]) => void;\n\n private readonly queued: Set<string> = new Set();\n private readonly flpsToUpdate: Map<string, FlpUpdateData> = new Map();\n\n constructor(params: UpdateFlpParams) {\n this.context = params.context;\n this.queued = new Set(params.queued);\n this.isCloseToTimeout = params.isCloseToTimeout;\n this.handleTimeout = params.handleTimeout;\n }\n\n async execute(folder: Folder) {\n try {\n if (!folder) {\n throw new WebinyError(\n \"Missing `folder`, I can't update the FLP record.\",\n \"ERROR_UPDATING_FLP_USE_CASE_FOLDER_NOT_PROVIDED\",\n { folder }\n );\n }\n\n const flp = await this.getFlp(folder);\n const parentFlp = folder.parentId\n ? await this.context.aco.flp.get(folder.parentId)\n : null;\n\n // Add the root folder to the update collection\n this.flpsToUpdate.set(folder.id, {\n slug: folder.slug,\n parentId: folder.parentId ?? ROOT_FOLDER,\n path: Path.create(folder.slug, parentFlp?.path),\n permissions: Permissions.create(folder.permissions, parentFlp)\n });\n\n // Let's set the FLP as in queue\n this.setQueued(flp.id);\n\n // Get direct children and process each branch completely\n const directChildren = await this.listDirectChildren(flp);\n\n for (const child of directChildren) {\n if (this.isCloseToTimeout?.()) {\n await this.executeBatchUpdate();\n this.handleTimeout?.(this.getQueuedList());\n return;\n }\n await this.collectBranchForUpdate(child, flp);\n }\n\n // Execute batch update\n await this.executeBatchUpdate();\n } catch (error) {\n // Clear the update collection in case of error\n this.flpsToUpdate.clear();\n this.queued.clear();\n throw WebinyError.from(error, {\n message: \"Error while updating FLP\",\n code: \"ERROR_UPDATING_FLP_USE_CASE\"\n });\n }\n }\n\n private async collectBranchForUpdate(\n flp: FolderLevelPermission,\n parentFlp: FolderLevelPermission\n ) {\n if (this.isQueued(flp.id)) {\n return;\n }\n\n // Get the parent's permissions from the update collection if available\n const parentFlpData = this.flpsToUpdate.get(parentFlp.id);\n const currentParentFlp = {\n ...parentFlp,\n ...(parentFlpData && { ...parentFlpData })\n };\n\n // Add the FLP to the update collection with inherited permissions\n this.flpsToUpdate.set(flp.id, {\n slug: flp.slug,\n parentId: flp.parentId,\n path: Path.create(flp.slug, currentParentFlp.path),\n permissions: Permissions.create(flp.permissions, currentParentFlp)\n });\n\n // Add the FLP to the queue list so we don't fetch it again\n this.setQueued(flp.id);\n\n // Process all children of this folder before moving to siblings\n const children = await this.listDirectChildren(flp);\n\n for (const child of children) {\n if (this.isCloseToTimeout?.()) {\n await this.executeBatchUpdate();\n this.handleTimeout?.(this.getQueuedList());\n return;\n }\n // Pass the current FLP as the parent for the child\n await this.collectBranchForUpdate(child, flp);\n }\n }\n\n private async executeBatchUpdate() {\n try {\n const items = Array.from(this.flpsToUpdate.entries()).map(\n ([id, { slug, parentId, path, permissions }]) => {\n return {\n id,\n data: {\n slug,\n parentId,\n path,\n permissions\n }\n };\n }\n );\n\n await this.context.aco.flp.batchUpdate(items);\n } catch (error) {\n throw WebinyError.from(error, {\n message: \"Error while executing batch update of FLPs\",\n code: \"BATCH_UPDATE_FLP_ERROR\",\n data: {\n items: Array.from(this.flpsToUpdate.keys())\n }\n });\n } finally {\n // Clear the update collection after the batch update\n this.flpsToUpdate.clear();\n\n //Let's remove all the updated FLPs ids from the queue cache\n this.clearQueuedList();\n }\n }\n\n private getQueuedList() {\n return Array.from(this.queued);\n }\n\n private setQueued(id: string) {\n this.queued.add(id);\n }\n\n private isQueued(id: string) {\n return this.queued.has(id);\n }\n\n private clearQueuedList() {\n return this.queued.clear();\n }\n\n private async listDirectChildren(flp: FolderLevelPermission): Promise<FolderLevelPermission[]> {\n const [folders] = await this.context.aco.folder.listAll({\n where: {\n type: flp.type,\n parentId: flp.id\n },\n disablePermissions: true\n });\n\n return await Promise.all(folders.map(folder => this.getFlp(folder)));\n }\n\n private async getFlp({ id, type, parentId, slug, permissions }: Folder) {\n const flp = await this.context.aco.flp.get(id);\n\n if (!flp) {\n const parentFlp = parentId ? await this.context.aco.flp.get(parentId) : null;\n\n return await this.context.aco.flp.create({\n id,\n type,\n slug,\n parentId: parentId ?? ROOT_FOLDER,\n path: Path.create(slug, parentFlp?.path),\n permissions: Permissions.create(permissions, parentFlp)\n });\n }\n\n return flp;\n }\n}\n"],"mappings":"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","ignoreList":[]}