@webiny/app-aco 5.43.0-beta.4 → 5.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/constants.d.ts +1 -1
  2. package/constants.js +11 -2
  3. package/constants.js.map +1 -1
  4. package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.js +15 -9
  5. package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.js.map +1 -1
  6. package/features/folders/Folder.d.ts +2 -0
  7. package/features/folders/Folder.js +2 -0
  8. package/features/folders/Folder.js.map +1 -1
  9. package/features/folders/createFolder/CreateFolderGqlGateway.d.ts +1 -1
  10. package/features/folders/createFolder/CreateFolderGqlGateway.js.map +1 -1
  11. package/features/folders/createFolder/FolderGqlDto.d.ts +1 -0
  12. package/features/folders/createFolder/FolderGqlDto.js.map +1 -1
  13. package/features/folders/getDescendantFolders/GetDescendantFoldersUseCase.d.ts +1 -1
  14. package/features/folders/getFolderHierarchy/FolderDto.d.ts +1 -0
  15. package/features/folders/getFolderHierarchy/FolderDto.js +1 -0
  16. package/features/folders/getFolderHierarchy/FolderDto.js.map +1 -1
  17. package/features/folders/getFolderHierarchy/FolderGqlDto.d.ts +1 -0
  18. package/features/folders/getFolderHierarchy/FolderGqlDto.js.map +1 -1
  19. package/features/folders/getFolderHierarchy/GetFolderHierarchyGqlGateway.js +1 -0
  20. package/features/folders/getFolderHierarchy/GetFolderHierarchyGqlGateway.js.map +1 -1
  21. package/features/folders/listFolders/FolderDto.d.ts +1 -0
  22. package/features/folders/listFolders/FolderDto.js +1 -0
  23. package/features/folders/listFolders/FolderDto.js.map +1 -1
  24. package/features/folders/listFolders/FolderGqlDto.d.ts +1 -0
  25. package/features/folders/listFolders/FolderGqlDto.js.map +1 -1
  26. package/features/folders/listFolders/ListFoldersCompressedGqlGateway.js +1 -0
  27. package/features/folders/listFolders/ListFoldersCompressedGqlGateway.js.map +1 -1
  28. package/features/folders/listFolders/ListFoldersGqlGateway.js +1 -0
  29. package/features/folders/listFolders/ListFoldersGqlGateway.js.map +1 -1
  30. package/features/folders/listFoldersByParentIds/FolderDto.d.ts +1 -0
  31. package/features/folders/listFoldersByParentIds/FolderDto.js +1 -0
  32. package/features/folders/listFoldersByParentIds/FolderDto.js.map +1 -1
  33. package/features/folders/listFoldersByParentIds/FolderGqlDto.d.ts +1 -0
  34. package/features/folders/listFoldersByParentIds/FolderGqlDto.js.map +1 -1
  35. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js +1 -0
  36. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js.map +1 -1
  37. package/features/folders/updateFolder/FolderGqlDto.d.ts +1 -0
  38. package/features/folders/updateFolder/FolderGqlDto.js.map +1 -1
  39. package/features/folders/updateFolder/UpdateFolder.js +5 -1
  40. package/features/folders/updateFolder/UpdateFolder.js.map +1 -1
  41. package/features/folders/updateFolder/UpdateFolder.test.js +308 -0
  42. package/features/folders/updateFolder/UpdateFolder.test.js.map +1 -1
  43. package/features/folders/updateFolder/UpdateFolderRepositoryWithPathChange.d.ts +11 -0
  44. package/features/folders/updateFolder/UpdateFolderRepositoryWithPathChange.js +107 -0
  45. package/features/folders/updateFolder/UpdateFolderRepositoryWithPathChange.js.map +1 -0
  46. package/features/folders/updateFolder/UpdateFolderRepositoryWithPermissionsChange.d.ts +12 -0
  47. package/features/folders/updateFolder/UpdateFolderRepositoryWithPermissionsChange.js +100 -0
  48. package/features/folders/updateFolder/UpdateFolderRepositoryWithPermissionsChange.js.map +1 -0
  49. package/package.json +17 -16
  50. package/types.d.ts +3 -6
  51. package/types.js +12 -0
  52. package/types.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_graphqlTag","_interopRequireDefault","require","_constants","_templateObject","LIST_FOLDERS","exports","FOLDER_FIELDS","gql","_taggedTemplateLiteral2","default","ListFoldersGqlGateway","client","modelFields","_classCallCheck2","_createClass2","key","value","execute","params","_await$this$client$qu","query","variables","_objectSpread2","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":["ListFoldersGqlGateway.ts"],"sourcesContent":["import ApolloClient from \"apollo-client\";\nimport gql from \"graphql-tag\";\nimport { IListFoldersGateway, ListFoldersGatewayParams } from \"./IListFoldersGateway\";\nimport { AcoError, FolderItem } from \"~/types\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\nexport interface ListFoldersResponse {\n aco: {\n listFolders: {\n data: FolderItem[] | null;\n error: AcoError | null;\n };\n };\n}\n\nexport interface ListFoldersQueryVariables {\n type: string;\n limit: number;\n sort?: Record<string, any>;\n after?: string | null;\n}\n\nexport const LIST_FOLDERS = (FOLDER_FIELDS: string) => gql`\n query ListFolders($type: String!, $limit: Int!) {\n aco {\n listFolders(where: { type: $type }, limit: $limit) {\n data ${FOLDER_FIELDS}\n error {\n code\n data\n message\n }\n }\n }\n }\n`;\n\nexport class ListFoldersGqlGateway implements IListFoldersGateway {\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(params: ListFoldersGatewayParams) {\n const { data: response } = await this.client.query<\n ListFoldersResponse,\n ListFoldersQueryVariables\n >({\n query: LIST_FOLDERS(this.modelFields),\n variables: {\n ...params,\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;AAGA,IAAAC,UAAA,GAAAD,OAAA;AAA0C,IAAAE,eAAA;AAkBnC,IAAMC,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG,SAAfA,YAAYA,CAAIE,aAAqB;EAAA,WAAKC,mBAAG,EAAAJ,eAAA,KAAAA,eAAA,OAAAK,uBAAA,CAAAC,OAAA,6UAInCH,aAAa;AAAA,CASnC;AAAC,IAEWI,qBAAqB,GAAAL,OAAA,CAAAK,qBAAA;EAI9B,SAAAA,sBAAYC,MAAyB,EAAEC,WAAmB,EAAE;IAAA,IAAAC,gBAAA,CAAAJ,OAAA,QAAAC,qBAAA;IACxD,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,WAAW,GAAGA,WAAW;EAClC;EAAC,WAAAE,aAAA,CAAAL,OAAA,EAAAC,qBAAA;IAAAK,GAAA;IAAAC,KAAA,EAED,eAAMC,OAAOA,CAACC,MAAgC,EAAE;MAC5C,IAAAC,qBAAA,GAA2B,MAAM,IAAI,CAACR,MAAM,CAACS,KAAK,CAGhD;UACEA,KAAK,EAAEhB,YAAY,CAAC,IAAI,CAACQ,WAAW,CAAC;UACrCS,SAAS,MAAAC,cAAA,CAAAb,OAAA,MAAAa,cAAA,CAAAb,OAAA,MACFS,MAAM;YACTK,KAAK,EAAE;UAAK,EACf;UACDC,WAAW,EAAE;QACjB,CAAC,CAAC;QAVYC,QAAQ,GAAAN,qBAAA,CAAdO,IAAI;MAYZ,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,CAAA1B,OAAA,EAAMiB,IAAI,IAAI,EAAE;IAChD;EAAC;IAAAX,GAAA;IAAAC,KAAA,EAED,SAAQiB,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":[]}
