@webiny/api-aco 5.43.3 → 6.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/apps/AcoApp.d.ts +2 -2
  2. package/apps/AcoApp.js.map +1 -1
  3. package/apps/AcoApps.d.ts +1 -1
  4. package/apps/AcoApps.js.map +1 -1
  5. package/apps/app.gql.d.ts +1 -1
  6. package/apps/app.gql.js.map +1 -1
  7. package/createAcoContext.d.ts +2 -2
  8. package/createAcoContext.js.map +1 -1
  9. package/createAcoGraphQL.d.ts +1 -1
  10. package/createAcoGraphQL.js.map +1 -1
  11. package/createAcoHooks.d.ts +1 -1
  12. package/createAcoHooks.js.map +1 -1
  13. package/createAcoModels.d.ts +1 -1
  14. package/createAcoModels.js.map +1 -1
  15. package/createAcoStorageOperations.d.ts +4 -4
  16. package/createAcoStorageOperations.js.map +1 -1
  17. package/filter/filter.crud.d.ts +2 -2
  18. package/filter/filter.crud.js.map +1 -1
  19. package/filter/filter.gql.d.ts +1 -1
  20. package/filter/filter.gql.js.map +1 -1
  21. package/filter/filter.model.js.map +1 -1
  22. package/filter/filter.so.d.ts +2 -2
  23. package/filter/filter.so.js.map +1 -1
  24. package/filter/filter.types.d.ts +2 -2
  25. package/filter/filter.types.js.map +1 -1
  26. package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/DefaultPermissionsMerger.d.ts +2 -2
  27. package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/DefaultPermissionsMerger.js.map +1 -1
  28. package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js.map +1 -1
  29. package/flp/flp.crud.d.ts +2 -2
  30. package/flp/flp.crud.js.map +1 -1
  31. package/flp/flp.so.d.ts +1 -1
  32. package/flp/flp.so.js.map +1 -1
  33. package/flp/flp.types.d.ts +2 -2
  34. package/flp/flp.types.js.map +1 -1
  35. package/flp/hooks/index.d.ts +1 -1
  36. package/flp/hooks/index.js.map +1 -1
  37. package/flp/hooks/onFolderAfterCreateFlp.hook.d.ts +1 -1
  38. package/flp/hooks/onFolderAfterCreateFlp.hook.js.map +1 -1
  39. package/flp/hooks/onFolderAfterDeleteFlp.hook.d.ts +1 -1
  40. package/flp/hooks/onFolderAfterDeleteFlp.hook.js.map +1 -1
  41. package/flp/hooks/onFolderAfterUpdateFlp.hook.d.ts +1 -1
  42. package/flp/hooks/onFolderAfterUpdateFlp.hook.js.map +1 -1
  43. package/folder/createFolderModelModifier.d.ts +2 -2
  44. package/folder/createFolderModelModifier.js.map +1 -1
  45. package/folder/createFolderTypeDefs.d.ts +1 -1
  46. package/folder/createFolderTypeDefs.js +8 -0
  47. package/folder/createFolderTypeDefs.js.map +1 -1
  48. package/folder/ensureFolderIsEmpty.d.ts +1 -1
  49. package/folder/ensureFolderIsEmpty.js.map +1 -1
  50. package/folder/folder.crud.d.ts +3 -2
  51. package/folder/folder.crud.js.map +1 -1
  52. package/folder/folder.gql.d.ts +2 -2
  53. package/folder/folder.gql.js.map +1 -1
  54. package/folder/folder.so.d.ts +2 -2
  55. package/folder/folder.so.js.map +1 -1
  56. package/folder/folder.types.d.ts +11 -2
  57. package/folder/folder.types.js.map +1 -1
  58. package/folder/onFolderBeforeDeleteAco.hook.d.ts +1 -1
  59. package/folder/onFolderBeforeDeleteAco.hook.js.map +1 -1
  60. package/folder/onFolderBeforeDeleteFm.hook.d.ts +1 -1
  61. package/folder/onFolderBeforeDeleteFm.hook.js.map +1 -1
  62. package/folder/onFolderBeforeDeleteHcms.hook.d.ts +1 -1
  63. package/folder/onFolderBeforeDeleteHcms.hook.js.map +1 -1
  64. package/folder/useCases/CreateFolder/CreateFolderWithFolderLevelPermissions.d.ts +1 -1
  65. package/folder/useCases/CreateFolder/CreateFolderWithFolderLevelPermissions.js.map +1 -1
  66. package/folder/useCases/CreateFolder/index.d.ts +2 -2
  67. package/folder/useCases/CreateFolder/index.js.map +1 -1
  68. package/folder/useCases/DeleteFolder/DeleteFolderWithFolderLevelPermissions.d.ts +1 -1
  69. package/folder/useCases/DeleteFolder/DeleteFolderWithFolderLevelPermissions.js.map +1 -1
  70. package/folder/useCases/DeleteFolder/index.d.ts +2 -2
  71. package/folder/useCases/DeleteFolder/index.js.map +1 -1
  72. package/folder/useCases/GetAncestors/IGetAncestors.d.ts +1 -1
  73. package/folder/useCases/GetAncestors/IGetAncestors.js.map +1 -1
  74. package/folder/useCases/GetFolder/GetFolderWithFolderLevelPermissions.d.ts +1 -1
  75. package/folder/useCases/GetFolder/GetFolderWithFolderLevelPermissions.js.map +1 -1
  76. package/folder/useCases/GetFolder/index.d.ts +1 -1
  77. package/folder/useCases/GetFolder/index.js.map +1 -1
  78. package/folder/useCases/GetFolderHierarchy/GetFolderHierarchyWithFolderLevelPermissions.d.ts +1 -1
  79. package/folder/useCases/GetFolderHierarchy/GetFolderHierarchyWithFolderLevelPermissions.js.map +1 -1
  80. package/folder/useCases/GetFolderHierarchy/index.d.ts +1 -1
  81. package/folder/useCases/GetFolderHierarchy/index.js.map +1 -1
  82. package/folder/useCases/ListFolders/IListFolders.d.ts +1 -1
  83. package/folder/useCases/ListFolders/IListFolders.js.map +1 -1
  84. package/folder/useCases/ListFolders/ListFolders.d.ts +1 -1
  85. package/folder/useCases/ListFolders/ListFolders.js.map +1 -1
  86. package/folder/useCases/ListFolders/ListFoldersWithFolderLevelPermissions.d.ts +1 -1
  87. package/folder/useCases/ListFolders/ListFoldersWithFolderLevelPermissions.js.map +1 -1
  88. package/folder/useCases/ListFolders/index.d.ts +1 -1
  89. package/folder/useCases/ListFolders/index.js.map +1 -1
  90. package/folder/useCases/UpdateFolder/UpdateFolderWithFolderLevelPermissions.d.ts +1 -1
  91. package/folder/useCases/UpdateFolder/UpdateFolderWithFolderLevelPermissions.js +1 -1
  92. package/folder/useCases/UpdateFolder/UpdateFolderWithFolderLevelPermissions.js.map +1 -1
  93. package/folder/useCases/UpdateFolder/index.d.ts +2 -2
  94. package/folder/useCases/UpdateFolder/index.js.map +1 -1
  95. package/index.d.ts +1 -1
  96. package/index.js.map +1 -1
  97. package/package.json +28 -28
  98. package/plugins/AcoAppModifierPlugin.d.ts +2 -2
  99. package/plugins/AcoAppModifierPlugin.js.map +1 -1
  100. package/plugins/AcoAppRegisterPlugin.d.ts +1 -1
  101. package/plugins/AcoAppRegisterPlugin.js.map +1 -1
  102. package/record/graphql/createAppResolvers.d.ts +2 -2
  103. package/record/graphql/createAppResolvers.js.map +1 -1
  104. package/record/graphql/createAppSchema.d.ts +2 -2
  105. package/record/graphql/createAppSchema.js +2 -2
  106. package/record/graphql/createAppSchema.js.map +1 -1
  107. package/record/record.crud.d.ts +2 -2
  108. package/record/record.crud.js.map +1 -1
  109. package/record/record.gql.d.ts +1 -1
  110. package/record/record.gql.js.map +1 -1
  111. package/record/record.model.d.ts +1 -1
  112. package/record/record.model.js.map +1 -1
  113. package/record/record.so.d.ts +2 -2
  114. package/record/record.so.js.map +1 -1
  115. package/record/record.types.d.ts +3 -3
  116. package/record/record.types.js.map +1 -1
  117. package/types.d.ts +9 -9
  118. package/types.js.map +1 -1
  119. package/utils/FoldersCacheFactory.d.ts +1 -1
  120. package/utils/FoldersCacheFactory.js.map +1 -1
  121. package/utils/ListFoldersRepository.d.ts +2 -2
  122. package/utils/ListFoldersRepository.js.map +1 -1
  123. package/utils/createListSort.d.ts +2 -2
  124. package/utils/createListSort.js.map +1 -1
  125. package/utils/createModelField.d.ts +1 -1
  126. package/utils/createModelField.js.map +1 -1
  127. package/utils/createOperationsWrapper.d.ts +2 -2
  128. package/utils/createOperationsWrapper.js.map +1 -1
  129. package/utils/decorators/CmsEntriesCrudDecorators.d.ts +2 -2
  130. package/utils/decorators/CmsEntriesCrudDecorators.js +14 -14
  131. package/utils/decorators/CmsEntriesCrudDecorators.js.map +1 -1
  132. package/utils/decorators/FilterEntriesByFolderFactory.d.ts +2 -2
  133. package/utils/decorators/FilterEntriesByFolderFactory.js.map +1 -1
  134. package/utils/decorators/ListEntriesFactory.d.ts +3 -2
  135. package/utils/decorators/ListEntriesFactory.js.map +1 -1
  136. package/utils/decorators/decorateIfModelAuthorizationEnabled.d.ts +2 -3
  137. package/utils/decorators/decorateIfModelAuthorizationEnabled.js +1 -5
  138. package/utils/decorators/decorateIfModelAuthorizationEnabled.js.map +1 -1
  139. package/utils/decorators/hasRootFolderId.d.ts +1 -1
  140. package/utils/decorators/hasRootFolderId.js.map +1 -1
  141. package/utils/decorators/isPageModel.d.ts +1 -1
  142. package/utils/decorators/isPageModel.js.map +1 -1
  143. package/utils/ensureAuthentication.d.ts +1 -1
  144. package/utils/ensureAuthentication.js.map +1 -1
  145. package/utils/modelFactory.d.ts +1 -1
  146. package/utils/modelFactory.js.map +1 -1
  147. package/utils/pickEntryFieldValues.d.ts +1 -1
  148. package/utils/pickEntryFieldValues.js.map +1 -1
  149. package/utils/resolve.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["GetDefaultPermissionsWithTeams","constructor","getIdentityGateway","listIdentityTeamsGateway","decoretee","execute","originalPermissions","identity","identityTeams","permissions","length","identityTeam","teamPermission","find","p","target","id","push","level","inheritedFrom","exports"],"sources":["GetDefaultPermissionsWithTeams.ts"],"sourcesContent":["import type { IGetDefaultPermissions } from \"./IGetDefaultPermissions\";\nimport type {\n IGetIdentityGateway,\n IListIdentityTeamsGateway\n} from \"~/flp/FolderLevelPermissions/gateways\";\nimport type { FolderPermission } from \"~/flp/flp.types\";\nimport { Team } from \"@webiny/api-security/types\";\n\nexport class GetDefaultPermissionsWithTeams implements IGetDefaultPermissions {\n private getIdentityGateway: IGetIdentityGateway;\n private listIdentityTeamsGateway: IListIdentityTeamsGateway;\n private decoretee: IGetDefaultPermissions;\n\n constructor(\n getIdentityGateway: IGetIdentityGateway,\n listIdentityTeamsGateway: IListIdentityTeamsGateway,\n decoretee: IGetDefaultPermissions\n ) {\n this.getIdentityGateway = getIdentityGateway;\n this.listIdentityTeamsGateway = listIdentityTeamsGateway;\n this.decoretee = decoretee;\n }\n\n async execute(originalPermissions: FolderPermission[]) {\n /**\n * Retrieves the list of teams the current identity belongs to and checks if any of these teams\n * have permissions for the folder. If a team has permissions, the current identity is granted\n * the same permissions, inheriting them from the team.\n */\n const identity = this.getIdentityGateway.execute();\n const identityTeams: Team[] = (await this.listIdentityTeamsGateway.execute()) ?? [];\n\n const permissions = [...originalPermissions]; // Clone the original permissions to avoid mutation.\n\n if (identityTeams.length) {\n for (const identityTeam of identityTeams) {\n // Check if the team has permissions for the folder.\n const teamPermission = permissions.find(\n p => p.target === `team:${identityTeam.id}`\n );\n\n if (teamPermission) {\n // Grant the current identity the same permissions as the team, marking them as inherited.\n permissions.push({\n target: `admin:${identity.id}`,\n level: teamPermission.level,\n inheritedFrom: \"team:\" + identityTeam.id\n });\n }\n }\n }\n\n return await this.decoretee.execute(permissions);\n }\n}\n"],"mappings":";;;;;;AAQO,MAAMA,8BAA8B,CAAmC;EAK1EC,WAAWA,CACPC,kBAAuC,EACvCC,wBAAmD,EACnDC,SAAiC,EACnC;IACE,IAAI,CAACF,kBAAkB,GAAGA,kBAAkB;IAC5C,IAAI,CAACC,wBAAwB,GAAGA,wBAAwB;IACxD,IAAI,CAACC,SAAS,GAAGA,SAAS;EAC9B;EAEA,MAAMC,OAAOA,CAACC,mBAAuC,EAAE;IACnD;AACR;AACA;AACA;AACA;IACQ,MAAMC,QAAQ,GAAG,IAAI,CAACL,kBAAkB,CAACG,OAAO,CAAC,CAAC;IAClD,MAAMG,aAAqB,GAAG,CAAC,MAAM,IAAI,CAACL,wBAAwB,CAACE,OAAO,CAAC,CAAC,KAAK,EAAE;IAEnF,MAAMI,WAAW,GAAG,CAAC,GAAGH,mBAAmB,CAAC,CAAC,CAAC;;IAE9C,IAAIE,aAAa,CAACE,MAAM,EAAE;MACtB,KAAK,MAAMC,YAAY,IAAIH,aAAa,EAAE;QACtC;QACA,MAAMI,cAAc,GAAGH,WAAW,CAACI,IAAI,CACnCC,CAAC,IAAIA,CAAC,CAACC,MAAM,KAAK,QAAQJ,YAAY,CAACK,EAAE,EAC7C,CAAC;QAED,IAAIJ,cAAc,EAAE;UAChB;UACAH,WAAW,CAACQ,IAAI,CAAC;YACbF,MAAM,EAAE,SAASR,QAAQ,CAACS,EAAE,EAAE;YAC9BE,KAAK,EAAEN,cAAc,CAACM,KAAK;YAC3BC,aAAa,EAAE,OAAO,GAAGR,YAAY,CAACK;UAC1C,CAAC,CAAC;QACN;MACJ;IACJ;IAEA,OAAO,MAAM,IAAI,CAACZ,SAAS,CAACC,OAAO,CAACI,WAAW,CAAC;EACpD;AACJ;AAACW,OAAA,CAAApB,8BAAA,GAAAA,8BAAA","ignoreList":[]}
1
+ {"version":3,"names":["GetDefaultPermissionsWithTeams","constructor","getIdentityGateway","listIdentityTeamsGateway","decoretee","execute","originalPermissions","identity","identityTeams","permissions","length","identityTeam","teamPermission","find","p","target","id","push","level","inheritedFrom","exports"],"sources":["GetDefaultPermissionsWithTeams.ts"],"sourcesContent":["import type { IGetDefaultPermissions } from \"./IGetDefaultPermissions\";\nimport type {\n IGetIdentityGateway,\n IListIdentityTeamsGateway\n} from \"~/flp/FolderLevelPermissions/gateways\";\nimport type { FolderPermission } from \"~/flp/flp.types\";\nimport type { Team } from \"@webiny/api-security/types\";\n\nexport class GetDefaultPermissionsWithTeams implements IGetDefaultPermissions {\n private getIdentityGateway: IGetIdentityGateway;\n private listIdentityTeamsGateway: IListIdentityTeamsGateway;\n private decoretee: IGetDefaultPermissions;\n\n constructor(\n getIdentityGateway: IGetIdentityGateway,\n listIdentityTeamsGateway: IListIdentityTeamsGateway,\n decoretee: IGetDefaultPermissions\n ) {\n this.getIdentityGateway = getIdentityGateway;\n this.listIdentityTeamsGateway = listIdentityTeamsGateway;\n this.decoretee = decoretee;\n }\n\n async execute(originalPermissions: FolderPermission[]) {\n /**\n * Retrieves the list of teams the current identity belongs to and checks if any of these teams\n * have permissions for the folder. If a team has permissions, the current identity is granted\n * the same permissions, inheriting them from the team.\n */\n const identity = this.getIdentityGateway.execute();\n const identityTeams: Team[] = (await this.listIdentityTeamsGateway.execute()) ?? [];\n\n const permissions = [...originalPermissions]; // Clone the original permissions to avoid mutation.\n\n if (identityTeams.length) {\n for (const identityTeam of identityTeams) {\n // Check if the team has permissions for the folder.\n const teamPermission = permissions.find(\n p => p.target === `team:${identityTeam.id}`\n );\n\n if (teamPermission) {\n // Grant the current identity the same permissions as the team, marking them as inherited.\n permissions.push({\n target: `admin:${identity.id}`,\n level: teamPermission.level,\n inheritedFrom: \"team:\" + identityTeam.id\n });\n }\n }\n }\n\n return await this.decoretee.execute(permissions);\n }\n}\n"],"mappings":";;;;;;AAQO,MAAMA,8BAA8B,CAAmC;EAK1EC,WAAWA,CACPC,kBAAuC,EACvCC,wBAAmD,EACnDC,SAAiC,EACnC;IACE,IAAI,CAACF,kBAAkB,GAAGA,kBAAkB;IAC5C,IAAI,CAACC,wBAAwB,GAAGA,wBAAwB;IACxD,IAAI,CAACC,SAAS,GAAGA,SAAS;EAC9B;EAEA,MAAMC,OAAOA,CAACC,mBAAuC,EAAE;IACnD;AACR;AACA;AACA;AACA;IACQ,MAAMC,QAAQ,GAAG,IAAI,CAACL,kBAAkB,CAACG,OAAO,CAAC,CAAC;IAClD,MAAMG,aAAqB,GAAG,CAAC,MAAM,IAAI,CAACL,wBAAwB,CAACE,OAAO,CAAC,CAAC,KAAK,EAAE;IAEnF,MAAMI,WAAW,GAAG,CAAC,GAAGH,mBAAmB,CAAC,CAAC,CAAC;;IAE9C,IAAIE,aAAa,CAACE,MAAM,EAAE;MACtB,KAAK,MAAMC,YAAY,IAAIH,aAAa,EAAE;QACtC;QACA,MAAMI,cAAc,GAAGH,WAAW,CAACI,IAAI,CACnCC,CAAC,IAAIA,CAAC,CAACC,MAAM,KAAK,QAAQJ,YAAY,CAACK,EAAE,EAC7C,CAAC;QAED,IAAIJ,cAAc,EAAE;UAChB;UACAH,WAAW,CAACQ,IAAI,CAAC;YACbF,MAAM,EAAE,SAASR,QAAQ,CAACS,EAAE,EAAE;YAC9BE,KAAK,EAAEN,cAAc,CAACM,KAAK;YAC3BC,aAAa,EAAE,OAAO,GAAGR,YAAY,CAACK;UAC1C,CAAC,CAAC;QACN;MACJ;IACJ;IAEA,OAAO,MAAM,IAAI,CAACZ,SAAS,CAACC,OAAO,CAACI,WAAW,CAAC;EACpD;AACJ;AAACW,OAAA,CAAApB,8BAAA,GAAAA,8BAAA","ignoreList":[]}
package/flp/flp.crud.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { I18NLocale } from "@webiny/api-i18n/types";
2
- import { Tenant } from "@webiny/api-tenancy/types";
1
+ import type { I18NLocale } from "@webiny/api-i18n/types";
2
+ import type { Tenant } from "@webiny/api-tenancy/types";
3
3
  import { type AcoFolderLevelPermissionsCrud, type AcoStorageOperations } from "../types";
