@webiny/app-aco 6.3.0-beta.4 → 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 (620) hide show
  1. package/app.js +3 -4
  2. package/app.js.map +1 -1
  3. package/components/Actions/DeleteFolder/DeleteFolder.js +21 -26
  4. package/components/Actions/DeleteFolder/DeleteFolder.js.map +1 -1
  5. package/components/Actions/DeleteFolder/index.js +0 -2
  6. package/components/Actions/EditFolder/EditFolder.js +20 -25
  7. package/components/Actions/EditFolder/EditFolder.js.map +1 -1
  8. package/components/Actions/EditFolder/index.js +0 -2
  9. package/components/Actions/SetFolderPemissions/SetFolderPermissions.js +20 -25
  10. package/components/Actions/SetFolderPemissions/SetFolderPermissions.js.map +1 -1
  11. package/components/Actions/SetFolderPemissions/index.js +0 -2
  12. package/components/Actions/index.js +0 -2
  13. package/components/AdvancedSearch/AdvancedSearch.js +67 -75
  14. package/components/AdvancedSearch/AdvancedSearch.js.map +1 -1
  15. package/components/AdvancedSearch/AdvancedSearchConfigs.js +37 -40
  16. package/components/AdvancedSearch/AdvancedSearchConfigs.js.map +1 -1
  17. package/components/AdvancedSearch/AdvancedSearchPresenter.js +178 -199
  18. package/components/AdvancedSearch/AdvancedSearchPresenter.js.map +1 -1
  19. package/components/AdvancedSearch/AdvancedSearchPresenter.test.js +653 -720
  20. package/components/AdvancedSearch/AdvancedSearchPresenter.test.js.map +1 -1
  21. package/components/AdvancedSearch/Button/Button.js +13 -16
  22. package/components/AdvancedSearch/Button/Button.js.map +1 -1
  23. package/components/AdvancedSearch/Button/index.js +0 -2
  24. package/components/AdvancedSearch/GraphQLInputMapper.js +29 -40
  25. package/components/AdvancedSearch/GraphQLInputMapper.js.map +1 -1
  26. package/components/AdvancedSearch/GraphQLInputMapper.test.js +179 -139
  27. package/components/AdvancedSearch/GraphQLInputMapper.test.js.map +1 -1
  28. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/QueryBuilder.js +57 -58
  29. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/QueryBuilder.js.map +1 -1
  30. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/Details.js +25 -26
  31. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/Details.js.map +1 -1
  32. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/Filter.js +51 -71
  33. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/Filter.js.map +1 -1
  34. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/FilterOperationLabel.js +9 -13
  35. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/FilterOperationLabel.js.map +1 -1
  36. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/GroupOperationLabel.js +14 -14
  37. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/GroupOperationLabel.js.map +1 -1
  38. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/InputField.js +11 -20
  39. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/InputField.js.map +1 -1
  40. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/OperationSelector.js +15 -25
  41. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/OperationSelector.js.map +1 -1
  42. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/AddFilter.js +14 -17
  43. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/AddFilter.js.map +1 -1
  44. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/AddGroup.js +11 -14
  45. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/AddGroup.js.map +1 -1
  46. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/RemoveFilter.js +14 -18
  47. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/RemoveFilter.js.map +1 -1
  48. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/index.js +0 -2
  49. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/index.js +0 -2
  50. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/index.js +0 -2
  51. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawer.js +65 -67
  52. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawer.js.map +1 -1
  53. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.js +110 -139
  54. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.js.map +1 -1
  55. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.test.js +345 -328
  56. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.test.js.map +1 -1
  57. package/components/AdvancedSearch/QueryBuilderDrawer/index.js +0 -2
  58. package/components/AdvancedSearch/QueryManagerDialog/QueryManagerDialog.js +23 -27
  59. package/components/AdvancedSearch/QueryManagerDialog/QueryManagerDialog.js.map +1 -1
  60. package/components/AdvancedSearch/QueryManagerDialog/components/Description.js +8 -10
  61. package/components/AdvancedSearch/QueryManagerDialog/components/Description.js.map +1 -1
  62. package/components/AdvancedSearch/QueryManagerDialog/components/Empty.js +16 -17
  63. package/components/AdvancedSearch/QueryManagerDialog/components/Empty.js.map +1 -1
  64. package/components/AdvancedSearch/QueryManagerDialog/components/FilterList.js +41 -42
  65. package/components/AdvancedSearch/QueryManagerDialog/components/FilterList.js.map +1 -1
  66. package/components/AdvancedSearch/QueryManagerDialog/components/index.js +0 -2
  67. package/components/AdvancedSearch/QueryManagerDialog/index.js +0 -2
  68. package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialog.js +52 -59
  69. package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialog.js.map +1 -1
  70. package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.js +39 -52
  71. package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.js.map +1 -1
  72. package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.test.js +58 -66
  73. package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.test.js.map +1 -1
  74. package/components/AdvancedSearch/QuerySaverDialog/index.js +0 -2
  75. package/components/AdvancedSearch/SelectedFilter/SelectedFilter.js +18 -19
  76. package/components/AdvancedSearch/SelectedFilter/SelectedFilter.js.map +1 -1
  77. package/components/AdvancedSearch/SelectedFilter/index.js +0 -2
  78. package/components/AdvancedSearch/domain/Feedback.js +12 -11
  79. package/components/AdvancedSearch/domain/Feedback.js.map +1 -1
  80. package/components/AdvancedSearch/domain/Field.js +206 -190
  81. package/components/AdvancedSearch/domain/Field.js.map +1 -1
  82. package/components/AdvancedSearch/domain/FieldMapper.js +40 -41
  83. package/components/AdvancedSearch/domain/FieldMapper.js.map +1 -1
  84. package/components/AdvancedSearch/domain/Filter.js +64 -47
  85. package/components/AdvancedSearch/domain/Filter.js.map +1 -1
  86. package/components/AdvancedSearch/domain/FilterMapper.js +35 -34
  87. package/components/AdvancedSearch/domain/FilterMapper.js.map +1 -1
  88. package/components/AdvancedSearch/domain/FilterRepository.js +84 -85
  89. package/components/AdvancedSearch/domain/FilterRepository.js.map +1 -1
  90. package/components/AdvancedSearch/domain/FilterRepositoryFactory.js +8 -9
  91. package/components/AdvancedSearch/domain/FilterRepositoryFactory.js.map +1 -1
  92. package/components/AdvancedSearch/domain/Loading.js +47 -46
  93. package/components/AdvancedSearch/domain/Loading.js.map +1 -1
  94. package/components/AdvancedSearch/domain/Operation.js +5 -4
  95. package/components/AdvancedSearch/domain/Operation.js.map +1 -1
  96. package/components/AdvancedSearch/domain/Sorter.js +17 -16
  97. package/components/AdvancedSearch/domain/Sorter.js.map +1 -1
  98. package/components/AdvancedSearch/domain/index.js +0 -2
  99. package/components/AdvancedSearch/fields/Boolean.js +23 -25
  100. package/components/AdvancedSearch/fields/Boolean.js.map +1 -1
  101. package/components/AdvancedSearch/fields/DateWithTimezone.js +47 -52
  102. package/components/AdvancedSearch/fields/DateWithTimezone.js.map +1 -1
  103. package/components/AdvancedSearch/fields/DateWithoutTimezone.js +26 -30
  104. package/components/AdvancedSearch/fields/DateWithoutTimezone.js.map +1 -1
  105. package/components/AdvancedSearch/fields/Input.js +12 -14
  106. package/components/AdvancedSearch/fields/Input.js.map +1 -1
  107. package/components/AdvancedSearch/fields/PredefinedValues.js +17 -23
  108. package/components/AdvancedSearch/fields/PredefinedValues.js.map +1 -1
  109. package/components/AdvancedSearch/fields/index.js +0 -2
  110. package/components/AdvancedSearch/gateways/FiltersGatewayInterface.js +0 -3
  111. package/components/AdvancedSearch/gateways/FiltersGraphQLGateway.js +69 -121
  112. package/components/AdvancedSearch/gateways/FiltersGraphQLGateway.js.map +1 -1
  113. package/components/AdvancedSearch/gateways/filters.gql.js +9 -8
  114. package/components/AdvancedSearch/gateways/filters.gql.js.map +1 -1
  115. package/components/AdvancedSearch/gateways/filters.types.js +0 -3
  116. package/components/AdvancedSearch/gateways/index.js +0 -2
  117. package/components/AdvancedSearch/index.js +22 -24
  118. package/components/AdvancedSearch/index.js.map +1 -1
  119. package/components/AdvancedSearch/useFilterRepository.js +4 -3
  120. package/components/AdvancedSearch/useFilterRepository.js.map +1 -1
  121. package/components/AdvancedSearch/useInputField.js +4 -6
  122. package/components/AdvancedSearch/useInputField.js.map +1 -1
  123. package/components/Extensions/Extensions.js +23 -26
  124. package/components/Extensions/Extensions.js.map +1 -1
  125. package/components/Extensions/index.js +0 -2
  126. package/components/FolderGrid/FolderGridItem.js +67 -62
  127. package/components/FolderGrid/FolderGridItem.js.map +1 -1
  128. package/components/FolderGrid/index.js +0 -2
  129. package/components/FolderIcons/assets/folder-shared-icon.js +25 -0
  130. package/components/FolderIcons/assets/folder-shared-icon.js.map +1 -0
  131. package/components/FolderIcons/assets/folder.js +21 -0
  132. package/components/FolderIcons/assets/folder.js.map +1 -0
  133. package/components/FolderIcons/index.js +2 -5
  134. package/components/FolderPicker/FolderPicker.js +23 -20
  135. package/components/FolderPicker/FolderPicker.js.map +1 -1
  136. package/components/FolderTree/ButtonCreate/ButtonCreate.d.ts +1 -0
  137. package/components/FolderTree/ButtonCreate/ButtonCreate.js +17 -14
  138. package/components/FolderTree/ButtonCreate/ButtonCreate.js.map +1 -1
  139. package/components/FolderTree/ButtonCreate/index.js +0 -2
  140. package/components/FolderTree/Empty/Empty.js +5 -6
  141. package/components/FolderTree/Empty/Empty.js.map +1 -1
  142. package/components/FolderTree/Empty/index.js +0 -2
  143. package/components/FolderTree/List/List.js +120 -135
  144. package/components/FolderTree/List/List.js.map +1 -1
  145. package/components/FolderTree/List/index.js +0 -2
  146. package/components/FolderTree/List/utils.js +31 -64
  147. package/components/FolderTree/List/utils.js.map +1 -1
  148. package/components/FolderTree/Loader/Loader.js +15 -18
  149. package/components/FolderTree/Loader/Loader.js.map +1 -1
  150. package/components/FolderTree/Loader/index.js +0 -2
  151. package/components/FolderTree/MenuActions/MenuActions.js +19 -27
  152. package/components/FolderTree/MenuActions/MenuActions.js.map +1 -1
  153. package/components/FolderTree/MenuActions/index.js +0 -2
  154. package/components/FolderTree/Node/Node.js +27 -47
  155. package/components/FolderTree/Node/Node.js.map +1 -1
  156. package/components/FolderTree/Node/index.js +0 -2
  157. package/components/FolderTree/NodePreview/NodePreview.js +11 -14
  158. package/components/FolderTree/NodePreview/NodePreview.js.map +1 -1
  159. package/components/FolderTree/NodePreview/index.js +0 -2
  160. package/components/FolderTree/index.d.ts +2 -1
  161. package/components/FolderTree/index.js +47 -57
  162. package/components/FolderTree/index.js.map +1 -1
  163. package/components/Search/Search.js +15 -20
  164. package/components/Search/Search.js.map +1 -1
  165. package/components/Search/index.js +0 -2
  166. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.js +19 -20
  167. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.js.map +1 -1
  168. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.js +17 -18
  169. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.js.map +1 -1
  170. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.js +113 -130
  171. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.js.map +1 -1
  172. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.js +26 -25
  173. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.js.map +1 -1
  174. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.js +12 -11
  175. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.js.map +1 -1
  176. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.js +11 -12
  177. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.js.map +1 -1
  178. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityRepository.js +0 -3
  179. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityUpdater.js +0 -3
  180. package/components/Table/components/Table/ColumnVisibility/index.js +0 -2
  181. package/components/Table/components/Table/Columns/Column.js +18 -17
  182. package/components/Table/components/Table/Columns/Column.js.map +1 -1
  183. package/components/Table/components/Table/Columns/ColumnMapper.js +31 -31
  184. package/components/Table/components/Table/Columns/ColumnMapper.js.map +1 -1
  185. package/components/Table/components/Table/Columns/ColumnsPresenter.js +14 -13
  186. package/components/Table/components/Table/Columns/ColumnsPresenter.js.map +1 -1
  187. package/components/Table/components/Table/Columns/ColumnsPresenter.test.js +66 -60
  188. package/components/Table/components/Table/Columns/ColumnsPresenter.test.js.map +1 -1
  189. package/components/Table/components/Table/Columns/ColumnsRepository.js +15 -14
  190. package/components/Table/components/Table/Columns/ColumnsRepository.js.map +1 -1
  191. package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.js +15 -11
  192. package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.js.map +1 -1
  193. package/components/Table/components/Table/Columns/IColumnsRepository.js +0 -3
  194. package/components/Table/components/Table/Columns/index.js +0 -2
  195. package/components/Table/components/Table/Table.js +38 -32
  196. package/components/Table/components/Table/Table.js.map +1 -1
  197. package/components/Table/components/Table/TableInner.js +33 -40
  198. package/components/Table/components/Table/TableInner.js.map +1 -1
  199. package/components/Table/components/Table/TablePresenter.js +12 -9
  200. package/components/Table/components/Table/TablePresenter.js.map +1 -1
  201. package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.js +12 -11
  202. package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.js.map +1 -1
  203. package/components/Table/components/Table/gateways/IColumnsVisibilityGateway.js +0 -3
  204. package/components/Table/components/Table/gateways/index.js +0 -2
  205. package/components/Table/components/Table/index.js +0 -2
  206. package/components/Table/components/index.js +0 -2
  207. package/components/Table/createTableData.js +13 -16
  208. package/components/Table/createTableData.js.map +1 -1
  209. package/components/Table/index.js +0 -2
  210. package/components/Table/useTableRow.js +17 -29
  211. package/components/Table/useTableRow.js.map +1 -1
  212. package/components/index.js +0 -2
  213. package/config/AcoConfig.js +43 -30
  214. package/config/AcoConfig.js.map +1 -1
  215. package/config/advanced-search/FieldRenderer.js +27 -30
  216. package/config/advanced-search/FieldRenderer.js.map +1 -1
  217. package/config/advanced-search/index.js +3 -2
  218. package/config/advanced-search/index.js.map +1 -1
  219. package/config/folder/Action.js +27 -32
  220. package/config/folder/Action.js.map +1 -1
  221. package/config/folder/DropConfirmation.js +12 -13
  222. package/config/folder/DropConfirmation.js.map +1 -1
  223. package/config/folder/createFolderFieldDecoratorFactory.js +14 -18
  224. package/config/folder/createFolderFieldDecoratorFactory.js.map +1 -1
  225. package/config/folder/index.js +4 -3
  226. package/config/folder/index.js.map +1 -1
  227. package/config/index.js +0 -2
  228. package/config/record/Action.js +28 -33
  229. package/config/record/Action.js.map +1 -1
  230. package/config/record/index.js +3 -2
  231. package/config/record/index.js.map +1 -1
  232. package/config/table/Column.js +65 -81
  233. package/config/table/Column.js.map +1 -1
  234. package/config/table/Sorting.js +24 -27
  235. package/config/table/Sorting.js.map +1 -1
  236. package/config/table/index.js +4 -3
  237. package/config/table/index.js.map +1 -1
  238. package/constants.js +0 -2
  239. package/contexts/acoList.js +283 -384
  240. package/contexts/acoList.js.map +1 -1
  241. package/contexts/app.js +40 -53
  242. package/contexts/app.js.map +1 -1
  243. package/contexts/folder.js +11 -15
  244. package/contexts/folder.js.map +1 -1
  245. package/contexts/folders.js +27 -32
  246. package/contexts/folders.js.map +1 -1
  247. package/contexts/index.js +0 -2
  248. package/contexts/navigateFolder.js +49 -57
  249. package/contexts/navigateFolder.js.map +1 -1
  250. package/contexts/records.js +299 -422
  251. package/contexts/records.js.map +1 -1
  252. package/dialogs/DialogSetPermissions/UsersTeamsMultiAutocomplete.js +22 -29
  253. package/dialogs/DialogSetPermissions/UsersTeamsMultiAutocomplete.js.map +1 -1
  254. package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemGraphic.js +18 -21
  255. package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemGraphic.js.map +1 -1
  256. package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.js +105 -107
  257. package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.js.map +1 -1
  258. package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemText.js +11 -16
  259. package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemText.js.map +1 -1
  260. package/dialogs/DialogSetPermissions/UsersTeamsSelection.js +29 -34
  261. package/dialogs/DialogSetPermissions/UsersTeamsSelection.js.map +1 -1
  262. package/dialogs/DialogSetPermissions/graphql.js +3 -2
  263. package/dialogs/DialogSetPermissions/graphql.js.map +1 -1
  264. package/dialogs/ParentFolderField.js +12 -13
  265. package/dialogs/ParentFolderField.js.map +1 -1
  266. package/dialogs/index.js +0 -2
  267. package/dialogs/useConfirmMoveFolderDialog.js +16 -19
  268. package/dialogs/useConfirmMoveFolderDialog.js.map +1 -1
  269. package/dialogs/useCreateDialog.js +78 -93
  270. package/dialogs/useCreateDialog.js.map +1 -1
  271. package/dialogs/useDeleteDialog.js +27 -33
  272. package/dialogs/useDeleteDialog.js.map +1 -1
  273. package/dialogs/useEditDialog.js +77 -80
  274. package/dialogs/useEditDialog.js.map +1 -1
  275. package/dialogs/useMoveToFolderDialog.d.ts +1 -1
  276. package/dialogs/useMoveToFolderDialog.js +33 -49
  277. package/dialogs/useMoveToFolderDialog.js.map +1 -1
  278. package/dialogs/useSetPermissionsDialog.js +85 -87
  279. package/dialogs/useSetPermissionsDialog.js.map +1 -1
  280. package/domain/folder/Folder.js +25 -24
  281. package/domain/folder/Folder.js.map +1 -1
  282. package/domain/folder/FolderDto.js +0 -3
  283. package/domain/folder/FolderDtoMapper.js +24 -25
  284. package/domain/folder/FolderDtoMapper.js.map +1 -1
  285. package/domain/folder/FolderIdentity.js +16 -17
  286. package/domain/folder/FolderIdentity.js.map +1 -1
  287. package/domain/folder/RootFolder.js +24 -23
  288. package/domain/folder/RootFolder.js.map +1 -1
  289. package/exports/admin/aco.js +0 -2
  290. package/exports/admin/ui.js +0 -2
  291. package/features/folders/abstractions.js +6 -5
  292. package/features/folders/abstractions.js.map +1 -1
  293. package/features/folders/cache/FoldersCacheFactory.js +13 -12
  294. package/features/folders/cache/FoldersCacheFactory.js.map +1 -1
  295. package/features/folders/cache/ListCache.d.ts +2 -29
  296. package/features/folders/cache/ListCache.js +1 -43
  297. package/features/folders/cache/LoadedCache.js +33 -27
  298. package/features/folders/cache/LoadedCache.js.map +1 -1
  299. package/features/folders/cache/LoadedFoldersCacheFactory.js +13 -12
  300. package/features/folders/cache/LoadedFoldersCacheFactory.js.map +1 -1
  301. package/features/folders/cache/index.js +0 -2
  302. package/features/folders/createFolder/CreateFolder.test.js +44 -48
  303. package/features/folders/createFolder/CreateFolder.test.js.map +1 -1
  304. package/features/folders/createFolder/CreateFolderGqlGateway.js +27 -32
  305. package/features/folders/createFolder/CreateFolderGqlGateway.js.map +1 -1
  306. package/features/folders/createFolder/CreateFolderRepository.js +29 -24
  307. package/features/folders/createFolder/CreateFolderRepository.js.map +1 -1
  308. package/features/folders/createFolder/CreateFolderUseCase.js +20 -17
  309. package/features/folders/createFolder/CreateFolderUseCase.js.map +1 -1
  310. package/features/folders/createFolder/abstractions.js +4 -12
  311. package/features/folders/createFolder/abstractions.js.map +1 -1
  312. package/features/folders/createFolder/feature.js +15 -14
  313. package/features/folders/createFolder/feature.js.map +1 -1
  314. package/features/folders/createFolder/index.js +0 -2
  315. package/features/folders/createFolder/useCreateFolder.js +6 -9
  316. package/features/folders/createFolder/useCreateFolder.js.map +1 -1
  317. package/features/folders/deleteFolder/DeleteFolder.test.js +38 -39
  318. package/features/folders/deleteFolder/DeleteFolder.test.js.map +1 -1
  319. package/features/folders/deleteFolder/DeleteFolderGqlGateway.js +21 -28
  320. package/features/folders/deleteFolder/DeleteFolderGqlGateway.js.map +1 -1
  321. package/features/folders/deleteFolder/DeleteFolderRepository.js +16 -13
  322. package/features/folders/deleteFolder/DeleteFolderRepository.js.map +1 -1
  323. package/features/folders/deleteFolder/DeleteFolderUseCase.js +13 -10
  324. package/features/folders/deleteFolder/DeleteFolderUseCase.js.map +1 -1
  325. package/features/folders/deleteFolder/abstractions.js +4 -12
  326. package/features/folders/deleteFolder/abstractions.js.map +1 -1
  327. package/features/folders/deleteFolder/feature.js +15 -14
  328. package/features/folders/deleteFolder/feature.js.map +1 -1
  329. package/features/folders/deleteFolder/index.js +0 -2
  330. package/features/folders/deleteFolder/useDeleteFolder.js +6 -9
  331. package/features/folders/deleteFolder/useDeleteFolder.js.map +1 -1
  332. package/features/folders/feature.js +23 -29
  333. package/features/folders/feature.js.map +1 -1
  334. package/features/folders/folderModelProvider/FolderModelContext.js +17 -24
  335. package/features/folders/folderModelProvider/FolderModelContext.js.map +1 -1
  336. package/features/folders/folderModelProvider/FolderModelDto.js +0 -3
  337. package/features/folders/folderModelProvider/FolderModelProvider.js +23 -23
  338. package/features/folders/folderModelProvider/FolderModelProvider.js.map +1 -1
  339. package/features/folders/folderModelProvider/GetFolderModelGqlGateway.js +20 -26
  340. package/features/folders/folderModelProvider/GetFolderModelGqlGateway.js.map +1 -1
  341. package/features/folders/folderModelProvider/GetFolderModelRepository.js +25 -22
  342. package/features/folders/folderModelProvider/GetFolderModelRepository.js.map +1 -1
  343. package/features/folders/folderModelProvider/abstractions.js +3 -2
  344. package/features/folders/folderModelProvider/abstractions.js.map +1 -1
  345. package/features/folders/folderModelProvider/feature.js +15 -14
  346. package/features/folders/folderModelProvider/feature.js.map +1 -1
  347. package/features/folders/folderModelProvider/index.js +0 -2
  348. package/features/folders/getDescendantFolders/GetDescendantFolders.test.js +116 -110
  349. package/features/folders/getDescendantFolders/GetDescendantFolders.test.js.map +1 -1
  350. package/features/folders/getDescendantFolders/GetDescendantFoldersRepository.js +35 -35
  351. package/features/folders/getDescendantFolders/GetDescendantFoldersRepository.js.map +1 -1
  352. package/features/folders/getDescendantFolders/GetDescendantFoldersUseCase.js +13 -10
  353. package/features/folders/getDescendantFolders/GetDescendantFoldersUseCase.js.map +1 -1
  354. package/features/folders/getDescendantFolders/abstractions.js +3 -10
  355. package/features/folders/getDescendantFolders/abstractions.js.map +1 -1
  356. package/features/folders/getDescendantFolders/feature.js +14 -13
  357. package/features/folders/getDescendantFolders/feature.js.map +1 -1
  358. package/features/folders/getDescendantFolders/index.js +0 -2
  359. package/features/folders/getDescendantFolders/useGetDescendantFolders.js +6 -9
  360. package/features/folders/getDescendantFolders/useGetDescendantFolders.js.map +1 -1
  361. package/features/folders/getFolder/GetFolderGqlGateway.js +26 -31
  362. package/features/folders/getFolder/GetFolderGqlGateway.js.map +1 -1
  363. package/features/folders/getFolder/GetFolderRepository.js +18 -13
  364. package/features/folders/getFolder/GetFolderRepository.js.map +1 -1
  365. package/features/folders/getFolder/GetFolderUseCase.js +13 -10
  366. package/features/folders/getFolder/GetFolderUseCase.js.map +1 -1
  367. package/features/folders/getFolder/abstractions.js +4 -12
  368. package/features/folders/getFolder/abstractions.js.map +1 -1
  369. package/features/folders/getFolder/feature.js +15 -14
  370. package/features/folders/getFolder/feature.js.map +1 -1
  371. package/features/folders/getFolder/index.js +0 -2
  372. package/features/folders/getFolder/useGetFolder.js +6 -9
  373. package/features/folders/getFolder/useGetFolder.js.map +1 -1
  374. package/features/folders/getFolderAncestors/GetFolderAncestors.test.js +108 -103
  375. package/features/folders/getFolderAncestors/GetFolderAncestors.test.js.map +1 -1
  376. package/features/folders/getFolderAncestors/GetFolderAncestorsRepository.js +32 -30
  377. package/features/folders/getFolderAncestors/GetFolderAncestorsRepository.js.map +1 -1
  378. package/features/folders/getFolderAncestors/GetFolderAncestorsUseCase.js +13 -10
  379. package/features/folders/getFolderAncestors/GetFolderAncestorsUseCase.js.map +1 -1
  380. package/features/folders/getFolderAncestors/abstractions.js +3 -10
  381. package/features/folders/getFolderAncestors/abstractions.js.map +1 -1
  382. package/features/folders/getFolderAncestors/feature.js +14 -13
  383. package/features/folders/getFolderAncestors/feature.js.map +1 -1
  384. package/features/folders/getFolderAncestors/index.js +0 -2
  385. package/features/folders/getFolderAncestors/useGetFolderAncestors.js +6 -9
  386. package/features/folders/getFolderAncestors/useGetFolderAncestors.js.map +1 -1
  387. package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFields.test.js +190 -160
  388. package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFields.test.js.map +1 -1
  389. package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFieldsUseCase.js +30 -29
  390. package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFieldsUseCase.js.map +1 -1
  391. package/features/folders/getFolderExtensionsFields/abstractions.js +3 -8
  392. package/features/folders/getFolderExtensionsFields/abstractions.js.map +1 -1
  393. package/features/folders/getFolderExtensionsFields/feature.js +16 -18
  394. package/features/folders/getFolderExtensionsFields/feature.js.map +1 -1
  395. package/features/folders/getFolderExtensionsFields/filters/CmsNamespaceFilter.js +16 -17
  396. package/features/folders/getFolderExtensionsFields/filters/CmsNamespaceFilter.js.map +1 -1
  397. package/features/folders/getFolderExtensionsFields/filters/FmFileNamespaceFilter.js +13 -16
  398. package/features/folders/getFolderExtensionsFields/filters/FmFileNamespaceFilter.js.map +1 -1
  399. package/features/folders/getFolderExtensionsFields/filters/GlobalNamespaceFilter.js +7 -8
  400. package/features/folders/getFolderExtensionsFields/filters/GlobalNamespaceFilter.js.map +1 -1
  401. package/features/folders/getFolderExtensionsFields/index.js +0 -2
  402. package/features/folders/getFolderExtensionsFields/useFolderExtensionsFields.js +13 -14
  403. package/features/folders/getFolderExtensionsFields/useFolderExtensionsFields.js.map +1 -1
  404. package/features/folders/getFolderLevelPermission/GetFolderLevelPermission.test.js +135 -164
  405. package/features/folders/getFolderLevelPermission/GetFolderLevelPermission.test.js.map +1 -1
  406. package/features/folders/getFolderLevelPermission/GetFolderLevelPermissionUseCase.js +8 -7
  407. package/features/folders/getFolderLevelPermission/GetFolderLevelPermissionUseCase.js.map +1 -1
  408. package/features/folders/getFolderLevelPermission/abstractions.js +2 -1
  409. package/features/folders/getFolderLevelPermission/abstractions.js.map +1 -1
  410. package/features/folders/getFolderLevelPermission/decorators/GetFolderLevelPermissionWithFlpDecorator.js +17 -20
  411. package/features/folders/getFolderLevelPermission/decorators/GetFolderLevelPermissionWithFlpDecorator.js.map +1 -1
  412. package/features/folders/getFolderLevelPermission/feature.js +14 -16
  413. package/features/folders/getFolderLevelPermission/feature.js.map +1 -1
  414. package/features/folders/getFolderLevelPermission/index.js +0 -2
  415. package/features/folders/getFolderLevelPermission/useGetFolderLevelPermission.js +9 -10
  416. package/features/folders/getFolderLevelPermission/useGetFolderLevelPermission.js.map +1 -1
  417. package/features/folders/listFolders/ListFolders.test.js +98 -111
  418. package/features/folders/listFolders/ListFolders.test.js.map +1 -1
  419. package/features/folders/listFolders/ListFoldersGqlGateway.js +29 -27
  420. package/features/folders/listFolders/ListFoldersGqlGateway.js.map +1 -1
  421. package/features/folders/listFolders/ListFoldersRepository.js +19 -14
  422. package/features/folders/listFolders/ListFoldersRepository.js.map +1 -1
  423. package/features/folders/listFolders/ListFoldersUseCase.js +13 -10
  424. package/features/folders/listFolders/ListFoldersUseCase.js.map +1 -1
  425. package/features/folders/listFolders/ListFoldersUseCaseWithLoading.js +14 -11
  426. package/features/folders/listFolders/ListFoldersUseCaseWithLoading.js.map +1 -1
  427. package/features/folders/listFolders/abstractions.js +4 -3
  428. package/features/folders/listFolders/abstractions.js.map +1 -1
  429. package/features/folders/listFolders/feature.js +17 -23
  430. package/features/folders/listFolders/feature.js.map +1 -1
  431. package/features/folders/listFolders/index.js +0 -2
  432. package/features/folders/listFolders/useListFolders.js +35 -37
  433. package/features/folders/listFolders/useListFolders.js.map +1 -1
  434. package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.js +218 -203
  435. package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.js.map +1 -1
  436. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js +31 -33
  437. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js.map +1 -1
  438. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.js +18 -13
  439. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.js.map +1 -1
  440. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.js +18 -15
  441. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.js.map +1 -1
  442. package/features/folders/listFoldersByParentIds/abstractions.js +4 -3
  443. package/features/folders/listFoldersByParentIds/abstractions.js.map +1 -1
  444. package/features/folders/listFoldersByParentIds/decorators/RepositoryWithLoadedCache.js +20 -22
  445. package/features/folders/listFoldersByParentIds/decorators/RepositoryWithLoadedCache.js.map +1 -1
  446. package/features/folders/listFoldersByParentIds/decorators/UseCaseWithLoading.js +17 -18
  447. package/features/folders/listFoldersByParentIds/decorators/UseCaseWithLoading.js.map +1 -1
  448. package/features/folders/listFoldersByParentIds/feature.js +18 -26
  449. package/features/folders/listFoldersByParentIds/feature.js.map +1 -1
  450. package/features/folders/listFoldersByParentIds/index.js +0 -2
  451. package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.js +40 -42
  452. package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.js.map +1 -1
  453. package/features/folders/loadFolderHierarchy/LoadFolderHierarchy.test.js +134 -136
  454. package/features/folders/loadFolderHierarchy/LoadFolderHierarchy.test.js.map +1 -1
  455. package/features/folders/loadFolderHierarchy/LoadFolderHierarchyGqlGateway.js +31 -31
  456. package/features/folders/loadFolderHierarchy/LoadFolderHierarchyGqlGateway.js.map +1 -1
  457. package/features/folders/loadFolderHierarchy/LoadFolderHierarchyRepository.js +35 -40
  458. package/features/folders/loadFolderHierarchy/LoadFolderHierarchyRepository.js.map +1 -1
  459. package/features/folders/loadFolderHierarchy/LoadFolderHierarchyUseCase.js +13 -10
  460. package/features/folders/loadFolderHierarchy/LoadFolderHierarchyUseCase.js.map +1 -1
  461. package/features/folders/loadFolderHierarchy/LoadFolderHierarchyUseCaseWithLoading.js +14 -11
  462. package/features/folders/loadFolderHierarchy/LoadFolderHierarchyUseCaseWithLoading.js.map +1 -1
  463. package/features/folders/loadFolderHierarchy/abstractions.js +4 -3
  464. package/features/folders/loadFolderHierarchy/abstractions.js.map +1 -1
  465. package/features/folders/loadFolderHierarchy/feature.js +17 -23
  466. package/features/folders/loadFolderHierarchy/feature.js.map +1 -1
  467. package/features/folders/loadFolderHierarchy/index.js +0 -2
  468. package/features/folders/loadFolderHierarchy/useLoadFolderHierarchy.js +37 -42
  469. package/features/folders/loadFolderHierarchy/useLoadFolderHierarchy.js.map +1 -1
  470. package/features/folders/updateFolder/UpdateFolder.test.js +372 -384
  471. package/features/folders/updateFolder/UpdateFolder.test.js.map +1 -1
  472. package/features/folders/updateFolder/UpdateFolderGqlGateway.js +33 -45
  473. package/features/folders/updateFolder/UpdateFolderGqlGateway.js.map +1 -1
  474. package/features/folders/updateFolder/UpdateFolderRepository.js +26 -24
  475. package/features/folders/updateFolder/UpdateFolderRepository.js.map +1 -1
  476. package/features/folders/updateFolder/UpdateFolderUseCase.js +13 -10
  477. package/features/folders/updateFolder/UpdateFolderUseCase.js.map +1 -1
  478. package/features/folders/updateFolder/abstractions.js +4 -3
  479. package/features/folders/updateFolder/abstractions.js.map +1 -1
  480. package/features/folders/updateFolder/decorators/RepositoryWithPathChange.js +43 -64
  481. package/features/folders/updateFolder/decorators/RepositoryWithPathChange.js.map +1 -1
  482. package/features/folders/updateFolder/decorators/RepositoryWithPermissionsChange.js +44 -56
  483. package/features/folders/updateFolder/decorators/RepositoryWithPermissionsChange.js.map +1 -1
  484. package/features/folders/updateFolder/decorators/UseCaseWithLoading.js +14 -11
  485. package/features/folders/updateFolder/decorators/UseCaseWithLoading.js.map +1 -1
  486. package/features/folders/updateFolder/decorators/UseCaseWithoutInheritedPermissions.js +15 -15
  487. package/features/folders/updateFolder/decorators/UseCaseWithoutInheritedPermissions.js.map +1 -1
  488. package/features/folders/updateFolder/feature.js +20 -28
  489. package/features/folders/updateFolder/feature.js.map +1 -1
  490. package/features/folders/updateFolder/index.js +0 -2
  491. package/features/folders/updateFolder/useUpdateFolder.js +17 -19
  492. package/features/folders/updateFolder/useUpdateFolder.js.map +1 -1
  493. package/graphql/app.gql.js +3 -4
  494. package/graphql/app.gql.js.map +1 -1
  495. package/graphql/records/common.js +41 -39
  496. package/graphql/records/common.js.map +1 -1
  497. package/graphql/records/getRecord.js +2 -3
  498. package/graphql/records/getRecord.js.map +1 -1
  499. package/graphql/records/listRecords.js +22 -13
  500. package/graphql/records/listRecords.js.map +1 -1
  501. package/graphql/records/moveRecord.js +5 -6
  502. package/graphql/records/moveRecord.js.map +1 -1
  503. package/graphql/records/types.js +0 -3
  504. package/graphql/records.gql.js +0 -2
  505. package/handlers.js +17 -40
  506. package/handlers.js.map +1 -1
  507. package/hooks/index.js +0 -2
  508. package/hooks/useAcoApp.js +11 -12
  509. package/hooks/useAcoApp.js.map +1 -1
  510. package/hooks/useAcoList.js +5 -6
  511. package/hooks/useAcoList.js.map +1 -1
  512. package/hooks/useFolder.js +6 -7
  513. package/hooks/useFolder.js.map +1 -1
  514. package/hooks/useFolderModel.js +11 -13
  515. package/hooks/useFolderModel.js.map +1 -1
  516. package/hooks/useFoldersType.js +7 -12
  517. package/hooks/useFoldersType.js.map +1 -1
  518. package/hooks/useNavigateFolder.js +5 -6
  519. package/hooks/useNavigateFolder.js.map +1 -1
  520. package/hooks/useRecords.js +56 -77
  521. package/hooks/useRecords.js.map +1 -1
  522. package/hooks/useTags.js +21 -30
  523. package/hooks/useTags.js.map +1 -1
  524. package/index.d.ts +1 -0
  525. package/index.js +3 -8
  526. package/package.json +21 -21
  527. package/presentation/folderTree/FolderTree.d.ts +19 -0
  528. package/presentation/folderTree/FolderTree.js +252 -0
  529. package/presentation/folderTree/FolderTree.js.map +1 -0
  530. package/presentation/folderTree/FolderTreeFieldRenderer.d.ts +13 -0
  531. package/presentation/folderTree/FolderTreeFieldRenderer.js +23 -0
  532. package/presentation/folderTree/FolderTreeFieldRenderer.js.map +1 -0
  533. package/presentation/folderTree/FolderTreePresenter.d.ts +51 -0
  534. package/presentation/folderTree/FolderTreePresenter.js +303 -0
  535. package/presentation/folderTree/FolderTreePresenter.js.map +1 -0
  536. package/presentation/folderTree/FolderTreePresenter.test.d.ts +1 -0
  537. package/presentation/folderTree/FolderTreePresenter.test.js +517 -0
  538. package/presentation/folderTree/FolderTreePresenter.test.js.map +1 -0
  539. package/presentation/folderTree/abstractions.d.ts +65 -0
  540. package/presentation/folderTree/abstractions.js +5 -0
  541. package/presentation/folderTree/abstractions.js.map +1 -0
  542. package/presentation/folderTree/feature.d.ts +3 -0
  543. package/presentation/folderTree/feature.js +17 -0
  544. package/presentation/folderTree/feature.js.map +1 -0
  545. package/presentation/folderTree/index.d.ts +5 -0
  546. package/presentation/folderTree/index.js +3 -0
  547. package/sorting.js +25 -28
  548. package/sorting.js.map +1 -1
  549. package/static/svg/folder-shared-icon.5d947e49.svg +5 -0
  550. package/static/svg/folder.f3d5c400.svg +4 -0
  551. package/table.types.js +0 -3
  552. package/types.js +10 -13
  553. package/types.js.map +1 -1
  554. package/components/Actions/DeleteFolder/index.js.map +0 -1
  555. package/components/Actions/EditFolder/index.js.map +0 -1
  556. package/components/Actions/SetFolderPemissions/index.js.map +0 -1
  557. package/components/Actions/index.js.map +0 -1
  558. package/components/AdvancedSearch/Button/index.js.map +0 -1
  559. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/index.js.map +0 -1
  560. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/index.js.map +0 -1
  561. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/index.js.map +0 -1
  562. package/components/AdvancedSearch/QueryBuilderDrawer/index.js.map +0 -1
  563. package/components/AdvancedSearch/QueryManagerDialog/components/index.js.map +0 -1
  564. package/components/AdvancedSearch/QueryManagerDialog/index.js.map +0 -1
  565. package/components/AdvancedSearch/QuerySaverDialog/index.js.map +0 -1
  566. package/components/AdvancedSearch/SelectedFilter/index.js.map +0 -1
  567. package/components/AdvancedSearch/domain/index.js.map +0 -1
  568. package/components/AdvancedSearch/fields/index.js.map +0 -1
  569. package/components/AdvancedSearch/gateways/FiltersGatewayInterface.js.map +0 -1
  570. package/components/AdvancedSearch/gateways/filters.types.js.map +0 -1
  571. package/components/AdvancedSearch/gateways/index.js.map +0 -1
  572. package/components/Extensions/index.js.map +0 -1
  573. package/components/FolderGrid/index.js.map +0 -1
  574. package/components/FolderIcons/index.js.map +0 -1
  575. package/components/FolderTree/ButtonCreate/index.js.map +0 -1
  576. package/components/FolderTree/Empty/index.js.map +0 -1
  577. package/components/FolderTree/List/index.js.map +0 -1
  578. package/components/FolderTree/Loader/index.js.map +0 -1
  579. package/components/FolderTree/MenuActions/index.js.map +0 -1
  580. package/components/FolderTree/Node/index.js.map +0 -1
  581. package/components/FolderTree/NodePreview/index.js.map +0 -1
  582. package/components/Search/index.js.map +0 -1
  583. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityRepository.js.map +0 -1
  584. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityUpdater.js.map +0 -1
  585. package/components/Table/components/Table/ColumnVisibility/index.js.map +0 -1
  586. package/components/Table/components/Table/Columns/IColumnsRepository.js.map +0 -1
  587. package/components/Table/components/Table/Columns/index.js.map +0 -1
  588. package/components/Table/components/Table/gateways/IColumnsVisibilityGateway.js.map +0 -1
  589. package/components/Table/components/Table/gateways/index.js.map +0 -1
  590. package/components/Table/components/Table/index.js.map +0 -1
  591. package/components/Table/components/index.js.map +0 -1
  592. package/components/Table/index.js.map +0 -1
  593. package/components/index.js.map +0 -1
  594. package/config/index.js.map +0 -1
  595. package/constants.js.map +0 -1
  596. package/contexts/index.js.map +0 -1
  597. package/dialogs/index.js.map +0 -1
  598. package/domain/folder/FolderDto.js.map +0 -1
  599. package/exports/admin/aco.js.map +0 -1
  600. package/exports/admin/ui.js.map +0 -1
  601. package/features/folders/cache/ListCache.js.map +0 -1
  602. package/features/folders/cache/index.js.map +0 -1
  603. package/features/folders/createFolder/index.js.map +0 -1
  604. package/features/folders/deleteFolder/index.js.map +0 -1
  605. package/features/folders/folderModelProvider/FolderModelDto.js.map +0 -1
  606. package/features/folders/folderModelProvider/index.js.map +0 -1
  607. package/features/folders/getDescendantFolders/index.js.map +0 -1
  608. package/features/folders/getFolder/index.js.map +0 -1
  609. package/features/folders/getFolderAncestors/index.js.map +0 -1
  610. package/features/folders/getFolderExtensionsFields/index.js.map +0 -1
  611. package/features/folders/getFolderLevelPermission/index.js.map +0 -1
  612. package/features/folders/listFolders/index.js.map +0 -1
  613. package/features/folders/listFoldersByParentIds/index.js.map +0 -1
  614. package/features/folders/loadFolderHierarchy/index.js.map +0 -1
  615. package/features/folders/updateFolder/index.js.map +0 -1
  616. package/graphql/records/types.js.map +0 -1
  617. package/graphql/records.gql.js.map +0 -1
  618. package/hooks/index.js.map +0 -1
  619. package/index.js.map +0 -1
  620. package/table.types.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["describe","it","expect","beforeEach","vi","LoadingRepository","ROOT_FOLDER","ListCache","Folder","Container","FoldersContext","FoldersCache","UpdateFolderFeature","UpdateFolderUseCase","UpdateFolderGateway","FoldersLoadingRepository","UpdateFolderMockGateway","constructor","mockResponse","execute","type","setupTest","params","container","foldersCache","addItems","create","id","title","slug","parentId","permissions","folders","registerInstance","register","gateway","updateFolder","resolve","clearAllMocks","spy","spyOn","hasItems","toBe","item","getItem","folder","toEqual","toHaveBeenCalledTimes","updatedItem","toBeDefined","parentFolder","childFolder1","childFolder2","childFolder3","parentNewPermissions","level","target","childFolderCache1","map","permission","inheritedFrom","childFolderCache2","childFolderCache3","child1NewPermissions","newPermissions","path","newParentPath","newChildFolder1Path","UpdateFolderErrorMockGateway","Error","rejects","toThrow"],"sources":["UpdateFolder.test.ts"],"sourcesContent":["import { describe, it, expect, beforeEach, vi } from \"vitest\";\nimport { type FolderPermission } from \"@webiny/shared-aco/flp/flp.types.js\";\nimport { LoadingRepository } from \"@webiny/app-utils\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\nimport type { FolderDto } from \"~/domain/folder/FolderDto.js\";\nimport { ListCache } from \"~/features/folders/cache/index.js\";\nimport { Folder } from \"~/domain/folder/Folder.js\";\nimport { Container } from \"@webiny/di\";\nimport { FoldersContext } from \"~/features/folders/abstractions.js\";\nimport { FoldersCache } from \"~/features/folders/abstractions.js\";\nimport { UpdateFolderFeature } from \"~/features/folders/updateFolder/feature.js\";\nimport { UpdateFolderUseCase } from \"~/features/folders/updateFolder/abstractions.js\";\nimport { UpdateFolderGateway } from \"~/features/folders/updateFolder/abstractions.js\";\nimport { FoldersLoadingRepository } from \"~/features/folders/abstractions.js\";\n\nclass UpdateFolderMockGateway implements UpdateFolderGateway.Interface {\n mockResponse: Partial<FolderDto>;\n\n constructor(mockResponse: Partial<FolderDto>) {\n this.mockResponse = mockResponse;\n }\n\n async execute() {\n return this.mockResponse as FolderDto;\n }\n}\n\ninterface SetupTestParams {\n gateway: UpdateFolderGateway.Interface;\n folders?: Folder[];\n foldersCache?: ListCache<Folder>;\n}\n\ndescribe(\"UpdateFolder\", () => {\n const type = \"abc\";\n\n function setupTest(params: SetupTestParams) {\n const container = new Container();\n const foldersCache = params.foldersCache ? params.foldersCache : new ListCache<Folder>();\n\n if (!params.foldersCache) {\n foldersCache.addItems([\n Folder.create({\n id: \"any-folder-id\",\n title: \"Any Folder\",\n slug: \"any-folder\",\n parentId: null,\n permissions: [],\n type\n })\n ]);\n }\n\n if (params.folders) {\n foldersCache.addItems(params.folders);\n }\n\n container.registerInstance(FoldersContext, { type });\n container.registerInstance(FoldersCache, foldersCache);\n container.registerInstance(FoldersLoadingRepository, new LoadingRepository());\n\n UpdateFolderFeature.register(container);\n container.registerInstance(UpdateFolderGateway, params.gateway);\n\n return { container, foldersCache, updateFolder: container.resolve(UpdateFolderUseCase) };\n }\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should be able to update a folder\", async () => {\n const gateway = new UpdateFolderMockGateway({\n id: \"any-folder-id\",\n title: \"Updated Folder\",\n slug: \"updated-folder\",\n parentId: \"another-id\",\n permissions: [],\n type\n });\n\n const { updateFolder, foldersCache } = setupTest({ gateway });\n\n const spy = vi.spyOn(gateway, \"execute\");\n\n expect(foldersCache.hasItems()).toBe(true);\n const item = foldersCache.getItem(folder => folder.id === \"any-folder-id\");\n expect(item?.id).toEqual(\"any-folder-id\");\n expect(item?.title).toEqual(\"Any Folder\");\n\n await updateFolder.execute({\n id: \"any-folder-id\",\n title: \"Updated Folder\",\n slug: \"updated-folder\",\n parentId: \"another-id\",\n permissions: [],\n type\n });\n\n expect(spy).toHaveBeenCalledTimes(1);\n const updatedItem = foldersCache.getItem(folder => folder.id === \"any-folder-id\");\n\n expect(updatedItem).toBeDefined();\n expect(updatedItem?.id).toEqual(\"any-folder-id\");\n expect(updatedItem?.type).toEqual(type);\n expect(updatedItem?.title).toEqual(\"Updated Folder\");\n expect(updatedItem?.slug).toEqual(\"updated-folder\");\n expect(updatedItem?.parentId).toEqual(\"another-id\");\n });\n\n it(\"should propagate `permissions` changes to child folders\", async () => {\n const parentFolder = Folder.create({\n id: \"parent-folder-id\",\n title: \"Parent Folder\",\n slug: \"parent-folder\",\n parentId: null,\n permissions: [],\n type\n });\n\n const childFolder1 = Folder.create({\n id: \"child-folder-id-1\",\n title: \"Child Folder 1\",\n slug: \"child-folder-1\",\n parentId: parentFolder.id,\n permissions: [],\n type\n });\n\n const childFolder2 = Folder.create({\n id: \"child-folder-id-2\",\n title: \"Child Folder 2\",\n slug: \"child-folder-2\",\n parentId: childFolder1.id,\n permissions: [],\n type\n });\n\n const childFolder3 = Folder.create({\n id: \"child-folder-id-3\",\n title: \"Child Folder 3\",\n slug: \"child-folder-3\",\n parentId: parentFolder.id, // <-- This folder is a sibling of childFolder1, not a child\n permissions: [],\n type\n });\n\n const foldersCache = new ListCache<Folder>();\n foldersCache.addItems([parentFolder, childFolder1, childFolder2, childFolder3]);\n\n // Let's update parentFolder, the change should be propagated to all it's children (childFolder1, childFolder2 and childFolder3).\n const parentNewPermissions: FolderPermission[] = [\n { level: \"viewer\", target: \"admin:123\" },\n { level: \"viewer\", target: \"admin:456\" }\n ];\n\n {\n const gateway = new UpdateFolderMockGateway({\n id: parentFolder.id,\n title: parentFolder.title,\n slug: parentFolder.slug,\n parentId: parentFolder.parentId,\n permissions: parentNewPermissions,\n type\n });\n\n const { updateFolder } = setupTest({ gateway, foldersCache });\n\n await updateFolder.execute({\n id: parentFolder.id,\n title: parentFolder.title,\n slug: parentFolder.slug,\n parentId: parentFolder.parentId,\n permissions: parentNewPermissions,\n type\n });\n\n const childFolderCache1 = foldersCache.getItem(folder => folder.id === childFolder1.id);\n expect(childFolderCache1?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${parentFolder?.id}`\n }))\n );\n\n const childFolderCache2 = foldersCache.getItem(folder => folder.id === childFolder2.id);\n expect(childFolderCache2?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${childFolderCache1?.id}`\n }))\n );\n\n const childFolderCache3 = foldersCache.getItem(folder => folder.id === childFolder3.id);\n expect(childFolderCache3?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${parentFolder?.id}`\n }))\n );\n }\n\n // Let's update childFolder1, the change should be propagated to childFolder2, but not to childFolder3\n const child1NewPermissions: FolderPermission[] = [{ level: \"owner\", target: \"admin:123\" }];\n\n {\n const gateway = new UpdateFolderMockGateway({\n id: childFolder1.id,\n title: childFolder1.title,\n slug: childFolder1.slug,\n parentId: childFolder1.parentId,\n permissions: child1NewPermissions,\n type\n });\n\n const { updateFolder } = setupTest({ gateway, foldersCache });\n\n await updateFolder.execute({\n id: childFolder1.id,\n title: childFolder1.title,\n slug: childFolder1.slug,\n parentId: childFolder1.parentId,\n permissions: child1NewPermissions,\n type\n });\n\n const childFolderCache1 = foldersCache.getItem(folder => folder.id === childFolder1.id);\n expect(childFolderCache1?.permissions).toEqual([\n ...child1NewPermissions,\n {\n ...parentNewPermissions[1],\n inheritedFrom: `parent:${parentFolder?.id}`\n }\n ]);\n\n const childFolderCache2 = foldersCache.getItem(folder => folder.id === childFolder2.id);\n expect(childFolderCache2?.permissions).toEqual([\n ...child1NewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${childFolderCache1?.id}`\n })),\n {\n ...parentNewPermissions[1],\n inheritedFrom: `parent:${childFolderCache1?.id}`\n }\n ]);\n\n const childFolderCache3 = foldersCache.getItem(folder => folder.id === childFolder3.id);\n expect(childFolderCache3?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${parentFolder?.id}`\n }))\n );\n }\n\n {\n // Let's remove childFolder1 permissions:\n // childFolder1 should inherit back permissions from parentFolder,\n // the change should be propagated to childFolder2, but not to childFolder3\n const newPermissions: FolderPermission[] = [];\n\n const gateway = new UpdateFolderMockGateway({\n id: childFolder1.id,\n title: childFolder1.title,\n slug: childFolder1.slug,\n parentId: childFolder1.parentId,\n permissions: newPermissions,\n type\n });\n\n const { updateFolder } = setupTest({ gateway, foldersCache });\n\n await updateFolder.execute({\n id: childFolder1.id,\n title: childFolder1.title,\n slug: childFolder1.slug,\n parentId: childFolder1.parentId,\n permissions: newPermissions,\n type\n });\n\n const childFolderCache1 = foldersCache.getItem(folder => folder.id === childFolder1.id);\n expect(childFolderCache1?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${parentFolder?.id}`\n }))\n );\n\n const childFolderCache2 = foldersCache.getItem(folder => folder.id === childFolder2.id);\n expect(childFolderCache2?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${childFolderCache1?.id}`\n }))\n );\n\n const childFolderCache3 = foldersCache.getItem(folder => folder.id === childFolder3.id);\n expect(childFolderCache3?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${parentFolder?.id}`\n }))\n );\n }\n });\n\n it(\"should propagate `path` changes to child folders\", async () => {\n const parentFolder = Folder.create({\n id: \"parent-folder-id\",\n title: \"Parent Folder\",\n slug: \"parent-folder\",\n parentId: null,\n permissions: [],\n path: `${ROOT_FOLDER}/parent-folder`,\n type\n });\n\n const childFolder1 = Folder.create({\n id: \"child-folder-id-1\",\n title: \"Child Folder 1\",\n slug: \"child-folder-1\",\n parentId: parentFolder.id,\n permissions: [],\n path: `${ROOT_FOLDER}/parent-folder/child-folder-1`,\n type\n });\n\n const childFolder2 = Folder.create({\n id: \"child-folder-id-2\",\n title: \"Child Folder 2\",\n slug: \"child-folder-2\",\n parentId: childFolder1.id,\n permissions: [],\n path: `${ROOT_FOLDER}/parent-folder/child-folder-1/child-folder-2`,\n type\n });\n\n const childFolder3 = Folder.create({\n id: \"child-folder-id-3\",\n title: \"Child Folder 3\",\n slug: \"child-folder-3\",\n parentId: parentFolder.id, // <-- This folder is a sibling of childFolder1, not a child\n permissions: [],\n path: `${ROOT_FOLDER}/parent-folder/child-folder-3`,\n type\n });\n\n // Let's update parentFolder, the change should be propagated to all it's children (childFolder1, childFolder2 and childFolder3).\n const newParentPath: string = `${ROOT_FOLDER}/parent-folder-edit`;\n\n const foldersCache = new ListCache<Folder>();\n foldersCache.addItems([parentFolder, childFolder1, childFolder2, childFolder3]);\n\n {\n const gateway = new UpdateFolderMockGateway({\n id: parentFolder.id,\n title: parentFolder.title,\n slug: parentFolder.slug + \"-edit\",\n parentId: parentFolder.parentId,\n permissions: parentFolder.permissions,\n path: newParentPath,\n type\n });\n\n const { updateFolder } = setupTest({ gateway, foldersCache });\n\n await updateFolder.execute({\n id: parentFolder.id,\n title: parentFolder.title,\n slug: parentFolder.slug + \"-edit\",\n parentId: parentFolder.parentId,\n permissions: parentFolder.permissions,\n type\n });\n\n const childFolderCache1 = foldersCache.getItem(folder => folder.id === childFolder1.id);\n expect(childFolderCache1?.path).toEqual(`${newParentPath}/child-folder-1`);\n\n const childFolderCache2 = foldersCache.getItem(folder => folder.id === childFolder2.id);\n expect(childFolderCache2?.path).toEqual(\n `${newParentPath}/child-folder-1/child-folder-2`\n );\n\n const childFolderCache3 = foldersCache.getItem(folder => folder.id === childFolder3.id);\n expect(childFolderCache3?.path).toEqual(`${newParentPath}/child-folder-3`);\n }\n\n // Let's update childFolder1, the change should be propagated to childFolder2, but not to childFolder3\n const newChildFolder1Path: string = `${newParentPath}/child-folder-1-edit`;\n\n {\n const gateway = new UpdateFolderMockGateway({\n id: childFolder1.id,\n title: childFolder1.title,\n slug: childFolder1.slug + \"-edit\",\n parentId: childFolder1.parentId,\n permissions: childFolder1.permissions,\n path: newChildFolder1Path,\n type\n });\n\n const { updateFolder } = setupTest({ gateway, foldersCache });\n\n await updateFolder.execute({\n id: childFolder1.id,\n title: childFolder1.title,\n slug: childFolder1.slug + \"-edit\",\n parentId: childFolder1.parentId,\n permissions: childFolder1.permissions,\n type\n });\n\n const childFolderCache1 = foldersCache.getItem(folder => folder.id === childFolder1.id);\n expect(childFolderCache1?.path).toEqual(newChildFolder1Path);\n\n const childFolderCache2 = foldersCache.getItem(folder => folder.id === childFolder2.id);\n expect(childFolderCache2?.path).toEqual(`${newChildFolder1Path}/child-folder-2`);\n\n const childFolderCache3 = foldersCache.getItem(folder => folder.id === childFolder3.id);\n expect(childFolderCache3?.path).toEqual(`${newParentPath}/child-folder-3`);\n }\n });\n\n it(\"should handle gateway errors gracefully\", async () => {\n class UpdateFolderErrorMockGateway implements UpdateFolderGateway.Interface {\n async execute(): Promise<FolderDto> {\n throw new Error(\"Gateway error\");\n }\n }\n\n const gateway = new UpdateFolderErrorMockGateway();\n const spy = vi.spyOn(gateway, \"execute\");\n\n const { updateFolder } = setupTest({ gateway });\n\n await expect(\n updateFolder.execute({\n id: \"any-folder-id\",\n title: \"Updated Folder\",\n slug: \"updated-folder\",\n parentId: \"another-id\",\n permissions: [],\n type\n })\n ).rejects.toThrow(\"Gateway error\");\n\n expect(spy).toHaveBeenCalledTimes(1);\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"features/folders/updateFolder/UpdateFolder.test.js","sources":["../../../../src/features/folders/updateFolder/UpdateFolder.test.ts"],"sourcesContent":["import { describe, it, expect, beforeEach, vi } from \"vitest\";\nimport { type FolderPermission } from \"@webiny/shared-aco/flp/flp.types.js\";\nimport { LoadingRepository } from \"@webiny/app-utils\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\nimport type { FolderDto } from \"~/domain/folder/FolderDto.js\";\nimport { ListCache } from \"~/features/folders/cache/index.js\";\nimport { Folder } from \"~/domain/folder/Folder.js\";\nimport { Container } from \"@webiny/di\";\nimport { FoldersContext } from \"~/features/folders/abstractions.js\";\nimport { FoldersCache } from \"~/features/folders/abstractions.js\";\nimport { UpdateFolderFeature } from \"~/features/folders/updateFolder/feature.js\";\nimport { UpdateFolderUseCase } from \"~/features/folders/updateFolder/abstractions.js\";\nimport { UpdateFolderGateway } from \"~/features/folders/updateFolder/abstractions.js\";\nimport { FoldersLoadingRepository } from \"~/features/folders/abstractions.js\";\n\nclass UpdateFolderMockGateway implements UpdateFolderGateway.Interface {\n mockResponse: Partial<FolderDto>;\n\n constructor(mockResponse: Partial<FolderDto>) {\n this.mockResponse = mockResponse;\n }\n\n async execute() {\n return this.mockResponse as FolderDto;\n }\n}\n\ninterface SetupTestParams {\n gateway: UpdateFolderGateway.Interface;\n folders?: Folder[];\n foldersCache?: ListCache<Folder>;\n}\n\ndescribe(\"UpdateFolder\", () => {\n const type = \"abc\";\n\n function setupTest(params: SetupTestParams) {\n const container = new Container();\n const foldersCache = params.foldersCache ? params.foldersCache : new ListCache<Folder>();\n\n if (!params.foldersCache) {\n foldersCache.addItems([\n Folder.create({\n id: \"any-folder-id\",\n title: \"Any Folder\",\n slug: \"any-folder\",\n parentId: null,\n permissions: [],\n type\n })\n ]);\n }\n\n if (params.folders) {\n foldersCache.addItems(params.folders);\n }\n\n container.registerInstance(FoldersContext, { type });\n container.registerInstance(FoldersCache, foldersCache);\n container.registerInstance(FoldersLoadingRepository, new LoadingRepository());\n\n UpdateFolderFeature.register(container);\n container.registerInstance(UpdateFolderGateway, params.gateway);\n\n return { container, foldersCache, updateFolder: container.resolve(UpdateFolderUseCase) };\n }\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should be able to update a folder\", async () => {\n const gateway = new UpdateFolderMockGateway({\n id: \"any-folder-id\",\n title: \"Updated Folder\",\n slug: \"updated-folder\",\n parentId: \"another-id\",\n permissions: [],\n type\n });\n\n const { updateFolder, foldersCache } = setupTest({ gateway });\n\n const spy = vi.spyOn(gateway, \"execute\");\n\n expect(foldersCache.hasItems()).toBe(true);\n const item = foldersCache.getItem(folder => folder.id === \"any-folder-id\");\n expect(item?.id).toEqual(\"any-folder-id\");\n expect(item?.title).toEqual(\"Any Folder\");\n\n await updateFolder.execute({\n id: \"any-folder-id\",\n title: \"Updated Folder\",\n slug: \"updated-folder\",\n parentId: \"another-id\",\n permissions: [],\n type\n });\n\n expect(spy).toHaveBeenCalledTimes(1);\n const updatedItem = foldersCache.getItem(folder => folder.id === \"any-folder-id\");\n\n expect(updatedItem).toBeDefined();\n expect(updatedItem?.id).toEqual(\"any-folder-id\");\n expect(updatedItem?.type).toEqual(type);\n expect(updatedItem?.title).toEqual(\"Updated Folder\");\n expect(updatedItem?.slug).toEqual(\"updated-folder\");\n expect(updatedItem?.parentId).toEqual(\"another-id\");\n });\n\n it(\"should propagate `permissions` changes to child folders\", async () => {\n const parentFolder = Folder.create({\n id: \"parent-folder-id\",\n title: \"Parent Folder\",\n slug: \"parent-folder\",\n parentId: null,\n permissions: [],\n type\n });\n\n const childFolder1 = Folder.create({\n id: \"child-folder-id-1\",\n title: \"Child Folder 1\",\n slug: \"child-folder-1\",\n parentId: parentFolder.id,\n permissions: [],\n type\n });\n\n const childFolder2 = Folder.create({\n id: \"child-folder-id-2\",\n title: \"Child Folder 2\",\n slug: \"child-folder-2\",\n parentId: childFolder1.id,\n permissions: [],\n type\n });\n\n const childFolder3 = Folder.create({\n id: \"child-folder-id-3\",\n title: \"Child Folder 3\",\n slug: \"child-folder-3\",\n parentId: parentFolder.id, // <-- This folder is a sibling of childFolder1, not a child\n permissions: [],\n type\n });\n\n const foldersCache = new ListCache<Folder>();\n foldersCache.addItems([parentFolder, childFolder1, childFolder2, childFolder3]);\n\n // Let's update parentFolder, the change should be propagated to all it's children (childFolder1, childFolder2 and childFolder3).\n const parentNewPermissions: FolderPermission[] = [\n { level: \"viewer\", target: \"admin:123\" },\n { level: \"viewer\", target: \"admin:456\" }\n ];\n\n {\n const gateway = new UpdateFolderMockGateway({\n id: parentFolder.id,\n title: parentFolder.title,\n slug: parentFolder.slug,\n parentId: parentFolder.parentId,\n permissions: parentNewPermissions,\n type\n });\n\n const { updateFolder } = setupTest({ gateway, foldersCache });\n\n await updateFolder.execute({\n id: parentFolder.id,\n title: parentFolder.title,\n slug: parentFolder.slug,\n parentId: parentFolder.parentId,\n permissions: parentNewPermissions,\n type\n });\n\n const childFolderCache1 = foldersCache.getItem(folder => folder.id === childFolder1.id);\n expect(childFolderCache1?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${parentFolder?.id}`\n }))\n );\n\n const childFolderCache2 = foldersCache.getItem(folder => folder.id === childFolder2.id);\n expect(childFolderCache2?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${childFolderCache1?.id}`\n }))\n );\n\n const childFolderCache3 = foldersCache.getItem(folder => folder.id === childFolder3.id);\n expect(childFolderCache3?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${parentFolder?.id}`\n }))\n );\n }\n\n // Let's update childFolder1, the change should be propagated to childFolder2, but not to childFolder3\n const child1NewPermissions: FolderPermission[] = [{ level: \"owner\", target: \"admin:123\" }];\n\n {\n const gateway = new UpdateFolderMockGateway({\n id: childFolder1.id,\n title: childFolder1.title,\n slug: childFolder1.slug,\n parentId: childFolder1.parentId,\n permissions: child1NewPermissions,\n type\n });\n\n const { updateFolder } = setupTest({ gateway, foldersCache });\n\n await updateFolder.execute({\n id: childFolder1.id,\n title: childFolder1.title,\n slug: childFolder1.slug,\n parentId: childFolder1.parentId,\n permissions: child1NewPermissions,\n type\n });\n\n const childFolderCache1 = foldersCache.getItem(folder => folder.id === childFolder1.id);\n expect(childFolderCache1?.permissions).toEqual([\n ...child1NewPermissions,\n {\n ...parentNewPermissions[1],\n inheritedFrom: `parent:${parentFolder?.id}`\n }\n ]);\n\n const childFolderCache2 = foldersCache.getItem(folder => folder.id === childFolder2.id);\n expect(childFolderCache2?.permissions).toEqual([\n ...child1NewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${childFolderCache1?.id}`\n })),\n {\n ...parentNewPermissions[1],\n inheritedFrom: `parent:${childFolderCache1?.id}`\n }\n ]);\n\n const childFolderCache3 = foldersCache.getItem(folder => folder.id === childFolder3.id);\n expect(childFolderCache3?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${parentFolder?.id}`\n }))\n );\n }\n\n {\n // Let's remove childFolder1 permissions:\n // childFolder1 should inherit back permissions from parentFolder,\n // the change should be propagated to childFolder2, but not to childFolder3\n const newPermissions: FolderPermission[] = [];\n\n const gateway = new UpdateFolderMockGateway({\n id: childFolder1.id,\n title: childFolder1.title,\n slug: childFolder1.slug,\n parentId: childFolder1.parentId,\n permissions: newPermissions,\n type\n });\n\n const { updateFolder } = setupTest({ gateway, foldersCache });\n\n await updateFolder.execute({\n id: childFolder1.id,\n title: childFolder1.title,\n slug: childFolder1.slug,\n parentId: childFolder1.parentId,\n permissions: newPermissions,\n type\n });\n\n const childFolderCache1 = foldersCache.getItem(folder => folder.id === childFolder1.id);\n expect(childFolderCache1?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${parentFolder?.id}`\n }))\n );\n\n const childFolderCache2 = foldersCache.getItem(folder => folder.id === childFolder2.id);\n expect(childFolderCache2?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${childFolderCache1?.id}`\n }))\n );\n\n const childFolderCache3 = foldersCache.getItem(folder => folder.id === childFolder3.id);\n expect(childFolderCache3?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${parentFolder?.id}`\n }))\n );\n }\n });\n\n it(\"should propagate `path` changes to child folders\", async () => {\n const parentFolder = Folder.create({\n id: \"parent-folder-id\",\n title: \"Parent Folder\",\n slug: \"parent-folder\",\n parentId: null,\n permissions: [],\n path: `${ROOT_FOLDER}/parent-folder`,\n type\n });\n\n const childFolder1 = Folder.create({\n id: \"child-folder-id-1\",\n title: \"Child Folder 1\",\n slug: \"child-folder-1\",\n parentId: parentFolder.id,\n permissions: [],\n path: `${ROOT_FOLDER}/parent-folder/child-folder-1`,\n type\n });\n\n const childFolder2 = Folder.create({\n id: \"child-folder-id-2\",\n title: \"Child Folder 2\",\n slug: \"child-folder-2\",\n parentId: childFolder1.id,\n permissions: [],\n path: `${ROOT_FOLDER}/parent-folder/child-folder-1/child-folder-2`,\n type\n });\n\n const childFolder3 = Folder.create({\n id: \"child-folder-id-3\",\n title: \"Child Folder 3\",\n slug: \"child-folder-3\",\n parentId: parentFolder.id, // <-- This folder is a sibling of childFolder1, not a child\n permissions: [],\n path: `${ROOT_FOLDER}/parent-folder/child-folder-3`,\n type\n });\n\n // Let's update parentFolder, the change should be propagated to all it's children (childFolder1, childFolder2 and childFolder3).\n const newParentPath: string = `${ROOT_FOLDER}/parent-folder-edit`;\n\n const foldersCache = new ListCache<Folder>();\n foldersCache.addItems([parentFolder, childFolder1, childFolder2, childFolder3]);\n\n {\n const gateway = new UpdateFolderMockGateway({\n id: parentFolder.id,\n title: parentFolder.title,\n slug: parentFolder.slug + \"-edit\",\n parentId: parentFolder.parentId,\n permissions: parentFolder.permissions,\n path: newParentPath,\n type\n });\n\n const { updateFolder } = setupTest({ gateway, foldersCache });\n\n await updateFolder.execute({\n id: parentFolder.id,\n title: parentFolder.title,\n slug: parentFolder.slug + \"-edit\",\n parentId: parentFolder.parentId,\n permissions: parentFolder.permissions,\n type\n });\n\n const childFolderCache1 = foldersCache.getItem(folder => folder.id === childFolder1.id);\n expect(childFolderCache1?.path).toEqual(`${newParentPath}/child-folder-1`);\n\n const childFolderCache2 = foldersCache.getItem(folder => folder.id === childFolder2.id);\n expect(childFolderCache2?.path).toEqual(\n `${newParentPath}/child-folder-1/child-folder-2`\n );\n\n const childFolderCache3 = foldersCache.getItem(folder => folder.id === childFolder3.id);\n expect(childFolderCache3?.path).toEqual(`${newParentPath}/child-folder-3`);\n }\n\n // Let's update childFolder1, the change should be propagated to childFolder2, but not to childFolder3\n const newChildFolder1Path: string = `${newParentPath}/child-folder-1-edit`;\n\n {\n const gateway = new UpdateFolderMockGateway({\n id: childFolder1.id,\n title: childFolder1.title,\n slug: childFolder1.slug + \"-edit\",\n parentId: childFolder1.parentId,\n permissions: childFolder1.permissions,\n path: newChildFolder1Path,\n type\n });\n\n const { updateFolder } = setupTest({ gateway, foldersCache });\n\n await updateFolder.execute({\n id: childFolder1.id,\n title: childFolder1.title,\n slug: childFolder1.slug + \"-edit\",\n parentId: childFolder1.parentId,\n permissions: childFolder1.permissions,\n type\n });\n\n const childFolderCache1 = foldersCache.getItem(folder => folder.id === childFolder1.id);\n expect(childFolderCache1?.path).toEqual(newChildFolder1Path);\n\n const childFolderCache2 = foldersCache.getItem(folder => folder.id === childFolder2.id);\n expect(childFolderCache2?.path).toEqual(`${newChildFolder1Path}/child-folder-2`);\n\n const childFolderCache3 = foldersCache.getItem(folder => folder.id === childFolder3.id);\n expect(childFolderCache3?.path).toEqual(`${newParentPath}/child-folder-3`);\n }\n });\n\n it(\"should handle gateway errors gracefully\", async () => {\n class UpdateFolderErrorMockGateway implements UpdateFolderGateway.Interface {\n async execute(): Promise<FolderDto> {\n throw new Error(\"Gateway error\");\n }\n }\n\n const gateway = new UpdateFolderErrorMockGateway();\n const spy = vi.spyOn(gateway, \"execute\");\n\n const { updateFolder } = setupTest({ gateway });\n\n await expect(\n updateFolder.execute({\n id: \"any-folder-id\",\n title: \"Updated Folder\",\n slug: \"updated-folder\",\n parentId: \"another-id\",\n permissions: [],\n type\n })\n ).rejects.toThrow(\"Gateway error\");\n\n expect(spy).toHaveBeenCalledTimes(1);\n });\n});\n"],"names":["UpdateFolderMockGateway","mockResponse","describe","type","setupTest","params","container","Container","foldersCache","ListCache","Folder","FoldersContext","FoldersCache","FoldersLoadingRepository","LoadingRepository","UpdateFolderFeature","UpdateFolderGateway","UpdateFolderUseCase","beforeEach","vi","it","gateway","updateFolder","spy","expect","item","folder","updatedItem","parentFolder","childFolder1","childFolder2","childFolder3","parentNewPermissions","childFolderCache1","permission","childFolderCache2","childFolderCache3","child1NewPermissions","newPermissions","ROOT_FOLDER","newParentPath","newChildFolder1Path","UpdateFolderErrorMockGateway","Error"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import gql from "graphql-tag";
1
+ import graphql_tag from "graphql-tag";
2
2
  import { ApolloClient } from "@webiny/app-admin/features/apolloClient/abstraction.js";
3
3
  import { FolderModelProvider } from "../abstractions.js";
4
- import { UpdateFolderGateway as GatewayAbstraction } from "./abstractions.js";
4
+ import { UpdateFolderGateway } from "./abstractions.js";
5
5
  import { ROOT_FOLDER } from "../../../constants.js";
6
- export const UPDATE_FOLDER = FOLDER_FIELDS => gql`
6
+ const UPDATE_FOLDER = (FOLDER_FIELDS)=>graphql_tag`
7
7
  mutation UpdateFolder($id: ID!, $data: FolderUpdateInput!) {
8
8
  aco {
9
9
  updateFolder(id: $id, data: $data) {
@@ -18,51 +18,39 @@ export const UPDATE_FOLDER = FOLDER_FIELDS => gql`
18
18
  }
19
19
  `;
20
20
  class UpdateFolderGqlGatewayImpl {
21
- constructor(client, folderModelProvider) {
22
- this.client = client;
23
- this.folderModelProvider = folderModelProvider;
24
- }
25
- async execute(folder) {
26
- const fields = await this.folderModelProvider.getGraphQLSelection();
27
- const {
28
- id,
29
- title,
30
- slug,
31
- permissions,
32
- parentId,
33
- extensions
34
- } = folder;
35
- const {
36
- data: response
37
- } = await this.client.mutate({
38
- mutation: UPDATE_FOLDER(fields),
39
- variables: {
40
- id,
41
- data: {
42
- title,
43
- slug,
44
- extensions,
45
- parentId: parentId === ROOT_FOLDER ? null : parentId,
46
- permissions: permissions.filter(p => !p.inheritedFrom)
47
- }
48
- }
49
- });
50
- if (!response) {
51
- throw new Error("Network error while updating folder.");
21
+ constructor(client, folderModelProvider){
22
+ this.client = client;
23
+ this.folderModelProvider = folderModelProvider;
52
24
  }
53
- const {
54
- data,
55
- error
56
- } = response.aco.updateFolder;
57
- if (!data) {
58
- throw new Error(error?.message || "Could not update folder");
25
+ async execute(folder) {
26
+ const fields = await this.folderModelProvider.getGraphQLSelection();
27
+ const { id, title, slug, permissions, parentId, extensions } = folder;
28
+ const { data: response } = await this.client.mutate({
29
+ mutation: UPDATE_FOLDER(fields),
30
+ variables: {
31
+ id,
32
+ data: {
33
+ title,
34
+ slug,
35
+ extensions,
36
+ parentId: parentId === ROOT_FOLDER ? null : parentId,
37
+ permissions: permissions.filter((p)=>!p.inheritedFrom)
38
+ }
39
+ }
40
+ });
41
+ if (!response) throw new Error("Network error while updating folder.");
42
+ const { data, error } = response.aco.updateFolder;
43
+ if (!data) throw new Error(error?.message || "Could not update folder");
44
+ return data;
59
45
  }
60
- return data;
61
- }
62
46
  }
63
- export const UpdateFolderGqlGateway = GatewayAbstraction.createImplementation({
64
- implementation: UpdateFolderGqlGatewayImpl,
65
- dependencies: [ApolloClient, FolderModelProvider]
47
+ const UpdateFolderGqlGateway = UpdateFolderGateway.createImplementation({
48
+ implementation: UpdateFolderGqlGatewayImpl,
49
+ dependencies: [
50
+ ApolloClient,
51
+ FolderModelProvider
52
+ ]
66
53
  });
54
+ export { UPDATE_FOLDER, UpdateFolderGqlGateway };
67
55
 
68
56
  //# sourceMappingURL=UpdateFolderGqlGateway.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["gql","ApolloClient","FolderModelProvider","UpdateFolderGateway","GatewayAbstraction","ROOT_FOLDER","UPDATE_FOLDER","FOLDER_FIELDS","UpdateFolderGqlGatewayImpl","constructor","client","folderModelProvider","execute","folder","fields","getGraphQLSelection","id","title","slug","permissions","parentId","extensions","data","response","mutate","mutation","variables","filter","p","inheritedFrom","Error","error","aco","updateFolder","message","UpdateFolderGqlGateway","createImplementation","implementation","dependencies"],"sources":["UpdateFolderGqlGateway.ts"],"sourcesContent":["import gql from \"graphql-tag\";\nimport { ApolloClient } from \"@webiny/app-admin/features/apolloClient/abstraction.js\";\nimport type { FolderDto } from \"~/domain/folder/FolderDto.js\";\nimport { FolderModelProvider } from \"~/features/folders/abstractions.js\";\nimport type { FolderGatewayDto } from \"./abstractions.js\";\nimport { UpdateFolderGateway as GatewayAbstraction } from \"./abstractions.js\";\nimport type { AcoError } from \"~/types.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\n\nexport interface UpdateFolderResponse {\n aco: {\n updateFolder: {\n data: FolderDto;\n error: AcoError | null;\n };\n };\n}\n\nexport interface UpdateFolderVariables {\n id: string;\n data: Partial<\n Omit<\n FolderDto,\n \"id\" | \"createdOn\" | \"createdBy\" | \"savedOn\" | \"savedBy\" | \"modifiedOn\" | \"modifiedBy\"\n >\n >;\n}\n\nexport const UPDATE_FOLDER = (FOLDER_FIELDS: string) => gql`\n mutation UpdateFolder($id: ID!, $data: FolderUpdateInput!) {\n aco {\n updateFolder(id: $id, data: $data) {\n data ${FOLDER_FIELDS}\n error {\n code\n data\n message\n }\n }\n }\n }\n`;\n\nclass UpdateFolderGqlGatewayImpl implements GatewayAbstraction.Interface {\n constructor(\n private client: ApolloClient.Interface,\n private folderModelProvider: FolderModelProvider.Interface\n ) {}\n\n async execute(folder: FolderGatewayDto) {\n const fields = await this.folderModelProvider.getGraphQLSelection();\n\n const { id, title, slug, permissions, parentId, extensions } = folder;\n\n const { data: response } = await this.client.mutate<\n UpdateFolderResponse,\n UpdateFolderVariables\n >({\n mutation: UPDATE_FOLDER(fields),\n variables: {\n id,\n data: {\n title,\n slug,\n extensions,\n parentId: parentId === ROOT_FOLDER ? null : parentId,\n permissions: permissions.filter(p => !p.inheritedFrom)\n }\n }\n });\n\n if (!response) {\n throw new Error(\"Network error while updating folder.\");\n }\n\n const { data, error } = response.aco.updateFolder;\n\n if (!data) {\n throw new Error(error?.message || \"Could not update folder\");\n }\n\n return data;\n }\n}\n\nexport const UpdateFolderGqlGateway = GatewayAbstraction.createImplementation({\n implementation: UpdateFolderGqlGatewayImpl,\n dependencies: [ApolloClient, FolderModelProvider]\n});\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,aAAa;AAC7B,SAASC,YAAY,QAAQ,wDAAwD;AAErF,SAASC,mBAAmB;AAE5B,SAASC,mBAAmB,IAAIC,kBAAkB;AAElD,SAASC,WAAW;AAqBpB,OAAO,MAAMC,aAAa,GAAIC,aAAqB,IAAKP,GAAG;AAC3D;AACA;AACA;AACA,uBAAuBO,aAAa;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,MAAMC,0BAA0B,CAAyC;EACrEC,WAAWA,CACCC,MAA8B,EAC9BC,mBAAkD,EAC5D;IAAA,KAFUD,MAA8B,GAA9BA,MAA8B;IAAA,KAC9BC,mBAAkD,GAAlDA,mBAAkD;EAC3D;EAEH,MAAMC,OAAOA,CAACC,MAAwB,EAAE;IACpC,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACH,mBAAmB,CAACI,mBAAmB,CAAC,CAAC;IAEnE,MAAM;MAAEC,EAAE;MAAEC,KAAK;MAAEC,IAAI;MAAEC,WAAW;MAAEC,QAAQ;MAAEC;IAAW,CAAC,GAAGR,MAAM;IAErE,MAAM;MAAES,IAAI,EAAEC;IAAS,CAAC,GAAG,MAAM,IAAI,CAACb,MAAM,CAACc,MAAM,CAGjD;MACEC,QAAQ,EAAEnB,aAAa,CAACQ,MAAM,CAAC;MAC/BY,SAAS,EAAE;QACPV,EAAE;QACFM,IAAI,EAAE;UACFL,KAAK;UACLC,IAAI;UACJG,UAAU;UACVD,QAAQ,EAAEA,QAAQ,KAAKf,WAAW,GAAG,IAAI,GAAGe,QAAQ;UACpDD,WAAW,EAAEA,WAAW,CAACQ,MAAM,CAACC,CAAC,IAAI,CAACA,CAAC,CAACC,aAAa;QACzD;MACJ;IACJ,CAAC,CAAC;IAEF,IAAI,CAACN,QAAQ,EAAE;MACX,MAAM,IAAIO,KAAK,CAAC,sCAAsC,CAAC;IAC3D;IAEA,MAAM;MAAER,IAAI;MAAES;IAAM,CAAC,GAAGR,QAAQ,CAACS,GAAG,CAACC,YAAY;IAEjD,IAAI,CAACX,IAAI,EAAE;MACP,MAAM,IAAIQ,KAAK,CAACC,KAAK,EAAEG,OAAO,IAAI,yBAAyB,CAAC;IAChE;IAEA,OAAOZ,IAAI;EACf;AACJ;AAEA,OAAO,MAAMa,sBAAsB,GAAG/B,kBAAkB,CAACgC,oBAAoB,CAAC;EAC1EC,cAAc,EAAE7B,0BAA0B;EAC1C8B,YAAY,EAAE,CAACrC,YAAY,EAAEC,mBAAmB;AACpD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/folders/updateFolder/UpdateFolderGqlGateway.js","sources":["../../../../src/features/folders/updateFolder/UpdateFolderGqlGateway.ts"],"sourcesContent":["import gql from \"graphql-tag\";\nimport { ApolloClient } from \"@webiny/app-admin/features/apolloClient/abstraction.js\";\nimport type { FolderDto } from \"~/domain/folder/FolderDto.js\";\nimport { FolderModelProvider } from \"~/features/folders/abstractions.js\";\nimport type { FolderGatewayDto } from \"./abstractions.js\";\nimport { UpdateFolderGateway as GatewayAbstraction } from \"./abstractions.js\";\nimport type { AcoError } from \"~/types.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\n\nexport interface UpdateFolderResponse {\n aco: {\n updateFolder: {\n data: FolderDto;\n error: AcoError | null;\n };\n };\n}\n\nexport interface UpdateFolderVariables {\n id: string;\n data: Partial<\n Omit<\n FolderDto,\n \"id\" | \"createdOn\" | \"createdBy\" | \"savedOn\" | \"savedBy\" | \"modifiedOn\" | \"modifiedBy\"\n >\n >;\n}\n\nexport const UPDATE_FOLDER = (FOLDER_FIELDS: string) => gql`\n mutation UpdateFolder($id: ID!, $data: FolderUpdateInput!) {\n aco {\n updateFolder(id: $id, data: $data) {\n data ${FOLDER_FIELDS}\n error {\n code\n data\n message\n }\n }\n }\n }\n`;\n\nclass UpdateFolderGqlGatewayImpl implements GatewayAbstraction.Interface {\n constructor(\n private client: ApolloClient.Interface,\n private folderModelProvider: FolderModelProvider.Interface\n ) {}\n\n async execute(folder: FolderGatewayDto) {\n const fields = await this.folderModelProvider.getGraphQLSelection();\n\n const { id, title, slug, permissions, parentId, extensions } = folder;\n\n const { data: response } = await this.client.mutate<\n UpdateFolderResponse,\n UpdateFolderVariables\n >({\n mutation: UPDATE_FOLDER(fields),\n variables: {\n id,\n data: {\n title,\n slug,\n extensions,\n parentId: parentId === ROOT_FOLDER ? null : parentId,\n permissions: permissions.filter(p => !p.inheritedFrom)\n }\n }\n });\n\n if (!response) {\n throw new Error(\"Network error while updating folder.\");\n }\n\n const { data, error } = response.aco.updateFolder;\n\n if (!data) {\n throw new Error(error?.message || \"Could not update folder\");\n }\n\n return data;\n }\n}\n\nexport const UpdateFolderGqlGateway = GatewayAbstraction.createImplementation({\n implementation: UpdateFolderGqlGatewayImpl,\n dependencies: [ApolloClient, FolderModelProvider]\n});\n"],"names":["UPDATE_FOLDER","FOLDER_FIELDS","gql","UpdateFolderGqlGatewayImpl","client","folderModelProvider","folder","fields","id","title","slug","permissions","parentId","extensions","response","ROOT_FOLDER","p","Error","data","error","UpdateFolderGqlGateway","GatewayAbstraction","ApolloClient","FolderModelProvider"],"mappings":";;;;;AA4BO,MAAMA,gBAAgB,CAACC,gBAA0BC,WAAG,CAAC;;;;qBAIvC,EAAED,cAAc;;;;;;;;;AASrC,CAAC;AAED,MAAME;IACF,YACYC,MAA8B,EAC9BC,mBAAkD,CAC5D;aAFUD,MAAM,GAANA;aACAC,mBAAmB,GAAnBA;IACT;IAEH,MAAM,QAAQC,MAAwB,EAAE;QACpC,MAAMC,SAAS,MAAM,IAAI,CAAC,mBAAmB,CAAC,mBAAmB;QAEjE,MAAM,EAAEC,EAAE,EAAEC,KAAK,EAAEC,IAAI,EAAEC,WAAW,EAAEC,QAAQ,EAAEC,UAAU,EAAE,GAAGP;QAE/D,MAAM,EAAE,MAAMQ,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAGjD;YACE,UAAUd,cAAcO;YACxB,WAAW;gBACPC;gBACA,MAAM;oBACFC;oBACAC;oBACAG;oBACA,UAAUD,aAAaG,cAAc,OAAOH;oBAC5C,aAAaD,YAAY,MAAM,CAACK,CAAAA,IAAK,CAACA,EAAE,aAAa;gBACzD;YACJ;QACJ;QAEA,IAAI,CAACF,UACD,MAAM,IAAIG,MAAM;QAGpB,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAE,GAAGL,SAAS,GAAG,CAAC,YAAY;QAEjD,IAAI,CAACI,MACD,MAAM,IAAID,MAAME,OAAO,WAAW;QAGtC,OAAOD;IACX;AACJ;AAEO,MAAME,yBAAyBC,oBAAAA,oBAAuC,CAAC;IAC1E,gBAAgBlB;IAChB,cAAc;QAACmB;QAAcC;KAAoB;AACrD"}
@@ -1,31 +1,33 @@
1
1
  import { Folder } from "../../../domain/folder/Folder.js";
2
2
  import { FoldersCache } from "../abstractions.js";
3
- import { UpdateFolderRepository as RepositoryAbstraction, UpdateFolderGateway } from "./abstractions.js";
3
+ import { UpdateFolderGateway, UpdateFolderRepository } from "./abstractions.js";
4
4
  class UpdateFolderRepositoryImpl {
5
- constructor(cache, gateway) {
6
- this.cache = cache;
7
- this.gateway = gateway;
8
- }
9
- async execute(folder) {
10
- const result = await this.gateway.execute({
11
- id: folder.id,
12
- title: folder.title,
13
- slug: folder.slug,
14
- extensions: folder.extensions,
15
- parentId: folder.parentId,
16
- permissions: folder.permissions
17
- });
18
- this.cache.updateItems(f => {
19
- if (f.id === folder.id) {
20
- return Folder.create(result);
21
- }
22
- return Folder.create(f);
23
- });
24
- }
5
+ constructor(cache, gateway){
6
+ this.cache = cache;
7
+ this.gateway = gateway;
8
+ }
9
+ async execute(folder) {
10
+ const result = await this.gateway.execute({
11
+ id: folder.id,
12
+ title: folder.title,
13
+ slug: folder.slug,
14
+ extensions: folder.extensions,
15
+ parentId: folder.parentId,
16
+ permissions: folder.permissions
17
+ });
18
+ this.cache.updateItems((f)=>{
19
+ if (f.id === folder.id) return Folder.create(result);
20
+ return Folder.create(f);
21
+ });
22
+ }
25
23
  }
26
- export const UpdateFolderRepository = RepositoryAbstraction.createImplementation({
27
- implementation: UpdateFolderRepositoryImpl,
28
- dependencies: [FoldersCache, UpdateFolderGateway]
24
+ const UpdateFolderRepository_UpdateFolderRepository = UpdateFolderRepository.createImplementation({
25
+ implementation: UpdateFolderRepositoryImpl,
26
+ dependencies: [
27
+ FoldersCache,
28
+ UpdateFolderGateway
29
+ ]
29
30
  });
31
+ export { UpdateFolderRepository_UpdateFolderRepository as UpdateFolderRepository };
30
32
 
31
33
  //# sourceMappingURL=UpdateFolderRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Folder","FoldersCache","UpdateFolderRepository","RepositoryAbstraction","UpdateFolderGateway","UpdateFolderRepositoryImpl","constructor","cache","gateway","execute","folder","result","id","title","slug","extensions","parentId","permissions","updateItems","f","create","createImplementation","implementation","dependencies"],"sources":["UpdateFolderRepository.ts"],"sourcesContent":["import { Folder } from \"~/domain/folder/Folder.js\";\nimport { FoldersCache } from \"../abstractions.js\";\nimport {\n UpdateFolderRepository as RepositoryAbstraction,\n UpdateFolderGateway\n} from \"./abstractions.js\";\n\nclass UpdateFolderRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private cache: FoldersCache.Interface,\n private gateway: UpdateFolderGateway.Interface\n ) {}\n\n async execute(folder: Folder) {\n const result = await this.gateway.execute({\n id: folder.id,\n title: folder.title,\n slug: folder.slug,\n extensions: folder.extensions,\n parentId: folder.parentId,\n permissions: folder.permissions\n });\n\n this.cache.updateItems(f => {\n if (f.id === folder.id) {\n return Folder.create(result);\n }\n\n return Folder.create(f);\n });\n }\n}\n\nexport const UpdateFolderRepository = RepositoryAbstraction.createImplementation({\n implementation: UpdateFolderRepositoryImpl,\n dependencies: [FoldersCache, UpdateFolderGateway]\n});\n"],"mappings":"AAAA,SAASA,MAAM;AACf,SAASC,YAAY;AACrB,SACIC,sBAAsB,IAAIC,qBAAqB,EAC/CC,mBAAmB;AAGvB,MAAMC,0BAA0B,CAA4C;EACxEC,WAAWA,CACCC,KAA6B,EAC7BC,OAAsC,EAChD;IAAA,KAFUD,KAA6B,GAA7BA,KAA6B;IAAA,KAC7BC,OAAsC,GAAtCA,OAAsC;EAC/C;EAEH,MAAMC,OAAOA,CAACC,MAAc,EAAE;IAC1B,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACH,OAAO,CAACC,OAAO,CAAC;MACtCG,EAAE,EAAEF,MAAM,CAACE,EAAE;MACbC,KAAK,EAAEH,MAAM,CAACG,KAAK;MACnBC,IAAI,EAAEJ,MAAM,CAACI,IAAI;MACjBC,UAAU,EAAEL,MAAM,CAACK,UAAU;MAC7BC,QAAQ,EAAEN,MAAM,CAACM,QAAQ;MACzBC,WAAW,EAAEP,MAAM,CAACO;IACxB,CAAC,CAAC;IAEF,IAAI,CAACV,KAAK,CAACW,WAAW,CAACC,CAAC,IAAI;MACxB,IAAIA,CAAC,CAACP,EAAE,KAAKF,MAAM,CAACE,EAAE,EAAE;QACpB,OAAOZ,MAAM,CAACoB,MAAM,CAACT,MAAM,CAAC;MAChC;MAEA,OAAOX,MAAM,CAACoB,MAAM,CAACD,CAAC,CAAC;IAC3B,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMjB,sBAAsB,GAAGC,qBAAqB,CAACkB,oBAAoB,CAAC;EAC7EC,cAAc,EAAEjB,0BAA0B;EAC1CkB,YAAY,EAAE,CAACtB,YAAY,EAAEG,mBAAmB;AACpD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/folders/updateFolder/UpdateFolderRepository.js","sources":["../../../../src/features/folders/updateFolder/UpdateFolderRepository.ts"],"sourcesContent":["import { Folder } from \"~/domain/folder/Folder.js\";\nimport { FoldersCache } from \"../abstractions.js\";\nimport {\n UpdateFolderRepository as RepositoryAbstraction,\n UpdateFolderGateway\n} from \"./abstractions.js\";\n\nclass UpdateFolderRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private cache: FoldersCache.Interface,\n private gateway: UpdateFolderGateway.Interface\n ) {}\n\n async execute(folder: Folder) {\n const result = await this.gateway.execute({\n id: folder.id,\n title: folder.title,\n slug: folder.slug,\n extensions: folder.extensions,\n parentId: folder.parentId,\n permissions: folder.permissions\n });\n\n this.cache.updateItems(f => {\n if (f.id === folder.id) {\n return Folder.create(result);\n }\n\n return Folder.create(f);\n });\n }\n}\n\nexport const UpdateFolderRepository = RepositoryAbstraction.createImplementation({\n implementation: UpdateFolderRepositoryImpl,\n dependencies: [FoldersCache, UpdateFolderGateway]\n});\n"],"names":["UpdateFolderRepositoryImpl","cache","gateway","folder","result","f","Folder","UpdateFolderRepository","RepositoryAbstraction","FoldersCache","UpdateFolderGateway"],"mappings":";;;AAOA,MAAMA;IACF,YACYC,KAA6B,EAC7BC,OAAsC,CAChD;aAFUD,KAAK,GAALA;aACAC,OAAO,GAAPA;IACT;IAEH,MAAM,QAAQC,MAAc,EAAE;QAC1B,MAAMC,SAAS,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACtC,IAAID,OAAO,EAAE;YACb,OAAOA,OAAO,KAAK;YACnB,MAAMA,OAAO,IAAI;YACjB,YAAYA,OAAO,UAAU;YAC7B,UAAUA,OAAO,QAAQ;YACzB,aAAaA,OAAO,WAAW;QACnC;QAEA,IAAI,CAAC,KAAK,CAAC,WAAW,CAACE,CAAAA;YACnB,IAAIA,EAAE,EAAE,KAAKF,OAAO,EAAE,EAClB,OAAOG,OAAO,MAAM,CAACF;YAGzB,OAAOE,OAAO,MAAM,CAACD;QACzB;IACJ;AACJ;AAEO,MAAME,gDAAyBC,uBAAAA,oBAA0C,CAAC;IAC7E,gBAAgBR;IAChB,cAAc;QAACS;QAAcC;KAAoB;AACrD"}
@@ -1,16 +1,19 @@
1
1
  import { Folder } from "../../../domain/folder/Folder.js";
2
- import { UpdateFolderUseCase as UseCaseAbstraction, UpdateFolderRepository } from "./abstractions.js";
2
+ import { UpdateFolderRepository, UpdateFolderUseCase } from "./abstractions.js";
3
3
  class UpdateFolderUseCaseImpl {
4
- constructor(repository) {
5
- this.repository = repository;
6
- }
7
- async execute(folder) {
8
- await this.repository.execute(Folder.create(folder));
9
- }
4
+ constructor(repository){
5
+ this.repository = repository;
6
+ }
7
+ async execute(folder) {
8
+ await this.repository.execute(Folder.create(folder));
9
+ }
10
10
  }
11
- export const UpdateFolderUseCase = UseCaseAbstraction.createImplementation({
12
- implementation: UpdateFolderUseCaseImpl,
13
- dependencies: [UpdateFolderRepository]
11
+ const UpdateFolderUseCase_UpdateFolderUseCase = UpdateFolderUseCase.createImplementation({
12
+ implementation: UpdateFolderUseCaseImpl,
13
+ dependencies: [
14
+ UpdateFolderRepository
15
+ ]
14
16
  });
17
+ export { UpdateFolderUseCase_UpdateFolderUseCase as UpdateFolderUseCase };
15
18
 
16
19
  //# sourceMappingURL=UpdateFolderUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Folder","UpdateFolderUseCase","UseCaseAbstraction","UpdateFolderRepository","UpdateFolderUseCaseImpl","constructor","repository","execute","folder","create","createImplementation","implementation","dependencies"],"sources":["UpdateFolderUseCase.ts"],"sourcesContent":["import { Folder } from \"~/domain/folder/Folder.js\";\nimport type { UpdateFolderParams } from \"./abstractions.js\";\nimport {\n UpdateFolderUseCase as UseCaseAbstraction,\n UpdateFolderRepository\n} from \"./abstractions.js\";\n\nclass UpdateFolderUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(private repository: UpdateFolderRepository.Interface) {}\n\n async execute(folder: UpdateFolderParams) {\n await this.repository.execute(Folder.create(folder));\n }\n}\n\nexport const UpdateFolderUseCase = UseCaseAbstraction.createImplementation({\n implementation: UpdateFolderUseCaseImpl,\n dependencies: [UpdateFolderRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM;AAEf,SACIC,mBAAmB,IAAIC,kBAAkB,EACzCC,sBAAsB;AAG1B,MAAMC,uBAAuB,CAAyC;EAClEC,WAAWA,CAASC,UAA4C,EAAE;IAAA,KAA9CA,UAA4C,GAA5CA,UAA4C;EAAG;EAEnE,MAAMC,OAAOA,CAACC,MAA0B,EAAE;IACtC,MAAM,IAAI,CAACF,UAAU,CAACC,OAAO,CAACP,MAAM,CAACS,MAAM,CAACD,MAAM,CAAC,CAAC;EACxD;AACJ;AAEA,OAAO,MAAMP,mBAAmB,GAAGC,kBAAkB,CAACQ,oBAAoB,CAAC;EACvEC,cAAc,EAAEP,uBAAuB;EACvCQ,YAAY,EAAE,CAACT,sBAAsB;AACzC,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/folders/updateFolder/UpdateFolderUseCase.js","sources":["../../../../src/features/folders/updateFolder/UpdateFolderUseCase.ts"],"sourcesContent":["import { Folder } from \"~/domain/folder/Folder.js\";\nimport type { UpdateFolderParams } from \"./abstractions.js\";\nimport {\n UpdateFolderUseCase as UseCaseAbstraction,\n UpdateFolderRepository\n} from \"./abstractions.js\";\n\nclass UpdateFolderUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(private repository: UpdateFolderRepository.Interface) {}\n\n async execute(folder: UpdateFolderParams) {\n await this.repository.execute(Folder.create(folder));\n }\n}\n\nexport const UpdateFolderUseCase = UseCaseAbstraction.createImplementation({\n implementation: UpdateFolderUseCaseImpl,\n dependencies: [UpdateFolderRepository]\n});\n"],"names":["UpdateFolderUseCaseImpl","repository","folder","Folder","UpdateFolderUseCase","UseCaseAbstraction","UpdateFolderRepository"],"mappings":";;AAOA,MAAMA;IACF,YAAoBC,UAA4C,CAAE;aAA9CA,UAAU,GAAVA;IAA+C;IAEnE,MAAM,QAAQC,MAA0B,EAAE;QACtC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACC,OAAO,MAAM,CAACD;IAChD;AACJ;AAEO,MAAME,0CAAsBC,oBAAAA,oBAAuC,CAAC;IACvE,gBAAgBL;IAChB,cAAc;QAACM;KAAuB;AAC1C"}
@@ -1,6 +1,7 @@
1
1
  import { createAbstraction } from "@webiny/feature/admin";
2
- export const UpdateFolderUseCase = createAbstraction("UpdateFolderUseCase");
3
- export const UpdateFolderRepository = createAbstraction("UpdateFolderRepository");
4
- export const UpdateFolderGateway = createAbstraction("UpdateFolderGateway");
2
+ const UpdateFolderUseCase = createAbstraction("UpdateFolderUseCase");
3
+ const UpdateFolderRepository = createAbstraction("UpdateFolderRepository");
4
+ const UpdateFolderGateway = createAbstraction("UpdateFolderGateway");
5
+ export { UpdateFolderGateway, UpdateFolderRepository, UpdateFolderUseCase };
5
6
 
6
7
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","UpdateFolderUseCase","UpdateFolderRepository","UpdateFolderGateway"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport type { Folder } from \"~/domain/folder/Folder.js\";\nimport type { FolderDto } from \"~/domain/folder/FolderDto.js\";\nimport type { FolderPermission } from \"~/types.js\";\n\nexport interface FolderGatewayDto {\n id: string;\n title: string;\n slug: string;\n permissions: FolderPermission[];\n parentId: string | null;\n extensions: Record<string, any>;\n}\n\nexport interface UpdateFolderParams {\n id: string;\n title: string;\n slug: string;\n type: string;\n parentId: string | null;\n permissions: FolderPermission[];\n extensions?: Record<string, any>;\n}\n\nexport interface IUpdateFolderUseCase {\n execute: (params: UpdateFolderParams) => Promise<void>;\n}\n\nexport interface IUpdateFolderRepository {\n execute: (folder: Folder) => Promise<void>;\n}\n\nexport interface IUpdateFolderGateway {\n execute: (folder: FolderGatewayDto) => Promise<FolderDto>;\n}\n\nexport const UpdateFolderUseCase = createAbstraction<IUpdateFolderUseCase>(\"UpdateFolderUseCase\");\n\nexport namespace UpdateFolderUseCase {\n export type Interface = IUpdateFolderUseCase;\n export type Params = UpdateFolderParams;\n}\n\nexport const UpdateFolderRepository =\n createAbstraction<IUpdateFolderRepository>(\"UpdateFolderRepository\");\n\nexport namespace UpdateFolderRepository {\n export type Interface = IUpdateFolderRepository;\n}\n\nexport const UpdateFolderGateway = createAbstraction<IUpdateFolderGateway>(\"UpdateFolderGateway\");\n\nexport namespace UpdateFolderGateway {\n export type Interface = IUpdateFolderGateway;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,uBAAuB;AAoCzD,OAAO,MAAMC,mBAAmB,GAAGD,iBAAiB,CAAuB,qBAAqB,CAAC;AAOjG,OAAO,MAAME,sBAAsB,GAC/BF,iBAAiB,CAA0B,wBAAwB,CAAC;AAMxE,OAAO,MAAMG,mBAAmB,GAAGH,iBAAiB,CAAuB,qBAAqB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/folders/updateFolder/abstractions.js","sources":["../../../../src/features/folders/updateFolder/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport type { Folder } from \"~/domain/folder/Folder.js\";\nimport type { FolderDto } from \"~/domain/folder/FolderDto.js\";\nimport type { FolderPermission } from \"~/types.js\";\n\nexport interface FolderGatewayDto {\n id: string;\n title: string;\n slug: string;\n permissions: FolderPermission[];\n parentId: string | null;\n extensions: Record<string, any>;\n}\n\nexport interface UpdateFolderParams {\n id: string;\n title: string;\n slug: string;\n type: string;\n parentId: string | null;\n permissions: FolderPermission[];\n extensions?: Record<string, any>;\n}\n\nexport interface IUpdateFolderUseCase {\n execute: (params: UpdateFolderParams) => Promise<void>;\n}\n\nexport interface IUpdateFolderRepository {\n execute: (folder: Folder) => Promise<void>;\n}\n\nexport interface IUpdateFolderGateway {\n execute: (folder: FolderGatewayDto) => Promise<FolderDto>;\n}\n\nexport const UpdateFolderUseCase = createAbstraction<IUpdateFolderUseCase>(\"UpdateFolderUseCase\");\n\nexport namespace UpdateFolderUseCase {\n export type Interface = IUpdateFolderUseCase;\n export type Params = UpdateFolderParams;\n}\n\nexport const UpdateFolderRepository =\n createAbstraction<IUpdateFolderRepository>(\"UpdateFolderRepository\");\n\nexport namespace UpdateFolderRepository {\n export type Interface = IUpdateFolderRepository;\n}\n\nexport const UpdateFolderGateway = createAbstraction<IUpdateFolderGateway>(\"UpdateFolderGateway\");\n\nexport namespace UpdateFolderGateway {\n export type Interface = IUpdateFolderGateway;\n}\n"],"names":["UpdateFolderUseCase","createAbstraction","UpdateFolderRepository","UpdateFolderGateway"],"mappings":";AAoCO,MAAMA,sBAAsBC,kBAAwC;AAOpE,MAAMC,yBACTD,kBAA2C;AAMxC,MAAME,sBAAsBF,kBAAwC"}
@@ -1,76 +1,55 @@
1
1
  import { Path } from "@webiny/shared-aco";
2
2
  import { FoldersCache } from "../../abstractions.js";
3
- import { UpdateFolderRepository as RepositoryAbstraction } from "../abstractions.js";
3
+ import { UpdateFolderRepository } from "../abstractions.js";
4
4
  import { Folder } from "../../../../domain/folder/Folder.js";
5
5
  class UpdateFolderRepositoryWithPathChangeImpl {
6
- constructor(cache, decoratee) {
7
- this.cache = cache;
8
- this.decoratee = decoratee;
9
- }
10
- async execute(folder) {
11
- const folderPath = folder.path;
12
- const cachedFolderPath = this.cache.getItem(f => f.id === folder.id)?.path;
13
-
14
- // Update the folder
15
- await this.decoratee.execute(folder);
16
-
17
- // If the folder is not in the cache, we can't proceed to update its children paths.
18
- if (!cachedFolderPath) {
19
- return;
20
- }
21
-
22
- // If the folder path has not changed, we don't need to update anything.
23
- if (cachedFolderPath === folderPath) {
24
- return;
6
+ constructor(cache, decoratee){
7
+ this.cache = cache;
8
+ this.decoratee = decoratee;
25
9
  }
26
-
27
- // Fetch the updated folder from the cache (with the new path)
28
- const updatedFolder = this.cache.getItem(f => f.id === folder.id);
29
- if (!updatedFolder) {
30
- return;
10
+ async execute(folder) {
11
+ const folderPath = folder.path;
12
+ const cachedFolderPath = this.cache.getItem((f)=>f.id === folder.id)?.path;
13
+ await this.decoratee.execute(folder);
14
+ if (!cachedFolderPath) return;
15
+ if (cachedFolderPath === folderPath) return;
16
+ const updatedFolder = this.cache.getItem((f)=>f.id === folder.id);
17
+ if (!updatedFolder) return;
18
+ const directChildren = this.listDirectChildren(updatedFolder);
19
+ if (!directChildren.length) return;
20
+ this.updateChildrenPathsRecursively(directChildren, updatedFolder);
31
21
  }
32
-
33
- // List direct children of the updated folder
34
- const directChildren = this.listDirectChildren(updatedFolder);
35
- if (!directChildren.length) {
36
- return;
37
- }
38
- this.updateChildrenPathsRecursively(directChildren, updatedFolder);
39
- }
40
- updateChildrenPathsRecursively(children, parentFolder) {
41
- for (const child of children) {
42
- let updatedChild;
43
-
44
- // Update the child's path in the cache
45
- this.cache.updateItems(f => {
46
- if (f.id === child.id) {
47
- const newPath = Path.create(f.slug, parentFolder.path); // Use the updated parent's path
48
- const updated = Folder.create({
49
- ...f,
50
- path: newPath
51
- });
52
- updatedChild = updated; // Store the updated child for recursion
53
- return updated;
22
+ updateChildrenPathsRecursively(children, parentFolder) {
23
+ for (const child of children){
24
+ let updatedChild;
25
+ this.cache.updateItems((f)=>{
26
+ if (f.id === child.id) {
27
+ const newPath = Path.create(f.slug, parentFolder.path);
28
+ const updated = Folder.create({
29
+ ...f,
30
+ path: newPath
31
+ });
32
+ updatedChild = updated;
33
+ return updated;
34
+ }
35
+ return f;
36
+ });
37
+ if (updatedChild) {
38
+ const grandChildren = this.listDirectChildren(updatedChild);
39
+ if (grandChildren.length) this.updateChildrenPathsRecursively(grandChildren, updatedChild);
40
+ }
54
41
  }
55
- return f;
56
- });
57
-
58
- // Recurse for the child's children
59
- if (updatedChild) {
60
- const grandChildren = this.listDirectChildren(updatedChild);
61
- if (grandChildren.length) {
62
- this.updateChildrenPathsRecursively(grandChildren, updatedChild);
63
- }
64
- }
65
42
  }
66
- }
67
- listDirectChildren(folder) {
68
- return this.cache.getItems().filter(f => f.parentId === folder.id);
69
- }
43
+ listDirectChildren(folder) {
44
+ return this.cache.getItems().filter((f)=>f.parentId === folder.id);
45
+ }
70
46
  }
71
- export const UpdateFolderRepositoryWithPathChange = RepositoryAbstraction.createDecorator({
72
- decorator: UpdateFolderRepositoryWithPathChangeImpl,
73
- dependencies: [FoldersCache]
47
+ const UpdateFolderRepositoryWithPathChange = UpdateFolderRepository.createDecorator({
48
+ decorator: UpdateFolderRepositoryWithPathChangeImpl,
49
+ dependencies: [
50
+ FoldersCache
51
+ ]
74
52
  });
53
+ export { UpdateFolderRepositoryWithPathChange };
75
54
 
76
55
  //# sourceMappingURL=RepositoryWithPathChange.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Path","FoldersCache","UpdateFolderRepository","RepositoryAbstraction","Folder","UpdateFolderRepositoryWithPathChangeImpl","constructor","cache","decoratee","execute","folder","folderPath","path","cachedFolderPath","getItem","f","id","updatedFolder","directChildren","listDirectChildren","length","updateChildrenPathsRecursively","children","parentFolder","child","updatedChild","updateItems","newPath","create","slug","updated","grandChildren","getItems","filter","parentId","UpdateFolderRepositoryWithPathChange","createDecorator","decorator","dependencies"],"sources":["RepositoryWithPathChange.ts"],"sourcesContent":["import { Path } from \"@webiny/shared-aco\";\nimport { FoldersCache } from \"../../abstractions.js\";\nimport { UpdateFolderRepository as RepositoryAbstraction } from \"../abstractions.js\";\nimport { Folder } from \"~/domain/folder/Folder.js\";\n\nclass UpdateFolderRepositoryWithPathChangeImpl implements RepositoryAbstraction.Interface {\n constructor(\n private cache: FoldersCache.Interface,\n private decoratee: RepositoryAbstraction.Interface\n ) {}\n\n async execute(folder: Folder) {\n const folderPath = folder.path;\n const cachedFolderPath = this.cache.getItem(f => f.id === folder.id)?.path;\n\n // Update the folder\n await this.decoratee.execute(folder);\n\n // If the folder is not in the cache, we can't proceed to update its children paths.\n if (!cachedFolderPath) {\n return;\n }\n\n // If the folder path has not changed, we don't need to update anything.\n if (cachedFolderPath === folderPath) {\n return;\n }\n\n // Fetch the updated folder from the cache (with the new path)\n const updatedFolder = this.cache.getItem(f => f.id === folder.id);\n if (!updatedFolder) {\n return;\n }\n\n // List direct children of the updated folder\n const directChildren = this.listDirectChildren(updatedFolder);\n if (!directChildren.length) {\n return;\n }\n\n this.updateChildrenPathsRecursively(directChildren, updatedFolder);\n }\n\n private updateChildrenPathsRecursively(children: Folder[], parentFolder: Folder) {\n for (const child of children) {\n let updatedChild: Folder | undefined;\n\n // Update the child's path in the cache\n this.cache.updateItems(f => {\n if (f.id === child.id) {\n const newPath = Path.create(f.slug, parentFolder.path); // Use the updated parent's path\n const updated = Folder.create({\n ...f,\n path: newPath\n });\n\n updatedChild = updated; // Store the updated child for recursion\n return updated;\n }\n return f;\n });\n\n // Recurse for the child's children\n if (updatedChild) {\n const grandChildren = this.listDirectChildren(updatedChild);\n if (grandChildren.length) {\n this.updateChildrenPathsRecursively(grandChildren, updatedChild);\n }\n }\n }\n }\n\n private listDirectChildren(folder: Folder) {\n return this.cache.getItems().filter(f => f.parentId === folder.id);\n }\n}\n\nexport const UpdateFolderRepositoryWithPathChange = RepositoryAbstraction.createDecorator({\n decorator: UpdateFolderRepositoryWithPathChangeImpl,\n dependencies: [FoldersCache]\n});\n"],"mappings":"AAAA,SAASA,IAAI,QAAQ,oBAAoB;AACzC,SAASC,YAAY;AACrB,SAASC,sBAAsB,IAAIC,qBAAqB;AACxD,SAASC,MAAM;AAEf,MAAMC,wCAAwC,CAA4C;EACtFC,WAAWA,CACCC,KAA6B,EAC7BC,SAA0C,EACpD;IAAA,KAFUD,KAA6B,GAA7BA,KAA6B;IAAA,KAC7BC,SAA0C,GAA1CA,SAA0C;EACnD;EAEH,MAAMC,OAAOA,CAACC,MAAc,EAAE;IAC1B,MAAMC,UAAU,GAAGD,MAAM,CAACE,IAAI;IAC9B,MAAMC,gBAAgB,GAAG,IAAI,CAACN,KAAK,CAACO,OAAO,CAACC,CAAC,IAAIA,CAAC,CAACC,EAAE,KAAKN,MAAM,CAACM,EAAE,CAAC,EAAEJ,IAAI;;IAE1E;IACA,MAAM,IAAI,CAACJ,SAAS,CAACC,OAAO,CAACC,MAAM,CAAC;;IAEpC;IACA,IAAI,CAACG,gBAAgB,EAAE;MACnB;IACJ;;IAEA;IACA,IAAIA,gBAAgB,KAAKF,UAAU,EAAE;MACjC;IACJ;;IAEA;IACA,MAAMM,aAAa,GAAG,IAAI,CAACV,KAAK,CAACO,OAAO,CAACC,CAAC,IAAIA,CAAC,CAACC,EAAE,KAAKN,MAAM,CAACM,EAAE,CAAC;IACjE,IAAI,CAACC,aAAa,EAAE;MAChB;IACJ;;IAEA;IACA,MAAMC,cAAc,GAAG,IAAI,CAACC,kBAAkB,CAACF,aAAa,CAAC;IAC7D,IAAI,CAACC,cAAc,CAACE,MAAM,EAAE;MACxB;IACJ;IAEA,IAAI,CAACC,8BAA8B,CAACH,cAAc,EAAED,aAAa,CAAC;EACtE;EAEQI,8BAA8BA,CAACC,QAAkB,EAAEC,YAAoB,EAAE;IAC7E,KAAK,MAAMC,KAAK,IAAIF,QAAQ,EAAE;MAC1B,IAAIG,YAAgC;;MAEpC;MACA,IAAI,CAAClB,KAAK,CAACmB,WAAW,CAACX,CAAC,IAAI;QACxB,IAAIA,CAAC,CAACC,EAAE,KAAKQ,KAAK,CAACR,EAAE,EAAE;UACnB,MAAMW,OAAO,GAAG3B,IAAI,CAAC4B,MAAM,CAACb,CAAC,CAACc,IAAI,EAAEN,YAAY,CAACX,IAAI,CAAC,CAAC,CAAC;UACxD,MAAMkB,OAAO,GAAG1B,MAAM,CAACwB,MAAM,CAAC;YAC1B,GAAGb,CAAC;YACJH,IAAI,EAAEe;UACV,CAAC,CAAC;UAEFF,YAAY,GAAGK,OAAO,CAAC,CAAC;UACxB,OAAOA,OAAO;QAClB;QACA,OAAOf,CAAC;MACZ,CAAC,CAAC;;MAEF;MACA,IAAIU,YAAY,EAAE;QACd,MAAMM,aAAa,GAAG,IAAI,CAACZ,kBAAkB,CAACM,YAAY,CAAC;QAC3D,IAAIM,aAAa,CAACX,MAAM,EAAE;UACtB,IAAI,CAACC,8BAA8B,CAACU,aAAa,EAAEN,YAAY,CAAC;QACpE;MACJ;IACJ;EACJ;EAEQN,kBAAkBA,CAACT,MAAc,EAAE;IACvC,OAAO,IAAI,CAACH,KAAK,CAACyB,QAAQ,CAAC,CAAC,CAACC,MAAM,CAAClB,CAAC,IAAIA,CAAC,CAACmB,QAAQ,KAAKxB,MAAM,CAACM,EAAE,CAAC;EACtE;AACJ;AAEA,OAAO,MAAMmB,oCAAoC,GAAGhC,qBAAqB,CAACiC,eAAe,CAAC;EACtFC,SAAS,EAAEhC,wCAAwC;EACnDiC,YAAY,EAAE,CAACrC,YAAY;AAC/B,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/folders/updateFolder/decorators/RepositoryWithPathChange.js","sources":["../../../../../src/features/folders/updateFolder/decorators/RepositoryWithPathChange.ts"],"sourcesContent":["import { Path } from \"@webiny/shared-aco\";\nimport { FoldersCache } from \"../../abstractions.js\";\nimport { UpdateFolderRepository as RepositoryAbstraction } from \"../abstractions.js\";\nimport { Folder } from \"~/domain/folder/Folder.js\";\n\nclass UpdateFolderRepositoryWithPathChangeImpl implements RepositoryAbstraction.Interface {\n constructor(\n private cache: FoldersCache.Interface,\n private decoratee: RepositoryAbstraction.Interface\n ) {}\n\n async execute(folder: Folder) {\n const folderPath = folder.path;\n const cachedFolderPath = this.cache.getItem(f => f.id === folder.id)?.path;\n\n // Update the folder\n await this.decoratee.execute(folder);\n\n // If the folder is not in the cache, we can't proceed to update its children paths.\n if (!cachedFolderPath) {\n return;\n }\n\n // If the folder path has not changed, we don't need to update anything.\n if (cachedFolderPath === folderPath) {\n return;\n }\n\n // Fetch the updated folder from the cache (with the new path)\n const updatedFolder = this.cache.getItem(f => f.id === folder.id);\n if (!updatedFolder) {\n return;\n }\n\n // List direct children of the updated folder\n const directChildren = this.listDirectChildren(updatedFolder);\n if (!directChildren.length) {\n return;\n }\n\n this.updateChildrenPathsRecursively(directChildren, updatedFolder);\n }\n\n private updateChildrenPathsRecursively(children: Folder[], parentFolder: Folder) {\n for (const child of children) {\n let updatedChild: Folder | undefined;\n\n // Update the child's path in the cache\n this.cache.updateItems(f => {\n if (f.id === child.id) {\n const newPath = Path.create(f.slug, parentFolder.path); // Use the updated parent's path\n const updated = Folder.create({\n ...f,\n path: newPath\n });\n\n updatedChild = updated; // Store the updated child for recursion\n return updated;\n }\n return f;\n });\n\n // Recurse for the child's children\n if (updatedChild) {\n const grandChildren = this.listDirectChildren(updatedChild);\n if (grandChildren.length) {\n this.updateChildrenPathsRecursively(grandChildren, updatedChild);\n }\n }\n }\n }\n\n private listDirectChildren(folder: Folder) {\n return this.cache.getItems().filter(f => f.parentId === folder.id);\n }\n}\n\nexport const UpdateFolderRepositoryWithPathChange = RepositoryAbstraction.createDecorator({\n decorator: UpdateFolderRepositoryWithPathChangeImpl,\n dependencies: [FoldersCache]\n});\n"],"names":["UpdateFolderRepositoryWithPathChangeImpl","cache","decoratee","folder","folderPath","cachedFolderPath","f","updatedFolder","directChildren","children","parentFolder","child","updatedChild","newPath","Path","updated","Folder","grandChildren","UpdateFolderRepositoryWithPathChange","RepositoryAbstraction","FoldersCache"],"mappings":";;;;AAKA,MAAMA;IACF,YACYC,KAA6B,EAC7BC,SAA0C,CACpD;aAFUD,KAAK,GAALA;aACAC,SAAS,GAATA;IACT;IAEH,MAAM,QAAQC,MAAc,EAAE;QAC1B,MAAMC,aAAaD,OAAO,IAAI;QAC9B,MAAME,mBAAmB,IAAI,CAAC,KAAK,CAAC,OAAO,CAACC,CAAAA,IAAKA,EAAE,EAAE,KAAKH,OAAO,EAAE,GAAG;QAGtE,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAACA;QAG7B,IAAI,CAACE,kBACD;QAIJ,IAAIA,qBAAqBD,YACrB;QAIJ,MAAMG,gBAAgB,IAAI,CAAC,KAAK,CAAC,OAAO,CAACD,CAAAA,IAAKA,EAAE,EAAE,KAAKH,OAAO,EAAE;QAChE,IAAI,CAACI,eACD;QAIJ,MAAMC,iBAAiB,IAAI,CAAC,kBAAkB,CAACD;QAC/C,IAAI,CAACC,eAAe,MAAM,EACtB;QAGJ,IAAI,CAAC,8BAA8B,CAACA,gBAAgBD;IACxD;IAEQ,+BAA+BE,QAAkB,EAAEC,YAAoB,EAAE;QAC7E,KAAK,MAAMC,SAASF,SAAU;YAC1B,IAAIG;YAGJ,IAAI,CAAC,KAAK,CAAC,WAAW,CAACN,CAAAA;gBACnB,IAAIA,EAAE,EAAE,KAAKK,MAAM,EAAE,EAAE;oBACnB,MAAME,UAAUC,KAAK,MAAM,CAACR,EAAE,IAAI,EAAEI,aAAa,IAAI;oBACrD,MAAMK,UAAUC,OAAO,MAAM,CAAC;wBAC1B,GAAGV,CAAC;wBACJ,MAAMO;oBACV;oBAEAD,eAAeG;oBACf,OAAOA;gBACX;gBACA,OAAOT;YACX;YAGA,IAAIM,cAAc;gBACd,MAAMK,gBAAgB,IAAI,CAAC,kBAAkB,CAACL;gBAC9C,IAAIK,cAAc,MAAM,EACpB,IAAI,CAAC,8BAA8B,CAACA,eAAeL;YAE3D;QACJ;IACJ;IAEQ,mBAAmBT,MAAc,EAAE;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAACG,CAAAA,IAAKA,EAAE,QAAQ,KAAKH,OAAO,EAAE;IACrE;AACJ;AAEO,MAAMe,uCAAuCC,uBAAAA,eAAqC,CAAC;IACtF,WAAWnB;IACX,cAAc;QAACoB;KAAa;AAChC"}