@webiny/app-aco 5.43.0-beta.0 → 5.43.0-beta.1

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 (123) hide show
  1. package/components/FolderTree/List/index.js +34 -27
  2. package/components/FolderTree/List/index.js.map +1 -1
  3. package/components/FolderTree/Node/index.d.ts +3 -1
  4. package/components/FolderTree/Node/index.js +46 -17
  5. package/components/FolderTree/Node/index.js.map +1 -1
  6. package/components/FolderTree/Node/styled.d.ts +5 -0
  7. package/components/FolderTree/Node/styled.js +38 -20
  8. package/components/FolderTree/Node/styled.js.map +1 -1
  9. package/components/FolderTree/index.js +11 -15
  10. package/components/FolderTree/index.js.map +1 -1
  11. package/contexts/acoList.js +14 -11
  12. package/contexts/acoList.js.map +1 -1
  13. package/contexts/navigateFolder.d.ts +1 -1
  14. package/contexts/navigateFolder.js +1 -1
  15. package/contexts/navigateFolder.js.map +1 -1
  16. package/features/folders/cache/ListCache.js +2 -1
  17. package/features/folders/cache/ListCache.js.map +1 -1
  18. package/features/folders/cache/LoadedCache.d.ts +13 -0
  19. package/features/folders/cache/LoadedCache.js +59 -0
  20. package/features/folders/cache/LoadedCache.js.map +1 -0
  21. package/features/folders/cache/LoadedFoldersCacheFactory.d.ts +7 -0
  22. package/features/folders/cache/LoadedFoldersCacheFactory.js +35 -0
  23. package/features/folders/cache/LoadedFoldersCacheFactory.js.map +1 -0
  24. package/features/folders/cache/index.d.ts +2 -0
  25. package/features/folders/cache/index.js +22 -0
  26. package/features/folders/cache/index.js.map +1 -1
  27. package/features/folders/getFolderHierarchy/FolderDto.d.ts +25 -0
  28. package/features/folders/getFolderHierarchy/FolderDto.js +50 -0
  29. package/features/folders/getFolderHierarchy/FolderDto.js.map +1 -0
  30. package/features/folders/getFolderHierarchy/FolderGqlDto.d.ts +20 -0
  31. package/features/folders/getFolderHierarchy/FolderGqlDto.js +7 -0
  32. package/features/folders/getFolderHierarchy/FolderGqlDto.js.map +1 -0
  33. package/features/folders/getFolderHierarchy/GetFolderHierarchy.d.ts +14 -0
  34. package/features/folders/getFolderHierarchy/GetFolderHierarchy.js +37 -0
  35. package/features/folders/getFolderHierarchy/GetFolderHierarchy.js.map +1 -0
  36. package/features/folders/getFolderHierarchy/GetFolderHierarchy.test.d.ts +1 -0
  37. package/features/folders/getFolderHierarchy/GetFolderHierarchy.test.js +207 -0
  38. package/features/folders/getFolderHierarchy/GetFolderHierarchy.test.js.map +1 -0
  39. package/features/folders/getFolderHierarchy/GetFolderHierarchyGqlGateway.d.ts +31 -0
  40. package/features/folders/getFolderHierarchy/GetFolderHierarchyGqlGateway.js +82 -0
  41. package/features/folders/getFolderHierarchy/GetFolderHierarchyGqlGateway.js.map +1 -0
  42. package/features/folders/getFolderHierarchy/GetFolderHierarchyRepository.d.ts +12 -0
  43. package/features/folders/getFolderHierarchy/GetFolderHierarchyRepository.js +48 -0
  44. package/features/folders/getFolderHierarchy/GetFolderHierarchyRepository.js.map +1 -0
  45. package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCase.d.ts +7 -0
  46. package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCase.js +26 -0
  47. package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCase.js.map +1 -0
  48. package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCaseWithLoading.d.ts +8 -0
  49. package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCaseWithLoading.js +25 -0
  50. package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCaseWithLoading.js.map +1 -0
  51. package/features/folders/getFolderHierarchy/IGetFolderHierarchyGateway.d.ts +12 -0
  52. package/features/folders/getFolderHierarchy/IGetFolderHierarchyGateway.js +7 -0
  53. package/features/folders/getFolderHierarchy/IGetFolderHierarchyGateway.js.map +1 -0
  54. package/features/folders/getFolderHierarchy/IGetFolderHierarchyRepository.d.ts +6 -0
  55. package/features/folders/getFolderHierarchy/IGetFolderHierarchyRepository.js +7 -0
  56. package/features/folders/getFolderHierarchy/IGetFolderHierarchyRepository.js.map +1 -0
  57. package/features/folders/getFolderHierarchy/IGetFolderHierarchyUseCase.d.ts +6 -0
  58. package/features/folders/getFolderHierarchy/IGetFolderHierarchyUseCase.js +7 -0
  59. package/features/folders/getFolderHierarchy/IGetFolderHierarchyUseCase.js.map +1 -0
  60. package/features/folders/getFolderHierarchy/index.d.ts +1 -0
  61. package/features/folders/getFolderHierarchy/index.js +18 -0
  62. package/features/folders/getFolderHierarchy/index.js.map +1 -0
  63. package/features/folders/getFolderHierarchy/useGetFolderHierarchy.d.ts +6 -0
  64. package/features/folders/getFolderHierarchy/useGetFolderHierarchy.js +65 -0
  65. package/features/folders/getFolderHierarchy/useGetFolderHierarchy.js.map +1 -0
  66. package/features/folders/index.d.ts +2 -0
  67. package/features/folders/index.js +22 -0
  68. package/features/folders/index.js.map +1 -1
  69. package/features/folders/listFolders/useListFolders.js +3 -8
  70. package/features/folders/listFolders/useListFolders.js.map +1 -1
  71. package/features/folders/listFoldersByParentIds/FolderDto.d.ts +25 -0
  72. package/features/folders/listFoldersByParentIds/FolderDto.js +50 -0
  73. package/features/folders/listFoldersByParentIds/FolderDto.js.map +1 -0
  74. package/features/folders/listFoldersByParentIds/FolderGqlDto.d.ts +20 -0
  75. package/features/folders/listFoldersByParentIds/FolderGqlDto.js +7 -0
  76. package/features/folders/listFoldersByParentIds/FolderGqlDto.js.map +1 -0
  77. package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsGateway.d.ts +8 -0
  78. package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsGateway.js +7 -0
  79. package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsGateway.js.map +1 -0
  80. package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsRepository.d.ts +6 -0
  81. package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsRepository.js +7 -0
  82. package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsRepository.js.map +1 -0
  83. package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsUseCase.d.ts +6 -0
  84. package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsUseCase.js +7 -0
  85. package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsUseCase.js.map +1 -0
  86. package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.d.ts +14 -0
  87. package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.js +39 -0
  88. package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.js.map +1 -0
  89. package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.d.ts +1 -0
  90. package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.js +248 -0
  91. package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.js.map +1 -0
  92. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.d.ts +26 -0
  93. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js +86 -0
  94. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js.map +1 -0
  95. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.d.ts +11 -0
  96. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.js +32 -0
  97. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.js.map +1 -0
  98. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepositoryWithLoadedCache.d.ts +8 -0
  99. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepositoryWithLoadedCache.js +39 -0
  100. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepositoryWithLoadedCache.js.map +1 -0
  101. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.d.ts +8 -0
  102. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.js +34 -0
  103. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.js.map +1 -0
  104. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCaseWithLoading.d.ts +10 -0
  105. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCaseWithLoading.js +37 -0
  106. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCaseWithLoading.js.map +1 -0
  107. package/features/folders/listFoldersByParentIds/index.d.ts +1 -0
  108. package/features/folders/listFoldersByParentIds/index.js +18 -0
  109. package/features/folders/listFoldersByParentIds/index.js.map +1 -0
  110. package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.d.ts +6 -0
  111. package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.js +65 -0
  112. package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.js.map +1 -0
  113. package/handlers.d.ts +1 -1
  114. package/package.json +17 -18
  115. package/types.d.ts +10 -10
  116. package/types.js +12 -11
  117. package/types.js.map +1 -1
  118. package/components/FolderTree/Empty/index.d.ts +0 -2
  119. package/components/FolderTree/Empty/index.js +0 -21
  120. package/components/FolderTree/Empty/index.js.map +0 -1
  121. package/components/FolderTree/Empty/styled.d.ts +0 -5
  122. package/components/FolderTree/Empty/styled.js +0 -25
  123. package/components/FolderTree/Empty/styled.js.map +0 -1
