@webiny/app-aco 5.43.0-beta.0 → 5.43.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.js +39 -25
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.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 +11 -11
- 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,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.FolderDtoMapper = 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 FolderDtoMapper = exports.FolderDtoMapper = /*#__PURE__*/function () {
|
|
12
|
+
function FolderDtoMapper() {
|
|
13
|
+
(0, _classCallCheck2.default)(this, FolderDtoMapper);
|
|
14
|
+
}
|
|
15
|
+
return (0, _createClass2.default)(FolderDtoMapper, null, [{
|
|
16
|
+
key: "toDTO",
|
|
17
|
+
value: function toDTO(folder) {
|
|
18
|
+
return {
|
|
19
|
+
id: folder.id,
|
|
20
|
+
title: folder.title,
|
|
21
|
+
canManageContent: folder.canManageContent ?? false,
|
|
22
|
+
canManagePermissions: folder.canManagePermissions ?? false,
|
|
23
|
+
canManageStructure: folder.canManageStructure ?? false,
|
|
24
|
+
createdBy: this.createIdentity(folder.createdBy),
|
|
25
|
+
createdOn: folder.createdOn ?? "",
|
|
26
|
+
hasNonInheritedPermissions: folder.hasNonInheritedPermissions ?? false,
|
|
27
|
+
modifiedBy: this.createIdentity(folder.modifiedBy),
|
|
28
|
+
modifiedOn: folder.modifiedOn ?? "",
|
|
29
|
+
parentId: folder.parentId ?? _constants.ROOT_FOLDER,
|
|
30
|
+
permissions: folder.permissions ?? [],
|
|
31
|
+
savedBy: this.createIdentity(folder.savedBy),
|
|
32
|
+
savedOn: folder.savedOn ?? "",
|
|
33
|
+
slug: folder.slug,
|
|
34
|
+
type: folder.type,
|
|
35
|
+
extensions: folder.extensions ?? {}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}, {
|
|
39
|
+
key: "createIdentity",
|
|
40
|
+
value: function createIdentity(identity) {
|
|
41
|
+
return {
|
|
42
|
+
id: identity?.id || "",
|
|
43
|
+
displayName: identity?.displayName || "",
|
|
44
|
+
type: identity?.type || ""
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}]);
|
|
48
|
+
}();
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=FolderDto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_constants","require","FolderDtoMapper","exports","_classCallCheck2","default","_createClass2","key","value","toDTO","folder","id","title","canManageContent","canManagePermissions","canManageStructure","createdBy","createIdentity","createdOn","hasNonInheritedPermissions","modifiedBy","modifiedOn","parentId","ROOT_FOLDER","permissions","savedBy","savedOn","slug","type","extensions","identity","displayName"],"sources":["FolderDto.ts"],"sourcesContent":["import { CmsIdentity, FolderPermission } from \"~/types\";\nimport { Folder } from \"../Folder\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\nexport interface FolderDto {\n id: string;\n title: string;\n slug: string;\n type: string;\n parentId: string;\n permissions: FolderPermission[];\n hasNonInheritedPermissions: boolean;\n canManagePermissions: boolean;\n canManageStructure: boolean;\n canManageContent: boolean;\n createdBy: CmsIdentity;\n createdOn: string;\n savedBy: CmsIdentity;\n savedOn: string;\n modifiedBy: CmsIdentity;\n modifiedOn: string;\n extensions: Record<string, any>;\n}\n\nexport class FolderDtoMapper {\n static toDTO(folder: Folder): FolderDto {\n return {\n id: folder.id,\n title: folder.title,\n canManageContent: folder.canManageContent ?? false,\n canManagePermissions: folder.canManagePermissions ?? false,\n canManageStructure: folder.canManageStructure ?? false,\n createdBy: this.createIdentity(folder.createdBy),\n createdOn: folder.createdOn ?? \"\",\n hasNonInheritedPermissions: folder.hasNonInheritedPermissions ?? false,\n modifiedBy: this.createIdentity(folder.modifiedBy),\n modifiedOn: folder.modifiedOn ?? \"\",\n parentId: folder.parentId ?? ROOT_FOLDER,\n permissions: folder.permissions ?? [],\n savedBy: this.createIdentity(folder.savedBy),\n savedOn: folder.savedOn ?? \"\",\n slug: folder.slug,\n type: folder.type,\n extensions: folder.extensions ?? {}\n };\n }\n\n private static createIdentity(identity?: CmsIdentity | null): CmsIdentity {\n return {\n id: identity?.id || \"\",\n displayName: identity?.displayName || \"\",\n type: identity?.type || \"\"\n };\n }\n}\n"],"mappings":";;;;;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AAA0C,IAsB7BC,eAAe,GAAAC,OAAA,CAAAD,eAAA;EAAA,SAAAA,gBAAA;IAAA,IAAAE,gBAAA,CAAAC,OAAA,QAAAH,eAAA;EAAA;EAAA,WAAAI,aAAA,CAAAD,OAAA,EAAAH,eAAA;IAAAK,GAAA;IAAAC,KAAA,EACxB,SAAOC,KAAKA,CAACC,MAAc,EAAa;MACpC,OAAO;QACHC,EAAE,EAAED,MAAM,CAACC,EAAE;QACbC,KAAK,EAAEF,MAAM,CAACE,KAAK;QACnBC,gBAAgB,EAAEH,MAAM,CAACG,gBAAgB,IAAI,KAAK;QAClDC,oBAAoB,EAAEJ,MAAM,CAACI,oBAAoB,IAAI,KAAK;QAC1DC,kBAAkB,EAAEL,MAAM,CAACK,kBAAkB,IAAI,KAAK;QACtDC,SAAS,EAAE,IAAI,CAACC,cAAc,CAACP,MAAM,CAACM,SAAS,CAAC;QAChDE,SAAS,EAAER,MAAM,CAACQ,SAAS,IAAI,EAAE;QACjCC,0BAA0B,EAAET,MAAM,CAACS,0BAA0B,IAAI,KAAK;QACtEC,UAAU,EAAE,IAAI,CAACH,cAAc,CAACP,MAAM,CAACU,UAAU,CAAC;QAClDC,UAAU,EAAEX,MAAM,CAACW,UAAU,IAAI,EAAE;QACnCC,QAAQ,EAAEZ,MAAM,CAACY,QAAQ,IAAIC,sBAAW;QACxCC,WAAW,EAAEd,MAAM,CAACc,WAAW,IAAI,EAAE;QACrCC,OAAO,EAAE,IAAI,CAACR,cAAc,CAACP,MAAM,CAACe,OAAO,CAAC;QAC5CC,OAAO,EAAEhB,MAAM,CAACgB,OAAO,IAAI,EAAE;QAC7BC,IAAI,EAAEjB,MAAM,CAACiB,IAAI;QACjBC,IAAI,EAAElB,MAAM,CAACkB,IAAI;QACjBC,UAAU,EAAEnB,MAAM,CAACmB,UAAU,IAAI,CAAC;MACtC,CAAC;IACL;EAAC;IAAAtB,GAAA;IAAAC,KAAA,EAED,SAAeS,cAAcA,CAACa,QAA6B,EAAe;MACtE,OAAO;QACHnB,EAAE,EAAEmB,QAAQ,EAAEnB,EAAE,IAAI,EAAE;QACtBoB,WAAW,EAAED,QAAQ,EAAEC,WAAW,IAAI,EAAE;QACxCH,IAAI,EAAEE,QAAQ,EAAEF,IAAI,IAAI;MAC5B,CAAC;IACL;EAAC;AAAA","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { CmsIdentity, FolderPermission } from "../../../types";
|
|
2
|
+
export interface FolderGqlDto {
|
|
3
|
+
id: string;
|
|
4
|
+
title: string;
|
|
5
|
+
slug: string;
|
|
6
|
+
permissions: FolderPermission[];
|
|
7
|
+
hasNonInheritedPermissions: boolean;
|
|
8
|
+
canManagePermissions: boolean;
|
|
9
|
+
canManageStructure: boolean;
|
|
10
|
+
canManageContent: boolean;
|
|
11
|
+
type: string;
|
|
12
|
+
parentId: string | null;
|
|
13
|
+
createdBy: CmsIdentity;
|
|
14
|
+
createdOn: string;
|
|
15
|
+
savedBy: CmsIdentity;
|
|
16
|
+
savedOn: string;
|
|
17
|
+
modifiedBy: CmsIdentity | null;
|
|
18
|
+
modifiedOn: string | null;
|
|
19
|
+
extensions: Record<string, any>;
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["FolderGqlDto.ts"],"sourcesContent":["import { CmsIdentity, FolderPermission } from \"~/types\";\n\nexport interface FolderGqlDto {\n id: string;\n title: string;\n slug: string;\n permissions: FolderPermission[];\n hasNonInheritedPermissions: boolean;\n canManagePermissions: boolean;\n canManageStructure: boolean;\n canManageContent: boolean;\n type: string;\n parentId: string | null;\n createdBy: CmsIdentity;\n createdOn: string;\n savedBy: CmsIdentity;\n savedOn: string;\n modifiedBy: CmsIdentity | null;\n modifiedOn: string | null;\n extensions: Record<string, any>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FolderGqlDto } from "./FolderGqlDto";
|
|
2
|
+
export interface ListFoldersByParentIdsGatewayParams {
|
|
3
|
+
type: string;
|
|
4
|
+
parentIds: string[];
|
|
5
|
+
}
|
|
6
|
+
export interface IListFoldersByParentIdsGateway {
|
|
7
|
+
execute: (params: ListFoldersByParentIdsGatewayParams) => Promise<FolderGqlDto[]>;
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["IListFoldersByParentIdsGateway.ts"],"sourcesContent":["import { FolderGqlDto } from \"./FolderGqlDto\";\n\nexport interface ListFoldersByParentIdsGatewayParams {\n type: string;\n parentIds: string[];\n}\n\nexport interface IListFoldersByParentIdsGateway {\n execute: (params: ListFoldersByParentIdsGatewayParams) => Promise<FolderGqlDto[]>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["IListFoldersByParentIdsRepository.ts"],"sourcesContent":["export interface ListFoldersByParentIdsRepositoryParams {\n parentIds: string[];\n}\n\nexport interface IListFoldersByParentIdsRepository {\n execute: (params: ListFoldersByParentIdsRepositoryParams) => Promise<void>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["IListFoldersByParentIdsUseCase.ts"],"sourcesContent":["export interface ListFoldersByParentIdsUseCaseParams {\n parentIds?: string[];\n}\n\nexport interface IListFoldersByParentIdsUseCase {\n execute: (params: ListFoldersByParentIdsUseCaseParams) => Promise<void>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { LoadingRepository } from "@webiny/app-utils";
|
|
2
|
+
import { IListFoldersByParentIdsGateway } from "./IListFoldersByParentIdsGateway";
|
|
3
|
+
import { IListFoldersByParentIdsUseCase } from "./IListFoldersByParentIdsUseCase";
|
|
4
|
+
import { ListCache } from "../cache";
|
|
5
|
+
import { Folder } from "../Folder";
|
|
6
|
+
interface IListFoldersByParentIdsInstance {
|
|
7
|
+
useCase: IListFoldersByParentIdsUseCase;
|
|
8
|
+
folders: ListCache<Folder>;
|
|
9
|
+
loading: LoadingRepository;
|
|
10
|
+
}
|
|
11
|
+
export declare class ListFoldersByParentIds {
|
|
12
|
+
static getInstance(type: string, gateway: IListFoldersByParentIdsGateway): IListFoldersByParentIdsInstance;
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -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.ListFoldersByParentIds = void 0;
|
|
8
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
+
var _appUtils = require("@webiny/app-utils");
|
|
11
|
+
var _ListFoldersByParentIdsRepository = require("./ListFoldersByParentIdsRepository");
|
|
12
|
+
var _ListFoldersByParentIdsRepositoryWithLoadedCache = require("./ListFoldersByParentIdsRepositoryWithLoadedCache");
|
|
13
|
+
var _ListFoldersByParentIdsUseCase = require("./ListFoldersByParentIdsUseCase");
|
|
14
|
+
var _cache = require("../cache");
|
|
15
|
+
var _ListFoldersByParentIdsUseCaseWithLoading = require("./ListFoldersByParentIdsUseCaseWithLoading");
|
|
16
|
+
var ListFoldersByParentIds = exports.ListFoldersByParentIds = /*#__PURE__*/function () {
|
|
17
|
+
function ListFoldersByParentIds() {
|
|
18
|
+
(0, _classCallCheck2.default)(this, ListFoldersByParentIds);
|
|
19
|
+
}
|
|
20
|
+
return (0, _createClass2.default)(ListFoldersByParentIds, null, [{
|
|
21
|
+
key: "getInstance",
|
|
22
|
+
value: function getInstance(type, gateway) {
|
|
23
|
+
var foldersCache = _cache.folderCacheFactory.getCache(type);
|
|
24
|
+
var loadedCache = _cache.loadedFolderCacheFactory.getCache(type);
|
|
25
|
+
var loadingRepository = _appUtils.loadingRepositoryFactory.getRepository(type);
|
|
26
|
+
var repository = new _ListFoldersByParentIdsRepository.ListFoldersByParentIdsRepository(foldersCache, gateway, type);
|
|
27
|
+
var repositoryWithLoadedCache = new _ListFoldersByParentIdsRepositoryWithLoadedCache.ListFoldersByParentIdsRepositoryWithLoadedCache(loadedCache, repository);
|
|
28
|
+
var useCase = new _ListFoldersByParentIdsUseCase.ListFoldersByParentIdsUseCase(repositoryWithLoadedCache);
|
|
29
|
+
var useCaseWithLoading = new _ListFoldersByParentIdsUseCaseWithLoading.ListFoldersByParentIdsUseCaseWithLoading(loadingRepository, loadedCache, useCase);
|
|
30
|
+
return {
|
|
31
|
+
useCase: useCaseWithLoading,
|
|
32
|
+
folders: foldersCache,
|
|
33
|
+
loading: loadingRepository
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}]);
|
|
37
|
+
}();
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=ListFoldersByParentIds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_appUtils","require","_ListFoldersByParentIdsRepository","_ListFoldersByParentIdsRepositoryWithLoadedCache","_ListFoldersByParentIdsUseCase","_cache","_ListFoldersByParentIdsUseCaseWithLoading","ListFoldersByParentIds","exports","_classCallCheck2","default","_createClass2","key","value","getInstance","type","gateway","foldersCache","folderCacheFactory","getCache","loadedCache","loadedFolderCacheFactory","loadingRepository","loadingRepositoryFactory","getRepository","repository","ListFoldersByParentIdsRepository","repositoryWithLoadedCache","ListFoldersByParentIdsRepositoryWithLoadedCache","useCase","ListFoldersByParentIdsUseCase","useCaseWithLoading","ListFoldersByParentIdsUseCaseWithLoading","folders","loading"],"sources":["ListFoldersByParentIds.ts"],"sourcesContent":["import { LoadingRepository, loadingRepositoryFactory } from \"@webiny/app-utils\";\nimport { IListFoldersByParentIdsGateway } from \"./IListFoldersByParentIdsGateway\";\nimport { IListFoldersByParentIdsUseCase } from \"./IListFoldersByParentIdsUseCase\";\nimport { ListFoldersByParentIdsRepository } from \"./ListFoldersByParentIdsRepository\";\nimport { ListFoldersByParentIdsRepositoryWithLoadedCache } from \"./ListFoldersByParentIdsRepositoryWithLoadedCache\";\nimport { ListFoldersByParentIdsUseCase } from \"./ListFoldersByParentIdsUseCase\";\nimport { folderCacheFactory, ListCache, loadedFolderCacheFactory } from \"../cache\";\nimport { Folder } from \"../Folder\";\nimport { ListFoldersByParentIdsUseCaseWithLoading } from \"~/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCaseWithLoading\";\n\ninterface IListFoldersByParentIdsInstance {\n useCase: IListFoldersByParentIdsUseCase;\n folders: ListCache<Folder>;\n loading: LoadingRepository;\n}\n\nexport class ListFoldersByParentIds {\n public static getInstance(\n type: string,\n gateway: IListFoldersByParentIdsGateway\n ): IListFoldersByParentIdsInstance {\n const foldersCache = folderCacheFactory.getCache(type);\n const loadedCache = loadedFolderCacheFactory.getCache(type);\n const loadingRepository = loadingRepositoryFactory.getRepository(type);\n const repository = new ListFoldersByParentIdsRepository(foldersCache, gateway, type);\n const repositoryWithLoadedCache = new ListFoldersByParentIdsRepositoryWithLoadedCache(\n loadedCache,\n repository\n );\n const useCase = new ListFoldersByParentIdsUseCase(repositoryWithLoadedCache);\n const useCaseWithLoading = new ListFoldersByParentIdsUseCaseWithLoading(\n loadingRepository,\n loadedCache,\n useCase\n );\n\n return {\n useCase: useCaseWithLoading,\n folders: foldersCache,\n loading: loadingRepository\n };\n }\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAGA,IAAAC,iCAAA,GAAAD,OAAA;AACA,IAAAE,gDAAA,GAAAF,OAAA;AACA,IAAAG,8BAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAEA,IAAAK,yCAAA,GAAAL,OAAA;AAA8I,IAQjIM,sBAAsB,GAAAC,OAAA,CAAAD,sBAAA;EAAA,SAAAA,uBAAA;IAAA,IAAAE,gBAAA,CAAAC,OAAA,QAAAH,sBAAA;EAAA;EAAA,WAAAI,aAAA,CAAAD,OAAA,EAAAH,sBAAA;IAAAK,GAAA;IAAAC,KAAA,EAC/B,SAAcC,WAAWA,CACrBC,IAAY,EACZC,OAAuC,EACR;MAC/B,IAAMC,YAAY,GAAGC,yBAAkB,CAACC,QAAQ,CAACJ,IAAI,CAAC;MACtD,IAAMK,WAAW,GAAGC,+BAAwB,CAACF,QAAQ,CAACJ,IAAI,CAAC;MAC3D,IAAMO,iBAAiB,GAAGC,kCAAwB,CAACC,aAAa,CAACT,IAAI,CAAC;MACtE,IAAMU,UAAU,GAAG,IAAIC,kEAAgC,CAACT,YAAY,EAAED,OAAO,EAAED,IAAI,CAAC;MACpF,IAAMY,yBAAyB,GAAG,IAAIC,gGAA+C,CACjFR,WAAW,EACXK,UACJ,CAAC;MACD,IAAMI,OAAO,GAAG,IAAIC,4DAA6B,CAACH,yBAAyB,CAAC;MAC5E,IAAMI,kBAAkB,GAAG,IAAIC,kFAAwC,CACnEV,iBAAiB,EACjBF,WAAW,EACXS,OACJ,CAAC;MAED,OAAO;QACHA,OAAO,EAAEE,kBAAkB;QAC3BE,OAAO,EAAEhB,YAAY;QACrBiB,OAAO,EAAEZ;MACb,CAAC;IACL;EAAC;AAAA","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -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
|