@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.
- package/components/FolderTree/List/index.js +34 -27
- package/components/FolderTree/List/index.js.map +1 -1
- package/components/FolderTree/Node/index.d.ts +3 -1
- package/components/FolderTree/Node/index.js +46 -17
- package/components/FolderTree/Node/index.js.map +1 -1
- package/components/FolderTree/Node/styled.d.ts +5 -0
- package/components/FolderTree/Node/styled.js +38 -20
- package/components/FolderTree/Node/styled.js.map +1 -1
- package/components/FolderTree/index.js +11 -15
- package/components/FolderTree/index.js.map +1 -1
- package/contexts/acoList.js +14 -11
- package/contexts/acoList.js.map +1 -1
- package/contexts/navigateFolder.d.ts +1 -1
- package/contexts/navigateFolder.js +1 -1
- package/contexts/navigateFolder.js.map +1 -1
- package/features/folders/cache/ListCache.js +2 -1
- package/features/folders/cache/ListCache.js.map +1 -1
- package/features/folders/cache/LoadedCache.d.ts +13 -0
- package/features/folders/cache/LoadedCache.js +59 -0
- package/features/folders/cache/LoadedCache.js.map +1 -0
- package/features/folders/cache/LoadedFoldersCacheFactory.d.ts +7 -0
- package/features/folders/cache/LoadedFoldersCacheFactory.js +35 -0
- package/features/folders/cache/LoadedFoldersCacheFactory.js.map +1 -0
- package/features/folders/cache/index.d.ts +2 -0
- package/features/folders/cache/index.js +22 -0
- package/features/folders/cache/index.js.map +1 -1
- package/features/folders/getFolderHierarchy/FolderDto.d.ts +25 -0
- package/features/folders/getFolderHierarchy/FolderDto.js +50 -0
- package/features/folders/getFolderHierarchy/FolderDto.js.map +1 -0
- package/features/folders/getFolderHierarchy/FolderGqlDto.d.ts +20 -0
- package/features/folders/getFolderHierarchy/FolderGqlDto.js +7 -0
- package/features/folders/getFolderHierarchy/FolderGqlDto.js.map +1 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchy.d.ts +14 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchy.js +37 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchy.js.map +1 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchy.test.d.ts +1 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchy.test.js +207 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchy.test.js.map +1 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyGqlGateway.d.ts +31 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyGqlGateway.js +82 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyGqlGateway.js.map +1 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyRepository.d.ts +12 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyRepository.js +48 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyRepository.js.map +1 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCase.d.ts +7 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCase.js +26 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCase.js.map +1 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCaseWithLoading.d.ts +8 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCaseWithLoading.js +25 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCaseWithLoading.js.map +1 -0
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyGateway.d.ts +12 -0
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyGateway.js +7 -0
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyGateway.js.map +1 -0
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyRepository.d.ts +6 -0
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyRepository.js +7 -0
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyRepository.js.map +1 -0
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyUseCase.d.ts +6 -0
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyUseCase.js +7 -0
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyUseCase.js.map +1 -0
- package/features/folders/getFolderHierarchy/index.d.ts +1 -0
- package/features/folders/getFolderHierarchy/index.js +18 -0
- package/features/folders/getFolderHierarchy/index.js.map +1 -0
- package/features/folders/getFolderHierarchy/useGetFolderHierarchy.d.ts +6 -0
- package/features/folders/getFolderHierarchy/useGetFolderHierarchy.js +65 -0
- package/features/folders/getFolderHierarchy/useGetFolderHierarchy.js.map +1 -0
- package/features/folders/index.d.ts +2 -0
- package/features/folders/index.js +22 -0
- package/features/folders/index.js.map +1 -1
- package/features/folders/listFolders/useListFolders.js +3 -8
- package/features/folders/listFolders/useListFolders.js.map +1 -1
- package/features/folders/listFoldersByParentIds/FolderDto.d.ts +25 -0
- package/features/folders/listFoldersByParentIds/FolderDto.js +50 -0
- package/features/folders/listFoldersByParentIds/FolderDto.js.map +1 -0
- package/features/folders/listFoldersByParentIds/FolderGqlDto.d.ts +20 -0
- package/features/folders/listFoldersByParentIds/FolderGqlDto.js +7 -0
- package/features/folders/listFoldersByParentIds/FolderGqlDto.js.map +1 -0
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsGateway.d.ts +8 -0
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsGateway.js +7 -0
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsGateway.js.map +1 -0
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsRepository.d.ts +6 -0
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsRepository.js +7 -0
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsRepository.js.map +1 -0
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsUseCase.d.ts +6 -0
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsUseCase.js +7 -0
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsUseCase.js.map +1 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.d.ts +14 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.js +39 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.js.map +1 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.d.ts +1 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.js +248 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.js.map +1 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.d.ts +26 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js +86 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js.map +1 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.d.ts +11 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.js +32 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.js.map +1 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepositoryWithLoadedCache.d.ts +8 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepositoryWithLoadedCache.js +39 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepositoryWithLoadedCache.js.map +1 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.d.ts +8 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.js +34 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.js.map +1 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCaseWithLoading.d.ts +10 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCaseWithLoading.js +37 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCaseWithLoading.js.map +1 -0
- package/features/folders/listFoldersByParentIds/index.d.ts +1 -0
- package/features/folders/listFoldersByParentIds/index.js +18 -0
- package/features/folders/listFoldersByParentIds/index.js.map +1 -0
- package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.d.ts +6 -0
- package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.js +65 -0
- package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.js.map +1 -0
- package/handlers.d.ts +1 -1
- package/package.json +17 -18
- package/types.d.ts +10 -10
- package/types.js +12 -11
- package/types.js.map +1 -1
- package/components/FolderTree/Empty/index.d.ts +0 -2
- package/components/FolderTree/Empty/index.js +0 -21
- package/components/FolderTree/Empty/index.js.map +0 -1
- package/components/FolderTree/Empty/styled.d.ts +0 -5
- package/components/FolderTree/Empty/styled.js +0 -25
- 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":[]}
|
package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepositoryWithLoadedCache.d.ts
ADDED
|
@@ -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
|
+
}
|
package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepositoryWithLoadedCache.js
ADDED
|
@@ -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
|
package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCaseWithLoading.js.map
ADDED
|
@@ -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";
|