4
4
  export interface CreateFlpCrudMethodsParams {
5
5
  getLocale: () => I18NLocale;
@@ -1 +1 @@
1
- {"version":3,"names":["_pubsub","require","_error","createFlpCrudMethods","storageOperations","getTenant","getLocale","onFlpBeforeCreate","createTopic","onFlpAfterCreate","onFlpBeforeUpdate","onFlpAfterUpdate","onFlpBeforeDelete","onFlpAfterDelete","onFlpBatchBeforeUpdate","onFlpBatchAfterUpdate","create","params","publish","input","flp","data","tenant","id","locale","code","update","original","get","WebinyError","batchUpdate","items","batchItems","Promise","all","map","filter","item","length","updatedItems","index","delete","list","where","exports"],"sources":["flp.crud.ts"],"sourcesContent":["import { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport {\n type AcoFolderLevelPermissionsCrud,\n type AcoStorageOperations,\n type CreateFlpParams,\n type OnFlpAfterCreateTopicParams,\n type OnFlpAfterDeleteTopicParams,\n type OnFlpAfterUpdateTopicParams,\n type OnFlpBeforeCreateTopicParams,\n type OnFlpBeforeDeleteTopicParams,\n type OnFlpBeforeUpdateTopicParams,\n type OnFlpBatchBeforeUpdateTopicParams,\n type OnFlpBatchAfterUpdateTopicParams,\n type UpdateFlpParams\n} from \"~/types\";\nimport { WebinyError } from \"@webiny/error\";\n\nexport interface CreateFlpCrudMethodsParams {\n getLocale: () => I18NLocale;\n getTenant: () => Tenant;\n storageOperations: AcoStorageOperations;\n}\n\nexport const createFlpCrudMethods = ({\n storageOperations,\n getTenant,\n getLocale\n}: CreateFlpCrudMethodsParams): AcoFolderLevelPermissionsCrud => {\n // create\n const onFlpBeforeCreate = createTopic<OnFlpBeforeCreateTopicParams>(\"aco.onFlpBeforeCreate\");\n const onFlpAfterCreate = createTopic<OnFlpAfterCreateTopicParams>(\"aco.onFlpAfterCreate\");\n // update\n const onFlpBeforeUpdate = createTopic<OnFlpBeforeUpdateTopicParams>(\"aco.onFlpBeforeUpdate\");\n const onFlpAfterUpdate = createTopic<OnFlpAfterUpdateTopicParams>(\"aco.onFlpAfterUpdate\");\n // delete\n const onFlpBeforeDelete = createTopic<OnFlpBeforeDeleteTopicParams>(\"aco.onFlpBeforeDelete\");\n const onFlpAfterDelete = createTopic<OnFlpAfterDeleteTopicParams>(\"aco.onFlpAfterDelete\");\n // batch update\n const onFlpBatchBeforeUpdate = createTopic<OnFlpBatchBeforeUpdateTopicParams>(\n \"aco.onFlpBatchBeforeUpdate\"\n );\n const onFlpBatchAfterUpdate = createTopic<OnFlpBatchAfterUpdateTopicParams>(\n \"aco.onFlpBatchAfterUpdate\"\n );\n\n return {\n onFlpBeforeCreate,\n onFlpAfterCreate,\n onFlpBeforeUpdate,\n onFlpAfterUpdate,\n onFlpBeforeDelete,\n onFlpAfterDelete,\n onFlpBatchBeforeUpdate,\n onFlpBatchAfterUpdate,\n async create(params: CreateFlpParams) {\n await onFlpBeforeCreate.publish({ input: params });\n const flp = await storageOperations.flp.create({\n data: { ...params, tenant: getTenant().id, locale: getLocale().code }\n });\n await onFlpAfterCreate.publish({ flp });\n return flp;\n },\n async update(id: string, data: UpdateFlpParams) {\n const original = await this.get(id);\n if (!original) {\n throw new WebinyError(\n `Folder level permission with id \"${id}\" not found.`,\n \"GET_ITEM_UPDATE_FLP_ERROR\",\n {\n id,\n data\n }\n );\n }\n await onFlpBeforeUpdate.publish({ original, input: { id, data } });\n const flp = await storageOperations.flp.update({\n original,\n data: {\n ...data,\n tenant: getTenant().id,\n locale: getLocale().code\n }\n });\n await onFlpAfterUpdate.publish({ original, input: { id, data }, flp });\n return flp;\n },\n async batchUpdate(items: Array<{ id: string; data: UpdateFlpParams }>) {\n const batchItems = (\n await Promise.all(\n items.map(async ({ id, data }) => {\n const original = await this.get(id);\n if (!original) {\n return null;\n }\n return {\n original,\n data: {\n ...data,\n tenant: getTenant().id,\n locale: getLocale().code\n }\n };\n })\n )\n ).filter((item): item is NonNullable<typeof item> => item !== null);\n\n if (batchItems.length === 0) {\n return [];\n }\n\n await onFlpBatchBeforeUpdate.publish({\n items: batchItems.map(({ original, data }) => ({\n original,\n input: data\n }))\n });\n\n const updatedItems = await storageOperations.flp.batchUpdate({\n items: batchItems\n });\n\n await onFlpBatchAfterUpdate.publish({\n items: batchItems.map(({ original }, index) => ({\n original,\n flp: updatedItems[index],\n input: items[index].data\n }))\n });\n\n return updatedItems;\n },\n async delete(id: string) {\n const flp = await this.get(id);\n if (!flp) {\n throw new WebinyError(\n `Folder level permission with id \"${id}\" not found.`,\n \"GET_ITEM_DELETE_FLP_ERROR\",\n {\n id\n }\n );\n }\n await onFlpBeforeDelete.publish({ flp });\n await storageOperations.flp.delete({\n flp: {\n ...flp,\n tenant: getTenant().id,\n locale: getLocale().code\n }\n });\n await onFlpAfterDelete.publish({ flp });\n return true;\n },\n async get(id: string) {\n return await storageOperations.flp.get({\n id,\n tenant: getTenant().id,\n locale: getLocale().code\n });\n },\n async list({ where }) {\n return await storageOperations.flp.list({\n where: {\n ...where,\n tenant: getTenant().id,\n locale: getLocale().code\n }\n });\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_pubsub","require","_error","createFlpCrudMethods","storageOperations","getTenant","getLocale","onFlpBeforeCreate","createTopic","onFlpAfterCreate","onFlpBeforeUpdate","onFlpAfterUpdate","onFlpBeforeDelete","onFlpAfterDelete","onFlpBatchBeforeUpdate","onFlpBatchAfterUpdate","create","params","publish","input","flp","data","tenant","id","locale","code","update","original","get","WebinyError","batchUpdate","items","batchItems","Promise","all","map","filter","item","length","updatedItems","index","delete","list","where","exports"],"sources":["flp.crud.ts"],"sourcesContent":["import type { I18NLocale } from \"@webiny/api-i18n/types\";\nimport type { Tenant } from \"@webiny/api-tenancy/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport {\n type AcoFolderLevelPermissionsCrud,\n type AcoStorageOperations,\n type CreateFlpParams,\n type OnFlpAfterCreateTopicParams,\n type OnFlpAfterDeleteTopicParams,\n type OnFlpAfterUpdateTopicParams,\n type OnFlpBeforeCreateTopicParams,\n type OnFlpBeforeDeleteTopicParams,\n type OnFlpBeforeUpdateTopicParams,\n type OnFlpBatchBeforeUpdateTopicParams,\n type OnFlpBatchAfterUpdateTopicParams,\n type UpdateFlpParams\n} from \"~/types\";\nimport { WebinyError } from \"@webiny/error\";\n\nexport interface CreateFlpCrudMethodsParams {\n getLocale: () => I18NLocale;\n getTenant: () => Tenant;\n storageOperations: AcoStorageOperations;\n}\n\nexport const createFlpCrudMethods = ({\n storageOperations,\n getTenant,\n getLocale\n}: CreateFlpCrudMethodsParams): AcoFolderLevelPermissionsCrud => {\n // create\n const onFlpBeforeCreate = createTopic<OnFlpBeforeCreateTopicParams>(\"aco.onFlpBeforeCreate\");\n const onFlpAfterCreate = createTopic<OnFlpAfterCreateTopicParams>(\"aco.onFlpAfterCreate\");\n // update\n const onFlpBeforeUpdate = createTopic<OnFlpBeforeUpdateTopicParams>(\"aco.onFlpBeforeUpdate\");\n const onFlpAfterUpdate = createTopic<OnFlpAfterUpdateTopicParams>(\"aco.onFlpAfterUpdate\");\n // delete\n const onFlpBeforeDelete = createTopic<OnFlpBeforeDeleteTopicParams>(\"aco.onFlpBeforeDelete\");\n const onFlpAfterDelete = createTopic<OnFlpAfterDeleteTopicParams>(\"aco.onFlpAfterDelete\");\n // batch update\n const onFlpBatchBeforeUpdate = createTopic<OnFlpBatchBeforeUpdateTopicParams>(\n \"aco.onFlpBatchBeforeUpdate\"\n );\n const onFlpBatchAfterUpdate = createTopic<OnFlpBatchAfterUpdateTopicParams>(\n \"aco.onFlpBatchAfterUpdate\"\n );\n\n return {\n onFlpBeforeCreate,\n onFlpAfterCreate,\n onFlpBeforeUpdate,\n onFlpAfterUpdate,\n onFlpBeforeDelete,\n onFlpAfterDelete,\n onFlpBatchBeforeUpdate,\n onFlpBatchAfterUpdate,\n async create(params: CreateFlpParams) {\n await onFlpBeforeCreate.publish({ input: params });\n const flp = await storageOperations.flp.create({\n data: { ...params, tenant: getTenant().id, locale: getLocale().code }\n });\n await onFlpAfterCreate.publish({ flp });\n return flp;\n },\n async update(id: string, data: UpdateFlpParams) {\n const original = await this.get(id);\n if (!original) {\n throw new WebinyError(\n `Folder level permission with id \"${id}\" not found.`,\n \"GET_ITEM_UPDATE_FLP_ERROR\",\n {\n id,\n data\n }\n );\n }\n await onFlpBeforeUpdate.publish({ original, input: { id, data } });\n const flp = await storageOperations.flp.update({\n original,\n data: {\n ...data,\n tenant: getTenant().id,\n locale: getLocale().code\n }\n });\n await onFlpAfterUpdate.publish({ original, input: { id, data }, flp });\n return flp;\n },\n async batchUpdate(items: Array<{ id: string; data: UpdateFlpParams }>) {\n const batchItems = (\n await Promise.all(\n items.map(async ({ id, data }) => {\n const original = await this.get(id);\n if (!original) {\n return null;\n }\n return {\n original,\n data: {\n ...data,\n tenant: getTenant().id,\n locale: getLocale().code\n }\n };\n })\n )\n ).filter((item): item is NonNullable<typeof item> => item !== null);\n\n if (batchItems.length === 0) {\n return [];\n }\n\n await onFlpBatchBeforeUpdate.publish({\n items: batchItems.map(({ original, data }) => ({\n original,\n input: data\n }))\n });\n\n const updatedItems = await storageOperations.flp.batchUpdate({\n items: batchItems\n });\n\n await onFlpBatchAfterUpdate.publish({\n items: batchItems.map(({ original }, index) => ({\n original,\n flp: updatedItems[index],\n input: items[index].data\n }))\n });\n\n return updatedItems;\n },\n async delete(id: string) {\n const flp = await this.get(id);\n if (!flp) {\n throw new WebinyError(\n `Folder level permission with id \"${id}\" not found.`,\n \"GET_ITEM_DELETE_FLP_ERROR\",\n {\n id\n }\n );\n }\n await onFlpBeforeDelete.publish({ flp });\n await storageOperations.flp.delete({\n flp: {\n ...flp,\n tenant: getTenant().id,\n locale: getLocale().code\n }\n });\n await onFlpAfterDelete.publish({ flp });\n return true;\n },\n async get(id: string) {\n return await storageOperations.flp.get({\n id,\n tenant: getTenant().id,\n locale: getLocale().code\n });\n },\n async list({ where }) {\n return await storageOperations.flp.list({\n where: {\n ...where,\n tenant: getTenant().id,\n locale: getLocale().code\n }\n });\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
package/flp/flp.so.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb";
1
+ import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb";
2
2
  import type { AcoFolderLevelPermissionsStorageOperations as IAcoFolderLevelPermissionsStorageOperations, FolderLevelPermission, StorageOperationsCreateFlpParams, StorageOperationsDeleteFlpParams, StorageOperationsGetFlpParams, StorageOperationsListFlpsParams, StorageOperationsUpdateFlpParams, StorageOperationsBatchUpdateFlpParams } from "./flp.types";
3
3
  interface StorageOperationsConfig {
4
4
  documentClient: DynamoDBDocument;
package/flp/flp.so.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_toolbox","require","_dbDynamodb","_EntityWriteBatch","_error","_utils","FolderLevelPermissionsStorageOperations","constructor","documentClient","table","createTable","entity","createEntity","name","list","where","tenant","locale","type","path_startsWith","parentId","entries","queryAllClean","partitionKey","options","index","eq","map","entry","data","beginsWith","WebinyError","err","from","message","code","get","id","getClean","keys","createKeys","create","createGsiKeys","put","item","update","inputData","original","delete","flp","deleteItem","batchUpdate","items","batch","createEntityWriteBatch","updatedItems","push","executeWithRetry","execute","params","Entity","attributes","PK","SK","sortKey","GSI1_PK","required","GSI1_SK","GSI2_PK","GSI2_SK","TYPE","Table","String","process","env","DB_TABLE","DocumentClient","indexes","GSI1","GSI2","autoExecute","autoParse","path","createFlpOperations","exports"],"sources":["flp.so.ts"],"sourcesContent":["import { Entity, Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport { deleteItem, getClean, put, queryAllClean } from \"@webiny/db-dynamodb\";\nimport { createEntityWriteBatch } from \"@webiny/db-dynamodb/utils/entity/EntityWriteBatch\";\n\nimport { WebinyError } from \"@webiny/error\";\nimport type {\n AcoFolderLevelPermissionsStorageOperations as IAcoFolderLevelPermissionsStorageOperations,\n FolderLevelPermission,\n StorageOperationsCreateFlpParams,\n StorageOperationsDeleteFlpParams,\n StorageOperationsGetFlpParams,\n StorageOperationsListFlpsParams,\n StorageOperationsUpdateFlpParams,\n StorageOperationsBatchUpdateFlpParams\n} from \"~/flp/flp.types\";\nimport { executeWithRetry } from \"@webiny/utils\";\n\ninterface StorageOperationsConfig {\n documentClient: DynamoDBDocument;\n}\n\nexport interface CreateTableParams {\n name?: string;\n documentClient: DynamoDBDocument;\n}\n\ninterface CreateEntityParams {\n table: Table<string, string, string>;\n name: string;\n}\n\ninterface CreateKeysParams {\n tenant: string;\n locale: string;\n id: string;\n}\n\ninterface CreateGsiKeysParams {\n tenant: string;\n locale: string;\n id: string;\n type: string;\n path: string;\n parentId: string;\n}\n\nclass FolderLevelPermissionsStorageOperations\n implements IAcoFolderLevelPermissionsStorageOperations\n{\n private readonly entity: Entity<any>;\n private readonly table: Table<string, string, string>;\n\n constructor({ documentClient }: StorageOperationsConfig) {\n this.table = this.createTable({ documentClient });\n\n this.entity = this.createEntity({\n table: this.table,\n name: \"ACO.flp\"\n });\n }\n\n async list({\n where: { tenant, locale, type, path_startsWith, parentId }\n }: StorageOperationsListFlpsParams): Promise<FolderLevelPermission[]> {\n try {\n if (parentId) {\n const entries = await queryAllClean<{ data: FolderLevelPermission }>({\n entity: this.entity,\n partitionKey: `T#${tenant}#L#${locale}#FLP`,\n options: {\n index: \"GSI2\",\n eq: parentId\n }\n });\n return entries.map(entry => entry.data);\n }\n\n if (path_startsWith) {\n const entries = await queryAllClean<{ data: FolderLevelPermission }>({\n entity: this.entity,\n partitionKey: `T#${tenant}#L#${locale}#AT#${type}#FLP`,\n options: {\n index: \"GSI1\",\n beginsWith: path_startsWith\n }\n });\n return entries.map(entry => entry.data);\n }\n\n throw new WebinyError(\"Missing required parameters.\", \"LIST_FLP_MISSING_PARAMETERS\", {\n tenant,\n locale,\n type,\n path_startsWith,\n parentId\n });\n } catch (err) {\n throw WebinyError.from(err, {\n message: \"Could not list folder level permissions.\",\n code: \"LIST_FLP_ERROR\"\n });\n }\n }\n\n async get({\n tenant,\n locale,\n id\n }: StorageOperationsGetFlpParams): Promise<FolderLevelPermission | null> {\n try {\n const entry = await getClean<{ data: FolderLevelPermission }>({\n entity: this.entity,\n keys: this.createKeys({ tenant, locale, id })\n });\n\n if (!entry) {\n return null;\n }\n\n return entry.data;\n } catch (err) {\n throw WebinyError.from(err, {\n message: \"Could not load folder level permission.\",\n code: \"GET_FLP_ERROR\",\n data: { tenant, locale, id }\n });\n }\n }\n\n async create({ data }: StorageOperationsCreateFlpParams): Promise<FolderLevelPermission> {\n const keys = {\n ...this.createKeys(data),\n ...this.createGsiKeys(data)\n };\n\n try {\n await put({\n entity: this.entity,\n item: {\n ...keys,\n data\n }\n });\n\n return data;\n } catch (err) {\n throw WebinyError.from(err, {\n message: \"Could not create folder level permission.\",\n code: \"CREATE_FLP_ERROR\",\n data: { keys, data }\n });\n }\n }\n\n async update({\n data: inputData,\n original\n }: StorageOperationsUpdateFlpParams): Promise<FolderLevelPermission> {\n try {\n const data = {\n ...original,\n ...inputData\n };\n\n const keys = {\n ...this.createKeys(data),\n ...this.createGsiKeys(data)\n };\n\n await put({\n entity: this.entity,\n item: {\n ...keys,\n data\n }\n });\n\n return data;\n } catch (err) {\n throw WebinyError.from(err, {\n message: \"Could not update folder level permission.\",\n code: \"UPDATE_FLP_ERROR\",\n data: { inputData, original }\n });\n }\n }\n\n async delete({ flp }: StorageOperationsDeleteFlpParams): Promise<void> {\n const keys = this.createKeys(flp);\n\n try {\n await deleteItem({\n entity: this.entity,\n keys\n });\n } catch (err) {\n throw WebinyError.from(err, {\n message: \"Could not delete folder level permission.\",\n code: \"DELETE_FLP_ERROR\",\n data: { keys, flp }\n });\n }\n }\n\n async batchUpdate({\n items\n }: StorageOperationsBatchUpdateFlpParams): Promise<FolderLevelPermission[]> {\n try {\n const batch = createEntityWriteBatch({\n entity: this.entity\n });\n\n const updatedItems: FolderLevelPermission[] = [];\n\n for (const { original, data: inputData } of items) {\n const data = {\n ...original,\n ...inputData\n };\n\n const keys = {\n ...this.createKeys(data),\n ...this.createGsiKeys(data)\n };\n\n batch.put({\n ...keys,\n data\n });\n\n updatedItems.push(data);\n }\n\n await executeWithRetry(async () => {\n return await batch.execute();\n });\n\n return updatedItems;\n } catch (err) {\n throw WebinyError.from(err, {\n message: \"Could not batch update folder level permissions.\",\n code: \"BATCH_UPDATE_FLP_ERROR\",\n data: { items }\n });\n }\n }\n\n private createEntity = (params: CreateEntityParams): Entity<any> => {\n return new Entity({\n name: params.name,\n table: params.table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n GSI1_PK: {\n type: \"string\",\n required: true\n },\n GSI1_SK: {\n type: \"string\",\n required: true\n },\n GSI2_PK: {\n type: \"string\",\n required: true\n },\n GSI2_SK: {\n type: \"string\",\n required: true\n },\n TYPE: {\n type: \"string\"\n },\n data: {\n type: \"map\"\n }\n }\n });\n };\n\n private createTable = ({ name, documentClient }: CreateTableParams) => {\n return new Table({\n name: name || String(process.env.DB_TABLE),\n partitionKey: \"PK\",\n sortKey: \"SK\",\n DocumentClient: documentClient,\n indexes: {\n GSI1: {\n partitionKey: \"GSI1_PK\",\n sortKey: \"GSI1_SK\"\n },\n GSI2: {\n partitionKey: \"GSI2_PK\",\n sortKey: \"GSI2_SK\"\n }\n },\n autoExecute: true,\n autoParse: true\n });\n };\n\n private createKeys = ({ id, tenant, locale }: CreateKeysParams) => ({\n PK: `T#${tenant}#L#${locale}#FLP#${id}`,\n SK: `A`\n });\n\n private createGsiKeys = ({ tenant, locale, type, path, parentId }: CreateGsiKeysParams) => ({\n GSI1_PK: `T#${tenant}#L#${locale}#AT#${type}#FLP`,\n GSI1_SK: path,\n GSI2_PK: `T#${tenant}#L#${locale}#FLP`,\n GSI2_SK: parentId\n });\n}\n\nexport const createFlpOperations = (params: StorageOperationsConfig) => {\n return new FolderLevelPermissionsStorageOperations(params);\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_toolbox","require","_dbDynamodb","_EntityWriteBatch","_error","_utils","FolderLevelPermissionsStorageOperations","constructor","documentClient","table","createTable","entity","createEntity","name","list","where","tenant","locale","type","path_startsWith","parentId","entries","queryAllClean","partitionKey","options","index","eq","map","entry","data","beginsWith","WebinyError","err","from","message","code","get","id","getClean","keys","createKeys","create","createGsiKeys","put","item","update","inputData","original","delete","flp","deleteItem","batchUpdate","items","batch","createEntityWriteBatch","updatedItems","push","executeWithRetry","execute","params","Entity","attributes","PK","SK","sortKey","GSI1_PK","required","GSI1_SK","GSI2_PK","GSI2_SK","TYPE","Table","String","process","env","DB_TABLE","DocumentClient","indexes","GSI1","GSI2","autoExecute","autoParse","path","createFlpOperations","exports"],"sources":["flp.so.ts"],"sourcesContent":["import { Entity, Table } from \"@webiny/db-dynamodb/toolbox\";\nimport type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport { deleteItem, getClean, put, queryAllClean } from \"@webiny/db-dynamodb\";\nimport { createEntityWriteBatch } from \"@webiny/db-dynamodb/utils/entity/EntityWriteBatch\";\n\nimport { WebinyError } from \"@webiny/error\";\nimport type {\n AcoFolderLevelPermissionsStorageOperations as IAcoFolderLevelPermissionsStorageOperations,\n FolderLevelPermission,\n StorageOperationsCreateFlpParams,\n StorageOperationsDeleteFlpParams,\n StorageOperationsGetFlpParams,\n StorageOperationsListFlpsParams,\n StorageOperationsUpdateFlpParams,\n StorageOperationsBatchUpdateFlpParams\n} from \"~/flp/flp.types\";\nimport { executeWithRetry } from \"@webiny/utils\";\n\ninterface StorageOperationsConfig {\n documentClient: DynamoDBDocument;\n}\n\nexport interface CreateTableParams {\n name?: string;\n documentClient: DynamoDBDocument;\n}\n\ninterface CreateEntityParams {\n table: Table<string, string, string>;\n name: string;\n}\n\ninterface CreateKeysParams {\n tenant: string;\n locale: string;\n id: string;\n}\n\ninterface CreateGsiKeysParams {\n tenant: string;\n locale: string;\n id: string;\n type: string;\n path: string;\n parentId: string;\n}\n\nclass FolderLevelPermissionsStorageOperations\n implements IAcoFolderLevelPermissionsStorageOperations\n{\n private readonly entity: Entity<any>;\n private readonly table: Table<string, string, string>;\n\n constructor({ documentClient }: StorageOperationsConfig) {\n this.table = this.createTable({ documentClient });\n\n this.entity = this.createEntity({\n table: this.table,\n name: \"ACO.flp\"\n });\n }\n\n async list({\n where: { tenant, locale, type, path_startsWith, parentId }\n }: StorageOperationsListFlpsParams): Promise<FolderLevelPermission[]> {\n try {\n if (parentId) {\n const entries = await queryAllClean<{ data: FolderLevelPermission }>({\n entity: this.entity,\n partitionKey: `T#${tenant}#L#${locale}#FLP`,\n options: {\n index: \"GSI2\",\n eq: parentId\n }\n });\n return entries.map(entry => entry.data);\n }\n\n if (path_startsWith) {\n const entries = await queryAllClean<{ data: FolderLevelPermission }>({\n entity: this.entity,\n partitionKey: `T#${tenant}#L#${locale}#AT#${type}#FLP`,\n options: {\n index: \"GSI1\",\n beginsWith: path_startsWith\n }\n });\n return entries.map(entry => entry.data);\n }\n\n throw new WebinyError(\"Missing required parameters.\", \"LIST_FLP_MISSING_PARAMETERS\", {\n tenant,\n locale,\n type,\n path_startsWith,\n parentId\n });\n } catch (err) {\n throw WebinyError.from(err, {\n message: \"Could not list folder level permissions.\",\n code: \"LIST_FLP_ERROR\"\n });\n }\n }\n\n async get({\n tenant,\n locale,\n id\n }: StorageOperationsGetFlpParams): Promise<FolderLevelPermission | null> {\n try {\n const entry = await getClean<{ data: FolderLevelPermission }>({\n entity: this.entity,\n keys: this.createKeys({ tenant, locale, id })\n });\n\n if (!entry) {\n return null;\n }\n\n return entry.data;\n } catch (err) {\n throw WebinyError.from(err, {\n message: \"Could not load folder level permission.\",\n code: \"GET_FLP_ERROR\",\n data: { tenant, locale, id }\n });\n }\n }\n\n async create({ data }: StorageOperationsCreateFlpParams): Promise<FolderLevelPermission> {\n const keys = {\n ...this.createKeys(data),\n ...this.createGsiKeys(data)\n };\n\n try {\n await put({\n entity: this.entity,\n item: {\n ...keys,\n data\n }\n });\n\n return data;\n } catch (err) {\n throw WebinyError.from(err, {\n message: \"Could not create folder level permission.\",\n code: \"CREATE_FLP_ERROR\",\n data: { keys, data }\n });\n }\n }\n\n async update({\n data: inputData,\n original\n }: StorageOperationsUpdateFlpParams): Promise<FolderLevelPermission> {\n try {\n const data = {\n ...original,\n ...inputData\n };\n\n const keys = {\n ...this.createKeys(data),\n ...this.createGsiKeys(data)\n };\n\n await put({\n entity: this.entity,\n item: {\n ...keys,\n data\n }\n });\n\n return data;\n } catch (err) {\n throw WebinyError.from(err, {\n message: \"Could not update folder level permission.\",\n code: \"UPDATE_FLP_ERROR\",\n data: { inputData, original }\n });\n }\n }\n\n async delete({ flp }: StorageOperationsDeleteFlpParams): Promise<void> {\n const keys = this.createKeys(flp);\n\n try {\n await deleteItem({\n entity: this.entity,\n keys\n });\n } catch (err) {\n throw WebinyError.from(err, {\n message: \"Could not delete folder level permission.\",\n code: \"DELETE_FLP_ERROR\",\n data: { keys, flp }\n });\n }\n }\n\n async batchUpdate({\n items\n }: StorageOperationsBatchUpdateFlpParams): Promise<FolderLevelPermission[]> {\n try {\n const batch = createEntityWriteBatch({\n entity: this.entity\n });\n\n const updatedItems: FolderLevelPermission[] = [];\n\n for (const { original, data: inputData } of items) {\n const data = {\n ...original,\n ...inputData\n };\n\n const keys = {\n ...this.createKeys(data),\n ...this.createGsiKeys(data)\n };\n\n batch.put({\n ...keys,\n data\n });\n\n updatedItems.push(data);\n }\n\n await executeWithRetry(async () => {\n return await batch.execute();\n });\n\n return updatedItems;\n } catch (err) {\n throw WebinyError.from(err, {\n message: \"Could not batch update folder level permissions.\",\n code: \"BATCH_UPDATE_FLP_ERROR\",\n data: { items }\n });\n }\n }\n\n private createEntity = (params: CreateEntityParams): Entity<any> => {\n return new Entity({\n name: params.name,\n table: params.table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n GSI1_PK: {\n type: \"string\",\n required: true\n },\n GSI1_SK: {\n type: \"string\",\n required: true\n },\n GSI2_PK: {\n type: \"string\",\n required: true\n },\n GSI2_SK: {\n type: \"string\",\n required: true\n },\n TYPE: {\n type: \"string\"\n },\n data: {\n type: \"map\"\n }\n }\n });\n };\n\n private createTable = ({ name, documentClient }: CreateTableParams) => {\n return new Table({\n name: name || String(process.env.DB_TABLE),\n partitionKey: \"PK\",\n sortKey: \"SK\",\n DocumentClient: documentClient,\n indexes: {\n GSI1: {\n partitionKey: \"GSI1_PK\",\n sortKey: \"GSI1_SK\"\n },\n GSI2: {\n partitionKey: \"GSI2_PK\",\n sortKey: \"GSI2_SK\"\n }\n },\n autoExecute: true,\n autoParse: true\n });\n };\n\n private createKeys = ({ id, tenant, locale }: CreateKeysParams) => ({\n PK: `T#${tenant}#L#${locale}#FLP#${id}`,\n SK: `A`\n });\n\n private createGsiKeys = ({ tenant, locale, type, path, parentId }: CreateGsiKeysParams) => ({\n GSI1_PK: `T#${tenant}#L#${locale}#AT#${type}#FLP`,\n GSI1_SK: path,\n GSI2_PK: `T#${tenant}#L#${locale}#FLP`,\n GSI2_SK: parentId\n });\n}\n\nexport const createFlpOperations = (params: StorageOperationsConfig) => {\n return new FolderLevelPermissionsStorageOperations(params);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AAWA,IAAAI,MAAA,GAAAJ,OAAA;AA+BA,MAAMK,uCAAuC,CAE7C;EAIIC,WAAWA,CAAC;IAAEC;EAAwC,CAAC,EAAE;IACrD,IAAI,CAACC,KAAK,GAAG,IAAI,CAACC,WAAW,CAAC;MAAEF;IAAe,CAAC,CAAC;IAEjD,IAAI,CAACG,MAAM,GAAG,IAAI,CAACC,YAAY,CAAC;MAC5BH,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBI,IAAI,EAAE;IACV,CAAC,CAAC;EACN;EAEA,MAAMC,IAAIA,CAAC;IACPC,KAAK,EAAE;MAAEC,MAAM;MAAEC,MAAM;MAAEC,IAAI;MAAEC,eAAe;MAAEC;IAAS;EAC5B,CAAC,EAAoC;IAClE,IAAI;MACA,IAAIA,QAAQ,EAAE;QACV,MAAMC,OAAO,GAAG,MAAM,IAAAC,yBAAa,EAAkC;UACjEX,MAAM,EAAE,IAAI,CAACA,MAAM;UACnBY,YAAY,EAAE,KAAKP,MAAM,MAAMC,MAAM,MAAM;UAC3CO,OAAO,EAAE;YACLC,KAAK,EAAE,MAAM;YACbC,EAAE,EAAEN;UACR;QACJ,CAAC,CAAC;QACF,OAAOC,OAAO,CAACM,GAAG,CAACC,KAAK,IAAIA,KAAK,CAACC,IAAI,CAAC;MAC3C;MAEA,IAAIV,eAAe,EAAE;QACjB,MAAME,OAAO,GAAG,MAAM,IAAAC,yBAAa,EAAkC;UACjEX,MAAM,EAAE,IAAI,CAACA,MAAM;UACnBY,YAAY,EAAE,KAAKP,MAAM,MAAMC,MAAM,OAAOC,IAAI,MAAM;UACtDM,OAAO,EAAE;YACLC,KAAK,EAAE,MAAM;YACbK,UAAU,EAAEX;UAChB;QACJ,CAAC,CAAC;QACF,OAAOE,OAAO,CAACM,GAAG,CAACC,KAAK,IAAIA,KAAK,CAACC,IAAI,CAAC;MAC3C;MAEA,MAAM,IAAIE,kBAAW,CAAC,8BAA8B,EAAE,6BAA6B,EAAE;QACjFf,MAAM;QACNC,MAAM;QACNC,IAAI;QACJC,eAAe;QACfC;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOY,GAAG,EAAE;MACV,MAAMD,kBAAW,CAACE,IAAI,CAACD,GAAG,EAAE;QACxBE,OAAO,EAAE,0CAA0C;QACnDC,IAAI,EAAE;MACV,CAAC,CAAC;IACN;EACJ;EAEA,MAAMC,GAAGA,CAAC;IACNpB,MAAM;IACNC,MAAM;IACNoB;EAC2B,CAAC,EAAyC;IACrE,IAAI;MACA,MAAMT,KAAK,GAAG,MAAM,IAAAU,oBAAQ,EAAkC;QAC1D3B,MAAM,EAAE,IAAI,CAACA,MAAM;QACnB4B,IAAI,EAAE,IAAI,CAACC,UAAU,CAAC;UAAExB,MAAM;UAAEC,MAAM;UAAEoB;QAAG,CAAC;MAChD,CAAC,CAAC;MAEF,IAAI,CAACT,KAAK,EAAE;QACR,OAAO,IAAI;MACf;MAEA,OAAOA,KAAK,CAACC,IAAI;IACrB,CAAC,CAAC,OAAOG,GAAG,EAAE;MACV,MAAMD,kBAAW,CAACE,IAAI,CAACD,GAAG,EAAE;QACxBE,OAAO,EAAE,yCAAyC;QAClDC,IAAI,EAAE,eAAe;QACrBN,IAAI,EAAE;UAAEb,MAAM;UAAEC,MAAM;UAAEoB;QAAG;MAC/B,CAAC,CAAC;IACN;EACJ;EAEA,MAAMI,MAAMA,CAAC;IAAEZ;EAAuC,CAAC,EAAkC;IACrF,MAAMU,IAAI,GAAG;MACT,GAAG,IAAI,CAACC,UAAU,CAACX,IAAI,CAAC;MACxB,GAAG,IAAI,CAACa,aAAa,CAACb,IAAI;IAC9B,CAAC;IAED,IAAI;MACA,MAAM,IAAAc,eAAG,EAAC;QACNhC,MAAM,EAAE,IAAI,CAACA,MAAM;QACnBiC,IAAI,EAAE;UACF,GAAGL,IAAI;UACPV;QACJ;MACJ,CAAC,CAAC;MAEF,OAAOA,IAAI;IACf,CAAC,CAAC,OAAOG,GAAG,EAAE;MACV,MAAMD,kBAAW,CAACE,IAAI,CAACD,GAAG,EAAE;QACxBE,OAAO,EAAE,2CAA2C;QACpDC,IAAI,EAAE,kBAAkB;QACxBN,IAAI,EAAE;UAAEU,IAAI;UAAEV;QAAK;MACvB,CAAC,CAAC;IACN;EACJ;EAEA,MAAMgB,MAAMA,CAAC;IACThB,IAAI,EAAEiB,SAAS;IACfC;EAC8B,CAAC,EAAkC;IACjE,IAAI;MACA,MAAMlB,IAAI,GAAG;QACT,GAAGkB,QAAQ;QACX,GAAGD;MACP,CAAC;MAED,MAAMP,IAAI,GAAG;QACT,GAAG,IAAI,CAACC,UAAU,CAACX,IAAI,CAAC;QACxB,GAAG,IAAI,CAACa,aAAa,CAACb,IAAI;MAC9B,CAAC;MAED,MAAM,IAAAc,eAAG,EAAC;QACNhC,MAAM,EAAE,IAAI,CAACA,MAAM;QACnBiC,IAAI,EAAE;UACF,GAAGL,IAAI;UACPV;QACJ;MACJ,CAAC,CAAC;MAEF,OAAOA,IAAI;IACf,CAAC,CAAC,OAAOG,GAAG,EAAE;MACV,MAAMD,kBAAW,CAACE,IAAI,CAACD,GAAG,EAAE;QACxBE,OAAO,EAAE,2CAA2C;QACpDC,IAAI,EAAE,kBAAkB;QACxBN,IAAI,EAAE;UAAEiB,SAAS;UAAEC;QAAS;MAChC,CAAC,CAAC;IACN;EACJ;EAEA,MAAMC,MAAMA,CAAC;IAAEC;EAAsC,CAAC,EAAiB;IACnE,MAAMV,IAAI,GAAG,IAAI,CAACC,UAAU,CAACS,GAAG,CAAC;IAEjC,IAAI;MACA,MAAM,IAAAC,sBAAU,EAAC;QACbvC,MAAM,EAAE,IAAI,CAACA,MAAM;QACnB4B;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOP,GAAG,EAAE;MACV,MAAMD,kBAAW,CAACE,IAAI,CAACD,GAAG,EAAE;QACxBE,OAAO,EAAE,2CAA2C;QACpDC,IAAI,EAAE,kBAAkB;QACxBN,IAAI,EAAE;UAAEU,IAAI;UAAEU;QAAI;MACtB,CAAC,CAAC;IACN;EACJ;EAEA,MAAME,WAAWA,CAAC;IACdC;EACmC,CAAC,EAAoC;IACxE,IAAI;MACA,MAAMC,KAAK,GAAG,IAAAC,wCAAsB,EAAC;QACjC3C,MAAM,EAAE,IAAI,CAACA;MACjB,CAAC,CAAC;MAEF,MAAM4C,YAAqC,GAAG,EAAE;MAEhD,KAAK,MAAM;QAAER,QAAQ;QAAElB,IAAI,EAAEiB;MAAU,CAAC,IAAIM,KAAK,EAAE;QAC/C,MAAMvB,IAAI,GAAG;UACT,GAAGkB,QAAQ;UACX,GAAGD;QACP,CAAC;QAED,MAAMP,IAAI,GAAG;UACT,GAAG,IAAI,CAACC,UAAU,CAACX,IAAI,CAAC;UACxB,GAAG,IAAI,CAACa,aAAa,CAACb,IAAI;QAC9B,CAAC;QAEDwB,KAAK,CAACV,GAAG,CAAC;UACN,GAAGJ,IAAI;UACPV;QACJ,CAAC,CAAC;QAEF0B,YAAY,CAACC,IAAI,CAAC3B,IAAI,CAAC;MAC3B;MAEA,MAAM,IAAA4B,uBAAgB,EAAC,YAAY;QAC/B,OAAO,MAAMJ,KAAK,CAACK,OAAO,CAAC,CAAC;MAChC,CAAC,CAAC;MAEF,OAAOH,YAAY;IACvB,CAAC,CAAC,OAAOvB,GAAG,EAAE;MACV,MAAMD,kBAAW,CAACE,IAAI,CAACD,GAAG,EAAE;QACxBE,OAAO,EAAE,kDAAkD;QAC3DC,IAAI,EAAE,wBAAwB;QAC9BN,IAAI,EAAE;UAAEuB;QAAM;MAClB,CAAC,CAAC;IACN;EACJ;EAEQxC,YAAY,GAAI+C,MAA0B,IAAkB;IAChE,OAAO,IAAIC,eAAM,CAAC;MACd/C,IAAI,EAAE8C,MAAM,CAAC9C,IAAI;MACjBJ,KAAK,EAAEkD,MAAM,CAAClD,KAAK;MACnBoD,UAAU,EAAE;QACRC,EAAE,EAAE;UACAvC,YAAY,EAAE;QAClB,CAAC;QACDwC,EAAE,EAAE;UACAC,OAAO,EAAE;QACb,CAAC;QACDC,OAAO,EAAE;UACL/C,IAAI,EAAE,QAAQ;UACdgD,QAAQ,EAAE;QACd,CAAC;QACDC,OAAO,EAAE;UACLjD,IAAI,EAAE,QAAQ;UACdgD,QAAQ,EAAE;QACd,CAAC;QACDE,OAAO,EAAE;UACLlD,IAAI,EAAE,QAAQ;UACdgD,QAAQ,EAAE;QACd,CAAC;QACDG,OAAO,EAAE;UACLnD,IAAI,EAAE,QAAQ;UACdgD,QAAQ,EAAE;QACd,CAAC;QACDI,IAAI,EAAE;UACFpD,IAAI,EAAE;QACV,CAAC;QACDW,IAAI,EAAE;UACFX,IAAI,EAAE;QACV;MACJ;IACJ,CAAC,CAAC;EACN,CAAC;EAEOR,WAAW,GAAGA,CAAC;IAAEG,IAAI;IAAEL;EAAkC,CAAC,KAAK;IACnE,OAAO,IAAI+D,cAAK,CAAC;MACb1D,IAAI,EAAEA,IAAI,IAAI2D,MAAM,CAACC,OAAO,CAACC,GAAG,CAACC,QAAQ,CAAC;MAC1CpD,YAAY,EAAE,IAAI;MAClByC,OAAO,EAAE,IAAI;MACbY,cAAc,EAAEpE,cAAc;MAC9BqE,OAAO,EAAE;QACLC,IAAI,EAAE;UACFvD,YAAY,EAAE,SAAS;UACvByC,OAAO,EAAE;QACb,CAAC;QACDe,IAAI,EAAE;UACFxD,YAAY,EAAE,SAAS;UACvByC,OAAO,EAAE;QACb;MACJ,CAAC;MACDgB,WAAW,EAAE,IAAI;MACjBC,SAAS,EAAE;IACf,CAAC,CAAC;EACN,CAAC;EAEOzC,UAAU,GAAGA,CAAC;IAAEH,EAAE;IAAErB,MAAM;IAAEC;EAAyB,CAAC,MAAM;IAChE6C,EAAE,EAAE,KAAK9C,MAAM,MAAMC,MAAM,QAAQoB,EAAE,EAAE;IACvC0B,EAAE,EAAE;EACR,CAAC,CAAC;EAEMrB,aAAa,GAAGA,CAAC;IAAE1B,MAAM;IAAEC,MAAM;IAAEC,IAAI;IAAEgE,IAAI;IAAE9D;EAA8B,CAAC,MAAM;IACxF6C,OAAO,EAAE,KAAKjD,MAAM,MAAMC,MAAM,OAAOC,IAAI,MAAM;IACjDiD,OAAO,EAAEe,IAAI;IACbd,OAAO,EAAE,KAAKpD,MAAM,MAAMC,MAAM,MAAM;IACtCoD,OAAO,EAAEjD;EACb,CAAC,CAAC;AACN;AAEO,MAAM+D,mBAAmB,GAAIxB,MAA+B,IAAK;EACpE,OAAO,IAAIrD,uCAAuC,CAACqD,MAAM,CAAC;AAC9D,CAAC;AAACyB,OAAA,CAAAD,mBAAA,GAAAA,mBAAA","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { Topic } from "@webiny/pubsub/types";
2
- import { ITaskRunParams } from "@webiny/tasks/types";
1
+ import type { Topic } from "@webiny/pubsub/types";
2
+ import type { ITaskRunParams } from "@webiny/tasks/types";
3
3
  import { type AcoContext, type Folder } from "../types";
4
4
  import type { FolderLevelPermission, FolderPermission } from "@webiny/shared-aco/flp/flp.types";
5
5
  export * from "@webiny/shared-aco/flp/flp.types";
@@ -1 +1 @@
1
- {"version":3,"names":["_flp","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["flp.types.ts"],"sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { ITaskRunParams } from \"@webiny/tasks/types\";\nimport { type AcoContext, type Folder } from \"~/types\";\nimport type { FolderLevelPermission, FolderPermission } from \"@webiny/shared-aco/flp/flp.types\";\n\nexport * from \"@webiny/shared-aco/flp/flp.types\";\n\n/********\n * CRUD operations\n *******/\n\nexport interface ListFlpsParams {\n where: {\n path_startsWith?: string;\n parentId?: string;\n type: string;\n };\n}\n\nexport type CreateFlpParams = Pick<\n FolderLevelPermission,\n \"id\" | \"type\" | \"permissions\" | \"path\" | \"parentId\" | \"slug\"\n>;\n\nexport interface UpdateFlpParams {\n parentId?: string;\n slug?: string;\n path?: string;\n permissions?: FolderPermission[];\n type?: string;\n}\n\nexport interface OnFlpBeforeCreateTopicParams {\n input: CreateFlpParams;\n}\n\nexport interface OnFlpAfterCreateTopicParams {\n flp: FolderLevelPermission;\n}\n\nexport interface OnFlpBeforeUpdateTopicParams {\n original: FolderLevelPermission;\n input: Record<string, any>;\n}\n\nexport interface OnFlpAfterUpdateTopicParams {\n original: FolderLevelPermission;\n flp: FolderLevelPermission;\n input: Record<string, any>;\n}\n\nexport interface OnFlpBeforeDeleteTopicParams {\n flp: FolderLevelPermission;\n}\n\nexport interface OnFlpAfterDeleteTopicParams {\n flp: FolderLevelPermission;\n}\n\nexport interface OnFlpBatchBeforeUpdateTopicParams {\n items: Array<{\n original: FolderLevelPermission;\n input: UpdateFlpParams;\n }>;\n}\n\nexport interface OnFlpBatchAfterUpdateTopicParams {\n items: Array<{\n original: FolderLevelPermission;\n flp: FolderLevelPermission;\n input: UpdateFlpParams;\n }>;\n}\n\nexport interface AcoFolderLevelPermissionsCrud {\n list(params: ListFlpsParams): Promise<FolderLevelPermission[]>;\n get(id: string): Promise<FolderLevelPermission | null>;\n create(params: CreateFlpParams): Promise<FolderLevelPermission>;\n update(id: string, data: UpdateFlpParams): Promise<FolderLevelPermission>;\n delete(id: string): Promise<boolean>;\n batchUpdate(\n items: Array<{ id: string; data: UpdateFlpParams }>\n ): Promise<FolderLevelPermission[]>;\n onFlpBeforeCreate: Topic<OnFlpBeforeCreateTopicParams>;\n onFlpAfterCreate: Topic<OnFlpAfterCreateTopicParams>;\n onFlpBeforeUpdate: Topic<OnFlpBeforeUpdateTopicParams>;\n onFlpAfterUpdate: Topic<OnFlpAfterUpdateTopicParams>;\n onFlpBeforeDelete: Topic<OnFlpBeforeDeleteTopicParams>;\n onFlpAfterDelete: Topic<OnFlpAfterDeleteTopicParams>;\n onFlpBatchBeforeUpdate: Topic<OnFlpBatchBeforeUpdateTopicParams>;\n onFlpBatchAfterUpdate: Topic<OnFlpBatchAfterUpdateTopicParams>;\n}\n\n/********\n * Storage operations\n *******/\n\nexport interface StorageOperationsListFlpsParams {\n where: ListFlpsParams[\"where\"] & {\n tenant: string;\n locale: string;\n };\n}\n\nexport interface StorageOperationsGetFlpParams {\n id: string;\n tenant: string;\n locale: string;\n}\n\nexport type StorageOperationsCreateFlpParams = {\n data: FolderLevelPermission & {\n tenant: string;\n locale: string;\n };\n};\n\nexport type StorageOperationsUpdateFlpParams = {\n original: FolderLevelPermission;\n data: UpdateFlpParams & {\n tenant: string;\n locale: string;\n };\n};\n\nexport type StorageOperationsDeleteFlpParams = {\n flp: FolderLevelPermission & {\n tenant: string;\n locale: string;\n };\n};\n\nexport interface StorageOperationsBatchUpdateFlpParams {\n items: Array<{\n original: FolderLevelPermission;\n data: UpdateFlpParams & {\n tenant: string;\n locale: string;\n };\n }>;\n}\n\nexport interface AcoFolderLevelPermissionsStorageOperations {\n list(params: StorageOperationsListFlpsParams): Promise<FolderLevelPermission[]>;\n get(params: StorageOperationsGetFlpParams): Promise<FolderLevelPermission | null>;\n create(params: StorageOperationsCreateFlpParams): Promise<FolderLevelPermission>;\n update(params: StorageOperationsUpdateFlpParams): Promise<FolderLevelPermission>;\n delete(params: StorageOperationsDeleteFlpParams): Promise<void>;\n batchUpdate(params: StorageOperationsBatchUpdateFlpParams): Promise<FolderLevelPermission[]>;\n}\n\n/********\n * Background Tasks\n *******/\n\nexport interface ICreateFlpTaskInput {\n folder: Folder;\n}\n\nexport type ICreateFlpTaskParams = ITaskRunParams<AcoContext, ICreateFlpTaskInput>;\n\nexport interface IUpdateFlpTaskInput {\n folder: Folder;\n queued?: string[];\n}\n\nexport type IUpdateFlpTaskParams = ITaskRunParams<AcoContext, IUpdateFlpTaskInput>;\n\nexport interface IDeleteFlpTaskInput {\n folder: Folder;\n}\n\nexport type IDeleteFlpTaskParams = ITaskRunParams<AcoContext, IDeleteFlpTaskInput>;\n\nexport interface ISyncFlpTaskInput {\n type?: string;\n folderId?: string;\n}\n\nexport type ISyncFlpTaskParams = ITaskRunParams<AcoContext, ISyncFlpTaskInput>;\n"],"mappings":";;;;;AAKA,IAAAA,IAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,IAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,IAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,IAAA,CAAAK,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["_flp","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["flp.types.ts"],"sourcesContent":["import type { Topic } from \"@webiny/pubsub/types\";\nimport type { ITaskRunParams } from \"@webiny/tasks/types\";\nimport { type AcoContext, type Folder } from \"~/types\";\nimport type { FolderLevelPermission, FolderPermission } from \"@webiny/shared-aco/flp/flp.types\";\n\nexport * from \"@webiny/shared-aco/flp/flp.types\";\n\n/********\n * CRUD operations\n *******/\n\nexport interface ListFlpsParams {\n where: {\n path_startsWith?: string;\n parentId?: string;\n type: string;\n };\n}\n\nexport type CreateFlpParams = Pick<\n FolderLevelPermission,\n \"id\" | \"type\" | \"permissions\" | \"path\" | \"parentId\" | \"slug\"\n>;\n\nexport interface UpdateFlpParams {\n parentId?: string;\n slug?: string;\n path?: string;\n permissions?: FolderPermission[];\n type?: string;\n}\n\nexport interface OnFlpBeforeCreateTopicParams {\n input: CreateFlpParams;\n}\n\nexport interface OnFlpAfterCreateTopicParams {\n flp: FolderLevelPermission;\n}\n\nexport interface OnFlpBeforeUpdateTopicParams {\n original: FolderLevelPermission;\n input: Record<string, any>;\n}\n\nexport interface OnFlpAfterUpdateTopicParams {\n original: FolderLevelPermission;\n flp: FolderLevelPermission;\n input: Record<string, any>;\n}\n\nexport interface OnFlpBeforeDeleteTopicParams {\n flp: FolderLevelPermission;\n}\n\nexport interface OnFlpAfterDeleteTopicParams {\n flp: FolderLevelPermission;\n}\n\nexport interface OnFlpBatchBeforeUpdateTopicParams {\n items: Array<{\n original: FolderLevelPermission;\n input: UpdateFlpParams;\n }>;\n}\n\nexport interface OnFlpBatchAfterUpdateTopicParams {\n items: Array<{\n original: FolderLevelPermission;\n flp: FolderLevelPermission;\n input: UpdateFlpParams;\n }>;\n}\n\nexport interface AcoFolderLevelPermissionsCrud {\n list(params: ListFlpsParams): Promise<FolderLevelPermission[]>;\n get(id: string): Promise<FolderLevelPermission | null>;\n create(params: CreateFlpParams): Promise<FolderLevelPermission>;\n update(id: string, data: UpdateFlpParams): Promise<FolderLevelPermission>;\n delete(id: string): Promise<boolean>;\n batchUpdate(\n items: Array<{ id: string; data: UpdateFlpParams }>\n ): Promise<FolderLevelPermission[]>;\n onFlpBeforeCreate: Topic<OnFlpBeforeCreateTopicParams>;\n onFlpAfterCreate: Topic<OnFlpAfterCreateTopicParams>;\n onFlpBeforeUpdate: Topic<OnFlpBeforeUpdateTopicParams>;\n onFlpAfterUpdate: Topic<OnFlpAfterUpdateTopicParams>;\n onFlpBeforeDelete: Topic<OnFlpBeforeDeleteTopicParams>;\n onFlpAfterDelete: Topic<OnFlpAfterDeleteTopicParams>;\n onFlpBatchBeforeUpdate: Topic<OnFlpBatchBeforeUpdateTopicParams>;\n onFlpBatchAfterUpdate: Topic<OnFlpBatchAfterUpdateTopicParams>;\n}\n\n/********\n * Storage operations\n *******/\n\nexport interface StorageOperationsListFlpsParams {\n where: ListFlpsParams[\"where\"] & {\n tenant: string;\n locale: string;\n };\n}\n\nexport interface StorageOperationsGetFlpParams {\n id: string;\n tenant: string;\n locale: string;\n}\n\nexport type StorageOperationsCreateFlpParams = {\n data: FolderLevelPermission & {\n tenant: string;\n locale: string;\n };\n};\n\nexport type StorageOperationsUpdateFlpParams = {\n original: FolderLevelPermission;\n data: UpdateFlpParams & {\n tenant: string;\n locale: string;\n };\n};\n\nexport type StorageOperationsDeleteFlpParams = {\n flp: FolderLevelPermission & {\n tenant: string;\n locale: string;\n };\n};\n\nexport interface StorageOperationsBatchUpdateFlpParams {\n items: Array<{\n original: FolderLevelPermission;\n data: UpdateFlpParams & {\n tenant: string;\n locale: string;\n };\n }>;\n}\n\nexport interface AcoFolderLevelPermissionsStorageOperations {\n list(params: StorageOperationsListFlpsParams): Promise<FolderLevelPermission[]>;\n get(params: StorageOperationsGetFlpParams): Promise<FolderLevelPermission | null>;\n create(params: StorageOperationsCreateFlpParams): Promise<FolderLevelPermission>;\n update(params: StorageOperationsUpdateFlpParams): Promise<FolderLevelPermission>;\n delete(params: StorageOperationsDeleteFlpParams): Promise<void>;\n batchUpdate(params: StorageOperationsBatchUpdateFlpParams): Promise<FolderLevelPermission[]>;\n}\n\n/********\n * Background Tasks\n *******/\n\nexport interface ICreateFlpTaskInput {\n folder: Folder;\n}\n\nexport type ICreateFlpTaskParams = ITaskRunParams<AcoContext, ICreateFlpTaskInput>;\n\nexport interface IUpdateFlpTaskInput {\n folder: Folder;\n queued?: string[];\n}\n\nexport type IUpdateFlpTaskParams = ITaskRunParams<AcoContext, IUpdateFlpTaskInput>;\n\nexport interface IDeleteFlpTaskInput {\n folder: Folder;\n}\n\nexport type IDeleteFlpTaskParams = ITaskRunParams<AcoContext, IDeleteFlpTaskInput>;\n\nexport interface ISyncFlpTaskInput {\n type?: string;\n folderId?: string;\n}\n\nexport type ISyncFlpTaskParams = ITaskRunParams<AcoContext, ISyncFlpTaskInput>;\n"],"mappings":";;;;;AAKA,IAAAA,IAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,IAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,IAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,IAAA,CAAAK,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import { AcoContext } from "../../types";
1
+ import type { AcoContext } from "../../types";
2
2
  export declare const createFlpHooks: (context: AcoContext) => void;
@@ -1 +1 @@
1
- {"version":3,"names":["_onFolderAfterCreateFlp","require","_onFolderAfterDeleteFlp","_onFolderAfterUpdateFlp","createFlpHooks","context","onFolderAfterCreateFlpHook","onFolderAfterDeleteFlpHook","onFolderAfterUpdateFlpHook","exports"],"sources":["index.ts"],"sourcesContent":["import { onFolderAfterCreateFlpHook } from \"./onFolderAfterCreateFlp.hook\";\nimport { onFolderAfterDeleteFlpHook } from \"./onFolderAfterDeleteFlp.hook\";\nimport { onFolderAfterUpdateFlpHook } from \"./onFolderAfterUpdateFlp.hook\";\nimport { AcoContext } from \"~/types\";\n\nexport const createFlpHooks = (context: AcoContext) => {\n onFolderAfterCreateFlpHook(context);\n onFolderAfterDeleteFlpHook(context);\n onFolderAfterUpdateFlpHook(context);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,uBAAA,GAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AACA,IAAAE,uBAAA,GAAAF,OAAA;AAGO,MAAMG,cAAc,GAAIC,OAAmB,IAAK;EACnD,IAAAC,kDAA0B,EAACD,OAAO,CAAC;EACnC,IAAAE,kDAA0B,EAACF,OAAO,CAAC;EACnC,IAAAG,kDAA0B,EAACH,OAAO,CAAC;AACvC,CAAC;AAACI,OAAA,CAAAL,cAAA,GAAAA,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["_onFolderAfterCreateFlp","require","_onFolderAfterDeleteFlp","_onFolderAfterUpdateFlp","createFlpHooks","context","onFolderAfterCreateFlpHook","onFolderAfterDeleteFlpHook","onFolderAfterUpdateFlpHook","exports"],"sources":["index.ts"],"sourcesContent":["import { onFolderAfterCreateFlpHook } from \"./onFolderAfterCreateFlp.hook\";\nimport { onFolderAfterDeleteFlpHook } from \"./onFolderAfterDeleteFlp.hook\";\nimport { onFolderAfterUpdateFlpHook } from \"./onFolderAfterUpdateFlp.hook\";\nimport type { AcoContext } from \"~/types\";\n\nexport const createFlpHooks = (context: AcoContext) => {\n onFolderAfterCreateFlpHook(context);\n onFolderAfterDeleteFlpHook(context);\n onFolderAfterUpdateFlpHook(context);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,uBAAA,GAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AACA,IAAAE,uBAAA,GAAAF,OAAA;AAGO,MAAMG,cAAc,GAAIC,OAAmB,IAAK;EACnD,IAAAC,kDAA0B,EAACD,OAAO,CAAC;EACnC,IAAAE,kDAA0B,EAACF,OAAO,CAAC;EACnC,IAAAG,kDAA0B,EAACH,OAAO,CAAC;AACvC,CAAC;AAACI,OAAA,CAAAL,cAAA,GAAAA,cAAA","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import { AcoContext } from "../../types";
1
+ import type { AcoContext } from "../../types";
2
2
  export declare const onFolderAfterCreateFlpHook: (context: AcoContext) => void;
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_tasks","_useCases","onFolderAfterCreateFlpHook","context","aco","folder","onFolderAfterCreate","subscribe","tasks","useCase","CreateFlp","execute","trigger","definition","CREATE_FLP_TASK_ID","input","error","WebinyError","from","message","code","exports"],"sources":["onFolderAfterCreateFlp.hook.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { AcoContext, type ICreateFlpTaskInput } from \"~/types\";\nimport { CREATE_FLP_TASK_ID } from \"../tasks\";\nimport { CreateFlp } from \"~/flp/useCases\";\n\nexport const onFolderAfterCreateFlpHook = (context: AcoContext) => {\n context.aco.folder.onFolderAfterCreate.subscribe(async ({ folder }) => {\n try {\n if (!context.tasks) {\n const useCase = new CreateFlp(context);\n await useCase.execute(folder);\n return;\n }\n\n await context.tasks.trigger<ICreateFlpTaskInput>({\n definition: CREATE_FLP_TASK_ID,\n input: {\n folder\n }\n });\n } catch (error) {\n throw WebinyError.from(error, {\n message: \"Error while executing onFolderAfterCreateFlpHook hook.\",\n code: \"ACO_AFTER_FOLDER_CREATE_FLP_HOOK\"\n });\n }\n });\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAEO,MAAMG,0BAA0B,GAAIC,OAAmB,IAAK;EAC/DA,OAAO,CAACC,GAAG,CAACC,MAAM,CAACC,mBAAmB,CAACC,SAAS,CAAC,OAAO;IAAEF;EAAO,CAAC,KAAK;IACnE,IAAI;MACA,IAAI,CAACF,OAAO,CAACK,KAAK,EAAE;QAChB,MAAMC,OAAO,GAAG,IAAIC,mBAAS,CAACP,OAAO,CAAC;QACtC,MAAMM,OAAO,CAACE,OAAO,CAACN,MAAM,CAAC;QAC7B;MACJ;MAEA,MAAMF,OAAO,CAACK,KAAK,CAACI,OAAO,CAAsB;QAC7CC,UAAU,EAAEC,yBAAkB;QAC9BC,KAAK,EAAE;UACHV;QACJ;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOW,KAAK,EAAE;MACZ,MAAMC,cAAW,CAACC,IAAI,CAACF,KAAK,EAAE;QAC1BG,OAAO,EAAE,wDAAwD;QACjEC,IAAI,EAAE;MACV,CAAC,CAAC;IACN;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAnB,0BAAA,GAAAA,0BAAA","ignoreList":[]}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_tasks","_useCases","onFolderAfterCreateFlpHook","context","aco","folder","onFolderAfterCreate","subscribe","tasks","useCase","CreateFlp","execute","trigger","definition","CREATE_FLP_TASK_ID","input","error","WebinyError","from","message","code","exports"],"sources":["onFolderAfterCreateFlp.hook.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type { AcoContext } from \"~/types\";\nimport { type ICreateFlpTaskInput } from \"~/types\";\nimport { CREATE_FLP_TASK_ID } from \"../tasks\";\nimport { CreateFlp } from \"~/flp/useCases\";\n\nexport const onFolderAfterCreateFlpHook = (context: AcoContext) => {\n context.aco.folder.onFolderAfterCreate.subscribe(async ({ folder }) => {\n try {\n if (!context.tasks) {\n const useCase = new CreateFlp(context);\n await useCase.execute(folder);\n return;\n }\n\n await context.tasks.trigger<ICreateFlpTaskInput>({\n definition: CREATE_FLP_TASK_ID,\n input: {\n folder\n }\n });\n } catch (error) {\n throw WebinyError.from(error, {\n message: \"Error while executing onFolderAfterCreateFlpHook hook.\",\n code: \"ACO_AFTER_FOLDER_CREATE_FLP_HOOK\"\n });\n }\n });\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAEO,MAAMG,0BAA0B,GAAIC,OAAmB,IAAK;EAC/DA,OAAO,CAACC,GAAG,CAACC,MAAM,CAACC,mBAAmB,CAACC,SAAS,CAAC,OAAO;IAAEF;EAAO,CAAC,KAAK;IACnE,IAAI;MACA,IAAI,CAACF,OAAO,CAACK,KAAK,EAAE;QAChB,MAAMC,OAAO,GAAG,IAAIC,mBAAS,CAACP,OAAO,CAAC;QACtC,MAAMM,OAAO,CAACE,OAAO,CAACN,MAAM,CAAC;QAC7B;MACJ;MAEA,MAAMF,OAAO,CAACK,KAAK,CAACI,OAAO,CAAsB;QAC7CC,UAAU,EAAEC,yBAAkB;QAC9BC,KAAK,EAAE;UACHV;QACJ;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOW,KAAK,EAAE;MACZ,MAAMC,cAAW,CAACC,IAAI,CAACF,KAAK,EAAE;QAC1BG,OAAO,EAAE,wDAAwD;QACjEC,IAAI,EAAE;MACV,CAAC,CAAC;IACN;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAnB,0BAAA,GAAAA,0BAAA","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import { AcoContext } from "../../types";
1
+ import type { AcoContext } from "../../types";
2
2
  export declare const onFolderAfterDeleteFlpHook: (context: AcoContext) => void;
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_tasks","_useCases","onFolderAfterDeleteFlpHook","context","aco","folder","onFolderAfterDelete","subscribe","tasks","useCase","DeleteFlp","execute","trigger","definition","DELETE_FLP_TASK_ID","input","error","WebinyError","from","message","code","exports"],"sources":["onFolderAfterDeleteFlp.hook.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { AcoContext, type IDeleteFlpTaskInput } from \"~/types\";\nimport { DELETE_FLP_TASK_ID } from \"../tasks\";\nimport { DeleteFlp } from \"~/flp/useCases\";\n\nexport const onFolderAfterDeleteFlpHook = (context: AcoContext) => {\n context.aco.folder.onFolderAfterDelete.subscribe(async ({ folder }) => {\n try {\n if (!context.tasks) {\n const useCase = new DeleteFlp(context);\n await useCase.execute(folder);\n return;\n }\n\n await context.tasks.trigger<IDeleteFlpTaskInput>({\n definition: DELETE_FLP_TASK_ID,\n input: {\n folder\n }\n });\n } catch (error) {\n throw WebinyError.from(error, {\n message: \"Error while executing onFolderAfterDeleteFlpHook hook.\",\n code: \"ACO_AFTER_FOLDER_DELETE_FLP_HOOK\"\n });\n }\n });\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAEO,MAAMG,0BAA0B,GAAIC,OAAmB,IAAK;EAC/DA,OAAO,CAACC,GAAG,CAACC,MAAM,CAACC,mBAAmB,CAACC,SAAS,CAAC,OAAO;IAAEF;EAAO,CAAC,KAAK;IACnE,IAAI;MACA,IAAI,CAACF,OAAO,CAACK,KAAK,EAAE;QAChB,MAAMC,OAAO,GAAG,IAAIC,mBAAS,CAACP,OAAO,CAAC;QACtC,MAAMM,OAAO,CAACE,OAAO,CAACN,MAAM,CAAC;QAC7B;MACJ;MAEA,MAAMF,OAAO,CAACK,KAAK,CAACI,OAAO,CAAsB;QAC7CC,UAAU,EAAEC,yBAAkB;QAC9BC,KAAK,EAAE;UACHV;QACJ;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOW,KAAK,EAAE;MACZ,MAAMC,cAAW,CAACC,IAAI,CAACF,KAAK,EAAE;QAC1BG,OAAO,EAAE,wDAAwD;QACjEC,IAAI,EAAE;MACV,CAAC,CAAC;IACN;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAnB,0BAAA,GAAAA,0BAAA","ignoreList":[]}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_tasks","_useCases","onFolderAfterDeleteFlpHook","context","aco","folder","onFolderAfterDelete","subscribe","tasks","useCase","DeleteFlp","execute","trigger","definition","DELETE_FLP_TASK_ID","input","error","WebinyError","from","message","code","exports"],"sources":["onFolderAfterDeleteFlp.hook.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type { AcoContext } from \"~/types\";\nimport { type IDeleteFlpTaskInput } from \"~/types\";\nimport { DELETE_FLP_TASK_ID } from \"../tasks\";\nimport { DeleteFlp } from \"~/flp/useCases\";\n\nexport const onFolderAfterDeleteFlpHook = (context: AcoContext) => {\n context.aco.folder.onFolderAfterDelete.subscribe(async ({ folder }) => {\n try {\n if (!context.tasks) {\n const useCase = new DeleteFlp(context);\n await useCase.execute(folder);\n return;\n }\n\n await context.tasks.trigger<IDeleteFlpTaskInput>({\n definition: DELETE_FLP_TASK_ID,\n input: {\n folder\n }\n });\n } catch (error) {\n throw WebinyError.from(error, {\n message: \"Error while executing onFolderAfterDeleteFlpHook hook.\",\n code: \"ACO_AFTER_FOLDER_DELETE_FLP_HOOK\"\n });\n }\n });\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAEO,MAAMG,0BAA0B,GAAIC,OAAmB,IAAK;EAC/DA,OAAO,CAACC,GAAG,CAACC,MAAM,CAACC,mBAAmB,CAACC,SAAS,CAAC,OAAO;IAAEF;EAAO,CAAC,KAAK;IACnE,IAAI;MACA,IAAI,CAACF,OAAO,CAACK,KAAK,EAAE;QAChB,MAAMC,OAAO,GAAG,IAAIC,mBAAS,CAACP,OAAO,CAAC;QACtC,MAAMM,OAAO,CAACE,OAAO,CAACN,MAAM,CAAC;QAC7B;MACJ;MAEA,MAAMF,OAAO,CAACK,KAAK,CAACI,OAAO,CAAsB;QAC7CC,UAAU,EAAEC,yBAAkB;QAC9BC,KAAK,EAAE;UACHV;QACJ;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOW,KAAK,EAAE;MACZ,MAAMC,cAAW,CAACC,IAAI,CAACF,KAAK,EAAE;QAC1BG,OAAO,EAAE,wDAAwD;QACjEC,IAAI,EAAE;MACV,CAAC,CAAC;IACN;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAnB,0BAAA,GAAAA,0BAAA","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import { AcoContext } from "../../types";
1
+ import type { AcoContext } from "../../types";
2
2
  export declare const onFolderAfterUpdateFlpHook: (context: AcoContext) => void;
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_tasks","_useCases","onFolderAfterUpdateFlpHook","context","aco","folder","onFolderAfterUpdate","subscribe","tasks","useCase","UpdateFlp","execute","trigger","definition","UPDATE_FLP_TASK_ID","input","error","WebinyError","from","message","code","exports"],"sources":["onFolderAfterUpdateFlp.hook.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { AcoContext, type IUpdateFlpTaskInput } from \"~/types\";\nimport { UPDATE_FLP_TASK_ID } from \"../tasks\";\nimport { UpdateFlp } from \"~/flp/useCases\";\n\nexport const onFolderAfterUpdateFlpHook = (context: AcoContext) => {\n context.aco.folder.onFolderAfterUpdate.subscribe(async ({ folder }) => {\n try {\n if (!context.tasks) {\n const useCase = new UpdateFlp({ context });\n await useCase.execute(folder);\n return;\n }\n\n await context.tasks.trigger<IUpdateFlpTaskInput>({\n definition: UPDATE_FLP_TASK_ID,\n input: {\n folder\n }\n });\n } catch (error) {\n throw WebinyError.from(error, {\n message: \"Error while executing onFolderAfterUpdateFlpHook hook.\",\n code: \"ACO_AFTER_FOLDER_UPDATE_FLP_HOOK\"\n });\n }\n });\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAEO,MAAMG,0BAA0B,GAAIC,OAAmB,IAAK;EAC/DA,OAAO,CAACC,GAAG,CAACC,MAAM,CAACC,mBAAmB,CAACC,SAAS,CAAC,OAAO;IAAEF;EAAO,CAAC,KAAK;IACnE,IAAI;MACA,IAAI,CAACF,OAAO,CAACK,KAAK,EAAE;QAChB,MAAMC,OAAO,GAAG,IAAIC,mBAAS,CAAC;UAAEP;QAAQ,CAAC,CAAC;QAC1C,MAAMM,OAAO,CAACE,OAAO,CAACN,MAAM,CAAC;QAC7B;MACJ;MAEA,MAAMF,OAAO,CAACK,KAAK,CAACI,OAAO,CAAsB;QAC7CC,UAAU,EAAEC,yBAAkB;QAC9BC,KAAK,EAAE;UACHV;QACJ;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOW,KAAK,EAAE;MACZ,MAAMC,cAAW,CAACC,IAAI,CAACF,KAAK,EAAE;QAC1BG,OAAO,EAAE,wDAAwD;QACjEC,IAAI,EAAE;MACV,CAAC,CAAC;IACN;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAnB,0BAAA,GAAAA,0BAAA","ignoreList":[]}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_tasks","_useCases","onFolderAfterUpdateFlpHook","context","aco","folder","onFolderAfterUpdate","subscribe","tasks","useCase","UpdateFlp","execute","trigger","definition","UPDATE_FLP_TASK_ID","input","error","WebinyError","from","message","code","exports"],"sources":["onFolderAfterUpdateFlp.hook.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type { AcoContext } from \"~/types\";\nimport { type IUpdateFlpTaskInput } from \"~/types\";\nimport { UPDATE_FLP_TASK_ID } from \"../tasks\";\nimport { UpdateFlp } from \"~/flp/useCases\";\n\nexport const onFolderAfterUpdateFlpHook = (context: AcoContext) => {\n context.aco.folder.onFolderAfterUpdate.subscribe(async ({ folder }) => {\n try {\n if (!context.tasks) {\n const useCase = new UpdateFlp({ context });\n await useCase.execute(folder);\n return;\n }\n\n await context.tasks.trigger<IUpdateFlpTaskInput>({\n definition: UPDATE_FLP_TASK_ID,\n input: {\n folder\n }\n });\n } catch (error) {\n throw WebinyError.from(error, {\n message: \"Error while executing onFolderAfterUpdateFlpHook hook.\",\n code: \"ACO_AFTER_FOLDER_UPDATE_FLP_HOOK\"\n });\n }\n });\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAEO,MAAMG,0BAA0B,GAAIC,OAAmB,IAAK;EAC/DA,OAAO,CAACC,GAAG,CAACC,MAAM,CAACC,mBAAmB,CAACC,SAAS,CAAC,OAAO;IAAEF;EAAO,CAAC,KAAK;IACnE,IAAI;MACA,IAAI,CAACF,OAAO,CAACK,KAAK,EAAE;QAChB,MAAMC,OAAO,GAAG,IAAIC,mBAAS,CAAC;UAAEP;QAAQ,CAAC,CAAC;QAC1C,MAAMM,OAAO,CAACE,OAAO,CAACN,MAAM,CAAC;QAC7B;MACJ;MAEA,MAAMF,OAAO,CAACK,KAAK,CAACI,OAAO,CAAsB;QAC7CC,UAAU,EAAEC,yBAAkB;QAC9BC,KAAK,EAAE;UACHV;QACJ;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOW,KAAK,EAAE;MACZ,MAAMC,cAAW,CAACC,IAAI,CAACF,KAAK,EAAE;QAC1BG,OAAO,EAAE,wDAAwD;QACjEC,IAAI,EAAE;MACV,CAAC,CAAC;IACN;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAnB,0BAAA,GAAAA,0BAAA","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import { Plugin } from "@webiny/plugins";
2
- import { CmsPrivateModelFull } from "@webiny/api-headless-cms";
3
- import { CmsModelField as BaseModelField } from "@webiny/api-headless-cms/types";
2
+ import type { CmsPrivateModelFull } from "@webiny/api-headless-cms";
3
+ import type { CmsModelField as BaseModelField } from "@webiny/api-headless-cms/types";
4
4
  export type CmsModelField = Omit<BaseModelField, "storageId"> & {
5
5
  modelIds?: string[];
6
6
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_plugins","require","_apiHeadlessCms","_folder","FolderModelFieldsModifier","fields","constructor","namespace","setFields","addField","field","tags","rest","push","storageId","type","id","concat","exports","FolderCmsModelModifierPlugin","Plugin","params","modifier","callback","modifyModel","model","modelId","FOLDER_MODEL_ID","extensionsField","find","fieldId","createModelField","label","settings","layout","createFolderModelModifier"],"sources":["createFolderModelModifier.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { CmsPrivateModelFull, createModelField } from \"@webiny/api-headless-cms\";\nimport { CmsModelField as BaseModelField } from \"@webiny/api-headless-cms/types\";\nimport { FOLDER_MODEL_ID } from \"~/folder/folder.model\";\n\nexport type CmsModelField = Omit<BaseModelField, \"storageId\"> & { modelIds?: string[] };\n\nexport interface IFolderModelFieldsModifier {\n setFields: (fields: BaseModelField[]) => void;\n addField: (field: CmsModelField) => void;\n}\n\nexport class FolderModelFieldsModifier implements IFolderModelFieldsModifier {\n private fields: BaseModelField[] = [];\n private readonly namespace: string;\n\n constructor(namespace: string) {\n this.namespace = namespace;\n }\n\n setFields(fields: BaseModelField[]) {\n this.fields = fields;\n }\n\n addField(field: CmsModelField) {\n const { tags, ...rest } = field;\n\n this.fields.push({\n ...rest,\n storageId: `${field.type}@${this.namespace}_${field.id}`,\n tags: (tags ?? []).concat([`$namespace:${this.namespace}`])\n });\n }\n}\n\ninterface CmsModelModifierCallableParams {\n modifier: IFolderModelFieldsModifier;\n}\n\nexport interface CmsModelModifierCallable {\n (params: CmsModelModifierCallableParams): Promise<void> | void;\n}\n\ninterface FolderCmsModelModifierPluginParams {\n modifier: IFolderModelFieldsModifier;\n callback: CmsModelModifierCallable;\n}\n\nexport class FolderCmsModelModifierPlugin extends Plugin {\n public static override type = \"aco.folder.cms-model-modifier\";\n private readonly modifier: IFolderModelFieldsModifier;\n private readonly callback: CmsModelModifierCallable;\n\n constructor(params: FolderCmsModelModifierPluginParams) {\n super();\n this.modifier = params.modifier;\n this.callback = params.callback;\n }\n\n async modifyModel(model: CmsPrivateModelFull): Promise<void> {\n if (model.modelId !== FOLDER_MODEL_ID) {\n return;\n }\n\n let extensionsField = model.fields.find(field => field.fieldId === \"extensions\");\n if (!extensionsField) {\n extensionsField = createModelField({\n label: \"Extensions\",\n type: \"object\",\n settings: {\n layout: [],\n fields: []\n }\n });\n model.fields.push(extensionsField);\n }\n\n this.modifier.setFields(extensionsField.settings!.fields!);\n\n await this.callback({ modifier: this.modifier });\n }\n}\n\nexport const createFolderModelModifier = (callback: CmsModelModifierCallable) => {\n const modifier = new FolderModelFieldsModifier(\"global\");\n\n return new FolderCmsModelModifierPlugin({\n callback,\n modifier\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;AASO,MAAMG,yBAAyB,CAAuC;EACjEC,MAAM,GAAqB,EAAE;EAGrCC,WAAWA,CAACC,SAAiB,EAAE;IAC3B,IAAI,CAACA,SAAS,GAAGA,SAAS;EAC9B;EAEAC,SAASA,CAACH,MAAwB,EAAE;IAChC,IAAI,CAACA,MAAM,GAAGA,MAAM;EACxB;EAEAI,QAAQA,CAACC,KAAoB,EAAE;IAC3B,MAAM;MAAEC,IAAI;MAAE,GAAGC;IAAK,CAAC,GAAGF,KAAK;IAE/B,IAAI,CAACL,MAAM,CAACQ,IAAI,CAAC;MACb,GAAGD,IAAI;MACPE,SAAS,EAAE,GAAGJ,KAAK,CAACK,IAAI,IAAI,IAAI,CAACR,SAAS,IAAIG,KAAK,CAACM,EAAE,EAAE;MACxDL,IAAI,EAAE,CAACA,IAAI,IAAI,EAAE,EAAEM,MAAM,CAAC,CAAC,cAAc,IAAI,CAACV,SAAS,EAAE,CAAC;IAC9D,CAAC,CAAC;EACN;AACJ;AAACW,OAAA,CAAAd,yBAAA,GAAAA,yBAAA;AAeM,MAAMe,4BAA4B,SAASC,eAAM,CAAC;EACrD,OAAuBL,IAAI,GAAG,+BAA+B;EAI7DT,WAAWA,CAACe,MAA0C,EAAE;IACpD,KAAK,CAAC,CAAC;IACP,IAAI,CAACC,QAAQ,GAAGD,MAAM,CAACC,QAAQ;IAC/B,IAAI,CAACC,QAAQ,GAAGF,MAAM,CAACE,QAAQ;EACnC;EAEA,MAAMC,WAAWA,CAACC,KAA0B,EAAiB;IACzD,IAAIA,KAAK,CAACC,OAAO,KAAKC,uBAAe,EAAE;MACnC;IACJ;IAEA,IAAIC,eAAe,GAAGH,KAAK,CAACpB,MAAM,CAACwB,IAAI,CAACnB,KAAK,IAAIA,KAAK,CAACoB,OAAO,KAAK,YAAY,CAAC;IAChF,IAAI,CAACF,eAAe,EAAE;MAClBA,eAAe,GAAG,IAAAG,gCAAgB,EAAC;QAC/BC,KAAK,EAAE,YAAY;QACnBjB,IAAI,EAAE,QAAQ;QACdkB,QAAQ,EAAE;UACNC,MAAM,EAAE,EAAE;UACV7B,MAAM,EAAE;QACZ;MACJ,CAAC,CAAC;MACFoB,KAAK,CAACpB,MAAM,CAACQ,IAAI,CAACe,eAAe,CAAC;IACtC;IAEA,IAAI,CAACN,QAAQ,CAACd,SAAS,CAACoB,eAAe,CAACK,QAAQ,CAAE5B,MAAO,CAAC;IAE1D,MAAM,IAAI,CAACkB,QAAQ,CAAC;MAAED,QAAQ,EAAE,IAAI,CAACA;IAAS,CAAC,CAAC;EACpD;AACJ;AAACJ,OAAA,CAAAC,4BAAA,GAAAA,4BAAA;AAEM,MAAMgB,yBAAyB,GAAIZ,QAAkC,IAAK;EAC7E,MAAMD,QAAQ,GAAG,IAAIlB,yBAAyB,CAAC,QAAQ,CAAC;EAExD,OAAO,IAAIe,4BAA4B,CAAC;IACpCI,QAAQ;IACRD;EACJ,CAAC,CAAC;AACN,CAAC;AAACJ,OAAA,CAAAiB,yBAAA,GAAAA,yBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_plugins","require","_apiHeadlessCms","_folder","FolderModelFieldsModifier","fields","constructor","namespace","setFields","addField","field","tags","rest","push","storageId","type","id","concat","exports","FolderCmsModelModifierPlugin","Plugin","params","modifier","callback","modifyModel","model","modelId","FOLDER_MODEL_ID","extensionsField","find","fieldId","createModelField","label","settings","layout","createFolderModelModifier"],"sources":["createFolderModelModifier.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport type { CmsPrivateModelFull } from \"@webiny/api-headless-cms\";\nimport { createModelField } from \"@webiny/api-headless-cms\";\nimport type { CmsModelField as BaseModelField } from \"@webiny/api-headless-cms/types\";\nimport { FOLDER_MODEL_ID } from \"~/folder/folder.model\";\n\nexport type CmsModelField = Omit<BaseModelField, \"storageId\"> & { modelIds?: string[] };\n\nexport interface IFolderModelFieldsModifier {\n setFields: (fields: BaseModelField[]) => void;\n addField: (field: CmsModelField) => void;\n}\n\nexport class FolderModelFieldsModifier implements IFolderModelFieldsModifier {\n private fields: BaseModelField[] = [];\n private readonly namespace: string;\n\n constructor(namespace: string) {\n this.namespace = namespace;\n }\n\n setFields(fields: BaseModelField[]) {\n this.fields = fields;\n }\n\n addField(field: CmsModelField) {\n const { tags, ...rest } = field;\n\n this.fields.push({\n ...rest,\n storageId: `${field.type}@${this.namespace}_${field.id}`,\n tags: (tags ?? []).concat([`$namespace:${this.namespace}`])\n });\n }\n}\n\ninterface CmsModelModifierCallableParams {\n modifier: IFolderModelFieldsModifier;\n}\n\nexport interface CmsModelModifierCallable {\n (params: CmsModelModifierCallableParams): Promise<void> | void;\n}\n\ninterface FolderCmsModelModifierPluginParams {\n modifier: IFolderModelFieldsModifier;\n callback: CmsModelModifierCallable;\n}\n\nexport class FolderCmsModelModifierPlugin extends Plugin {\n public static override type = \"aco.folder.cms-model-modifier\";\n private readonly modifier: IFolderModelFieldsModifier;\n private readonly callback: CmsModelModifierCallable;\n\n constructor(params: FolderCmsModelModifierPluginParams) {\n super();\n this.modifier = params.modifier;\n this.callback = params.callback;\n }\n\n async modifyModel(model: CmsPrivateModelFull): Promise<void> {\n if (model.modelId !== FOLDER_MODEL_ID) {\n return;\n }\n\n let extensionsField = model.fields.find(field => field.fieldId === \"extensions\");\n if (!extensionsField) {\n extensionsField = createModelField({\n label: \"Extensions\",\n type: \"object\",\n settings: {\n layout: [],\n fields: []\n }\n });\n model.fields.push(extensionsField);\n }\n\n this.modifier.setFields(extensionsField.settings!.fields!);\n\n await this.callback({ modifier: this.modifier });\n }\n}\n\nexport const createFolderModelModifier = (callback: CmsModelModifierCallable) => {\n const modifier = new FolderModelFieldsModifier(\"global\");\n\n return new FolderCmsModelModifierPlugin({\n callback,\n modifier\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,eAAA,GAAAD,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;AASO,MAAMG,yBAAyB,CAAuC;EACjEC,MAAM,GAAqB,EAAE;EAGrCC,WAAWA,CAACC,SAAiB,EAAE;IAC3B,IAAI,CAACA,SAAS,GAAGA,SAAS;EAC9B;EAEAC,SAASA,CAACH,MAAwB,EAAE;IAChC,IAAI,CAACA,MAAM,GAAGA,MAAM;EACxB;EAEAI,QAAQA,CAACC,KAAoB,EAAE;IAC3B,MAAM;MAAEC,IAAI;MAAE,GAAGC;IAAK,CAAC,GAAGF,KAAK;IAE/B,IAAI,CAACL,MAAM,CAACQ,IAAI,CAAC;MACb,GAAGD,IAAI;MACPE,SAAS,EAAE,GAAGJ,KAAK,CAACK,IAAI,IAAI,IAAI,CAACR,SAAS,IAAIG,KAAK,CAACM,EAAE,EAAE;MACxDL,IAAI,EAAE,CAACA,IAAI,IAAI,EAAE,EAAEM,MAAM,CAAC,CAAC,cAAc,IAAI,CAACV,SAAS,EAAE,CAAC;IAC9D,CAAC,CAAC;EACN;AACJ;AAACW,OAAA,CAAAd,yBAAA,GAAAA,yBAAA;AAeM,MAAMe,4BAA4B,SAASC,eAAM,CAAC;EACrD,OAAuBL,IAAI,GAAG,+BAA+B;EAI7DT,WAAWA,CAACe,MAA0C,EAAE;IACpD,KAAK,CAAC,CAAC;IACP,IAAI,CAACC,QAAQ,GAAGD,MAAM,CAACC,QAAQ;IAC/B,IAAI,CAACC,QAAQ,GAAGF,MAAM,CAACE,QAAQ;EACnC;EAEA,MAAMC,WAAWA,CAACC,KAA0B,EAAiB;IACzD,IAAIA,KAAK,CAACC,OAAO,KAAKC,uBAAe,EAAE;MACnC;IACJ;IAEA,IAAIC,eAAe,GAAGH,KAAK,CAACpB,MAAM,CAACwB,IAAI,CAACnB,KAAK,IAAIA,KAAK,CAACoB,OAAO,KAAK,YAAY,CAAC;IAChF,IAAI,CAACF,eAAe,EAAE;MAClBA,eAAe,GAAG,IAAAG,gCAAgB,EAAC;QAC/BC,KAAK,EAAE,YAAY;QACnBjB,IAAI,EAAE,QAAQ;QACdkB,QAAQ,EAAE;UACNC,MAAM,EAAE,EAAE;UACV7B,MAAM,EAAE;QACZ;MACJ,CAAC,CAAC;MACFoB,KAAK,CAACpB,MAAM,CAACQ,IAAI,CAACe,eAAe,CAAC;IACtC;IAEA,IAAI,CAACN,QAAQ,CAACd,SAAS,CAACoB,eAAe,CAACK,QAAQ,CAAE5B,MAAO,CAAC;IAE1D,MAAM,IAAI,CAACkB,QAAQ,CAAC;MAAED,QAAQ,EAAE,IAAI,CAACA;IAAS,CAAC,CAAC;EACpD;AACJ;AAACJ,OAAA,CAAAC,4BAAA,GAAAA,4BAAA;AAEM,MAAMgB,yBAAyB,GAAIZ,QAAkC,IAAK;EAC7E,MAAMD,QAAQ,GAAG,IAAIlB,yBAAyB,CAAC,QAAQ,CAAC;EAExD,OAAO,IAAIe,4BAA4B,CAAC;IACpCI,QAAQ;IACRD;EACJ,CAAC,CAAC;AACN,CAAC;AAACJ,OAAA,CAAAiB,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { CmsFieldTypePlugins, CmsModel } from "@webiny/api-headless-cms/types";
1
+ import type { CmsFieldTypePlugins, CmsModel } from "@webiny/api-headless-cms/types";
2
2
  export interface CreateFolderTypeDefsParams {
3
3
  model: CmsModel;
4
4
  models: CmsModel[];
@@ -100,6 +100,14 @@ const createFolderTypeDefs = params => {
100
100
  type: String!
101
101
  parentId: ID
102
102
  parentId_in: [ID]
103
+ slug: String
104
+ slug_not: String
105
+ slug_contains: String
106
+ slug_not_contains: String
107
+ slug_in: [String]
108
+ slug_not_in: [String]
109
+ slug_startsWith: String
110
+ slug_not_startsWith: String
103
111
  path: String
104
112
  path_not: String
105
113
  path_contains: String
@@ -1 +1 @@
1
- {"version":3,"names":["_renderFields","require","_renderInputFields","removeFieldRequiredValidation","field","validation","filter","name","listValidation","v","createUpdateFields","fields","reduce","collection","push","createFolderTypeDefs","params","model","models","plugins","fieldTypePlugins","fieldTypes","renderFields","type","inputCreateFields","renderInputFields","inputUpdateFields","map","f","typeDefs","join","exports"],"sources":["createFolderTypeDefs.ts"],"sourcesContent":["import { CmsFieldTypePlugins, CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { renderFields } from \"@webiny/api-headless-cms/utils/renderFields\";\nimport { renderInputFields } from \"@webiny/api-headless-cms/utils/renderInputFields\";\n\nexport interface CreateFolderTypeDefsParams {\n model: CmsModel;\n models: CmsModel[];\n plugins: CmsFieldTypePlugins;\n}\n\nconst removeFieldRequiredValidation = (field: CmsModelField) => {\n if (field.validation) {\n field.validation = field.validation.filter(validation => validation.name !== \"required\");\n }\n if (field.listValidation) {\n field.listValidation = field.listValidation.filter(v => v.name !== \"required\");\n }\n return field;\n};\n\nconst createUpdateFields = (fields: CmsModelField[]): CmsModelField[] => {\n return fields.reduce<CmsModelField[]>((collection, field) => {\n collection.push(removeFieldRequiredValidation({ ...field }));\n return collection;\n }, []);\n};\n\nexport const createFolderTypeDefs = (params: CreateFolderTypeDefsParams): string => {\n const { model, models, plugins: fieldTypePlugins } = params;\n const { fields } = model;\n\n const fieldTypes = renderFields({\n models,\n model,\n fields,\n type: \"manage\",\n fieldTypePlugins\n });\n const inputCreateFields = renderInputFields({\n models,\n model,\n fields,\n fieldTypePlugins\n });\n const inputUpdateFields = renderInputFields({\n models,\n model,\n fields: createUpdateFields(fields),\n fieldTypePlugins\n });\n\n return /* GraphQL */ `\n ${fieldTypes.map(f => f.typeDefs).join(\"\\n\")}\n \n type CompressedResponse {\n compression: String\n value: String\n }\n\n type Folder {\n id: ID!\n # Tells us if the current user can manage folder structure.\n canManageStructure: Boolean\n\n # Tells us if the current user can manage folder permissions.\n canManagePermissions: Boolean\n\n # Tells us if the current user can manage folder content.\n canManageContent: Boolean\n\n # Tells us if the folder contains non-inherited permissions.\n hasNonInheritedPermissions: Boolean\n\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: AcoUser\n modifiedBy: AcoUser\n savedBy: AcoUser\n \n ${fieldTypes.map(f => f.fields).join(\"\\n\")}\n }\n\n ${inputCreateFields.map(f => f.typeDefs).join(\"\\n\")}\n \n input FolderCreateInput {\n # Pass an ID if you want to create a folder with a specific ID.\n id: ID \n \n ${inputCreateFields.map(f => f.fields).join(\"\\n\")}\n }\n \n input FolderUpdateInput {\n ${inputUpdateFields.map(f => f.fields).join(\"\\n\")}\n }\n \n input FoldersListWhereInput {\n type: String!\n parentId: ID\n parentId_in: [ID]\n path: String\n path_not: String\n path_contains: String\n path_not_contains: String\n path_in: [String]\n path_not_in: [String]\n path_startsWith: String\n path_not_startsWith: String\n createdBy: ID\n }\n \n type FolderResponse {\n data: Folder\n error: AcoError\n }\n\n type FoldersListResponse {\n data: [Folder]\n error: AcoError\n meta: AcoMeta\n }\n\n type FoldersListCompressedResponse {\n data: CompressedResponse\n error: AcoError\n }\n \n type FoldersHierarchyData {\n parents: [Folder]\n siblings: [Folder]\n }\n\n type FoldersHierarchyResponse {\n data: FoldersHierarchyData\n error: AcoError\n }\n\n type FolderLevelPermissionsTarget {\n id: ID!\n type: String!\n target: ID!\n name: String!\n meta: JSON\n }\n\n type FolderLevelPermissionsTargetsListMeta {\n totalCount: Int!\n }\n\n type FolderLevelPermissionsTargetsListResponse {\n data: [FolderLevelPermissionsTarget]\n meta: FolderLevelPermissionsTargetsListMeta\n error: AcoError\n }\n \n type FolderModelResponse {\n data: JSON\n error: AcoError\n }\n\n extend type AcoQuery {\n getFolderModel: FolderModelResponse!\n getFolder(id: ID!): FolderResponse\n listFolders(\n where: FoldersListWhereInput!\n limit: Int\n after: String\n sort: AcoSort\n ): FoldersListResponse\n listFoldersCompressed(\n where: FoldersListWhereInput!\n limit: Int\n after: String\n sort: AcoSort\n ): FoldersListCompressedResponse\n getFolderHierarchy(type: String!, id: ID!): FoldersHierarchyResponse\n listFolderLevelPermissionsTargets: FolderLevelPermissionsTargetsListResponse\n }\n\n extend type AcoMutation {\n createFolder(data: FolderCreateInput!): FolderResponse\n updateFolder(id: ID!, data: FolderUpdateInput!): FolderResponse\n deleteFolder(id: ID!): AcoBooleanResponse\n }\n \n extend type AcoFolder_Permissions {\n inheritedFrom: ID\n }\n \n extend input AcoFolder_PermissionsInput {\n inheritedFrom: ID\n }\n `;\n};\n"],"mappings":";;;;;;AACA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAQA,MAAME,6BAA6B,GAAIC,KAAoB,IAAK;EAC5D,IAAIA,KAAK,CAACC,UAAU,EAAE;IAClBD,KAAK,CAACC,UAAU,GAAGD,KAAK,CAACC,UAAU,CAACC,MAAM,CAACD,UAAU,IAAIA,UAAU,CAACE,IAAI,KAAK,UAAU,CAAC;EAC5F;EACA,IAAIH,KAAK,CAACI,cAAc,EAAE;IACtBJ,KAAK,CAACI,cAAc,GAAGJ,KAAK,CAACI,cAAc,CAACF,MAAM,CAACG,CAAC,IAAIA,CAAC,CAACF,IAAI,KAAK,UAAU,CAAC;EAClF;EACA,OAAOH,KAAK;AAChB,CAAC;AAED,MAAMM,kBAAkB,GAAIC,MAAuB,IAAsB;EACrE,OAAOA,MAAM,CAACC,MAAM,CAAkB,CAACC,UAAU,EAAET,KAAK,KAAK;IACzDS,UAAU,CAACC,IAAI,CAACX,6BAA6B,CAAC;MAAE,GAAGC;IAAM,CAAC,CAAC,CAAC;IAC5D,OAAOS,UAAU;EACrB,CAAC,EAAE,EAAE,CAAC;AACV,CAAC;AAEM,MAAME,oBAAoB,GAAIC,MAAkC,IAAa;EAChF,MAAM;IAAEC,KAAK;IAAEC,MAAM;IAAEC,OAAO,EAAEC;EAAiB,CAAC,GAAGJ,MAAM;EAC3D,MAAM;IAAEL;EAAO,CAAC,GAAGM,KAAK;EAExB,MAAMI,UAAU,GAAG,IAAAC,0BAAY,EAAC;IAC5BJ,MAAM;IACND,KAAK;IACLN,MAAM;IACNY,IAAI,EAAE,QAAQ;IACdH;EACJ,CAAC,CAAC;EACF,MAAMI,iBAAiB,GAAG,IAAAC,oCAAiB,EAAC;IACxCP,MAAM;IACND,KAAK;IACLN,MAAM;IACNS;EACJ,CAAC,CAAC;EACF,MAAMM,iBAAiB,GAAG,IAAAD,oCAAiB,EAAC;IACxCP,MAAM;IACND,KAAK;IACLN,MAAM,EAAED,kBAAkB,CAACC,MAAM,CAAC;IAClCS;EACJ,CAAC,CAAC;EAEF,OAAO,aAAc;AACzB,UAAUC,UAAU,CAACM,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcT,UAAU,CAACM,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACjB,MAAM,CAAC,CAACmB,IAAI,CAAC,IAAI,CAAC;AACtD;AACA;AACA,UAAUN,iBAAiB,CAACG,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;AAC3D;AACA;AACA;AACA;AACA;AACA,eAAeN,iBAAiB,CAACG,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACjB,MAAM,CAAC,CAACmB,IAAI,CAAC,IAAI,CAAC;AAC9D;AACA;AACA;AACA,cAAcJ,iBAAiB,CAACC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACjB,MAAM,CAAC,CAACmB,IAAI,CAAC,IAAI,CAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AAACC,OAAA,CAAAhB,oBAAA,GAAAA,oBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_renderFields","require","_renderInputFields","removeFieldRequiredValidation","field","validation","filter","name","listValidation","v","createUpdateFields","fields","reduce","collection","push","createFolderTypeDefs","params","model","models","plugins","fieldTypePlugins","fieldTypes","renderFields","type","inputCreateFields","renderInputFields","inputUpdateFields","map","f","typeDefs","join","exports"],"sources":["createFolderTypeDefs.ts"],"sourcesContent":["import type { CmsFieldTypePlugins, CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { renderFields } from \"@webiny/api-headless-cms/utils/renderFields\";\nimport { renderInputFields } from \"@webiny/api-headless-cms/utils/renderInputFields\";\n\nexport interface CreateFolderTypeDefsParams {\n model: CmsModel;\n models: CmsModel[];\n plugins: CmsFieldTypePlugins;\n}\n\nconst removeFieldRequiredValidation = (field: CmsModelField) => {\n if (field.validation) {\n field.validation = field.validation.filter(validation => validation.name !== \"required\");\n }\n if (field.listValidation) {\n field.listValidation = field.listValidation.filter(v => v.name !== \"required\");\n }\n return field;\n};\n\nconst createUpdateFields = (fields: CmsModelField[]): CmsModelField[] => {\n return fields.reduce<CmsModelField[]>((collection, field) => {\n collection.push(removeFieldRequiredValidation({ ...field }));\n return collection;\n }, []);\n};\n\nexport const createFolderTypeDefs = (params: CreateFolderTypeDefsParams): string => {\n const { model, models, plugins: fieldTypePlugins } = params;\n const { fields } = model;\n\n const fieldTypes = renderFields({\n models,\n model,\n fields,\n type: \"manage\",\n fieldTypePlugins\n });\n const inputCreateFields = renderInputFields({\n models,\n model,\n fields,\n fieldTypePlugins\n });\n const inputUpdateFields = renderInputFields({\n models,\n model,\n fields: createUpdateFields(fields),\n fieldTypePlugins\n });\n\n return /* GraphQL */ `\n ${fieldTypes.map(f => f.typeDefs).join(\"\\n\")}\n \n type CompressedResponse {\n compression: String\n value: String\n }\n\n type Folder {\n id: ID!\n # Tells us if the current user can manage folder structure.\n canManageStructure: Boolean\n\n # Tells us if the current user can manage folder permissions.\n canManagePermissions: Boolean\n\n # Tells us if the current user can manage folder content.\n canManageContent: Boolean\n\n # Tells us if the folder contains non-inherited permissions.\n hasNonInheritedPermissions: Boolean\n\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: AcoUser\n modifiedBy: AcoUser\n savedBy: AcoUser\n \n ${fieldTypes.map(f => f.fields).join(\"\\n\")}\n }\n\n ${inputCreateFields.map(f => f.typeDefs).join(\"\\n\")}\n \n input FolderCreateInput {\n # Pass an ID if you want to create a folder with a specific ID.\n id: ID \n \n ${inputCreateFields.map(f => f.fields).join(\"\\n\")}\n }\n \n input FolderUpdateInput {\n ${inputUpdateFields.map(f => f.fields).join(\"\\n\")}\n }\n \n input FoldersListWhereInput {\n type: String!\n parentId: ID\n parentId_in: [ID]\n slug: String\n slug_not: String\n slug_contains: String\n slug_not_contains: String\n slug_in: [String]\n slug_not_in: [String]\n slug_startsWith: String\n slug_not_startsWith: String\n path: String\n path_not: String\n path_contains: String\n path_not_contains: String\n path_in: [String]\n path_not_in: [String]\n path_startsWith: String\n path_not_startsWith: String\n createdBy: ID\n }\n \n type FolderResponse {\n data: Folder\n error: AcoError\n }\n\n type FoldersListResponse {\n data: [Folder]\n error: AcoError\n meta: AcoMeta\n }\n\n type FoldersListCompressedResponse {\n data: CompressedResponse\n error: AcoError\n }\n \n type FoldersHierarchyData {\n parents: [Folder]\n siblings: [Folder]\n }\n\n type FoldersHierarchyResponse {\n data: FoldersHierarchyData\n error: AcoError\n }\n\n type FolderLevelPermissionsTarget {\n id: ID!\n type: String!\n target: ID!\n name: String!\n meta: JSON\n }\n\n type FolderLevelPermissionsTargetsListMeta {\n totalCount: Int!\n }\n\n type FolderLevelPermissionsTargetsListResponse {\n data: [FolderLevelPermissionsTarget]\n meta: FolderLevelPermissionsTargetsListMeta\n error: AcoError\n }\n \n type FolderModelResponse {\n data: JSON\n error: AcoError\n }\n\n extend type AcoQuery {\n getFolderModel: FolderModelResponse!\n getFolder(id: ID!): FolderResponse\n listFolders(\n where: FoldersListWhereInput!\n limit: Int\n after: String\n sort: AcoSort\n ): FoldersListResponse\n listFoldersCompressed(\n where: FoldersListWhereInput!\n limit: Int\n after: String\n sort: AcoSort\n ): FoldersListCompressedResponse\n getFolderHierarchy(type: String!, id: ID!): FoldersHierarchyResponse\n listFolderLevelPermissionsTargets: FolderLevelPermissionsTargetsListResponse\n }\n\n extend type AcoMutation {\n createFolder(data: FolderCreateInput!): FolderResponse\n updateFolder(id: ID!, data: FolderUpdateInput!): FolderResponse\n deleteFolder(id: ID!): AcoBooleanResponse\n }\n \n extend type AcoFolder_Permissions {\n inheritedFrom: ID\n }\n \n extend input AcoFolder_PermissionsInput {\n inheritedFrom: ID\n }\n `;\n};\n"],"mappings":";;;;;;AACA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAQA,MAAME,6BAA6B,GAAIC,KAAoB,IAAK;EAC5D,IAAIA,KAAK,CAACC,UAAU,EAAE;IAClBD,KAAK,CAACC,UAAU,GAAGD,KAAK,CAACC,UAAU,CAACC,MAAM,CAACD,UAAU,IAAIA,UAAU,CAACE,IAAI,KAAK,UAAU,CAAC;EAC5F;EACA,IAAIH,KAAK,CAACI,cAAc,EAAE;IACtBJ,KAAK,CAACI,cAAc,GAAGJ,KAAK,CAACI,cAAc,CAACF,MAAM,CAACG,CAAC,IAAIA,CAAC,CAACF,IAAI,KAAK,UAAU,CAAC;EAClF;EACA,OAAOH,KAAK;AAChB,CAAC;AAED,MAAMM,kBAAkB,GAAIC,MAAuB,IAAsB;EACrE,OAAOA,MAAM,CAACC,MAAM,CAAkB,CAACC,UAAU,EAAET,KAAK,KAAK;IACzDS,UAAU,CAACC,IAAI,CAACX,6BAA6B,CAAC;MAAE,GAAGC;IAAM,CAAC,CAAC,CAAC;IAC5D,OAAOS,UAAU;EACrB,CAAC,EAAE,EAAE,CAAC;AACV,CAAC;AAEM,MAAME,oBAAoB,GAAIC,MAAkC,IAAa;EAChF,MAAM;IAAEC,KAAK;IAAEC,MAAM;IAAEC,OAAO,EAAEC;EAAiB,CAAC,GAAGJ,MAAM;EAC3D,MAAM;IAAEL;EAAO,CAAC,GAAGM,KAAK;EAExB,MAAMI,UAAU,GAAG,IAAAC,0BAAY,EAAC;IAC5BJ,MAAM;IACND,KAAK;IACLN,MAAM;IACNY,IAAI,EAAE,QAAQ;IACdH;EACJ,CAAC,CAAC;EACF,MAAMI,iBAAiB,GAAG,IAAAC,oCAAiB,EAAC;IACxCP,MAAM;IACND,KAAK;IACLN,MAAM;IACNS;EACJ,CAAC,CAAC;EACF,MAAMM,iBAAiB,GAAG,IAAAD,oCAAiB,EAAC;IACxCP,MAAM;IACND,KAAK;IACLN,MAAM,EAAED,kBAAkB,CAACC,MAAM,CAAC;IAClCS;EACJ,CAAC,CAAC;EAEF,OAAO,aAAc;AACzB,UAAUC,UAAU,CAACM,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcT,UAAU,CAACM,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACjB,MAAM,CAAC,CAACmB,IAAI,CAAC,IAAI,CAAC;AACtD;AACA;AACA,UAAUN,iBAAiB,CAACG,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;AAC3D;AACA;AACA;AACA;AACA;AACA,eAAeN,iBAAiB,CAACG,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACjB,MAAM,CAAC,CAACmB,IAAI,CAAC,IAAI,CAAC;AAC9D;AACA;AACA;AACA,cAAcJ,iBAAiB,CAACC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACjB,MAAM,CAAC,CAACmB,IAAI,CAAC,IAAI,CAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AAACC,OAAA,CAAAhB,oBAAA,GAAAA,oBAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { AcoContext, Folder } from "../types";
1
+ import type { AcoContext, Folder } from "../types";
2
2
  interface EnsureFolderIsEmptyParams {
3
3
  context: AcoContext;
4
4
  folder: Pick<Folder, "id" | "type">;
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_apiSecurity","ensureFolderIsEmpty","context","folder","hasContentCallback","hasFoldersCallback","id","type","folders","aco","list","where","parentId","limit","length","hasFolders","hasContent","Promise","all","WebinyError","folderLevelPermissions","canUseFolderLevelPermissions","hasInvisibleFolders","hasInvisibleContent","security","withoutAuthorization","NotAuthorizedError","data","exports"],"sources":["ensureFolderIsEmpty.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { AcoContext, Folder } from \"~/types\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\n\ninterface EnsureFolderIsEmptyParams {\n context: AcoContext;\n folder: Pick<Folder, \"id\" | \"type\">;\n hasContentCallback: () => boolean | Promise<boolean>;\n}\n\nexport const ensureFolderIsEmpty = async ({\n context,\n folder,\n hasContentCallback\n}: EnsureFolderIsEmptyParams) => {\n const hasFoldersCallback = async () => {\n const { id, type } = folder;\n const [folders] = await context.aco.folder.list({\n where: {\n type,\n parentId: id\n },\n limit: 1\n });\n\n return folders.length > 0;\n };\n\n const [hasFolders, hasContent] = await Promise.all([\n hasFoldersCallback(),\n hasContentCallback()\n ]);\n\n if (hasFolders || hasContent) {\n throw new WebinyError(\n \"Delete all child folders and entries before proceeding.\",\n \"DELETE_FOLDER_WITH_CHILDREN\",\n {\n folder,\n hasFolders,\n hasContent\n }\n );\n }\n\n // Let's also check if there are folders / content that are not visible because of folder permissions.\n if (!context.aco.folderLevelPermissions.canUseFolderLevelPermissions()) {\n // If folder level permissions are not enabled, we can skip this check. This is because\n // in that case, all folders and content are visible to the user.\n return;\n }\n\n const [hasInvisibleFolders, hasInvisibleContent] = await context.security.withoutAuthorization(\n async () => {\n const [hasFolders, hasContent] = await Promise.all([\n hasFoldersCallback(),\n hasContentCallback()\n ]);\n return [hasFolders, hasContent];\n }\n );\n\n // In case there are invisible folders or content, we'll throw a different error.\n // This is to prevent users from deleting folders that contain content they can't see.\n if (hasInvisibleFolders || hasInvisibleContent) {\n throw new NotAuthorizedError({\n data: {\n folder,\n hasFolders: hasInvisibleFolders,\n hasContent: hasInvisibleContent\n }\n });\n }\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AAQO,MAAME,mBAAmB,GAAG,MAAAA,CAAO;EACtCC,OAAO;EACPC,MAAM;EACNC;AACuB,CAAC,KAAK;EAC7B,MAAMC,kBAAkB,GAAG,MAAAA,CAAA,KAAY;IACnC,MAAM;MAAEC,EAAE;MAAEC;IAAK,CAAC,GAAGJ,MAAM;IAC3B,MAAM,CAACK,OAAO,CAAC,GAAG,MAAMN,OAAO,CAACO,GAAG,CAACN,MAAM,CAACO,IAAI,CAAC;MAC5CC,KAAK,EAAE;QACHJ,IAAI;QACJK,QAAQ,EAAEN;MACd,CAAC;MACDO,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,OAAOL,OAAO,CAACM,MAAM,GAAG,CAAC;EAC7B,CAAC;EAED,MAAM,CAACC,UAAU,EAAEC,UAAU,CAAC,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC,CAC/Cb,kBAAkB,CAAC,CAAC,EACpBD,kBAAkB,CAAC,CAAC,CACvB,CAAC;EAEF,IAAIW,UAAU,IAAIC,UAAU,EAAE;IAC1B,MAAM,IAAIG,cAAW,CACjB,yDAAyD,EACzD,6BAA6B,EAC7B;MACIhB,MAAM;MACNY,UAAU;MACVC;IACJ,CACJ,CAAC;EACL;;EAEA;EACA,IAAI,CAACd,OAAO,CAACO,GAAG,CAACW,sBAAsB,CAACC,4BAA4B,CAAC,CAAC,EAAE;IACpE;IACA;IACA;EACJ;EAEA,MAAM,CAACC,mBAAmB,EAAEC,mBAAmB,CAAC,GAAG,MAAMrB,OAAO,CAACsB,QAAQ,CAACC,oBAAoB,CAC1F,YAAY;IACR,MAAM,CAACV,UAAU,EAAEC,UAAU,CAAC,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC,CAC/Cb,kBAAkB,CAAC,CAAC,EACpBD,kBAAkB,CAAC,CAAC,CACvB,CAAC;IACF,OAAO,CAACW,UAAU,EAAEC,UAAU,CAAC;EACnC,CACJ,CAAC;;EAED;EACA;EACA,IAAIM,mBAAmB,IAAIC,mBAAmB,EAAE;IAC5C,MAAM,IAAIG,+BAAkB,CAAC;MACzBC,IAAI,EAAE;QACFxB,MAAM;QACNY,UAAU,EAAEO,mBAAmB;QAC/BN,UAAU,EAAEO;MAChB;IACJ,CAAC,CAAC;EACN;AACJ,CAAC;AAACK,OAAA,CAAA3B,mBAAA,GAAAA,mBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_apiSecurity","ensureFolderIsEmpty","context","folder","hasContentCallback","hasFoldersCallback","id","type","folders","aco","list","where","parentId","limit","length","hasFolders","hasContent","Promise","all","WebinyError","folderLevelPermissions","canUseFolderLevelPermissions","hasInvisibleFolders","hasInvisibleContent","security","withoutAuthorization","NotAuthorizedError","data","exports"],"sources":["ensureFolderIsEmpty.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type { AcoContext, Folder } from \"~/types\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\n\ninterface EnsureFolderIsEmptyParams {\n context: AcoContext;\n folder: Pick<Folder, \"id\" | \"type\">;\n hasContentCallback: () => boolean | Promise<boolean>;\n}\n\nexport const ensureFolderIsEmpty = async ({\n context,\n folder,\n hasContentCallback\n}: EnsureFolderIsEmptyParams) => {\n const hasFoldersCallback = async () => {\n const { id, type } = folder;\n const [folders] = await context.aco.folder.list({\n where: {\n type,\n parentId: id\n },\n limit: 1\n });\n\n return folders.length > 0;\n };\n\n const [hasFolders, hasContent] = await Promise.all([\n hasFoldersCallback(),\n hasContentCallback()\n ]);\n\n if (hasFolders || hasContent) {\n throw new WebinyError(\n \"Delete all child folders and entries before proceeding.\",\n \"DELETE_FOLDER_WITH_CHILDREN\",\n {\n folder,\n hasFolders,\n hasContent\n }\n );\n }\n\n // Let's also check if there are folders / content that are not visible because of folder permissions.\n if (!context.aco.folderLevelPermissions.canUseFolderLevelPermissions()) {\n // If folder level permissions are not enabled, we can skip this check. This is because\n // in that case, all folders and content are visible to the user.\n return;\n }\n\n const [hasInvisibleFolders, hasInvisibleContent] = await context.security.withoutAuthorization(\n async () => {\n const [hasFolders, hasContent] = await Promise.all([\n hasFoldersCallback(),\n hasContentCallback()\n ]);\n return [hasFolders, hasContent];\n }\n );\n\n // In case there are invisible folders or content, we'll throw a different error.\n // This is to prevent users from deleting folders that contain content they can't see.\n if (hasInvisibleFolders || hasInvisibleContent) {\n throw new NotAuthorizedError({\n data: {\n folder,\n hasFolders: hasInvisibleFolders,\n hasContent: hasInvisibleContent\n }\n });\n }\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AAQO,MAAME,mBAAmB,GAAG,MAAAA,CAAO;EACtCC,OAAO;EACPC,MAAM;EACNC;AACuB,CAAC,KAAK;EAC7B,MAAMC,kBAAkB,GAAG,MAAAA,CAAA,KAAY;IACnC,MAAM;MAAEC,EAAE;MAAEC;IAAK,CAAC,GAAGJ,MAAM;IAC3B,MAAM,CAACK,OAAO,CAAC,GAAG,MAAMN,OAAO,CAACO,GAAG,CAACN,MAAM,CAACO,IAAI,CAAC;MAC5CC,KAAK,EAAE;QACHJ,IAAI;QACJK,QAAQ,EAAEN;MACd,CAAC;MACDO,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,OAAOL,OAAO,CAACM,MAAM,GAAG,CAAC;EAC7B,CAAC;EAED,MAAM,CAACC,UAAU,EAAEC,UAAU,CAAC,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC,CAC/Cb,kBAAkB,CAAC,CAAC,EACpBD,kBAAkB,CAAC,CAAC,CACvB,CAAC;EAEF,IAAIW,UAAU,IAAIC,UAAU,EAAE;IAC1B,MAAM,IAAIG,cAAW,CACjB,yDAAyD,EACzD,6BAA6B,EAC7B;MACIhB,MAAM;MACNY,UAAU;MACVC;IACJ,CACJ,CAAC;EACL;;EAEA;EACA,IAAI,CAACd,OAAO,CAACO,GAAG,CAACW,sBAAsB,CAACC,4BAA4B,CAAC,CAAC,EAAE;IACpE;IACA;IACA;EACJ;EAEA,MAAM,CAACC,mBAAmB,EAAEC,mBAAmB,CAAC,GAAG,MAAMrB,OAAO,CAACsB,QAAQ,CAACC,oBAAoB,CAC1F,YAAY;IACR,MAAM,CAACV,UAAU,EAAEC,UAAU,CAAC,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC,CAC/Cb,kBAAkB,CAAC,CAAC,EACpBD,kBAAkB,CAAC,CAAC,CACvB,CAAC;IACF,OAAO,CAACW,UAAU,EAAEC,UAAU,CAAC;EACnC,CACJ,CAAC;;EAED;EACA;EACA,IAAIM,mBAAmB,IAAIC,mBAAmB,EAAE;IAC5C,MAAM,IAAIG,+BAAkB,CAAC;MACzBC,IAAI,EAAE;QACFxB,MAAM;QACNY,UAAU,EAAEO,mBAAmB;QAC/BN,UAAU,EAAEO;MAChB;IACJ,CAAC,CAAC;EACN;AACJ,CAAC;AAACK,OAAA,CAAA3B,mBAAA,GAAAA,mBAAA","ignoreList":[]}
@@ -1,5 +1,6 @@
1
- import { AcoFolderCrud } from "./folder.types";
2
- import { type AcoContext, CreateAcoParams } from "../types";
1
+ import type { AcoFolderCrud } from "./folder.types";
2
+ import type { CreateAcoParams } from "../types";
3
+ import { type AcoContext } from "../types";
3
4
  interface CreateFolderCrudMethodsParams extends CreateAcoParams {
4
5
  context: AcoContext;
5
6
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_pubsub","require","_useCases","FIXED_FOLDER_LISTING_LIMIT","createFolderCrudMethods","storageOperations","folderLevelPermissions","context","onFolderBeforeCreate","createTopic","onFolderAfterCreate","onFolderBeforeUpdate","onFolderAfterUpdate","onFolderBeforeDelete","onFolderAfterDelete","getFolderUseCase","getFolderUseCaseWithoutPermissions","getGetFolderUseCase","getOperation","folder","getFolder","listFoldersUseCase","listFoldersUseCaseWithoutPermissions","getListFoldersUseCases","listOperation","listFolders","getFolderHierarchyUseCase","getGetFolderHierarchyUseCases","createFolderUseCase","getCreateFolderUseCases","createOperation","createFolder","topics","updateFolderUseCase","getUpdateFolderUseCase","updateOperation","updateFolder","deleteFolderUseCase","getDeleteFolderUseCases","deleteOperation","deleteFolder","getAncestorsUseCase","getGetAncestors","listFolderLevelPermissionsTargetsUseCase","getListFolderLevelPermissionsTargets","get","id","disablePermissions","execute","list","params","listAll","limit","getFolderHierarchy","create","data","delete","update","getAncestors","getFolderWithAncestors","listFolderLevelPermissionsTargets","exports"],"sources":["folder.crud.ts"],"sourcesContent":["import { createTopic } from \"@webiny/pubsub\";\nimport {\n AcoFolderCrud,\n type ListFoldersParams,\n OnFolderAfterCreateTopicParams,\n OnFolderAfterDeleteTopicParams,\n OnFolderAfterUpdateTopicParams,\n OnFolderBeforeCreateTopicParams,\n OnFolderBeforeDeleteTopicParams,\n OnFolderBeforeUpdateTopicParams\n} from \"./folder.types\";\nimport {\n getCreateFolderUseCases,\n getDeleteFolderUseCases,\n getGetAncestors,\n getGetFolderUseCase,\n getListFolderLevelPermissionsTargets,\n getListFoldersUseCases,\n getUpdateFolderUseCase,\n getGetFolderHierarchyUseCases\n} from \"~/folder/useCases\";\nimport { type AcoContext, CreateAcoParams, Folder } from \"~/types\";\n\nconst FIXED_FOLDER_LISTING_LIMIT = 10_000;\n\ninterface CreateFolderCrudMethodsParams extends CreateAcoParams {\n context: AcoContext;\n}\n\nexport const createFolderCrudMethods = ({\n storageOperations,\n folderLevelPermissions,\n context\n}: CreateFolderCrudMethodsParams): AcoFolderCrud => {\n // create\n const onFolderBeforeCreate = createTopic<OnFolderBeforeCreateTopicParams>(\n \"aco.onFolderBeforeCreate\"\n );\n const onFolderAfterCreate =\n createTopic<OnFolderAfterCreateTopicParams>(\"aco.onFolderAfterCreate\");\n // update\n const onFolderBeforeUpdate = createTopic<OnFolderBeforeUpdateTopicParams>(\n \"aco.onFolderBeforeUpdate\"\n );\n const onFolderAfterUpdate =\n createTopic<OnFolderAfterUpdateTopicParams>(\"aco.onFolderAfterUpdate\");\n // delete\n const onFolderBeforeDelete = createTopic<OnFolderBeforeDeleteTopicParams>(\n \"aco.onFolderBeforeDelete\"\n );\n const onFolderAfterDelete =\n createTopic<OnFolderAfterDeleteTopicParams>(\"aco.onFolderAfterDelete\");\n\n const { getFolderUseCase, getFolderUseCaseWithoutPermissions } = getGetFolderUseCase({\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions\n });\n\n const { listFoldersUseCase, listFoldersUseCaseWithoutPermissions } = getListFoldersUseCases({\n listOperation: storageOperations.folder.listFolders,\n folderLevelPermissions\n });\n\n const { getFolderHierarchyUseCase } = getGetFolderHierarchyUseCases({\n listOperation: storageOperations.folder.listFolders,\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions\n });\n\n const { createFolderUseCase } = getCreateFolderUseCases({\n createOperation: storageOperations.folder.createFolder,\n folderLevelPermissions,\n topics: {\n onFolderAfterCreate,\n onFolderBeforeCreate\n }\n });\n\n const { updateFolderUseCase } = getUpdateFolderUseCase({\n updateOperation: storageOperations.folder.updateFolder,\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions,\n topics: {\n onFolderAfterUpdate,\n onFolderBeforeUpdate\n }\n });\n\n const { deleteFolderUseCase } = getDeleteFolderUseCases({\n deleteOperation: storageOperations.folder.deleteFolder,\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions,\n topics: {\n onFolderBeforeDelete,\n onFolderAfterDelete\n }\n });\n\n const { getAncestorsUseCase } = getGetAncestors({\n listFoldersUseCase: listFoldersUseCase\n });\n\n const { listFolderLevelPermissionsTargetsUseCase } = getListFolderLevelPermissionsTargets({\n context\n });\n\n return {\n /**\n * Lifecycle events\n */\n onFolderBeforeCreate,\n onFolderAfterCreate,\n onFolderBeforeUpdate,\n onFolderAfterUpdate,\n onFolderBeforeDelete,\n onFolderAfterDelete,\n\n async get(id, disablePermissions) {\n // If permissions are disabled, execute the use case without applying folder-level permissions logic, returning the raw folder data from the database.\n if (disablePermissions) {\n return await getFolderUseCaseWithoutPermissions.execute({ id });\n }\n return await getFolderUseCase.execute({ id });\n },\n\n async list({ disablePermissions, ...params }: ListFoldersParams) {\n // If permissions are disabled, execute the use case without applying folder-level permissions logic, returning the raw folder data from the database.\n if (disablePermissions) {\n return await listFoldersUseCaseWithoutPermissions.execute(params);\n }\n return await listFoldersUseCase.execute(params);\n },\n\n async listAll(params) {\n return await this.list({\n ...params,\n limit: FIXED_FOLDER_LISTING_LIMIT\n });\n },\n\n async getFolderHierarchy(params) {\n return await getFolderHierarchyUseCase.execute(params);\n },\n\n async create(data) {\n return await createFolderUseCase.execute(data);\n },\n\n async delete(id) {\n return await deleteFolderUseCase.execute({ id });\n },\n\n async update(id, data) {\n return await updateFolderUseCase.execute(id, data);\n },\n\n async getAncestors(folder: Folder) {\n return getAncestorsUseCase.execute({ folder });\n },\n\n /**\n * @deprecated use `getAncestors` instead\n */\n async getFolderWithAncestors(id: string) {\n const folder = await this.get(id);\n return this.getAncestors(folder);\n },\n\n async listFolderLevelPermissionsTargets() {\n return await listFolderLevelPermissionsTargetsUseCase.execute();\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_pubsub","require","_useCases","FIXED_FOLDER_LISTING_LIMIT","createFolderCrudMethods","storageOperations","folderLevelPermissions","context","onFolderBeforeCreate","createTopic","onFolderAfterCreate","onFolderBeforeUpdate","onFolderAfterUpdate","onFolderBeforeDelete","onFolderAfterDelete","getFolderUseCase","getFolderUseCaseWithoutPermissions","getGetFolderUseCase","getOperation","folder","getFolder","listFoldersUseCase","listFoldersUseCaseWithoutPermissions","getListFoldersUseCases","listOperation","listFolders","getFolderHierarchyUseCase","getGetFolderHierarchyUseCases","createFolderUseCase","getCreateFolderUseCases","createOperation","createFolder","topics","updateFolderUseCase","getUpdateFolderUseCase","updateOperation","updateFolder","deleteFolderUseCase","getDeleteFolderUseCases","deleteOperation","deleteFolder","getAncestorsUseCase","getGetAncestors","listFolderLevelPermissionsTargetsUseCase","getListFolderLevelPermissionsTargets","get","id","disablePermissions","execute","list","params","listAll","limit","getFolderHierarchy","create","data","delete","update","getAncestors","getFolderWithAncestors","listFolderLevelPermissionsTargets","exports"],"sources":["folder.crud.ts"],"sourcesContent":["import { createTopic } from \"@webiny/pubsub\";\nimport type {\n AcoFolderCrud,\n OnFolderAfterCreateTopicParams,\n OnFolderAfterDeleteTopicParams,\n OnFolderAfterUpdateTopicParams,\n OnFolderBeforeCreateTopicParams,\n OnFolderBeforeDeleteTopicParams,\n OnFolderBeforeUpdateTopicParams\n} from \"./folder.types\";\nimport { type ListFoldersParams } from \"./folder.types\";\nimport {\n getCreateFolderUseCases,\n getDeleteFolderUseCases,\n getGetAncestors,\n getGetFolderUseCase,\n getListFolderLevelPermissionsTargets,\n getListFoldersUseCases,\n getUpdateFolderUseCase,\n getGetFolderHierarchyUseCases\n} from \"~/folder/useCases\";\nimport type { CreateAcoParams, Folder } from \"~/types\";\nimport { type AcoContext } from \"~/types\";\n\nconst FIXED_FOLDER_LISTING_LIMIT = 10_000;\n\ninterface CreateFolderCrudMethodsParams extends CreateAcoParams {\n context: AcoContext;\n}\n\nexport const createFolderCrudMethods = ({\n storageOperations,\n folderLevelPermissions,\n context\n}: CreateFolderCrudMethodsParams): AcoFolderCrud => {\n // create\n const onFolderBeforeCreate = createTopic<OnFolderBeforeCreateTopicParams>(\n \"aco.onFolderBeforeCreate\"\n );\n const onFolderAfterCreate =\n createTopic<OnFolderAfterCreateTopicParams>(\"aco.onFolderAfterCreate\");\n // update\n const onFolderBeforeUpdate = createTopic<OnFolderBeforeUpdateTopicParams>(\n \"aco.onFolderBeforeUpdate\"\n );\n const onFolderAfterUpdate =\n createTopic<OnFolderAfterUpdateTopicParams>(\"aco.onFolderAfterUpdate\");\n // delete\n const onFolderBeforeDelete = createTopic<OnFolderBeforeDeleteTopicParams>(\n \"aco.onFolderBeforeDelete\"\n );\n const onFolderAfterDelete =\n createTopic<OnFolderAfterDeleteTopicParams>(\"aco.onFolderAfterDelete\");\n\n const { getFolderUseCase, getFolderUseCaseWithoutPermissions } = getGetFolderUseCase({\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions\n });\n\n const { listFoldersUseCase, listFoldersUseCaseWithoutPermissions } = getListFoldersUseCases({\n listOperation: storageOperations.folder.listFolders,\n folderLevelPermissions\n });\n\n const { getFolderHierarchyUseCase } = getGetFolderHierarchyUseCases({\n listOperation: storageOperations.folder.listFolders,\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions\n });\n\n const { createFolderUseCase } = getCreateFolderUseCases({\n createOperation: storageOperations.folder.createFolder,\n folderLevelPermissions,\n topics: {\n onFolderAfterCreate,\n onFolderBeforeCreate\n }\n });\n\n const { updateFolderUseCase } = getUpdateFolderUseCase({\n updateOperation: storageOperations.folder.updateFolder,\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions,\n topics: {\n onFolderAfterUpdate,\n onFolderBeforeUpdate\n }\n });\n\n const { deleteFolderUseCase } = getDeleteFolderUseCases({\n deleteOperation: storageOperations.folder.deleteFolder,\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions,\n topics: {\n onFolderBeforeDelete,\n onFolderAfterDelete\n }\n });\n\n const { getAncestorsUseCase } = getGetAncestors({\n listFoldersUseCase: listFoldersUseCase\n });\n\n const { listFolderLevelPermissionsTargetsUseCase } = getListFolderLevelPermissionsTargets({\n context\n });\n\n return {\n /**\n * Lifecycle events\n */\n onFolderBeforeCreate,\n onFolderAfterCreate,\n onFolderBeforeUpdate,\n onFolderAfterUpdate,\n onFolderBeforeDelete,\n onFolderAfterDelete,\n\n async get(id, disablePermissions) {\n // If permissions are disabled, execute the use case without applying folder-level permissions logic, returning the raw folder data from the database.\n if (disablePermissions) {\n return await getFolderUseCaseWithoutPermissions.execute({ id });\n }\n return await getFolderUseCase.execute({ id });\n },\n\n async list({ disablePermissions, ...params }: ListFoldersParams) {\n // If permissions are disabled, execute the use case without applying folder-level permissions logic, returning the raw folder data from the database.\n if (disablePermissions) {\n return await listFoldersUseCaseWithoutPermissions.execute(params);\n }\n return await listFoldersUseCase.execute(params);\n },\n\n async listAll(params) {\n return await this.list({\n ...params,\n limit: FIXED_FOLDER_LISTING_LIMIT\n });\n },\n\n async getFolderHierarchy(params) {\n return await getFolderHierarchyUseCase.execute(params);\n },\n\n async create(data) {\n return await createFolderUseCase.execute(data);\n },\n\n async delete(id) {\n return await deleteFolderUseCase.execute({ id });\n },\n\n async update(id, data) {\n return await updateFolderUseCase.execute(id, data);\n },\n\n async getAncestors(folder: Folder) {\n return getAncestorsUseCase.execute({ folder });\n },\n\n /**\n * @deprecated use `getAncestors` instead\n */\n async getFolderWithAncestors(id: string) {\n const folder = await this.get(id);\n return this.getAncestors(folder);\n },\n\n async listFolderLevelPermissionsTargets() {\n return await listFolderLevelPermissionsTargetsUseCase.execute();\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
1
  import { GraphQLSchemaPlugin } from "@webiny/handler-graphql/plugins/GraphQLSchemaPlugin";
2
- import { CreateFolderTypeDefsParams } from "./createFolderTypeDefs";
3
- import { AcoContext } from "../types";
2
+ import type { CreateFolderTypeDefsParams } from "./createFolderTypeDefs";
3
+ import type { AcoContext } from "../types";
4
4
  export declare const createFoldersSchema: (params: CreateFolderTypeDefsParams) => GraphQLSchemaPlugin<AcoContext>;
@@ -1 +1 @@
1
- {"version":3,"names":["_responses","require","_GraphQLSchemaPlugin","_createFolderTypeDefs","_ensureAuthentication","_resolve","_compress","_folder","createFoldersSchema","params","folderGraphQL","GraphQLSchemaPlugin","typeDefs","createFolderTypeDefs","resolvers","Folder","hasNonInheritedPermissions","folder","_","context","aco","folderLevelPermissions","permissionsIncludeNonInheritedPermissions","permissions","canManageStructure","canManageFolderStructure","canManagePermissions","canManageFolderPermissions","canManageContent","canManageFolderContent","AcoQuery","getFolderModel","__","resolve","ensureAuthentication","cms","getModel","FOLDER_MODEL_ID","getFolder","id","get","listFolders","args","entries","meta","list","ListResponse","e","ErrorResponse","listFoldersCompressed","foldersPromises","map","flp","Promise","all","then","compress","getFolderHierarchy","listFolderLevelPermissionsTargets","AcoMutation","createFolder","data","create","updateFolder","update","deleteFolder","delete","name","exports"],"sources":["folder.gql.ts"],"sourcesContent":["import { ErrorResponse, ListResponse } from \"@webiny/handler-graphql/responses\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\n\nimport { createFolderTypeDefs, CreateFolderTypeDefsParams } from \"./createFolderTypeDefs\";\nimport { ensureAuthentication } from \"~/utils/ensureAuthentication\";\nimport { resolve } from \"~/utils/resolve\";\nimport { compress } from \"~/utils/compress\";\n\nimport { AcoContext, Folder } from \"~/types\";\nimport type { FolderLevelPermission } from \"~/flp/flp.types\";\nimport { FOLDER_MODEL_ID } from \"~/folder/folder.model\";\n\nexport const createFoldersSchema = (params: CreateFolderTypeDefsParams) => {\n const folderGraphQL = new GraphQLSchemaPlugin<AcoContext>({\n typeDefs: createFolderTypeDefs(params),\n resolvers: {\n Folder: {\n hasNonInheritedPermissions: (folder: Folder, _, context) => {\n return context.aco.folderLevelPermissions.permissionsIncludeNonInheritedPermissions(\n folder.permissions\n );\n },\n canManageStructure: (folder, _, context) => {\n return context.aco.folderLevelPermissions.canManageFolderStructure(folder);\n },\n canManagePermissions: (folder, _, context) => {\n return context.aco.folderLevelPermissions.canManageFolderPermissions(folder);\n },\n canManageContent: (folder, _, context) => {\n return context.aco.folderLevelPermissions.canManageFolderContent(folder);\n }\n },\n AcoQuery: {\n getFolderModel(_, __, context) {\n return resolve(() => {\n ensureAuthentication(context);\n return context.cms.getModel(FOLDER_MODEL_ID);\n });\n },\n getFolder: async (_, { id }, context) => {\n return resolve(() => {\n ensureAuthentication(context);\n return context.aco.folder.get(id);\n });\n },\n listFolders: async (_, args: any, context) => {\n try {\n ensureAuthentication(context);\n const [entries, meta] = await context.aco.folder.list(args);\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n listFoldersCompressed: async (_, args: any, context) => {\n return resolve(async () => {\n ensureAuthentication(context);\n\n const [entries] = await context.aco.folder.list(args);\n const foldersPromises = entries.map(folder => {\n const { folderLevelPermissions: flp } = context.aco;\n\n const canManageStructure = flp.canManageFolderStructure(\n folder as unknown as FolderLevelPermission\n );\n const canManagePermissions = flp.canManageFolderPermissions(\n folder as unknown as FolderLevelPermission\n );\n const canManageContent = flp.canManageFolderContent(\n folder as unknown as FolderLevelPermission\n );\n const hasNonInheritedPermissions =\n flp.permissionsIncludeNonInheritedPermissions(folder.permissions);\n\n return Promise.all([\n canManageStructure,\n canManagePermissions,\n canManageContent,\n hasNonInheritedPermissions\n ]).then(\n ([\n canManageStructure,\n canManagePermissions,\n canManageContent,\n hasNonInheritedPermissions\n ]) => {\n return {\n ...folder,\n canManageStructure,\n canManagePermissions,\n canManageContent,\n hasNonInheritedPermissions\n };\n }\n );\n });\n\n return Promise.all(foldersPromises).then(compress);\n });\n },\n getFolderHierarchy: async (_, args: any, context) => {\n try {\n return resolve(() => {\n ensureAuthentication(context);\n return context.aco.folder.getFolderHierarchy(args);\n });\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n listFolderLevelPermissionsTargets: async (_, args: any, context) => {\n try {\n ensureAuthentication(context);\n const [entries, meta] =\n await context.aco.folder.listFolderLevelPermissionsTargets();\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n AcoMutation: {\n createFolder: async (_, { data }, context) => {\n return resolve(() => {\n ensureAuthentication(context);\n return context.aco.folder.create(data);\n });\n },\n updateFolder: async (_, { id, data }, context) => {\n return resolve(() => {\n ensureAuthentication(context);\n return context.aco.folder.update(id, data);\n });\n },\n deleteFolder: async (_, { id }, context) => {\n return resolve(() => {\n ensureAuthentication(context);\n return context.aco.folder.delete(id);\n });\n }\n }\n }\n });\n\n folderGraphQL.name = \"aco.graphql.folders\";\n\n return folderGraphQL;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_responses","require","_GraphQLSchemaPlugin","_createFolderTypeDefs","_ensureAuthentication","_resolve","_compress","_folder","createFoldersSchema","params","folderGraphQL","GraphQLSchemaPlugin","typeDefs","createFolderTypeDefs","resolvers","Folder","hasNonInheritedPermissions","folder","_","context","aco","folderLevelPermissions","permissionsIncludeNonInheritedPermissions","permissions","canManageStructure","canManageFolderStructure","canManagePermissions","canManageFolderPermissions","canManageContent","canManageFolderContent","AcoQuery","getFolderModel","__","resolve","ensureAuthentication","cms","getModel","FOLDER_MODEL_ID","getFolder","id","get","listFolders","args","entries","meta","list","ListResponse","e","ErrorResponse","listFoldersCompressed","foldersPromises","map","flp","Promise","all","then","compress","getFolderHierarchy","listFolderLevelPermissionsTargets","AcoMutation","createFolder","data","create","updateFolder","update","deleteFolder","delete","name","exports"],"sources":["folder.gql.ts"],"sourcesContent":["import { ErrorResponse, ListResponse } from \"@webiny/handler-graphql/responses\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\n\nimport type { CreateFolderTypeDefsParams } from \"./createFolderTypeDefs\";\nimport { createFolderTypeDefs } from \"./createFolderTypeDefs\";\nimport { ensureAuthentication } from \"~/utils/ensureAuthentication\";\nimport { resolve } from \"~/utils/resolve\";\nimport { compress } from \"~/utils/compress\";\n\nimport type { AcoContext, Folder } from \"~/types\";\nimport type { FolderLevelPermission } from \"~/flp/flp.types\";\nimport { FOLDER_MODEL_ID } from \"~/folder/folder.model\";\n\nexport const createFoldersSchema = (params: CreateFolderTypeDefsParams) => {\n const folderGraphQL = new GraphQLSchemaPlugin<AcoContext>({\n typeDefs: createFolderTypeDefs(params),\n resolvers: {\n Folder: {\n hasNonInheritedPermissions: (folder: Folder, _, context) => {\n return context.aco.folderLevelPermissions.permissionsIncludeNonInheritedPermissions(\n folder.permissions\n );\n },\n canManageStructure: (folder, _, context) => {\n return context.aco.folderLevelPermissions.canManageFolderStructure(folder);\n },\n canManagePermissions: (folder, _, context) => {\n return context.aco.folderLevelPermissions.canManageFolderPermissions(folder);\n },\n canManageContent: (folder, _, context) => {\n return context.aco.folderLevelPermissions.canManageFolderContent(folder);\n }\n },\n AcoQuery: {\n getFolderModel(_, __, context) {\n return resolve(() => {\n ensureAuthentication(context);\n return context.cms.getModel(FOLDER_MODEL_ID);\n });\n },\n getFolder: async (_, { id }, context) => {\n return resolve(() => {\n ensureAuthentication(context);\n return context.aco.folder.get(id);\n });\n },\n listFolders: async (_, args: any, context) => {\n try {\n ensureAuthentication(context);\n const [entries, meta] = await context.aco.folder.list(args);\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n listFoldersCompressed: async (_, args: any, context) => {\n return resolve(async () => {\n ensureAuthentication(context);\n\n const [entries] = await context.aco.folder.list(args);\n const foldersPromises = entries.map(folder => {\n const { folderLevelPermissions: flp } = context.aco;\n\n const canManageStructure = flp.canManageFolderStructure(\n folder as unknown as FolderLevelPermission\n );\n const canManagePermissions = flp.canManageFolderPermissions(\n folder as unknown as FolderLevelPermission\n );\n const canManageContent = flp.canManageFolderContent(\n folder as unknown as FolderLevelPermission\n );\n const hasNonInheritedPermissions =\n flp.permissionsIncludeNonInheritedPermissions(folder.permissions);\n\n return Promise.all([\n canManageStructure,\n canManagePermissions,\n canManageContent,\n hasNonInheritedPermissions\n ]).then(\n ([\n canManageStructure,\n canManagePermissions,\n canManageContent,\n hasNonInheritedPermissions\n ]) => {\n return {\n ...folder,\n canManageStructure,\n canManagePermissions,\n canManageContent,\n hasNonInheritedPermissions\n };\n }\n );\n });\n\n return Promise.all(foldersPromises).then(compress);\n });\n },\n getFolderHierarchy: async (_, args: any, context) => {\n try {\n return resolve(() => {\n ensureAuthentication(context);\n return context.aco.folder.getFolderHierarchy(args);\n });\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n listFolderLevelPermissionsTargets: async (_, args: any, context) => {\n try {\n ensureAuthentication(context);\n const [entries, meta] =\n await context.aco.folder.listFolderLevelPermissionsTargets();\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n AcoMutation: {\n createFolder: async (_, { data }, context) => {\n return resolve(() => {\n ensureAuthentication(context);\n return context.aco.folder.create(data);\n });\n },\n updateFolder: async (_, { id, data }, context) => {\n return resolve(() => {\n ensureAuthentication(context);\n return context.aco.folder.update(id, data);\n });\n },\n deleteFolder: async (_, { id }, context) => {\n return resolve(() => {\n ensureAuthentication(context);\n return context.aco.folder.delete(id);\n });\n }\n }\n }\n });\n\n folderGraphQL.name = \"aco.graphql.folders\";\n\n return folderGraphQL;\n};\n"],"mappings":"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","ignoreList":[]}