@@ -0,0 +1,248 @@
1
+ "use strict";
2
+
3
+ var _ListFoldersByParentIds = require("./ListFoldersByParentIds");
4
+ var _FoldersCacheFactory = require("../cache/FoldersCacheFactory");
5
+ var _LoadedFoldersCacheFactory = require("../cache/LoadedFoldersCacheFactory");
6
+ var _constants = require("../../../constants");
7
+ describe("ListFoldersByParentIds", function () {
8
+ var type = "abc";
9
+ var foldersCache = _FoldersCacheFactory.folderCacheFactory.getCache(type);
10
+ var loadedFoldersCache = _LoadedFoldersCacheFactory.loadedFolderCacheFactory.getCache(type);
11
+ beforeEach(function () {
12
+ foldersCache.clear();
13
+ loadedFoldersCache.clear();
14
+ jest.resetAllMocks();
15
+ });
16
+ it("should list folders from `ROOT` level if parentIds is `undefined`", async function () {
17
+ var gateway = {
18
+ execute: jest.fn().mockResolvedValue([{
19
+ id: "folder-1",
20
+ title: "Folder 1",
21
+ slug: "folder-1",
22
+ parentId: null,
23
+ type: type
24
+ }, {
25
+ id: "folder-2",
26
+ title: "Folder 2",
27
+ slug: "folder-2",
28
+ parentId: null,
29
+ type: type
30
+ }, {
31
+ id: "folder-3",
32
+ title: "Folder 3",
33
+ slug: "folder-3",
34
+ parentId: null,
35
+ type: type
36
+ }])
37
+ };
38
+ var listByParentIdFolders = _ListFoldersByParentIds.ListFoldersByParentIds.getInstance(type, gateway);
39
+ expect(foldersCache.hasItems()).toBeFalse();
40
+ await listByParentIdFolders.useCase.execute({
41
+ parentIds: undefined
42
+ });
43
+ expect(gateway.execute).toHaveBeenCalledTimes(1);
44
+ expect(gateway.execute).toHaveBeenCalledWith({
45
+ parentIds: [_constants.ROOT_FOLDER],
46
+ type: type
47
+ });
48
+ expect(foldersCache.hasItems()).toBeTrue();
49
+ expect(foldersCache.count()).toEqual(3);
50
+
51
+ // This call should be idempotent: the number of elements in cache should not change
52
+ await listByParentIdFolders.useCase.execute({
53
+ parentIds: undefined
54
+ });
55
+ expect(foldersCache.count()).toEqual(3);
56
+ });
57
+ it("should list folders from the provided `parentIds`", async function () {
58
+ var gateway = {
59
+ execute: jest.fn().mockImplementationOnce(function () {
60
+ return Promise.resolve([{
61
+ id: "folder-1",
62
+ title: "Folder 1",
63
+ slug: "folder-1",
64
+ parentId: "folder-0",
65
+ type: type
66
+ }, {
67
+ id: "folder-2",
68
+ title: "Folder 2",
69
+ slug: "folder-1",
70
+ parentId: "folder-0",
71
+ type: type
72
+ }, {
73
+ id: "folder-3",
74
+ title: "Folder 3",
75
+ slug: "folder-3",
76
+ parentId: "folder-0",
77
+ type: type
78
+ }]);
79
+ }).mockImplementationOnce(function () {
80
+ return Promise.resolve([{
81
+ id: "folder-4",
82
+ title: "Folder 4",
83
+ slug: "folder-4",
84
+ parentId: "folder-1",
85
+ type: type
86
+ }, {
87
+ id: "folder-5",
88
+ title: "Folder 5",
89
+ slug: "folder-5",
90
+ parentId: "folder-1",
91
+ type: type
92
+ }, {
93
+ id: "folder-6",
94
+ title: "Folder 6",
95
+ slug: "folder-6",
96
+ parentId: "folder-1",
97
+ type: type
98
+ }]);
99
+ })
100
+ };
101
+ var listByParentIdFolders = _ListFoldersByParentIds.ListFoldersByParentIds.getInstance(type, gateway);
102
+ expect(foldersCache.hasItems()).toBeFalse();
103
+ await listByParentIdFolders.useCase.execute({
104
+ parentIds: ["folder-0"]
105
+ });
106
+ expect(gateway.execute).toHaveBeenCalledTimes(1);
107
+ expect(gateway.execute).toHaveBeenCalledWith({
108
+ parentIds: ["folder-0"],
109
+ type: type
110
+ });
111
+ expect(foldersCache.hasItems()).toBeTrue();
112
+ expect(foldersCache.count()).toEqual(3);
113
+
114
+ // The number of folders in cache should increase, since we are changing the parentIds
115
+ await listByParentIdFolders.useCase.execute({
116
+ parentIds: ["folder-1"]
117
+ });
118
+ expect(foldersCache.count()).toEqual(6);
119
+ });
120
+ it("should list folders from missing `parentIds` stored in cache", async function () {
121
+ var gateway = {
122
+ execute: jest.fn().mockImplementationOnce(function () {
123
+ return Promise.resolve([{
124
+ id: "folder-1",
125
+ title: "Folder 1",
126
+ slug: "folder-1",
127
+ parentId: "folder-0",
128
+ type: type
129
+ }, {
130
+ id: "folder-2",
131
+ title: "Folder 2",
132
+ slug: "folder-2",
133
+ parentId: "folder-1",
134
+ type: type
135
+ }]);
136
+ }).mockImplementationOnce(function () {
137
+ return Promise.resolve([{
138
+ id: "folder-3",
139
+ title: "Folder 3",
140
+ slug: "folder-3",
141
+ parentId: "folder-2",
142
+ type: type
143
+ }]);
144
+ })
145
+ };
146
+ var listByParentIdFolders = _ListFoldersByParentIds.ListFoldersByParentIds.getInstance(type, gateway);
147
+
148
+ // Execute the useCase 3 times and check the gateway is invoked only when needed
149
+ await listByParentIdFolders.useCase.execute({
150
+ parentIds: ["folder-0", "folder-1"]
151
+ });
152
+ await listByParentIdFolders.useCase.execute({
153
+ parentIds: ["folder-0", "folder-1", "folder-2"]
154
+ });
155
+ await listByParentIdFolders.useCase.execute({
156
+ parentIds: ["folder-0", "folder-1", "folder-2"]
157
+ });
158
+ expect(gateway.execute).toHaveBeenNthCalledWith(1, {
159
+ parentIds: ["folder-0", "folder-1"],
160
+ type: type
161
+ });
162
+ expect(gateway.execute).toHaveBeenNthCalledWith(2, {
163
+ parentIds: ["folder-2"],
164
+ type: type
165
+ });
166
+ expect(gateway.execute).not.toHaveBeenCalledTimes(3);
167
+ });
168
+ it("should return empty array if no folders are found", async function () {
169
+ var emptyGateway = {
170
+ execute: jest.fn().mockResolvedValue([])
171
+ };
172
+ var listByParentIdFolders = _ListFoldersByParentIds.ListFoldersByParentIds.getInstance(type, emptyGateway);
173
+ expect(foldersCache.hasItems()).toBeFalse();
174
+ await listByParentIdFolders.useCase.execute({});
175
+ expect(emptyGateway.execute).toHaveBeenCalledTimes(1);
176
+ expect(foldersCache.hasItems()).toBeFalse();
177
+ var items = foldersCache.getItems();
178
+ expect(items.length).toEqual(0);
179
+ });
180
+ it("should handle gateway errors gracefully", async function () {
181
+ var errorGateway = {
182
+ execute: jest.fn().mockRejectedValue(new Error("Gateway error"))
183
+ };
184
+ var listByParentIdFolders = _ListFoldersByParentIds.ListFoldersByParentIds.getInstance(type, errorGateway);
185
+ expect(foldersCache.hasItems()).toBeFalse();
186
+ await expect(listByParentIdFolders.useCase.execute({})).rejects.toThrow("Gateway error");
187
+ expect(errorGateway.execute).toHaveBeenCalledTimes(1);
188
+ expect(foldersCache.hasItems()).toBeFalse();
189
+ });
190
+ it("should clear cache when type changes", async function () {
191
+ var gatewayAbc = {
192
+ execute: jest.fn().mockResolvedValue([{
193
+ id: "folder-1",
194
+ title: "Folder 1",
195
+ slug: "folder-1",
196
+ parentId: null,
197
+ type: type
198
+ }, {
199
+ id: "folder-2",
200
+ title: "Folder 2",
201
+ slug: "folder-1",
202
+ parentId: null,
203
+ type: type
204
+ }, {
205
+ id: "folder-3",
206
+ title: "Folder 3",
207
+ slug: "folder-3",
208
+ parentId: null,
209
+ type: type
210
+ }])
211
+ };
212
+ var newType = "xyz";
213
+ var gatewayXyz = {
214
+ execute: jest.fn().mockResolvedValue([{
215
+ id: "folder-1",
216
+ title: "Folder 1",
217
+ slug: "folder-1",
218
+ parentId: null,
219
+ type: newType
220
+ }, {
221
+ id: "folder-2",
222
+ title: "Folder 2",
223
+ slug: "folder-1",
224
+ parentId: null,
225
+ type: newType
226
+ }, {
227
+ id: "folder-3",
228
+ title: "Folder 3",
229
+ slug: "folder-3",
230
+ parentId: null,
231
+ type: newType
232
+ }])
233
+ };
234
+ var listFoldersByParentId = _ListFoldersByParentIds.ListFoldersByParentIds.getInstance(type, gatewayAbc);
235
+ expect(foldersCache.hasItems()).toBeFalse();
236
+ await listFoldersByParentId.useCase.execute({});
237
+ expect(gatewayAbc.execute).toHaveBeenCalledTimes(1);
238
+ expect(foldersCache.hasItems()).toBeTrue();
239
+ var newFoldersCache = _FoldersCacheFactory.folderCacheFactory.getCache(newType);
240
+ var newListFoldersByParentId = _ListFoldersByParentIds.ListFoldersByParentIds.getInstance(newType, gatewayXyz);
241
+ expect(newFoldersCache.hasItems()).toBeFalse();
242
+ await newListFoldersByParentId.useCase.execute({});
243
+ expect(gatewayXyz.execute).toHaveBeenCalledTimes(1);
244
+ expect(newFoldersCache.hasItems()).toBeTrue();
245
+ });
246
+ });
247
+
248
+ //# sourceMappingURL=ListFoldersByParentIds.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_ListFoldersByParentIds","require","_FoldersCacheFactory","_LoadedFoldersCacheFactory","_constants","describe","type","foldersCache","folderCacheFactory","getCache","loadedFoldersCache","loadedFolderCacheFactory","beforeEach","clear","jest","resetAllMocks","it","gateway","execute","fn","mockResolvedValue","id","title","slug","parentId","listByParentIdFolders","ListFoldersByParentIds","getInstance","expect","hasItems","toBeFalse","useCase","parentIds","undefined","toHaveBeenCalledTimes","toHaveBeenCalledWith","ROOT_FOLDER","toBeTrue","count","toEqual","mockImplementationOnce","Promise","resolve","toHaveBeenNthCalledWith","not","emptyGateway","items","getItems","length","errorGateway","mockRejectedValue","Error","rejects","toThrow","gatewayAbc","newType","gatewayXyz","listFoldersByParentId","newFoldersCache","newListFoldersByParentId"],"sources":["ListFoldersByParentIds.test.ts"],"sourcesContent":["import { ListFoldersByParentIds } from \"./ListFoldersByParentIds\";\nimport { folderCacheFactory } from \"../cache/FoldersCacheFactory\";\nimport { loadedFolderCacheFactory } from \"../cache/LoadedFoldersCacheFactory\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\ndescribe(\"ListFoldersByParentIds\", () => {\n const type = \"abc\";\n\n const foldersCache = folderCacheFactory.getCache(type);\n const loadedFoldersCache = loadedFolderCacheFactory.getCache(type);\n\n beforeEach(() => {\n foldersCache.clear();\n loadedFoldersCache.clear();\n jest.resetAllMocks();\n });\n\n it(\"should list folders from `ROOT` level if parentIds is `undefined`\", async () => {\n const gateway = {\n execute: jest.fn().mockResolvedValue([\n {\n id: \"folder-1\",\n title: \"Folder 1\",\n slug: \"folder-1\",\n parentId: null,\n type\n },\n {\n id: \"folder-2\",\n title: \"Folder 2\",\n slug: \"folder-2\",\n parentId: null,\n type\n },\n {\n id: \"folder-3\",\n title: \"Folder 3\",\n slug: \"folder-3\",\n parentId: null,\n type\n }\n ])\n };\n\n const listByParentIdFolders = ListFoldersByParentIds.getInstance(type, gateway);\n\n expect(foldersCache.hasItems()).toBeFalse();\n await listByParentIdFolders.useCase.execute({ parentIds: undefined });\n\n expect(gateway.execute).toHaveBeenCalledTimes(1);\n expect(gateway.execute).toHaveBeenCalledWith({ parentIds: [ROOT_FOLDER], type });\n\n expect(foldersCache.hasItems()).toBeTrue();\n expect(foldersCache.count()).toEqual(3);\n\n // This call should be idempotent: the number of elements in cache should not change\n await listByParentIdFolders.useCase.execute({ parentIds: undefined });\n expect(foldersCache.count()).toEqual(3);\n });\n\n it(\"should list folders from the provided `parentIds`\", async () => {\n const gateway = {\n execute: jest\n .fn()\n .mockImplementationOnce(() =>\n Promise.resolve([\n {\n id: \"folder-1\",\n title: \"Folder 1\",\n slug: \"folder-1\",\n parentId: \"folder-0\",\n type\n },\n {\n id: \"folder-2\",\n title: \"Folder 2\",\n slug: \"folder-1\",\n parentId: \"folder-0\",\n type\n },\n {\n id: \"folder-3\",\n title: \"Folder 3\",\n slug: \"folder-3\",\n parentId: \"folder-0\",\n type\n }\n ])\n )\n .mockImplementationOnce(() =>\n Promise.resolve([\n {\n id: \"folder-4\",\n title: \"Folder 4\",\n slug: \"folder-4\",\n parentId: \"folder-1\",\n type\n },\n {\n id: \"folder-5\",\n title: \"Folder 5\",\n slug: \"folder-5\",\n parentId: \"folder-1\",\n type\n },\n {\n id: \"folder-6\",\n title: \"Folder 6\",\n slug: \"folder-6\",\n parentId: \"folder-1\",\n type\n }\n ])\n )\n };\n\n const listByParentIdFolders = ListFoldersByParentIds.getInstance(type, gateway);\n\n expect(foldersCache.hasItems()).toBeFalse();\n await listByParentIdFolders.useCase.execute({ parentIds: [\"folder-0\"] });\n\n expect(gateway.execute).toHaveBeenCalledTimes(1);\n expect(gateway.execute).toHaveBeenCalledWith({ parentIds: [\"folder-0\"], type });\n\n expect(foldersCache.hasItems()).toBeTrue();\n expect(foldersCache.count()).toEqual(3);\n\n // The number of folders in cache should increase, since we are changing the parentIds\n await listByParentIdFolders.useCase.execute({ parentIds: [\"folder-1\"] });\n expect(foldersCache.count()).toEqual(6);\n });\n\n it(\"should list folders from missing `parentIds` stored in cache\", async () => {\n const gateway = {\n execute: jest\n .fn()\n .mockImplementationOnce(() =>\n Promise.resolve([\n {\n id: \"folder-1\",\n title: \"Folder 1\",\n slug: \"folder-1\",\n parentId: \"folder-0\",\n type\n },\n {\n id: \"folder-2\",\n title: \"Folder 2\",\n slug: \"folder-2\",\n parentId: \"folder-1\",\n type\n }\n ])\n )\n .mockImplementationOnce(() =>\n Promise.resolve([\n {\n id: \"folder-3\",\n title: \"Folder 3\",\n slug: \"folder-3\",\n parentId: \"folder-2\",\n type\n }\n ])\n )\n };\n\n const listByParentIdFolders = ListFoldersByParentIds.getInstance(type, gateway);\n\n // Execute the useCase 3 times and check the gateway is invoked only when needed\n await listByParentIdFolders.useCase.execute({ parentIds: [\"folder-0\", \"folder-1\"] });\n await listByParentIdFolders.useCase.execute({\n parentIds: [\"folder-0\", \"folder-1\", \"folder-2\"]\n });\n await listByParentIdFolders.useCase.execute({\n parentIds: [\"folder-0\", \"folder-1\", \"folder-2\"]\n });\n\n expect(gateway.execute).toHaveBeenNthCalledWith(1, {\n parentIds: [\"folder-0\", \"folder-1\"],\n type\n });\n expect(gateway.execute).toHaveBeenNthCalledWith(2, { parentIds: [\"folder-2\"], type });\n expect(gateway.execute).not.toHaveBeenCalledTimes(3);\n });\n\n it(\"should return empty array if no folders are found\", async () => {\n const emptyGateway = {\n execute: jest.fn().mockResolvedValue([])\n };\n const listByParentIdFolders = ListFoldersByParentIds.getInstance(type, emptyGateway);\n\n expect(foldersCache.hasItems()).toBeFalse();\n\n await listByParentIdFolders.useCase.execute({});\n\n expect(emptyGateway.execute).toHaveBeenCalledTimes(1);\n expect(foldersCache.hasItems()).toBeFalse();\n\n const items = foldersCache.getItems();\n expect(items.length).toEqual(0);\n });\n\n it(\"should handle gateway errors gracefully\", async () => {\n const errorGateway = {\n execute: jest.fn().mockRejectedValue(new Error(\"Gateway error\"))\n };\n const listByParentIdFolders = ListFoldersByParentIds.getInstance(type, errorGateway);\n\n expect(foldersCache.hasItems()).toBeFalse();\n\n await expect(listByParentIdFolders.useCase.execute({})).rejects.toThrow(\"Gateway error\");\n\n expect(errorGateway.execute).toHaveBeenCalledTimes(1);\n expect(foldersCache.hasItems()).toBeFalse();\n });\n\n it(\"should clear cache when type changes\", async () => {\n const gatewayAbc = {\n execute: jest.fn().mockResolvedValue([\n {\n id: \"folder-1\",\n title: \"Folder 1\",\n slug: \"folder-1\",\n parentId: null,\n type\n },\n {\n id: \"folder-2\",\n title: \"Folder 2\",\n slug: \"folder-1\",\n parentId: null,\n type\n },\n {\n id: \"folder-3\",\n title: \"Folder 3\",\n slug: \"folder-3\",\n parentId: null,\n type\n }\n ])\n };\n\n const newType = \"xyz\";\n const gatewayXyz = {\n execute: jest.fn().mockResolvedValue([\n {\n id: \"folder-1\",\n title: \"Folder 1\",\n slug: \"folder-1\",\n parentId: null,\n type: newType\n },\n {\n id: \"folder-2\",\n title: \"Folder 2\",\n slug: \"folder-1\",\n parentId: null,\n type: newType\n },\n {\n id: \"folder-3\",\n title: \"Folder 3\",\n slug: \"folder-3\",\n parentId: null,\n type: newType\n }\n ])\n };\n\n const listFoldersByParentId = ListFoldersByParentIds.getInstance(type, gatewayAbc);\n\n expect(foldersCache.hasItems()).toBeFalse();\n\n await listFoldersByParentId.useCase.execute({});\n\n expect(gatewayAbc.execute).toHaveBeenCalledTimes(1);\n expect(foldersCache.hasItems()).toBeTrue();\n\n const newFoldersCache = folderCacheFactory.getCache(newType);\n const newListFoldersByParentId = ListFoldersByParentIds.getInstance(newType, gatewayXyz);\n\n expect(newFoldersCache.hasItems()).toBeFalse();\n\n await newListFoldersByParentId.useCase.execute({});\n\n expect(gatewayXyz.execute).toHaveBeenCalledTimes(1);\n expect(newFoldersCache.hasItems()).toBeTrue();\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,26 @@
1
+ import ApolloClient from "apollo-client";
2
+ import { IListFoldersByParentIdsGateway, ListFoldersByParentIdsGatewayParams } from "./IListFoldersByParentIdsGateway";
3
+ import { AcoError, FolderItem } from "../../../types";
4
+ export interface ListFoldersByParentIdsResponse {
5
+ aco: {
6
+ listFolders: {
7
+ data: FolderItem[] | null;
8
+ error: AcoError | null;
9
+ };
10
+ };
11
+ }
12
+ export interface ListFoldersByParentIdsQueryVariables {
13
+ type: string;
14
+ parentIds_in: string[];
15
+ limit: number;
16
+ sort?: Record<string, any>;
17
+ after?: string | null;
18
+ }
19
+ export declare const LIST_FOLDERS_BY_PARENT_IDS: (FOLDER_FIELDS: string) => import("graphql").DocumentNode;
20
+ export declare class ListFoldersByParentIdsGqlGateway implements IListFoldersByParentIdsGateway {
21
+ private client;
22
+ private modelFields;
23
+ constructor(client: ApolloClient<any>, modelFields: string);
24
+ execute({ parentIds, ...params }: ListFoldersByParentIdsGatewayParams): Promise<FolderItem[]>;
25
+ private getRootFolder;
26
+ }
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ListFoldersByParentIdsGqlGateway = exports.LIST_FOLDERS_BY_PARENT_IDS = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
14
+ var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
15
+ var _constants = require("../../../constants");
16
+ var _excluded = ["parentIds"];
17
+ var _templateObject;
18
+ var LIST_FOLDERS_BY_PARENT_IDS = exports.LIST_FOLDERS_BY_PARENT_IDS = function LIST_FOLDERS_BY_PARENT_IDS(FOLDER_FIELDS) {
19
+ return (0, _graphqlTag.default)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n query ListFoldersByParentIds($type: String!, $parentIds_in: [ID!]!, $limit: Int!) {\n aco {\n listFolders(where: { type: $type, parentId_in: $parentIds_in }, limit: $limit) {\n data ", "\n error {\n code\n data\n message\n }\n }\n }\n }\n"])), FOLDER_FIELDS);
20
+ };
21
+ var ListFoldersByParentIdsGqlGateway = exports.ListFoldersByParentIdsGqlGateway = /*#__PURE__*/function () {
22
+ function ListFoldersByParentIdsGqlGateway(client, modelFields) {
23
+ (0, _classCallCheck2.default)(this, ListFoldersByParentIdsGqlGateway);
24
+ this.client = client;
25
+ this.modelFields = modelFields;
26
+ }
27
+ return (0, _createClass2.default)(ListFoldersByParentIdsGqlGateway, [{
28
+ key: "execute",
29
+ value: async function execute(_ref) {
30
+ var parentIds = _ref.parentIds,
31
+ params = (0, _objectWithoutProperties2.default)(_ref, _excluded);
32
+ var _await$this$client$qu = await this.client.query({
33
+ query: LIST_FOLDERS_BY_PARENT_IDS(this.modelFields),
34
+ variables: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
35
+ parentIds_in: parentIds,
36
+ limit: 10000
37
+ }),
38
+ fetchPolicy: "network-only"
39
+ }),
40
+ response = _await$this$client$qu.data;
41
+ if (!response) {
42
+ throw new Error("Network error while listing folders.");
43
+ }
44
+ var _response$aco$listFol = response.aco.listFolders,
45
+ data = _response$aco$listFol.data,
46
+ error = _response$aco$listFol.error;
47
+ if (!data) {
48
+ throw new Error(error?.message || "Could not fetch folders");
49
+ }
50
+ return [this.getRootFolder()].concat((0, _toConsumableArray2.default)(data || []));
51
+ }
52
+ }, {
53
+ key: "getRootFolder",
54
+ value: function getRootFolder() {
55
+ return {
56
+ id: _constants.ROOT_FOLDER,
57
+ title: "Home",
58
+ permissions: [],
59
+ parentId: "0",
60
+ slug: "",
61
+ createdOn: "",
62
+ createdBy: {
63
+ id: "",
64
+ displayName: "",
65
+ type: ""
66
+ },
67
+ hasNonInheritedPermissions: false,
68
+ canManagePermissions: true,
69
+ canManageStructure: true,
70
+ canManageContent: true,
71
+ savedOn: "",
72
+ savedBy: {
73
+ id: "",
74
+ displayName: "",
75
+ type: ""
76
+ },
77
+ modifiedOn: null,
78
+ modifiedBy: null,
79
+ type: "$ROOT",
80
+ extensions: {}
81
+ };
82
+ }
83
+ }]);
84
+ }();
85
+
86
+ //# sourceMappingURL=ListFoldersByParentIdsGqlGateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_graphqlTag","_interopRequireDefault","require","_constants","_excluded","_templateObject","LIST_FOLDERS_BY_PARENT_IDS","exports","FOLDER_FIELDS","gql","_taggedTemplateLiteral2","default","ListFoldersByParentIdsGqlGateway","client","modelFields","_classCallCheck2","_createClass2","key","value","execute","_ref","parentIds","params","_objectWithoutProperties2","_await$this$client$qu","query","variables","_objectSpread2","parentIds_in","limit","fetchPolicy","response","data","Error","_response$aco$listFol","aco","listFolders","error","message","getRootFolder","concat","_toConsumableArray2","id","ROOT_FOLDER","title","permissions","parentId","slug","createdOn","createdBy","displayName","type","hasNonInheritedPermissions","canManagePermissions","canManageStructure","canManageContent","savedOn","savedBy","modifiedOn","modifiedBy","extensions"],"sources":["ListFoldersByParentIdsGqlGateway.ts"],"sourcesContent":["import ApolloClient from \"apollo-client\";\nimport gql from \"graphql-tag\";\nimport {\n IListFoldersByParentIdsGateway,\n ListFoldersByParentIdsGatewayParams\n} from \"./IListFoldersByParentIdsGateway\";\nimport { AcoError, FolderItem } from \"~/types\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\nexport interface ListFoldersByParentIdsResponse {\n aco: {\n listFolders: {\n data: FolderItem[] | null;\n error: AcoError | null;\n };\n };\n}\n\nexport interface ListFoldersByParentIdsQueryVariables {\n type: string;\n parentIds_in: string[];\n limit: number;\n sort?: Record<string, any>;\n after?: string | null;\n}\n\nexport const LIST_FOLDERS_BY_PARENT_IDS = (FOLDER_FIELDS: string) => gql`\n query ListFoldersByParentIds($type: String!, $parentIds_in: [ID!]!, $limit: Int!) {\n aco {\n listFolders(where: { type: $type, parentId_in: $parentIds_in }, limit: $limit) {\n data ${FOLDER_FIELDS}\n error {\n code\n data\n message\n }\n }\n }\n }\n`;\n\nexport class ListFoldersByParentIdsGqlGateway implements IListFoldersByParentIdsGateway {\n private client: ApolloClient<any>;\n private modelFields: string;\n\n constructor(client: ApolloClient<any>, modelFields: string) {\n this.client = client;\n this.modelFields = modelFields;\n }\n\n async execute({ parentIds, ...params }: ListFoldersByParentIdsGatewayParams) {\n const { data: response } = await this.client.query<\n ListFoldersByParentIdsResponse,\n ListFoldersByParentIdsQueryVariables\n >({\n query: LIST_FOLDERS_BY_PARENT_IDS(this.modelFields),\n variables: {\n ...params,\n parentIds_in: parentIds,\n limit: 10000\n },\n fetchPolicy: \"network-only\"\n });\n\n if (!response) {\n throw new Error(\"Network error while listing folders.\");\n }\n\n const { data, error } = response.aco.listFolders;\n\n if (!data) {\n throw new Error(error?.message || \"Could not fetch folders\");\n }\n\n return [this.getRootFolder(), ...(data || [])];\n }\n\n private getRootFolder(): FolderItem {\n return {\n id: ROOT_FOLDER,\n title: \"Home\",\n permissions: [],\n parentId: \"0\",\n slug: \"\",\n createdOn: \"\",\n createdBy: {\n id: \"\",\n displayName: \"\",\n type: \"\"\n },\n hasNonInheritedPermissions: false,\n canManagePermissions: true,\n canManageStructure: true,\n canManageContent: true,\n savedOn: \"\",\n savedBy: {\n id: \"\",\n displayName: \"\",\n type: \"\"\n },\n modifiedOn: null,\n modifiedBy: null,\n type: \"$ROOT\",\n extensions: {}\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;AACA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAMA,IAAAC,UAAA,GAAAD,OAAA;AAA0C,IAAAE,SAAA;AAAA,IAAAC,eAAA;AAmBnC,IAAMC,0BAA0B,GAAAC,OAAA,CAAAD,0BAAA,GAAG,SAA7BA,0BAA0BA,CAAIE,aAAqB;EAAA,WAAKC,mBAAG,EAAAJ,eAAA,KAAAA,eAAA,OAAAK,uBAAA,CAAAC,OAAA,2YAIjDH,aAAa;AAAA,CASnC;AAAC,IAEWI,gCAAgC,GAAAL,OAAA,CAAAK,gCAAA;EAIzC,SAAAA,iCAAYC,MAAyB,EAAEC,WAAmB,EAAE;IAAA,IAAAC,gBAAA,CAAAJ,OAAA,QAAAC,gCAAA;IACxD,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,WAAW,GAAGA,WAAW;EAClC;EAAC,WAAAE,aAAA,CAAAL,OAAA,EAAAC,gCAAA;IAAAK,GAAA;IAAAC,KAAA,EAED,eAAMC,OAAOA,CAAAC,IAAA,EAAgE;MAAA,IAA7DC,SAAS,GAAAD,IAAA,CAATC,SAAS;QAAKC,MAAM,OAAAC,yBAAA,CAAAZ,OAAA,EAAAS,IAAA,EAAAhB,SAAA;MAChC,IAAAoB,qBAAA,GAA2B,MAAM,IAAI,CAACX,MAAM,CAACY,KAAK,CAGhD;UACEA,KAAK,EAAEnB,0BAA0B,CAAC,IAAI,CAACQ,WAAW,CAAC;UACnDY,SAAS,MAAAC,cAAA,CAAAhB,OAAA,MAAAgB,cAAA,CAAAhB,OAAA,MACFW,MAAM;YACTM,YAAY,EAAEP,SAAS;YACvBQ,KAAK,EAAE;UAAK,EACf;UACDC,WAAW,EAAE;QACjB,CAAC,CAAC;QAXYC,QAAQ,GAAAP,qBAAA,CAAdQ,IAAI;MAaZ,IAAI,CAACD,QAAQ,EAAE;QACX,MAAM,IAAIE,KAAK,CAAC,sCAAsC,CAAC;MAC3D;MAEA,IAAAC,qBAAA,GAAwBH,QAAQ,CAACI,GAAG,CAACC,WAAW;QAAxCJ,IAAI,GAAAE,qBAAA,CAAJF,IAAI;QAAEK,KAAK,GAAAH,qBAAA,CAALG,KAAK;MAEnB,IAAI,CAACL,IAAI,EAAE;QACP,MAAM,IAAIC,KAAK,CAACI,KAAK,EAAEC,OAAO,IAAI,yBAAyB,CAAC;MAChE;MAEA,QAAQ,IAAI,CAACC,aAAa,CAAC,CAAC,EAAAC,MAAA,KAAAC,mBAAA,CAAA9B,OAAA,EAAMqB,IAAI,IAAI,EAAE;IAChD;EAAC;IAAAf,GAAA;IAAAC,KAAA,EAED,SAAQqB,aAAaA,CAAA,EAAe;MAChC,OAAO;QACHG,EAAE,EAAEC,sBAAW;QACfC,KAAK,EAAE,MAAM;QACbC,WAAW,EAAE,EAAE;QACfC,QAAQ,EAAE,GAAG;QACbC,IAAI,EAAE,EAAE;QACRC,SAAS,EAAE,EAAE;QACbC,SAAS,EAAE;UACPP,EAAE,EAAE,EAAE;UACNQ,WAAW,EAAE,EAAE;UACfC,IAAI,EAAE;QACV,CAAC;QACDC,0BAA0B,EAAE,KAAK;QACjCC,oBAAoB,EAAE,IAAI;QAC1BC,kBAAkB,EAAE,IAAI;QACxBC,gBAAgB,EAAE,IAAI;QACtBC,OAAO,EAAE,EAAE;QACXC,OAAO,EAAE;UACLf,EAAE,EAAE,EAAE;UACNQ,WAAW,EAAE,EAAE;UACfC,IAAI,EAAE;QACV,CAAC;QACDO,UAAU,EAAE,IAAI;QAChBC,UAAU,EAAE,IAAI;QAChBR,IAAI,EAAE,OAAO;QACbS,UAAU,EAAE,CAAC;MACjB,CAAC;IACL;EAAC;AAAA","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ import { ListCache } from "../cache";
2
+ import { Folder } from "../Folder";
3
+ import { IListFoldersByParentIdsGateway } from "./IListFoldersByParentIdsGateway";
4
+ import { IListFoldersByParentIdsRepository, ListFoldersByParentIdsRepositoryParams } from "./IListFoldersByParentIdsRepository";
5
+ export declare class ListFoldersByParentIdsRepository implements IListFoldersByParentIdsRepository {
6
+ private cache;
7
+ private gateway;
8
+ private readonly type;
9
+ constructor(cache: ListCache<Folder>, gateway: IListFoldersByParentIdsGateway, type: string);
10
+ execute(params: ListFoldersByParentIdsRepositoryParams): Promise<void>;
11
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ListFoldersByParentIdsRepository = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _Folder = require("../Folder");
11
+ var ListFoldersByParentIdsRepository = exports.ListFoldersByParentIdsRepository = /*#__PURE__*/function () {
12
+ function ListFoldersByParentIdsRepository(cache, gateway, type) {
13
+ (0, _classCallCheck2.default)(this, ListFoldersByParentIdsRepository);
14
+ this.cache = cache;
15
+ this.gateway = gateway;
16
+ this.type = type;
17
+ }
18
+ return (0, _createClass2.default)(ListFoldersByParentIdsRepository, [{
19
+ key: "execute",
20
+ value: async function execute(params) {
21
+ var items = await this.gateway.execute({
22
+ type: this.type,
23
+ parentIds: params.parentIds
24
+ });
25
+ this.cache.addItems(items.map(function (item) {
26
+ return _Folder.Folder.create(item);
27
+ }));
28
+ }
29
+ }]);
30
+ }();
31
+
32
+ //# sourceMappingURL=ListFoldersByParentIdsRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_Folder","require","ListFoldersByParentIdsRepository","exports","cache","gateway","type","_classCallCheck2","default","_createClass2","key","value","execute","params","items","parentIds","addItems","map","item","Folder","create"],"sources":["ListFoldersByParentIdsRepository.ts"],"sourcesContent":["import { ListCache } from \"../cache\";\nimport { Folder } from \"../Folder\";\nimport { IListFoldersByParentIdsGateway } from \"./IListFoldersByParentIdsGateway\";\nimport {\n IListFoldersByParentIdsRepository,\n ListFoldersByParentIdsRepositoryParams\n} from \"./IListFoldersByParentIdsRepository\";\n\nexport class ListFoldersByParentIdsRepository implements IListFoldersByParentIdsRepository {\n private cache: ListCache<Folder>;\n private gateway: IListFoldersByParentIdsGateway;\n private readonly type: string;\n\n constructor(cache: ListCache<Folder>, gateway: IListFoldersByParentIdsGateway, type: string) {\n this.cache = cache;\n this.gateway = gateway;\n this.type = type;\n }\n\n async execute(params: ListFoldersByParentIdsRepositoryParams) {\n const items = await this.gateway.execute({ type: this.type, parentIds: params.parentIds });\n this.cache.addItems(items.map(item => Folder.create(item)));\n }\n}\n"],"mappings":";;;;;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AAAmC,IAOtBC,gCAAgC,GAAAC,OAAA,CAAAD,gCAAA;EAKzC,SAAAA,iCAAYE,KAAwB,EAAEC,OAAuC,EAAEC,IAAY,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAN,gCAAA;IACzF,IAAI,CAACE,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,IAAI,GAAGA,IAAI;EACpB;EAAC,WAAAG,aAAA,CAAAD,OAAA,EAAAN,gCAAA;IAAAQ,GAAA;IAAAC,KAAA,EAED,eAAMC,OAAOA,CAACC,MAA8C,EAAE;MAC1D,IAAMC,KAAK,GAAG,MAAM,IAAI,CAACT,OAAO,CAACO,OAAO,CAAC;QAAEN,IAAI,EAAE,IAAI,CAACA,IAAI;QAAES,SAAS,EAAEF,MAAM,CAACE;MAAU,CAAC,CAAC;MAC1F,IAAI,CAACX,KAAK,CAACY,QAAQ,CAACF,KAAK,CAACG,GAAG,CAAC,UAAAC,IAAI;QAAA,OAAIC,cAAM,CAACC,MAAM,CAACF,IAAI,CAAC;MAAA,EAAC,CAAC;IAC/D;EAAC;AAAA","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import { LoadedCache } from "../cache";
2
+ import { IListFoldersByParentIdsRepository, ListFoldersByParentIdsRepositoryParams } from "./IListFoldersByParentIdsRepository";
3
+ export declare class ListFoldersByParentIdsRepositoryWithLoadedCache implements IListFoldersByParentIdsRepository {
4
+ private loadedCache;
5
+ private repository;
6
+ constructor(loadedCache: LoadedCache, repository: IListFoldersByParentIdsRepository);
7
+ execute(params: ListFoldersByParentIdsRepositoryParams): Promise<void>;
8
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ListFoldersByParentIdsRepositoryWithLoadedCache = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var ListFoldersByParentIdsRepositoryWithLoadedCache = exports.ListFoldersByParentIdsRepositoryWithLoadedCache = /*#__PURE__*/function () {
11
+ function ListFoldersByParentIdsRepositoryWithLoadedCache(loadedCache, repository) {
12
+ (0, _classCallCheck2.default)(this, ListFoldersByParentIdsRepositoryWithLoadedCache);
13
+ this.loadedCache = loadedCache;
14
+ this.repository = repository;
15
+ }
16
+ return (0, _createClass2.default)(ListFoldersByParentIdsRepositoryWithLoadedCache, [{
17
+ key: "execute",
18
+ value: async function execute(params) {
19
+ var _this = this;
20
+ if (this.loadedCache.count() === 0) {
21
+ await this.repository.execute(params);
22
+ this.loadedCache.addItems(params.parentIds);
23
+ return;
24
+ }
25
+ var missingParentIds = params.parentIds.filter(function (parentId) {
26
+ return !_this.loadedCache.getItems().includes(parentId);
27
+ });
28
+ if (missingParentIds.length === 0) {
29
+ return;
30
+ }
31
+ this.loadedCache.addItems(missingParentIds);
32
+ await this.repository.execute({
33
+ parentIds: missingParentIds
34
+ });
35
+ }
36
+ }]);
37
+ }();
38
+
39
+ //# sourceMappingURL=ListFoldersByParentIdsRepositoryWithLoadedCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ListFoldersByParentIdsRepositoryWithLoadedCache","exports","loadedCache","repository","_classCallCheck2","default","_createClass2","key","value","execute","params","_this","count","addItems","parentIds","missingParentIds","filter","parentId","getItems","includes","length"],"sources":["ListFoldersByParentIdsRepositoryWithLoadedCache.ts"],"sourcesContent":["import { LoadedCache } from \"../cache\";\nimport {\n IListFoldersByParentIdsRepository,\n ListFoldersByParentIdsRepositoryParams\n} from \"./IListFoldersByParentIdsRepository\";\n\nexport class ListFoldersByParentIdsRepositoryWithLoadedCache\n implements IListFoldersByParentIdsRepository\n{\n private loadedCache: LoadedCache;\n private repository: IListFoldersByParentIdsRepository;\n\n constructor(loadedCache: LoadedCache, repository: IListFoldersByParentIdsRepository) {\n this.loadedCache = loadedCache;\n this.repository = repository;\n }\n\n async execute(params: ListFoldersByParentIdsRepositoryParams) {\n if (this.loadedCache.count() === 0) {\n await this.repository.execute(params);\n this.loadedCache.addItems(params.parentIds);\n return;\n }\n\n const missingParentIds = params.parentIds.filter(\n parentId => !this.loadedCache.getItems().includes(parentId)\n );\n\n if (missingParentIds.length === 0) {\n return;\n }\n\n this.loadedCache.addItems(missingParentIds);\n\n await this.repository.execute({\n parentIds: missingParentIds\n });\n }\n}\n"],"mappings":";;;;;;;;;IAMaA,+CAA+C,GAAAC,OAAA,CAAAD,+CAAA;EAMxD,SAAAA,gDAAYE,WAAwB,EAAEC,UAA6C,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAL,+CAAA;IACjF,IAAI,CAACE,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACC,UAAU,GAAGA,UAAU;EAChC;EAAC,WAAAG,aAAA,CAAAD,OAAA,EAAAL,+CAAA;IAAAO,GAAA;IAAAC,KAAA,EAED,eAAMC,OAAOA,CAACC,MAA8C,EAAE;MAAA,IAAAC,KAAA;MAC1D,IAAI,IAAI,CAACT,WAAW,CAACU,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE;QAChC,MAAM,IAAI,CAACT,UAAU,CAACM,OAAO,CAACC,MAAM,CAAC;QACrC,IAAI,CAACR,WAAW,CAACW,QAAQ,CAACH,MAAM,CAACI,SAAS,CAAC;QAC3C;MACJ;MAEA,IAAMC,gBAAgB,GAAGL,MAAM,CAACI,SAAS,CAACE,MAAM,CAC5C,UAAAC,QAAQ;QAAA,OAAI,CAACN,KAAI,CAACT,WAAW,CAACgB,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAACF,QAAQ,CAAC;MAAA,CAC/D,CAAC;MAED,IAAIF,gBAAgB,CAACK,MAAM,KAAK,CAAC,EAAE;QAC/B;MACJ;MAEA,IAAI,CAAClB,WAAW,CAACW,QAAQ,CAACE,gBAAgB,CAAC;MAE3C,MAAM,IAAI,CAACZ,UAAU,CAACM,OAAO,CAAC;QAC1BK,SAAS,EAAEC;MACf,CAAC,CAAC;IACN;EAAC;AAAA","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import { IListFoldersByParentIdsRepository } from "./IListFoldersByParentIdsRepository";
2
+ import { IListFoldersByParentIdsUseCase, ListFoldersByParentIdsUseCaseParams } from "./IListFoldersByParentIdsUseCase";
3
+ export declare class ListFoldersByParentIdsUseCase implements IListFoldersByParentIdsUseCase {
4
+ private repository;
5
+ constructor(repository: IListFoldersByParentIdsRepository);
6
+ execute(params: ListFoldersByParentIdsUseCaseParams): Promise<void>;
7
+ private getParentIds;
8
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ListFoldersByParentIdsUseCase = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _constants = require("../../../constants");
11
+ var ListFoldersByParentIdsUseCase = exports.ListFoldersByParentIdsUseCase = /*#__PURE__*/function () {
12
+ function ListFoldersByParentIdsUseCase(repository) {
13
+ (0, _classCallCheck2.default)(this, ListFoldersByParentIdsUseCase);
14
+ this.repository = repository;
15
+ }
16
+ return (0, _createClass2.default)(ListFoldersByParentIdsUseCase, [{
17
+ key: "execute",
18
+ value: async function execute(params) {
19
+ await this.repository.execute({
20
+ parentIds: this.getParentIds(params.parentIds)
21
+ });
22
+ }
23
+ }, {
24
+ key: "getParentIds",
25
+ value: function getParentIds(parentIds) {
26
+ if (!parentIds) {
27
+ return [_constants.ROOT_FOLDER];
28
+ }
29
+ return parentIds;
30
+ }
31
+ }]);
32
+ }();
33
+
34
+ //# sourceMappingURL=ListFoldersByParentIdsUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_constants","require","ListFoldersByParentIdsUseCase","exports","repository","_classCallCheck2","default","_createClass2","key","value","execute","params","parentIds","getParentIds","ROOT_FOLDER"],"sources":["ListFoldersByParentIdsUseCase.ts"],"sourcesContent":["import { IListFoldersByParentIdsRepository } from \"./IListFoldersByParentIdsRepository\";\nimport {\n IListFoldersByParentIdsUseCase,\n ListFoldersByParentIdsUseCaseParams\n} from \"./IListFoldersByParentIdsUseCase\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\nexport class ListFoldersByParentIdsUseCase implements IListFoldersByParentIdsUseCase {\n private repository: IListFoldersByParentIdsRepository;\n\n constructor(repository: IListFoldersByParentIdsRepository) {\n this.repository = repository;\n }\n\n async execute(params: ListFoldersByParentIdsUseCaseParams) {\n await this.repository.execute({\n parentIds: this.getParentIds(params.parentIds)\n });\n }\n\n private getParentIds(parentIds?: string[]) {\n if (!parentIds) {\n return [ROOT_FOLDER];\n }\n\n return parentIds;\n }\n}\n"],"mappings":";;;;;;;;;AAKA,IAAAA,UAAA,GAAAC,OAAA;AAA0C,IAE7BC,6BAA6B,GAAAC,OAAA,CAAAD,6BAAA;EAGtC,SAAAA,8BAAYE,UAA6C,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAJ,6BAAA;IACvD,IAAI,CAACE,UAAU,GAAGA,UAAU;EAChC;EAAC,WAAAG,aAAA,CAAAD,OAAA,EAAAJ,6BAAA;IAAAM,GAAA;IAAAC,KAAA,EAED,eAAMC,OAAOA,CAACC,MAA2C,EAAE;MACvD,MAAM,IAAI,CAACP,UAAU,CAACM,OAAO,CAAC;QAC1BE,SAAS,EAAE,IAAI,CAACC,YAAY,CAACF,MAAM,CAACC,SAAS;MACjD,CAAC,CAAC;IACN;EAAC;IAAAJ,GAAA;IAAAC,KAAA,EAED,SAAQI,YAAYA,CAACD,SAAoB,EAAE;MACvC,IAAI,CAACA,SAAS,EAAE;QACZ,OAAO,CAACE,sBAAW,CAAC;MACxB;MAEA,OAAOF,SAAS;IACpB;EAAC;AAAA","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import { ILoadingRepository } from "@webiny/app-utils";
2
+ import { IListFoldersByParentIdsUseCase, ListFoldersByParentIdsUseCaseParams } from "./IListFoldersByParentIdsUseCase";
3
+ import { LoadedCache } from "../..";
4
+ export declare class ListFoldersByParentIdsUseCaseWithLoading implements IListFoldersByParentIdsUseCase {
5
+ private loadingRepository;
6
+ private loadedCache;
7
+ private useCase;
8
+ constructor(loadingRepository: ILoadingRepository, loadedCache: LoadedCache, useCase: IListFoldersByParentIdsUseCase);
9
+ execute(params: ListFoldersByParentIdsUseCaseParams): Promise<void>;
10
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ListFoldersByParentIdsUseCaseWithLoading = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _types = require("../../../types");
11
+ var ListFoldersByParentIdsUseCaseWithLoading = exports.ListFoldersByParentIdsUseCaseWithLoading = /*#__PURE__*/function () {
12
+ function ListFoldersByParentIdsUseCaseWithLoading(loadingRepository, loadedCache, useCase) {
13
+ (0, _classCallCheck2.default)(this, ListFoldersByParentIdsUseCaseWithLoading);
14
+ this.loadingRepository = loadingRepository;
15
+ this.loadedCache = loadedCache;
16
+ this.useCase = useCase;
17
+ }
18
+ return (0, _createClass2.default)(ListFoldersByParentIdsUseCaseWithLoading, [{
19
+ key: "execute",
20
+ value: async function execute(params) {
21
+ var _this = this;
22
+ var action = _types.LoadingActionsEnum.init;
23
+ if (params.parentIds?.length) {
24
+ action = params.parentIds.filter(function (parentId) {
25
+ return !_this.loadedCache.getItems().includes(parentId);
26
+ }).join(":");
27
+ }
28
+ if (action) {
29
+ await this.loadingRepository.runCallBack(this.useCase.execute(params), action);
30
+ } else {
31
+ await this.useCase.execute(params);
32
+ }
33
+ }
34
+ }]);
35
+ }();
36
+
37
+ //# sourceMappingURL=ListFoldersByParentIdsUseCaseWithLoading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_types","require","ListFoldersByParentIdsUseCaseWithLoading","exports","loadingRepository","loadedCache","useCase","_classCallCheck2","default","_createClass2","key","value","execute","params","_this","action","LoadingActionsEnum","init","parentIds","length","filter","parentId","getItems","includes","join","runCallBack"],"sources":["ListFoldersByParentIdsUseCaseWithLoading.ts"],"sourcesContent":["import { ILoadingRepository } from \"@webiny/app-utils\";\nimport {\n IListFoldersByParentIdsUseCase,\n ListFoldersByParentIdsUseCaseParams\n} from \"./IListFoldersByParentIdsUseCase\";\nimport { LoadedCache } from \"~/features\";\nimport { LoadingActionsEnum } from \"~/types\";\n\nexport class ListFoldersByParentIdsUseCaseWithLoading implements IListFoldersByParentIdsUseCase {\n private loadingRepository: ILoadingRepository;\n private loadedCache: LoadedCache;\n private useCase: IListFoldersByParentIdsUseCase;\n\n constructor(\n loadingRepository: ILoadingRepository,\n loadedCache: LoadedCache,\n useCase: IListFoldersByParentIdsUseCase\n ) {\n this.loadingRepository = loadingRepository;\n this.loadedCache = loadedCache;\n this.useCase = useCase;\n }\n\n async execute(params: ListFoldersByParentIdsUseCaseParams) {\n let action: string = LoadingActionsEnum.init;\n\n if (params.parentIds?.length) {\n action = params.parentIds\n .filter(parentId => !this.loadedCache.getItems().includes(parentId))\n .join(\":\");\n }\n\n if (action) {\n await this.loadingRepository.runCallBack(this.useCase.execute(params), action);\n } else {\n await this.useCase.execute(params);\n }\n }\n}\n"],"mappings":";;;;;;;;;AAMA,IAAAA,MAAA,GAAAC,OAAA;AAA6C,IAEhCC,wCAAwC,GAAAC,OAAA,CAAAD,wCAAA;EAKjD,SAAAA,yCACIE,iBAAqC,EACrCC,WAAwB,EACxBC,OAAuC,EACzC;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAN,wCAAA;IACE,IAAI,CAACE,iBAAiB,GAAGA,iBAAiB;IAC1C,IAAI,CAACC,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACC,OAAO,GAAGA,OAAO;EAC1B;EAAC,WAAAG,aAAA,CAAAD,OAAA,EAAAN,wCAAA;IAAAQ,GAAA;IAAAC,KAAA,EAED,eAAMC,OAAOA,CAACC,MAA2C,EAAE;MAAA,IAAAC,KAAA;MACvD,IAAIC,MAAc,GAAGC,yBAAkB,CAACC,IAAI;MAE5C,IAAIJ,MAAM,CAACK,SAAS,EAAEC,MAAM,EAAE;QAC1BJ,MAAM,GAAGF,MAAM,CAACK,SAAS,CACpBE,MAAM,CAAC,UAAAC,QAAQ;UAAA,OAAI,CAACP,KAAI,CAACT,WAAW,CAACiB,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAACF,QAAQ,CAAC;QAAA,EAAC,CACnEG,IAAI,CAAC,GAAG,CAAC;MAClB;MAEA,IAAIT,MAAM,EAAE;QACR,MAAM,IAAI,CAACX,iBAAiB,CAACqB,WAAW,CAAC,IAAI,CAACnB,OAAO,CAACM,OAAO,CAACC,MAAM,CAAC,EAAEE,MAAM,CAAC;MAClF,CAAC,MAAM;QACH,MAAM,IAAI,CAACT,OAAO,CAACM,OAAO,CAACC,MAAM,CAAC;MACtC;IACJ;EAAC;AAAA","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export * from "./useListFoldersByParentIds";