1
+ {"version":3,"names":["_graphqlTag","_interopRequireDefault","require","_constants","_templateObject","LIST_FOLDERS","exports","FOLDER_FIELDS","gql","_taggedTemplateLiteral2","default","ListFoldersGqlGateway","client","modelFields","_classCallCheck2","_createClass2","key","value","execute","params","_await$this$client$qu","query","variables","_objectSpread2","limit","fetchPolicy","response","data","Error","_response$aco$listFol","aco","listFolders","error","message","getRootFolder","concat","_toConsumableArray2","id","ROOT_FOLDER","title","permissions","parentId","path","slug","createdOn","createdBy","displayName","type","hasNonInheritedPermissions","canManagePermissions","canManageStructure","canManageContent","savedOn","savedBy","modifiedOn","modifiedBy","extensions"],"sources":["ListFoldersGqlGateway.ts"],"sourcesContent":["import ApolloClient from \"apollo-client\";\nimport gql from \"graphql-tag\";\nimport { IListFoldersGateway, ListFoldersGatewayParams } from \"./IListFoldersGateway\";\nimport { AcoError, FolderItem } from \"~/types\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\nexport interface ListFoldersResponse {\n aco: {\n listFolders: {\n data: FolderItem[] | null;\n error: AcoError | null;\n };\n };\n}\n\nexport interface ListFoldersQueryVariables {\n type: string;\n limit: number;\n sort?: Record<string, any>;\n after?: string | null;\n}\n\nexport const LIST_FOLDERS = (FOLDER_FIELDS: string) => gql`\n query ListFolders($type: String!, $limit: Int!) {\n aco {\n listFolders(where: { type: $type }, limit: $limit) {\n data ${FOLDER_FIELDS}\n error {\n code\n data\n message\n }\n }\n }\n }\n`;\n\nexport class ListFoldersGqlGateway implements IListFoldersGateway {\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(params: ListFoldersGatewayParams) {\n const { data: response } = await this.client.query<\n ListFoldersResponse,\n ListFoldersQueryVariables\n >({\n query: LIST_FOLDERS(this.modelFields),\n variables: {\n ...params,\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 path: ROOT_FOLDER,\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;AAGA,IAAAC,UAAA,GAAAD,OAAA;AAA0C,IAAAE,eAAA;AAkBnC,IAAMC,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG,SAAfA,YAAYA,CAAIE,aAAqB;EAAA,WAAKC,mBAAG,EAAAJ,eAAA,KAAAA,eAAA,OAAAK,uBAAA,CAAAC,OAAA,6UAInCH,aAAa;AAAA,CASnC;AAAC,IAEWI,qBAAqB,GAAAL,OAAA,CAAAK,qBAAA;EAI9B,SAAAA,sBAAYC,MAAyB,EAAEC,WAAmB,EAAE;IAAA,IAAAC,gBAAA,CAAAJ,OAAA,QAAAC,qBAAA;IACxD,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,WAAW,GAAGA,WAAW;EAClC;EAAC,WAAAE,aAAA,CAAAL,OAAA,EAAAC,qBAAA;IAAAK,GAAA;IAAAC,KAAA,EAED,eAAMC,OAAOA,CAACC,MAAgC,EAAE;MAC5C,IAAAC,qBAAA,GAA2B,MAAM,IAAI,CAACR,MAAM,CAACS,KAAK,CAGhD;UACEA,KAAK,EAAEhB,YAAY,CAAC,IAAI,CAACQ,WAAW,CAAC;UACrCS,SAAS,MAAAC,cAAA,CAAAb,OAAA,MAAAa,cAAA,CAAAb,OAAA,MACFS,MAAM;YACTK,KAAK,EAAE;UAAK,EACf;UACDC,WAAW,EAAE;QACjB,CAAC,CAAC;QAVYC,QAAQ,GAAAN,qBAAA,CAAdO,IAAI;MAYZ,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,CAAA1B,OAAA,EAAMiB,IAAI,IAAI,EAAE;IAChD;EAAC;IAAAX,GAAA;IAAAC,KAAA,EAED,SAAQiB,aAAaA,CAAA,EAAe;MAChC,OAAO;QACHG,EAAE,EAAEC,sBAAW;QACfC,KAAK,EAAE,MAAM;QACbC,WAAW,EAAE,EAAE;QACfC,QAAQ,EAAE,GAAG;QACbC,IAAI,EAAEJ,sBAAW;QACjBK,IAAI,EAAE,EAAE;QACRC,SAAS,EAAE,EAAE;QACbC,SAAS,EAAE;UACPR,EAAE,EAAE,EAAE;UACNS,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;UACLhB,EAAE,EAAE,EAAE;UACNS,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":[]}
@@ -6,6 +6,7 @@ export interface FolderDto {
6
6
  slug: string;
7
7
  type: string;
8
8
  parentId: string;
9
+ path: string;
9
10
  permissions: FolderPermission[];
10
11
  hasNonInheritedPermissions: boolean;
11
12
  canManagePermissions: boolean;
@@ -27,6 +27,7 @@ var FolderDtoMapper = exports.FolderDtoMapper = /*#__PURE__*/function () {
27
27
  modifiedBy: this.createIdentity(folder.modifiedBy),
28
28
  modifiedOn: folder.modifiedOn ?? "",
29
29
  parentId: folder.parentId ?? _constants.ROOT_FOLDER,
30
+ path: folder.path,
30
31
  permissions: folder.permissions ?? [],
31
32
  savedBy: this.createIdentity(folder.savedBy),
32
33
  savedOn: folder.savedOn ?? "",
@@ -1 +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":[]}
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","path","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 path: 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 path: folder.path,\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,IAuB7BC,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,IAAI,EAAEd,MAAM,CAACc,IAAI;QACjBC,WAAW,EAAEf,MAAM,CAACe,WAAW,IAAI,EAAE;QACrCC,OAAO,EAAE,IAAI,CAACT,cAAc,CAACP,MAAM,CAACgB,OAAO,CAAC;QAC5CC,OAAO,EAAEjB,MAAM,CAACiB,OAAO,IAAI,EAAE;QAC7BC,IAAI,EAAElB,MAAM,CAACkB,IAAI;QACjBC,IAAI,EAAEnB,MAAM,CAACmB,IAAI;QACjBC,UAAU,EAAEpB,MAAM,CAACoB,UAAU,IAAI,CAAC;MACtC,CAAC;IACL;EAAC;IAAAvB,GAAA;IAAAC,KAAA,EAED,SAAeS,cAAcA,CAACc,QAA6B,EAAe;MACtE,OAAO;QACHpB,EAAE,EAAEoB,QAAQ,EAAEpB,EAAE,IAAI,EAAE;QACtBqB,WAAW,EAAED,QAAQ,EAAEC,WAAW,IAAI,EAAE;QACxCH,IAAI,EAAEE,QAAQ,EAAEF,IAAI,IAAI;MAC5B,CAAC;IACL;EAAC;AAAA","ignoreList":[]}
@@ -10,6 +10,7 @@ export interface FolderGqlDto {
10
10
  canManageContent: boolean;
11
11
  type: string;
12
12
  parentId: string | null;
13
+ path: string;
13
14
  createdBy: CmsIdentity;
14
15
  createdOn: string;
15
16
  savedBy: CmsIdentity;
@@ -1 +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":[]}
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 path: string;\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":[]}
@@ -57,6 +57,7 @@ var ListFoldersByParentIdsGqlGateway = exports.ListFoldersByParentIdsGqlGateway
57
57
  title: "Home",
58
58
  permissions: [],
59
59
  parentId: "0",
60
+ path: _constants.ROOT_FOLDER,
60
61
  slug: "",
61
62
  createdOn: "",
62
63
  createdBy: {
@@ -1 +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":[]}
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","path","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 path: ROOT_FOLDER,\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,EAAEJ,sBAAW;QACjBK,IAAI,EAAE,EAAE;QACRC,SAAS,EAAE,EAAE;QACbC,SAAS,EAAE;UACPR,EAAE,EAAE,EAAE;UACNS,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;UACLhB,EAAE,EAAE,EAAE;UACNS,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":[]}
@@ -10,6 +10,7 @@ export interface FolderGqlDto {
10
10
  canManageContent: boolean;
11
11
  type: string;
12
12
  parentId: string | null;
13
+ path: string;
13
14
  createdBy: CmsIdentity;
14
15
  createdOn: string;
15
16
  savedBy: CmsIdentity;
@@ -1 +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":[]}
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 path: string;\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":[]}
@@ -9,10 +9,12 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
9
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
10
  var _appUtils = require("@webiny/app-utils");
11
11
  var _UpdateFolderRepository = require("./UpdateFolderRepository");
12
+ var _UpdateFolderRepositoryWithPermissionsChange = require("./UpdateFolderRepositoryWithPermissionsChange");
12
13
  var _UpdateFolderUseCase = require("./UpdateFolderUseCase");
13
14
  var _UpdateFolderUseCaseWithLoading = require("./UpdateFolderUseCaseWithLoading");
14
15
  var _UpdateFolderUseCaseWithoutInheritedPermissions = require("./UpdateFolderUseCaseWithoutInheritedPermissions");
15
16
  var _cache = require("../cache");
17
+ var _UpdateFolderRepositoryWithPathChange = require("./UpdateFolderRepositoryWithPathChange");
16
18
  var UpdateFolder = exports.UpdateFolder = /*#__PURE__*/function () {
17
19
  function UpdateFolder() {
18
20
  (0, _classCallCheck2.default)(this, UpdateFolder);
@@ -23,7 +25,9 @@ var UpdateFolder = exports.UpdateFolder = /*#__PURE__*/function () {
23
25
  var foldersCache = _cache.folderCacheFactory.getCache(type);
24
26
  var loadingRepository = _appUtils.loadingRepositoryFactory.getRepository(type);
25
27
  var repository = new _UpdateFolderRepository.UpdateFolderRepository(foldersCache, gateway);
26
- var useCase = new _UpdateFolderUseCase.UpdateFolderUseCase(repository);
28
+ var repositoryWithPathChange = new _UpdateFolderRepositoryWithPathChange.UpdateFolderRepositoryWithPathChange(foldersCache, repository);
29
+ var repositoryWithPermissionsChange = new _UpdateFolderRepositoryWithPermissionsChange.UpdateFolderRepositoryWithPermissionsChange(foldersCache, repositoryWithPathChange);
30
+ var useCase = new _UpdateFolderUseCase.UpdateFolderUseCase(repositoryWithPermissionsChange);
27
31
  var useCaseWithoutInheritedPermissions = new _UpdateFolderUseCaseWithoutInheritedPermissions.UpdateFolderUseCaseWithoutInheritedPermissions(useCase);
28
32
  return new _UpdateFolderUseCaseWithLoading.UpdateFolderUseCaseWithLoading(loadingRepository, useCaseWithoutInheritedPermissions);
29
33
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_appUtils","require","_UpdateFolderRepository","_UpdateFolderUseCase","_UpdateFolderUseCaseWithLoading","_UpdateFolderUseCaseWithoutInheritedPermissions","_cache","UpdateFolder","exports","_classCallCheck2","default","_createClass2","key","value","getInstance","type","gateway","foldersCache","folderCacheFactory","getCache","loadingRepository","loadingRepositoryFactory","getRepository","repository","UpdateFolderRepository","useCase","UpdateFolderUseCase","useCaseWithoutInheritedPermissions","UpdateFolderUseCaseWithoutInheritedPermissions","UpdateFolderUseCaseWithLoading"],"sources":["UpdateFolder.ts"],"sourcesContent":["import { loadingRepositoryFactory } from \"@webiny/app-utils\";\nimport { IUpdateFolderUseCase } from \"./IUpdateFolderUseCase\";\nimport { IUpdateFolderGateway } from \"./IUpdateFolderGateway\";\nimport { UpdateFolderRepository } from \"./UpdateFolderRepository\";\nimport { UpdateFolderUseCase } from \"./UpdateFolderUseCase\";\nimport { UpdateFolderUseCaseWithLoading } from \"./UpdateFolderUseCaseWithLoading\";\nimport { UpdateFolderUseCaseWithoutInheritedPermissions } from \"./UpdateFolderUseCaseWithoutInheritedPermissions\";\nimport { folderCacheFactory } from \"../cache\";\n\nexport class UpdateFolder {\n public static getInstance(type: string, gateway: IUpdateFolderGateway): IUpdateFolderUseCase {\n const foldersCache = folderCacheFactory.getCache(type);\n const loadingRepository = loadingRepositoryFactory.getRepository(type);\n const repository = new UpdateFolderRepository(foldersCache, gateway);\n const useCase = new UpdateFolderUseCase(repository);\n const useCaseWithoutInheritedPermissions =\n new UpdateFolderUseCaseWithoutInheritedPermissions(useCase);\n return new UpdateFolderUseCaseWithLoading(\n loadingRepository,\n useCaseWithoutInheritedPermissions\n );\n }\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAGA,IAAAC,uBAAA,GAAAD,OAAA;AACA,IAAAE,oBAAA,GAAAF,OAAA;AACA,IAAAG,+BAAA,GAAAH,OAAA;AACA,IAAAI,+CAAA,GAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAL,OAAA;AAA8C,IAEjCM,YAAY,GAAAC,OAAA,CAAAD,YAAA;EAAA,SAAAA,aAAA;IAAA,IAAAE,gBAAA,CAAAC,OAAA,QAAAH,YAAA;EAAA;EAAA,WAAAI,aAAA,CAAAD,OAAA,EAAAH,YAAA;IAAAK,GAAA;IAAAC,KAAA,EACrB,SAAcC,WAAWA,CAACC,IAAY,EAAEC,OAA6B,EAAwB;MACzF,IAAMC,YAAY,GAAGC,yBAAkB,CAACC,QAAQ,CAACJ,IAAI,CAAC;MACtD,IAAMK,iBAAiB,GAAGC,kCAAwB,CAACC,aAAa,CAACP,IAAI,CAAC;MACtE,IAAMQ,UAAU,GAAG,IAAIC,8CAAsB,CAACP,YAAY,EAAED,OAAO,CAAC;MACpE,IAAMS,OAAO,GAAG,IAAIC,wCAAmB,CAACH,UAAU,CAAC;MACnD,IAAMI,kCAAkC,GACpC,IAAIC,8FAA8C,CAACH,OAAO,CAAC;MAC/D,OAAO,IAAII,8DAA8B,CACrCT,iBAAiB,EACjBO,kCACJ,CAAC;IACL;EAAC;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["_appUtils","require","_UpdateFolderRepository","_UpdateFolderRepositoryWithPermissionsChange","_UpdateFolderUseCase","_UpdateFolderUseCaseWithLoading","_UpdateFolderUseCaseWithoutInheritedPermissions","_cache","_UpdateFolderRepositoryWithPathChange","UpdateFolder","exports","_classCallCheck2","default","_createClass2","key","value","getInstance","type","gateway","foldersCache","folderCacheFactory","getCache","loadingRepository","loadingRepositoryFactory","getRepository","repository","UpdateFolderRepository","repositoryWithPathChange","UpdateFolderRepositoryWithPathChange","repositoryWithPermissionsChange","UpdateFolderRepositoryWithPermissionsChange","useCase","UpdateFolderUseCase","useCaseWithoutInheritedPermissions","UpdateFolderUseCaseWithoutInheritedPermissions","UpdateFolderUseCaseWithLoading"],"sources":["UpdateFolder.ts"],"sourcesContent":["import { loadingRepositoryFactory } from \"@webiny/app-utils\";\nimport { IUpdateFolderUseCase } from \"./IUpdateFolderUseCase\";\nimport { IUpdateFolderGateway } from \"./IUpdateFolderGateway\";\nimport { UpdateFolderRepository } from \"./UpdateFolderRepository\";\nimport { UpdateFolderRepositoryWithPermissionsChange } from \"./UpdateFolderRepositoryWithPermissionsChange\";\nimport { UpdateFolderUseCase } from \"./UpdateFolderUseCase\";\nimport { UpdateFolderUseCaseWithLoading } from \"./UpdateFolderUseCaseWithLoading\";\nimport { UpdateFolderUseCaseWithoutInheritedPermissions } from \"./UpdateFolderUseCaseWithoutInheritedPermissions\";\nimport { folderCacheFactory } from \"../cache\";\nimport { UpdateFolderRepositoryWithPathChange } from \"~/features/folders/updateFolder/UpdateFolderRepositoryWithPathChange\";\n\nexport class UpdateFolder {\n public static getInstance(type: string, gateway: IUpdateFolderGateway): IUpdateFolderUseCase {\n const foldersCache = folderCacheFactory.getCache(type);\n const loadingRepository = loadingRepositoryFactory.getRepository(type);\n\n const repository = new UpdateFolderRepository(foldersCache, gateway);\n const repositoryWithPathChange = new UpdateFolderRepositoryWithPathChange(\n foldersCache,\n repository\n );\n const repositoryWithPermissionsChange = new UpdateFolderRepositoryWithPermissionsChange(\n foldersCache,\n repositoryWithPathChange\n );\n\n const useCase = new UpdateFolderUseCase(repositoryWithPermissionsChange);\n const useCaseWithoutInheritedPermissions =\n new UpdateFolderUseCaseWithoutInheritedPermissions(useCase);\n return new UpdateFolderUseCaseWithLoading(\n loadingRepository,\n useCaseWithoutInheritedPermissions\n );\n }\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAGA,IAAAC,uBAAA,GAAAD,OAAA;AACA,IAAAE,4CAAA,GAAAF,OAAA;AACA,IAAAG,oBAAA,GAAAH,OAAA;AACA,IAAAI,+BAAA,GAAAJ,OAAA;AACA,IAAAK,+CAAA,GAAAL,OAAA;AACA,IAAAM,MAAA,GAAAN,OAAA;AACA,IAAAO,qCAAA,GAAAP,OAAA;AAA4H,IAE/GQ,YAAY,GAAAC,OAAA,CAAAD,YAAA;EAAA,SAAAA,aAAA;IAAA,IAAAE,gBAAA,CAAAC,OAAA,QAAAH,YAAA;EAAA;EAAA,WAAAI,aAAA,CAAAD,OAAA,EAAAH,YAAA;IAAAK,GAAA;IAAAC,KAAA,EACrB,SAAcC,WAAWA,CAACC,IAAY,EAAEC,OAA6B,EAAwB;MACzF,IAAMC,YAAY,GAAGC,yBAAkB,CAACC,QAAQ,CAACJ,IAAI,CAAC;MACtD,IAAMK,iBAAiB,GAAGC,kCAAwB,CAACC,aAAa,CAACP,IAAI,CAAC;MAEtE,IAAMQ,UAAU,GAAG,IAAIC,8CAAsB,CAACP,YAAY,EAAED,OAAO,CAAC;MACpE,IAAMS,wBAAwB,GAAG,IAAIC,0EAAoC,CACrET,YAAY,EACZM,UACJ,CAAC;MACD,IAAMI,+BAA+B,GAAG,IAAIC,wFAA2C,CACnFX,YAAY,EACZQ,wBACJ,CAAC;MAED,IAAMI,OAAO,GAAG,IAAIC,wCAAmB,CAACH,+BAA+B,CAAC;MACxE,IAAMI,kCAAkC,GACpC,IAAIC,8FAA8C,CAACH,OAAO,CAAC;MAC/D,OAAO,IAAII,8DAA8B,CACrCb,iBAAiB,EACjBW,kCACJ,CAAC;IACL;EAAC;AAAA","ignoreList":[]}
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
5
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
3
6
  var _UpdateFolder = require("./UpdateFolder");
4
7
  var _FoldersCacheFactory = require("../cache/FoldersCacheFactory");
5
8
  var _Folder = require("../Folder");
9
+ var _constants = require("../../../constants");
6
10
  describe("UpdateFolder", function () {
7
11
  var type = "abc";
8
12
  var foldersCache = _FoldersCacheFactory.folderCacheFactory.getCache(type);
@@ -79,6 +83,310 @@ describe("UpdateFolder", function () {
79
83
  expect(updatedItem?.slug).toEqual("any-folder");
80
84
  expect(updatedItem?.parentId).toEqual(null);
81
85
  });
86
+ it("should propagate `permissions` changes to child folders", async function () {
87
+ var parentFolder = _Folder.Folder.create({
88
+ id: "parent-folder-id",
89
+ title: "Parent Folder",
90
+ slug: "parent-folder",
91
+ parentId: null,
92
+ permissions: [],
93
+ type: type
94
+ });
95
+ var childFolder1 = _Folder.Folder.create({
96
+ id: "child-folder-id-1",
97
+ title: "Child Folder 1",
98
+ slug: "child-folder-1",
99
+ parentId: parentFolder.id,
100
+ permissions: [],
101
+ type: type
102
+ });
103
+ var childFolder2 = _Folder.Folder.create({
104
+ id: "child-folder-id-2",
105
+ title: "Child Folder 2",
106
+ slug: "child-folder-2",
107
+ parentId: childFolder1.id,
108
+ permissions: [],
109
+ type: type
110
+ });
111
+ var childFolder3 = _Folder.Folder.create({
112
+ id: "child-folder-id-3",
113
+ title: "Child Folder 3",
114
+ slug: "child-folder-3",
115
+ parentId: parentFolder.id,
116
+ // <-- This folder is a sibling of childFolder1, not a child
117
+ permissions: [],
118
+ type: type
119
+ });
120
+ foldersCache.addItems([parentFolder, childFolder1, childFolder2, childFolder3]);
121
+
122
+ // Let's update parentFolder, the change should be propagated to all it's children (childFolder1, childFolder2 and childFolder3).
123
+ var parentNewPermissions = [{
124
+ level: "viewer",
125
+ target: "admin:123"
126
+ }, {
127
+ level: "viewer",
128
+ target: "admin:456"
129
+ }];
130
+ {
131
+ var gateway = {
132
+ execute: jest.fn().mockResolvedValue({
133
+ id: parentFolder.id,
134
+ title: parentFolder.title,
135
+ slug: parentFolder.slug,
136
+ parentId: parentFolder.parentId,
137
+ permissions: parentNewPermissions,
138
+ type: type
139
+ })
140
+ };
141
+ var updateFolder = _UpdateFolder.UpdateFolder.getInstance(type, gateway);
142
+ await updateFolder.execute({
143
+ id: parentFolder.id,
144
+ title: parentFolder.title,
145
+ slug: parentFolder.slug,
146
+ parentId: parentFolder.parentId,
147
+ permissions: parentNewPermissions,
148
+ type: type
149
+ });
150
+ var childFolderCache1 = foldersCache.getItem(function (folder) {
151
+ return folder.id === childFolder1.id;
152
+ });
153
+ expect(childFolderCache1?.permissions).toEqual(parentNewPermissions.map(function (permission) {
154
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, permission), {}, {
155
+ inheritedFrom: "parent:".concat(parentFolder?.id)
156
+ });
157
+ }));
158
+ var childFolderCache2 = foldersCache.getItem(function (folder) {
159
+ return folder.id === childFolder2.id;
160
+ });
161
+ expect(childFolderCache2?.permissions).toEqual(parentNewPermissions.map(function (permission) {
162
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, permission), {}, {
163
+ inheritedFrom: "parent:".concat(childFolderCache1?.id)
164
+ });
165
+ }));
166
+ var childFolderCache3 = foldersCache.getItem(function (folder) {
167
+ return folder.id === childFolder3.id;
168
+ });
169
+ expect(childFolderCache3?.permissions).toEqual(parentNewPermissions.map(function (permission) {
170
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, permission), {}, {
171
+ inheritedFrom: "parent:".concat(parentFolder?.id)
172
+ });
173
+ }));
174
+ }
175
+
176
+ // Let's update childFolder1, the change should be propagated to childFolder2, but not to childFolder3
177
+ var child1NewPermissions = [{
178
+ level: "owner",
179
+ target: "admin:123"
180
+ }];
181
+ {
182
+ var _gateway = {
183
+ execute: jest.fn().mockResolvedValue({
184
+ id: childFolder1.id,
185
+ title: childFolder1.title,
186
+ slug: childFolder1.slug,
187
+ parentId: childFolder1.parentId,
188
+ permissions: child1NewPermissions,
189
+ type: type
190
+ })
191
+ };
192
+ var _updateFolder = _UpdateFolder.UpdateFolder.getInstance(type, _gateway);
193
+ await _updateFolder.execute({
194
+ id: childFolder1.id,
195
+ title: childFolder1.title,
196
+ slug: childFolder1.slug,
197
+ parentId: childFolder1.parentId,
198
+ permissions: child1NewPermissions,
199
+ type: type
200
+ });
201
+ var _childFolderCache = foldersCache.getItem(function (folder) {
202
+ return folder.id === childFolder1.id;
203
+ });
204
+ expect(_childFolderCache?.permissions).toEqual([].concat(child1NewPermissions, [(0, _objectSpread2.default)((0, _objectSpread2.default)({}, parentNewPermissions[1]), {}, {
205
+ inheritedFrom: "parent:".concat(parentFolder?.id)
206
+ })]));
207
+ var _childFolderCache2 = foldersCache.getItem(function (folder) {
208
+ return folder.id === childFolder2.id;
209
+ });
210
+ expect(_childFolderCache2?.permissions).toEqual([].concat((0, _toConsumableArray2.default)(child1NewPermissions.map(function (permission) {
211
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, permission), {}, {
212
+ inheritedFrom: "parent:".concat(_childFolderCache?.id)
213
+ });
214
+ })), [(0, _objectSpread2.default)((0, _objectSpread2.default)({}, parentNewPermissions[1]), {}, {
215
+ inheritedFrom: "parent:".concat(_childFolderCache?.id)
216
+ })]));
217
+ var _childFolderCache3 = foldersCache.getItem(function (folder) {
218
+ return folder.id === childFolder3.id;
219
+ });
220
+ expect(_childFolderCache3?.permissions).toEqual(parentNewPermissions.map(function (permission) {
221
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, permission), {}, {
222
+ inheritedFrom: "parent:".concat(parentFolder?.id)
223
+ });
224
+ }));
225
+ }
226
+ {
227
+ // Let's remove childFolder1 permissions:
228
+ // childFolder1 should inherit back permissions from parentFolder,
229
+ // the change should be propagated to childFolder2, but not to childFolder3
230
+ var newPermissions = [];
231
+ var _gateway2 = {
232
+ execute: jest.fn().mockResolvedValue({
233
+ id: childFolder1.id,
234
+ title: childFolder1.title,
235
+ slug: childFolder1.slug,
236
+ parentId: childFolder1.parentId,
237
+ permissions: newPermissions,
238
+ type: type
239
+ })
240
+ };
241
+ var _updateFolder2 = _UpdateFolder.UpdateFolder.getInstance(type, _gateway2);
242
+ await _updateFolder2.execute({
243
+ id: childFolder1.id,
244
+ title: childFolder1.title,
245
+ slug: childFolder1.slug,
246
+ parentId: childFolder1.parentId,
247
+ permissions: newPermissions,
248
+ type: type
249
+ });
250
+ var _childFolderCache4 = foldersCache.getItem(function (folder) {
251
+ return folder.id === childFolder1.id;
252
+ });
253
+ expect(_childFolderCache4?.permissions).toEqual(parentNewPermissions.map(function (permission) {
254
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, permission), {}, {
255
+ inheritedFrom: "parent:".concat(parentFolder?.id)
256
+ });
257
+ }));
258
+ var _childFolderCache5 = foldersCache.getItem(function (folder) {
259
+ return folder.id === childFolder2.id;
260
+ });
261
+ expect(_childFolderCache5?.permissions).toEqual(parentNewPermissions.map(function (permission) {
262
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, permission), {}, {
263
+ inheritedFrom: "parent:".concat(_childFolderCache4?.id)
264
+ });
265
+ }));
266
+ var _childFolderCache6 = foldersCache.getItem(function (folder) {
267
+ return folder.id === childFolder3.id;
268
+ });
269
+ expect(_childFolderCache6?.permissions).toEqual(parentNewPermissions.map(function (permission) {
270
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, permission), {}, {
271
+ inheritedFrom: "parent:".concat(parentFolder?.id)
272
+ });
273
+ }));
274
+ }
275
+ });
276
+ it("should propagate `path` changes to child folders", async function () {
277
+ var parentFolder = _Folder.Folder.create({
278
+ id: "parent-folder-id",
279
+ title: "Parent Folder",
280
+ slug: "parent-folder",
281
+ parentId: null,
282
+ permissions: [],
283
+ path: "".concat(_constants.ROOT_FOLDER, "/parent-folder"),
284
+ type: type
285
+ });
286
+ var childFolder1 = _Folder.Folder.create({
287
+ id: "child-folder-id-1",
288
+ title: "Child Folder 1",
289
+ slug: "child-folder-1",
290
+ parentId: parentFolder.id,
291
+ permissions: [],
292
+ path: "".concat(_constants.ROOT_FOLDER, "/parent-folder/child-folder-1"),
293
+ type: type
294
+ });
295
+ var childFolder2 = _Folder.Folder.create({
296
+ id: "child-folder-id-2",
297
+ title: "Child Folder 2",
298
+ slug: "child-folder-2",
299
+ parentId: childFolder1.id,
300
+ permissions: [],
301
+ path: "".concat(_constants.ROOT_FOLDER, "/parent-folder/child-folder-1/child-folder-2"),
302
+ type: type
303
+ });
304
+ var childFolder3 = _Folder.Folder.create({
305
+ id: "child-folder-id-3",
306
+ title: "Child Folder 3",
307
+ slug: "child-folder-3",
308
+ parentId: parentFolder.id,
309
+ // <-- This folder is a sibling of childFolder1, not a child
310
+ permissions: [],
311
+ path: "".concat(_constants.ROOT_FOLDER, "/parent-folder/child-folder-3"),
312
+ type: type
313
+ });
314
+ foldersCache.addItems([parentFolder, childFolder1, childFolder2, childFolder3]);
315
+
316
+ // Let's update parentFolder, the change should be propagated to all it's children (childFolder1, childFolder2 and childFolder3).
317
+ var newParentPath = "".concat(_constants.ROOT_FOLDER, "/parent-folder-edit");
318
+ {
319
+ var gateway = {
320
+ execute: jest.fn().mockResolvedValue({
321
+ id: parentFolder.id,
322
+ title: parentFolder.title,
323
+ slug: parentFolder.slug + "-edit",
324
+ parentId: parentFolder.parentId,
325
+ permissions: parentFolder.permissions,
326
+ path: newParentPath,
327
+ type: type
328
+ })
329
+ };
330
+ var updateFolder = _UpdateFolder.UpdateFolder.getInstance(type, gateway);
331
+ await updateFolder.execute({
332
+ id: parentFolder.id,
333
+ title: parentFolder.title,
334
+ slug: parentFolder.slug + "-edit",
335
+ parentId: parentFolder.parentId,
336
+ permissions: parentFolder.permissions,
337
+ type: type
338
+ });
339
+ var childFolderCache1 = foldersCache.getItem(function (folder) {
340
+ return folder.id === childFolder1.id;
341
+ });
342
+ expect(childFolderCache1?.path).toEqual("".concat(newParentPath, "/child-folder-1"));
343
+ var childFolderCache2 = foldersCache.getItem(function (folder) {
344
+ return folder.id === childFolder2.id;
345
+ });
346
+ expect(childFolderCache2?.path).toEqual("".concat(newParentPath, "/child-folder-1/child-folder-2"));
347
+ var childFolderCache3 = foldersCache.getItem(function (folder) {
348
+ return folder.id === childFolder3.id;
349
+ });
350
+ expect(childFolderCache3?.path).toEqual("".concat(newParentPath, "/child-folder-3"));
351
+ }
352
+
353
+ // Let's update childFolder1, the change should be propagated to childFolder2, but not to childFolder3
354
+ var newChildFolder1Path = "".concat(newParentPath, "/child-folder-1-edit");
355
+ {
356
+ var _gateway3 = {
357
+ execute: jest.fn().mockResolvedValue({
358
+ id: childFolder1.id,
359
+ title: childFolder1.title,
360
+ slug: childFolder1.slug + "-edit",
361
+ parentId: childFolder1.parentId,
362
+ permissions: childFolder1.permissions,
363
+ path: newChildFolder1Path,
364
+ type: type
365
+ })
366
+ };
367
+ var _updateFolder3 = _UpdateFolder.UpdateFolder.getInstance(type, _gateway3);
368
+ await _updateFolder3.execute({
369
+ id: childFolder1.id,
370
+ title: childFolder1.title,
371
+ slug: childFolder1.slug + "-edit",
372
+ parentId: childFolder1.parentId,
373
+ permissions: childFolder1.permissions,
374
+ type: type
375
+ });
376
+ var _childFolderCache7 = foldersCache.getItem(function (folder) {
377
+ return folder.id === childFolder1.id;
378
+ });
379
+ expect(_childFolderCache7?.path).toEqual(newChildFolder1Path);
380
+ var _childFolderCache8 = foldersCache.getItem(function (folder) {
381
+ return folder.id === childFolder2.id;
382
+ });
383
+ expect(_childFolderCache8?.path).toEqual("".concat(newChildFolder1Path, "/child-folder-2"));
384
+ var _childFolderCache9 = foldersCache.getItem(function (folder) {
385
+ return folder.id === childFolder3.id;
386
+ });
387
+ expect(_childFolderCache9?.path).toEqual("".concat(newParentPath, "/child-folder-3"));
388
+ }
389
+ });
82
390
  it("should handle gateway errors gracefully", async function () {
83
391
  var gateway = {
84
392
  execute: jest.fn().mockRejectedValue(new Error("Gateway error"))
@@ -1 +1 @@
1
- {"version":3,"names":["_UpdateFolder","require","_FoldersCacheFactory","_Folder","describe","type","foldersCache","folderCacheFactory","getCache","beforeEach","jest","clearAllMocks","clear","addItems","Folder","create","id","title","slug","parentId","permissions","it","gateway","execute","fn","mockResolvedValue","updateFolder","UpdateFolder","getInstance","expect","hasItems","toBeTrue","item","getItem","folder","toEqual","toHaveBeenCalledTimes","updatedItem","toBeDefined","mockRejectedValue","Error","rejects","toThrow"],"sources":["UpdateFolder.test.ts"],"sourcesContent":["import { UpdateFolder } from \"./UpdateFolder\";\nimport { folderCacheFactory } from \"../cache/FoldersCacheFactory\";\nimport { Folder } from \"../Folder\";\n\ndescribe(\"UpdateFolder\", () => {\n const type = \"abc\";\n\n const foldersCache = folderCacheFactory.getCache(type);\n\n beforeEach(() => {\n jest.clearAllMocks();\n foldersCache.clear();\n foldersCache.addItems([\n Folder.create({\n id: \"any-folder-id\",\n title: \"Any Folder\",\n slug: \"any-folder\",\n parentId: null,\n permissions: [],\n type\n })\n ]);\n });\n\n it(\"should be able to update a folder\", async () => {\n const gateway = {\n execute: jest.fn().mockResolvedValue({\n id: \"any-folder-id\",\n title: \"Updated Folder\",\n slug: \"updated-folder\",\n parentId: \"another-id\",\n permissions: [],\n type\n })\n };\n\n const updateFolder = UpdateFolder.getInstance(type, gateway);\n\n expect(foldersCache.hasItems()).toBeTrue();\n const item = foldersCache.getItem(folder => folder.id === \"any-folder-id\");\n expect(item?.id).toEqual(\"any-folder-id\");\n expect(item?.title).toEqual(\"Any Folder\");\n\n await updateFolder.execute({\n id: \"any-folder-id\",\n title: \"Updated Folder\",\n slug: \"updated-folder\",\n parentId: \"another-id\",\n permissions: [],\n type\n });\n\n expect(gateway.execute).toHaveBeenCalledTimes(1);\n const updatedItem = foldersCache.getItem(folder => folder.id === \"any-folder-id\");\n\n expect(updatedItem).toBeDefined();\n expect(updatedItem?.id).toEqual(\"any-folder-id\");\n expect(updatedItem?.type).toEqual(type);\n expect(updatedItem?.title).toEqual(\"Updated Folder\");\n expect(updatedItem?.slug).toEqual(\"updated-folder\");\n expect(updatedItem?.parentId).toEqual(\"another-id\");\n });\n\n it(\"should not update a folder if id is missing\", async () => {\n const gateway = {\n execute: jest.fn().mockResolvedValue(null)\n };\n\n const updateFolder = UpdateFolder.getInstance(type, gateway);\n\n await updateFolder.execute({\n id: \"\",\n title: \"Updated Folder\",\n slug: \"updated-folder\",\n parentId: \"another-id\",\n permissions: [],\n type\n });\n\n expect(gateway.execute).toHaveBeenCalledTimes(1);\n const updatedItem = foldersCache.getItem(folder => folder.id === \"any-folder-id\");\n\n expect(updatedItem).toBeDefined();\n expect(updatedItem?.id).toEqual(\"any-folder-id\");\n expect(updatedItem?.type).toEqual(type);\n expect(updatedItem?.title).toEqual(\"Any Folder\");\n expect(updatedItem?.slug).toEqual(\"any-folder\");\n expect(updatedItem?.parentId).toEqual(null);\n });\n\n it(\"should handle gateway errors gracefully\", async () => {\n const gateway = {\n execute: jest.fn().mockRejectedValue(new Error(\"Gateway error\"))\n };\n\n const updateFolder = UpdateFolder.getInstance(type, gateway);\n\n await expect(\n updateFolder.execute({\n id: \"any-folder-id\",\n title: \"Updated Folder\",\n slug: \"updated-folder\",\n parentId: \"another-id\",\n permissions: [],\n type\n })\n ).rejects.toThrow(\"Gateway error\");\n\n expect(gateway.execute).toHaveBeenCalledTimes(1);\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_UpdateFolder","require","_FoldersCacheFactory","_Folder","_constants","describe","type","foldersCache","folderCacheFactory","getCache","beforeEach","jest","clearAllMocks","clear","addItems","Folder","create","id","title","slug","parentId","permissions","it","gateway","execute","fn","mockResolvedValue","updateFolder","UpdateFolder","getInstance","expect","hasItems","toBeTrue","item","getItem","folder","toEqual","toHaveBeenCalledTimes","updatedItem","toBeDefined","parentFolder","childFolder1","childFolder2","childFolder3","parentNewPermissions","level","target","childFolderCache1","map","permission","_objectSpread2","default","inheritedFrom","concat","childFolderCache2","childFolderCache3","child1NewPermissions","_toConsumableArray2","newPermissions","path","ROOT_FOLDER","newParentPath","newChildFolder1Path","mockRejectedValue","Error","rejects","toThrow"],"sources":["UpdateFolder.test.ts"],"sourcesContent":["import { UpdateFolder } from \"./UpdateFolder\";\nimport { folderCacheFactory } from \"../cache/FoldersCacheFactory\";\nimport { Folder } from \"../Folder\";\nimport { FolderPermission } from \"@webiny/shared-aco/flp/flp.types\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\ndescribe(\"UpdateFolder\", () => {\n const type = \"abc\";\n\n const foldersCache = folderCacheFactory.getCache(type);\n\n beforeEach(() => {\n jest.clearAllMocks();\n foldersCache.clear();\n foldersCache.addItems([\n Folder.create({\n id: \"any-folder-id\",\n title: \"Any Folder\",\n slug: \"any-folder\",\n parentId: null,\n permissions: [],\n type\n })\n ]);\n });\n\n it(\"should be able to update a folder\", async () => {\n const gateway = {\n execute: jest.fn().mockResolvedValue({\n id: \"any-folder-id\",\n title: \"Updated Folder\",\n slug: \"updated-folder\",\n parentId: \"another-id\",\n permissions: [],\n type\n })\n };\n\n const updateFolder = UpdateFolder.getInstance(type, gateway);\n\n expect(foldersCache.hasItems()).toBeTrue();\n const item = foldersCache.getItem(folder => folder.id === \"any-folder-id\");\n expect(item?.id).toEqual(\"any-folder-id\");\n expect(item?.title).toEqual(\"Any Folder\");\n\n await updateFolder.execute({\n id: \"any-folder-id\",\n title: \"Updated Folder\",\n slug: \"updated-folder\",\n parentId: \"another-id\",\n permissions: [],\n type\n });\n\n expect(gateway.execute).toHaveBeenCalledTimes(1);\n const updatedItem = foldersCache.getItem(folder => folder.id === \"any-folder-id\");\n\n expect(updatedItem).toBeDefined();\n expect(updatedItem?.id).toEqual(\"any-folder-id\");\n expect(updatedItem?.type).toEqual(type);\n expect(updatedItem?.title).toEqual(\"Updated Folder\");\n expect(updatedItem?.slug).toEqual(\"updated-folder\");\n expect(updatedItem?.parentId).toEqual(\"another-id\");\n });\n\n it(\"should not update a folder if id is missing\", async () => {\n const gateway = {\n execute: jest.fn().mockResolvedValue(null)\n };\n\n const updateFolder = UpdateFolder.getInstance(type, gateway);\n\n await updateFolder.execute({\n id: \"\",\n title: \"Updated Folder\",\n slug: \"updated-folder\",\n parentId: \"another-id\",\n permissions: [],\n type\n });\n\n expect(gateway.execute).toHaveBeenCalledTimes(1);\n const updatedItem = foldersCache.getItem(folder => folder.id === \"any-folder-id\");\n\n expect(updatedItem).toBeDefined();\n expect(updatedItem?.id).toEqual(\"any-folder-id\");\n expect(updatedItem?.type).toEqual(type);\n expect(updatedItem?.title).toEqual(\"Any Folder\");\n expect(updatedItem?.slug).toEqual(\"any-folder\");\n expect(updatedItem?.parentId).toEqual(null);\n });\n\n it(\"should propagate `permissions` changes to child folders\", async () => {\n const parentFolder = Folder.create({\n id: \"parent-folder-id\",\n title: \"Parent Folder\",\n slug: \"parent-folder\",\n parentId: null,\n permissions: [],\n type\n });\n\n const childFolder1 = Folder.create({\n id: \"child-folder-id-1\",\n title: \"Child Folder 1\",\n slug: \"child-folder-1\",\n parentId: parentFolder.id,\n permissions: [],\n type\n });\n\n const childFolder2 = Folder.create({\n id: \"child-folder-id-2\",\n title: \"Child Folder 2\",\n slug: \"child-folder-2\",\n parentId: childFolder1.id,\n permissions: [],\n type\n });\n\n const childFolder3 = Folder.create({\n id: \"child-folder-id-3\",\n title: \"Child Folder 3\",\n slug: \"child-folder-3\",\n parentId: parentFolder.id, // <-- This folder is a sibling of childFolder1, not a child\n permissions: [],\n type\n });\n\n foldersCache.addItems([parentFolder, childFolder1, childFolder2, childFolder3]);\n\n // Let's update parentFolder, the change should be propagated to all it's children (childFolder1, childFolder2 and childFolder3).\n const parentNewPermissions: FolderPermission[] = [\n { level: \"viewer\", target: \"admin:123\" },\n { level: \"viewer\", target: \"admin:456\" }\n ];\n\n {\n const gateway = {\n execute: jest.fn().mockResolvedValue({\n id: parentFolder.id,\n title: parentFolder.title,\n slug: parentFolder.slug,\n parentId: parentFolder.parentId,\n permissions: parentNewPermissions,\n type\n })\n };\n const updateFolder = UpdateFolder.getInstance(type, gateway);\n\n await updateFolder.execute({\n id: parentFolder.id,\n title: parentFolder.title,\n slug: parentFolder.slug,\n parentId: parentFolder.parentId,\n permissions: parentNewPermissions,\n type\n });\n\n const childFolderCache1 = foldersCache.getItem(folder => folder.id === childFolder1.id);\n expect(childFolderCache1?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${parentFolder?.id}`\n }))\n );\n\n const childFolderCache2 = foldersCache.getItem(folder => folder.id === childFolder2.id);\n expect(childFolderCache2?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${childFolderCache1?.id}`\n }))\n );\n\n const childFolderCache3 = foldersCache.getItem(folder => folder.id === childFolder3.id);\n expect(childFolderCache3?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${parentFolder?.id}`\n }))\n );\n }\n\n // Let's update childFolder1, the change should be propagated to childFolder2, but not to childFolder3\n const child1NewPermissions: FolderPermission[] = [{ level: \"owner\", target: \"admin:123\" }];\n\n {\n const gateway = {\n execute: jest.fn().mockResolvedValue({\n id: childFolder1.id,\n title: childFolder1.title,\n slug: childFolder1.slug,\n parentId: childFolder1.parentId,\n permissions: child1NewPermissions,\n type\n })\n };\n const updateFolder = UpdateFolder.getInstance(type, gateway);\n\n await updateFolder.execute({\n id: childFolder1.id,\n title: childFolder1.title,\n slug: childFolder1.slug,\n parentId: childFolder1.parentId,\n permissions: child1NewPermissions,\n type\n });\n\n const childFolderCache1 = foldersCache.getItem(folder => folder.id === childFolder1.id);\n expect(childFolderCache1?.permissions).toEqual([\n ...child1NewPermissions,\n {\n ...parentNewPermissions[1],\n inheritedFrom: `parent:${parentFolder?.id}`\n }\n ]);\n\n const childFolderCache2 = foldersCache.getItem(folder => folder.id === childFolder2.id);\n expect(childFolderCache2?.permissions).toEqual([\n ...child1NewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${childFolderCache1?.id}`\n })),\n {\n ...parentNewPermissions[1],\n inheritedFrom: `parent:${childFolderCache1?.id}`\n }\n ]);\n\n const childFolderCache3 = foldersCache.getItem(folder => folder.id === childFolder3.id);\n expect(childFolderCache3?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${parentFolder?.id}`\n }))\n );\n }\n\n {\n // Let's remove childFolder1 permissions:\n // childFolder1 should inherit back permissions from parentFolder,\n // the change should be propagated to childFolder2, but not to childFolder3\n const newPermissions: FolderPermission[] = [];\n\n const gateway = {\n execute: jest.fn().mockResolvedValue({\n id: childFolder1.id,\n title: childFolder1.title,\n slug: childFolder1.slug,\n parentId: childFolder1.parentId,\n permissions: newPermissions,\n type\n })\n };\n const updateFolder = UpdateFolder.getInstance(type, gateway);\n\n await updateFolder.execute({\n id: childFolder1.id,\n title: childFolder1.title,\n slug: childFolder1.slug,\n parentId: childFolder1.parentId,\n permissions: newPermissions,\n type\n });\n\n const childFolderCache1 = foldersCache.getItem(folder => folder.id === childFolder1.id);\n expect(childFolderCache1?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${parentFolder?.id}`\n }))\n );\n\n const childFolderCache2 = foldersCache.getItem(folder => folder.id === childFolder2.id);\n expect(childFolderCache2?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${childFolderCache1?.id}`\n }))\n );\n\n const childFolderCache3 = foldersCache.getItem(folder => folder.id === childFolder3.id);\n expect(childFolderCache3?.permissions).toEqual(\n parentNewPermissions.map(permission => ({\n ...permission,\n inheritedFrom: `parent:${parentFolder?.id}`\n }))\n );\n }\n });\n\n it(\"should propagate `path` changes to child folders\", async () => {\n const parentFolder = Folder.create({\n id: \"parent-folder-id\",\n title: \"Parent Folder\",\n slug: \"parent-folder\",\n parentId: null,\n permissions: [],\n path: `${ROOT_FOLDER}/parent-folder`,\n type\n });\n\n const childFolder1 = Folder.create({\n id: \"child-folder-id-1\",\n title: \"Child Folder 1\",\n slug: \"child-folder-1\",\n parentId: parentFolder.id,\n permissions: [],\n path: `${ROOT_FOLDER}/parent-folder/child-folder-1`,\n type\n });\n\n const childFolder2 = Folder.create({\n id: \"child-folder-id-2\",\n title: \"Child Folder 2\",\n slug: \"child-folder-2\",\n parentId: childFolder1.id,\n permissions: [],\n path: `${ROOT_FOLDER}/parent-folder/child-folder-1/child-folder-2`,\n type\n });\n\n const childFolder3 = Folder.create({\n id: \"child-folder-id-3\",\n title: \"Child Folder 3\",\n slug: \"child-folder-3\",\n parentId: parentFolder.id, // <-- This folder is a sibling of childFolder1, not a child\n permissions: [],\n path: `${ROOT_FOLDER}/parent-folder/child-folder-3`,\n type\n });\n\n foldersCache.addItems([parentFolder, childFolder1, childFolder2, childFolder3]);\n\n // Let's update parentFolder, the change should be propagated to all it's children (childFolder1, childFolder2 and childFolder3).\n const newParentPath: string = `${ROOT_FOLDER}/parent-folder-edit`;\n\n {\n const gateway = {\n execute: jest.fn().mockResolvedValue({\n id: parentFolder.id,\n title: parentFolder.title,\n slug: parentFolder.slug + \"-edit\",\n parentId: parentFolder.parentId,\n permissions: parentFolder.permissions,\n path: newParentPath,\n type\n })\n };\n const updateFolder = UpdateFolder.getInstance(type, gateway);\n\n await updateFolder.execute({\n id: parentFolder.id,\n title: parentFolder.title,\n slug: parentFolder.slug + \"-edit\",\n parentId: parentFolder.parentId,\n permissions: parentFolder.permissions,\n type\n });\n\n const childFolderCache1 = foldersCache.getItem(folder => folder.id === childFolder1.id);\n expect(childFolderCache1?.path).toEqual(`${newParentPath}/child-folder-1`);\n\n const childFolderCache2 = foldersCache.getItem(folder => folder.id === childFolder2.id);\n expect(childFolderCache2?.path).toEqual(\n `${newParentPath}/child-folder-1/child-folder-2`\n );\n\n const childFolderCache3 = foldersCache.getItem(folder => folder.id === childFolder3.id);\n expect(childFolderCache3?.path).toEqual(`${newParentPath}/child-folder-3`);\n }\n\n // Let's update childFolder1, the change should be propagated to childFolder2, but not to childFolder3\n const newChildFolder1Path: string = `${newParentPath}/child-folder-1-edit`;\n\n {\n const gateway = {\n execute: jest.fn().mockResolvedValue({\n id: childFolder1.id,\n title: childFolder1.title,\n slug: childFolder1.slug + \"-edit\",\n parentId: childFolder1.parentId,\n permissions: childFolder1.permissions,\n path: newChildFolder1Path,\n type\n })\n };\n const updateFolder = UpdateFolder.getInstance(type, gateway);\n\n await updateFolder.execute({\n id: childFolder1.id,\n title: childFolder1.title,\n slug: childFolder1.slug + \"-edit\",\n parentId: childFolder1.parentId,\n permissions: childFolder1.permissions,\n type\n });\n\n const childFolderCache1 = foldersCache.getItem(folder => folder.id === childFolder1.id);\n expect(childFolderCache1?.path).toEqual(newChildFolder1Path);\n\n const childFolderCache2 = foldersCache.getItem(folder => folder.id === childFolder2.id);\n expect(childFolderCache2?.path).toEqual(`${newChildFolder1Path}/child-folder-2`);\n\n const childFolderCache3 = foldersCache.getItem(folder => folder.id === childFolder3.id);\n expect(childFolderCache3?.path).toEqual(`${newParentPath}/child-folder-3`);\n }\n });\n\n it(\"should handle gateway errors gracefully\", async () => {\n const gateway = {\n execute: jest.fn().mockRejectedValue(new Error(\"Gateway error\"))\n };\n\n const updateFolder = UpdateFolder.getInstance(type, gateway);\n\n await expect(\n updateFolder.execute({\n id: \"any-folder-id\",\n title: \"Updated Folder\",\n slug: \"updated-folder\",\n parentId: \"another-id\",\n permissions: [],\n type\n })\n ).rejects.toThrow(\"Gateway error\");\n\n expect(gateway.execute).toHaveBeenCalledTimes(1);\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ import { IUpdateFolderRepository } from "./IUpdateFolderRepository";
2
+ import { ListCache } from "../cache";
3
+ import { Folder } from "../Folder";
4
+ export declare class UpdateFolderRepositoryWithPathChange implements IUpdateFolderRepository {
5
+ private cache;
6
+ private decoretee;
7
+ constructor(cache: ListCache<Folder>, decoretee: IUpdateFolderRepository);
8
+ execute(folder: Folder): Promise<void>;
9
+ private updateChildrenPathsRecursively;
10
+ private listDirectChildren;
11
+ }