@webiny/api-aco 0.0.0-unstable.e622468070 → 0.0.0-unstable.e6f0dc8ca7

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 (165) hide show
  1. package/createAcoContext.js +2 -6
  2. package/createAcoContext.js.map +1 -1
  3. package/createAcoGraphQL.js +4 -4
  4. package/createAcoGraphQL.js.map +1 -1
  5. package/exports/api/aco/flp.d.ts +6 -0
  6. package/exports/api/aco/flp.js +8 -0
  7. package/exports/api/aco/flp.js.map +1 -0
  8. package/exports/api/aco/folder.d.ts +10 -0
  9. package/exports/api/aco/folder.js +12 -0
  10. package/exports/api/aco/folder.js.map +1 -0
  11. package/features/cms/feature.d.ts +4 -1
  12. package/features/flp/CreateFlp/abstractions.d.ts +1 -0
  13. package/features/flp/CreateFlp/abstractions.js +1 -0
  14. package/features/flp/CreateFlp/abstractions.js.map +1 -1
  15. package/features/flp/CreateFlp/feature.d.ts +5 -1
  16. package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.d.ts +3 -3
  17. package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.js +2 -2
  18. package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.js.map +1 -1
  19. package/features/flp/CreateFlpOnFolderCreated/feature.d.ts +4 -1
  20. package/features/flp/DeleteFlp/abstractions.d.ts +1 -0
  21. package/features/flp/DeleteFlp/abstractions.js +1 -0
  22. package/features/flp/DeleteFlp/abstractions.js.map +1 -1
  23. package/features/flp/DeleteFlp/feature.d.ts +5 -1
  24. package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.d.ts +3 -3
  25. package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.js +2 -2
  26. package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.js.map +1 -1
  27. package/features/flp/DeleteFlpOnFolderDeleted/feature.d.ts +4 -1
  28. package/features/flp/FolderLevelPermissions/FolderLevelPermissions.d.ts +3 -3
  29. package/features/flp/FolderLevelPermissions/FolderLevelPermissions.js +3 -3
  30. package/features/flp/FolderLevelPermissions/FolderLevelPermissions.js.map +1 -1
  31. package/features/flp/FolderLevelPermissions/abstractions.d.ts +1 -0
  32. package/features/flp/FolderLevelPermissions/abstractions.js +1 -0
  33. package/features/flp/FolderLevelPermissions/abstractions.js.map +1 -1
  34. package/features/flp/FolderLevelPermissions/feature.d.ts +5 -1
  35. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.d.ts +1 -1
  36. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.js.map +1 -1
  37. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.d.ts +1 -1
  38. package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.js.map +1 -1
  39. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.d.ts +1 -1
  40. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.js.map +1 -1
  41. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.d.ts +2 -2
  42. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js +2 -2
  43. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js.map +1 -1
  44. package/features/flp/GetFlp/abstractions.d.ts +1 -0
  45. package/features/flp/GetFlp/abstractions.js +1 -0
  46. package/features/flp/GetFlp/abstractions.js.map +1 -1
  47. package/features/flp/GetFlp/feature.d.ts +4 -1
  48. package/features/flp/GetFlp/feature.js.map +1 -1
  49. package/features/flp/ListFlps/abstractions.d.ts +1 -0
  50. package/features/flp/ListFlps/abstractions.js +1 -0
  51. package/features/flp/ListFlps/abstractions.js.map +1 -1
  52. package/features/flp/ListFlps/feature.d.ts +4 -1
  53. package/features/flp/ListFlps/feature.js.map +1 -1
  54. package/features/flp/UpdateFlp/abstractions.d.ts +1 -0
  55. package/features/flp/UpdateFlp/abstractions.js +1 -0
  56. package/features/flp/UpdateFlp/abstractions.js.map +1 -1
  57. package/features/flp/UpdateFlp/feature.d.ts +5 -1
  58. package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.d.ts +3 -3
  59. package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.js +2 -2
  60. package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.js.map +1 -1
  61. package/features/flp/UpdateFlpOnFolderUpdated/feature.d.ts +4 -1
  62. package/features/folder/CreateFolder/CreateFolderUseCase.d.ts +1 -1
  63. package/features/folder/CreateFolder/CreateFolderUseCase.js +1 -1
  64. package/features/folder/CreateFolder/CreateFolderUseCase.js.map +1 -1
  65. package/features/folder/CreateFolder/abstractions.d.ts +9 -5
  66. package/features/folder/CreateFolder/abstractions.js +6 -2
  67. package/features/folder/CreateFolder/abstractions.js.map +1 -1
  68. package/features/folder/CreateFolder/events.d.ts +3 -3
  69. package/features/folder/CreateFolder/events.js +4 -4
  70. package/features/folder/CreateFolder/events.js.map +1 -1
  71. package/features/folder/CreateFolder/feature.d.ts +5 -1
  72. package/features/folder/CreateFolder/index.d.ts +1 -1
  73. package/features/folder/CreateFolder/index.js +1 -1
  74. package/features/folder/CreateFolder/index.js.map +1 -1
  75. package/features/folder/DeleteFolder/DeleteFolderUseCase.d.ts +1 -1
  76. package/features/folder/DeleteFolder/DeleteFolderUseCase.js +1 -1
  77. package/features/folder/DeleteFolder/DeleteFolderUseCase.js.map +1 -1
  78. package/features/folder/DeleteFolder/abstractions.d.ts +9 -5
  79. package/features/folder/DeleteFolder/abstractions.js +6 -2
  80. package/features/folder/DeleteFolder/abstractions.js.map +1 -1
  81. package/features/folder/DeleteFolder/events.d.ts +3 -3
  82. package/features/folder/DeleteFolder/events.js +4 -4
  83. package/features/folder/DeleteFolder/events.js.map +1 -1
  84. package/features/folder/DeleteFolder/feature.d.ts +5 -1
  85. package/features/folder/DeleteFolder/index.d.ts +1 -1
  86. package/features/folder/DeleteFolder/index.js +1 -1
  87. package/features/folder/DeleteFolder/index.js.map +1 -1
  88. package/features/folder/EnsureFolderIsEmpty/abstractions.d.ts +1 -0
  89. package/features/folder/EnsureFolderIsEmpty/abstractions.js +1 -0
  90. package/features/folder/EnsureFolderIsEmpty/abstractions.js.map +1 -1
  91. package/features/folder/EnsureFolderIsEmpty/feature.d.ts +4 -1
  92. package/features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.d.ts +3 -3
  93. package/features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.js +2 -2
  94. package/features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.js.map +1 -1
  95. package/features/folder/EnsureFolderIsEmptyOnDelete/feature.d.ts +4 -1
  96. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/ModelFolderBeforeDeleteHandler.d.ts +3 -3
  97. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/ModelFolderBeforeDeleteHandler.js +2 -2
  98. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/ModelFolderBeforeDeleteHandler.js.map +1 -1
  99. package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/feature.d.ts +4 -1
  100. package/features/folder/GetAncestors/abstractions.d.ts +2 -0
  101. package/features/folder/GetAncestors/abstractions.js +2 -0
  102. package/features/folder/GetAncestors/abstractions.js.map +1 -1
  103. package/features/folder/GetAncestors/feature.d.ts +5 -1
  104. package/features/folder/GetFolder/abstractions.d.ts +8 -5
  105. package/features/folder/GetFolder/abstractions.js +5 -2
  106. package/features/folder/GetFolder/abstractions.js.map +1 -1
  107. package/features/folder/GetFolder/feature.d.ts +5 -1
  108. package/features/folder/GetFolder/index.d.ts +1 -1
  109. package/features/folder/GetFolder/index.js +1 -1
  110. package/features/folder/GetFolder/index.js.map +1 -1
  111. package/features/folder/GetFolderHierarchy/abstractions.d.ts +2 -0
  112. package/features/folder/GetFolderHierarchy/abstractions.js +2 -0
  113. package/features/folder/GetFolderHierarchy/abstractions.js.map +1 -1
  114. package/features/folder/GetFolderHierarchy/feature.d.ts +5 -1
  115. package/features/folder/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargetsUseCase.d.ts +2 -2
  116. package/features/folder/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargetsUseCase.js +3 -3
  117. package/features/folder/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargetsUseCase.js.map +1 -1
  118. package/features/folder/ListFolderLevelPermissionsTargets/abstractions.d.ts +1 -0
  119. package/features/folder/ListFolderLevelPermissionsTargets/abstractions.js +1 -0
  120. package/features/folder/ListFolderLevelPermissionsTargets/abstractions.js.map +1 -1
  121. package/features/folder/ListFolderLevelPermissionsTargets/feature.d.ts +4 -1
  122. package/features/folder/ListFolders/abstractions.d.ts +2 -0
  123. package/features/folder/ListFolders/abstractions.js +2 -0
  124. package/features/folder/ListFolders/abstractions.js.map +1 -1
  125. package/features/folder/ListFolders/feature.d.ts +5 -1
  126. package/features/folder/UpdateFolder/UpdateFolderUseCase.d.ts +1 -1
  127. package/features/folder/UpdateFolder/UpdateFolderUseCase.js +1 -1
  128. package/features/folder/UpdateFolder/UpdateFolderUseCase.js.map +1 -1
  129. package/features/folder/UpdateFolder/abstractions.d.ts +9 -5
  130. package/features/folder/UpdateFolder/abstractions.js +6 -2
  131. package/features/folder/UpdateFolder/abstractions.js.map +1 -1
  132. package/features/folder/UpdateFolder/events.d.ts +3 -3
  133. package/features/folder/UpdateFolder/events.js +4 -4
  134. package/features/folder/UpdateFolder/events.js.map +1 -1
  135. package/features/folder/UpdateFolder/feature.d.ts +5 -1
  136. package/features/folder/UpdateFolder/index.d.ts +1 -1
  137. package/features/folder/UpdateFolder/index.js +1 -1
  138. package/features/folder/UpdateFolder/index.js.map +1 -1
  139. package/features/folder/shared/abstractions.d.ts +1 -0
  140. package/features/folder/shared/abstractions.js +1 -0
  141. package/features/folder/shared/abstractions.js.map +1 -1
  142. package/flp/flp.so.js.map +1 -1
  143. package/flp/tasks/createFlp.task.d.ts +1 -0
  144. package/flp/tasks/createFlp.task.js +1 -0
  145. package/flp/tasks/createFlp.task.js.map +1 -1
  146. package/flp/tasks/deleteFlp.task.d.ts +1 -0
  147. package/flp/tasks/deleteFlp.task.js +1 -0
  148. package/flp/tasks/deleteFlp.task.js.map +1 -1
  149. package/flp/tasks/syncFlp.task.d.ts +1 -0
  150. package/flp/tasks/syncFlp.task.js +1 -0
  151. package/flp/tasks/syncFlp.task.js.map +1 -1
  152. package/flp/tasks/updateFlp.task.d.ts +1 -0
  153. package/flp/tasks/updateFlp.task.js +1 -0
  154. package/flp/tasks/updateFlp.task.js.map +1 -1
  155. package/folder/createFolderTypeDefs.d.ts +3 -2
  156. package/folder/createFolderTypeDefs.js +4 -4
  157. package/folder/createFolderTypeDefs.js.map +1 -1
  158. package/package.json +27 -38
  159. package/utils/compress.js +1 -1
  160. package/utils/compress.js.map +1 -1
  161. package/utils/ensureAuthentication.js +1 -1
  162. package/utils/ensureAuthentication.js.map +1 -1
  163. package/utils/acoRecordId.d.ts +0 -6
  164. package/utils/acoRecordId.js +0 -27
  165. package/utils/acoRecordId.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["CanAccessFolderContent","constructor","identityContext","execute","permissions","rwd","identity","getIdentity","currentIdentityPermission","find","p","target","id","level"],"sources":["CanAccessFolderContent.ts"],"sourcesContent":["import type { IdentityContext } from \"@webiny/api-core/features/IdentityContext\";\nimport type {\n CanAccessFolderContentParams,\n ICanAccessFolderContent\n} from \"./ICanAccessFolderContent.js\";\n\nexport class CanAccessFolderContent implements ICanAccessFolderContent {\n constructor(private identityContext: IdentityContext.Interface) {}\n\n async execute({ permissions = [], rwd }: CanAccessFolderContentParams) {\n const identity = this.identityContext.getIdentity();\n\n const currentIdentityPermission = permissions.find(p => {\n return p.target === `admin:${identity.id}`;\n });\n\n if (!currentIdentityPermission) {\n return false;\n }\n\n const { level } = currentIdentityPermission;\n\n // If the user has a `no-access` level, they are explicitly denied access to the current folder.\n if (level === \"no-access\") {\n return false;\n }\n\n // If the user is not an owner and we're checking for \"write\" or\n // \"delete\" access, then we can immediately return false.\n if (rwd !== \"r\") {\n return level !== \"viewer\";\n }\n\n return true;\n }\n}\n"],"mappings":"AAMA,OAAO,MAAMA,sBAAsB,CAAoC;EACnEC,WAAWA,CAASC,eAA0C,EAAE;IAAA,KAA5CA,eAA0C,GAA1CA,eAA0C;EAAG;EAEjE,MAAMC,OAAOA,CAAC;IAAEC,WAAW,GAAG,EAAE;IAAEC;EAAkC,CAAC,EAAE;IACnE,MAAMC,QAAQ,GAAG,IAAI,CAACJ,eAAe,CAACK,WAAW,CAAC,CAAC;IAEnD,MAAMC,yBAAyB,GAAGJ,WAAW,CAACK,IAAI,CAACC,CAAC,IAAI;MACpD,OAAOA,CAAC,CAACC,MAAM,KAAK,SAASL,QAAQ,CAACM,EAAE,EAAE;IAC9C,CAAC,CAAC;IAEF,IAAI,CAACJ,yBAAyB,EAAE;MAC5B,OAAO,KAAK;IAChB;IAEA,MAAM;MAAEK;IAAM,CAAC,GAAGL,yBAAyB;;IAE3C;IACA,IAAIK,KAAK,KAAK,WAAW,EAAE;MACvB,OAAO,KAAK;IAChB;;IAEA;IACA;IACA,IAAIR,GAAG,KAAK,GAAG,EAAE;MACb,OAAOQ,KAAK,KAAK,QAAQ;IAC7B;IAEA,OAAO,IAAI;EACf;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["CanAccessFolderContent","constructor","identityContext","execute","permissions","rwd","identity","getIdentity","currentIdentityPermission","find","p","target","id","level"],"sources":["CanAccessFolderContent.ts"],"sourcesContent":["import type { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport type {\n CanAccessFolderContentParams,\n ICanAccessFolderContent\n} from \"./ICanAccessFolderContent.js\";\n\nexport class CanAccessFolderContent implements ICanAccessFolderContent {\n constructor(private identityContext: IdentityContext.Interface) {}\n\n async execute({ permissions = [], rwd }: CanAccessFolderContentParams) {\n const identity = this.identityContext.getIdentity();\n\n const currentIdentityPermission = permissions.find(p => {\n return p.target === `admin:${identity.id}`;\n });\n\n if (!currentIdentityPermission) {\n return false;\n }\n\n const { level } = currentIdentityPermission;\n\n // If the user has a `no-access` level, they are explicitly denied access to the current folder.\n if (level === \"no-access\") {\n return false;\n }\n\n // If the user is not an owner and we're checking for \"write\" or\n // \"delete\" access, then we can immediately return false.\n if (rwd !== \"r\") {\n return level !== \"viewer\";\n }\n\n return true;\n }\n}\n"],"mappings":"AAMA,OAAO,MAAMA,sBAAsB,CAAoC;EACnEC,WAAWA,CAASC,eAA0C,EAAE;IAAA,KAA5CA,eAA0C,GAA1CA,eAA0C;EAAG;EAEjE,MAAMC,OAAOA,CAAC;IAAEC,WAAW,GAAG,EAAE;IAAEC;EAAkC,CAAC,EAAE;IACnE,MAAMC,QAAQ,GAAG,IAAI,CAACJ,eAAe,CAACK,WAAW,CAAC,CAAC;IAEnD,MAAMC,yBAAyB,GAAGJ,WAAW,CAACK,IAAI,CAACC,CAAC,IAAI;MACpD,OAAOA,CAAC,CAACC,MAAM,KAAK,SAASL,QAAQ,CAACM,EAAE,EAAE;IAC9C,CAAC,CAAC;IAEF,IAAI,CAACJ,yBAAyB,EAAE;MAC5B,OAAO,KAAK;IAChB;IAEA,MAAM;MAAEK;IAAM,CAAC,GAAGL,yBAAyB;;IAE3C;IACA,IAAIK,KAAK,KAAK,WAAW,EAAE;MACvB,OAAO,KAAK;IAChB;;IAEA;IACA;IACA,IAAIR,GAAG,KAAK,GAAG,EAAE;MACb,OAAOQ,KAAK,KAAK,QAAQ;IAC7B;IAEA,OAAO,IAAI;EACf;AACJ","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { IdentityContext } from "@webiny/api-core/features/IdentityContext";
1
+ import type { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
2
2
  import type { IGetDefaultPermissions } from "./IGetDefaultPermissions.js";
3
3
  import type { FolderPermission } from "../../../../../flp/flp.types.js";
4
4
  export declare class GetDefaultPermissions implements IGetDefaultPermissions {
@@ -1 +1 @@
1
- {"version":3,"names":["DefaultPermissionsMerger","GetDefaultPermissions","constructor","identityContext","execute","permissions","identity","getIdentity","identityPermissions","listPermissions","merge"],"sources":["GetDefaultPermissions.ts"],"sourcesContent":["import type { IdentityContext } from \"@webiny/api-core/features/IdentityContext\";\nimport type { IGetDefaultPermissions } from \"./IGetDefaultPermissions.js\";\nimport type { FolderPermission } from \"~/flp/flp.types.js\";\nimport { DefaultPermissionsMerger } from \"./DefaultPermissionsMerger.js\";\n\nexport class GetDefaultPermissions implements IGetDefaultPermissions {\n constructor(private identityContext: IdentityContext.Interface) {}\n\n async execute(permissions: FolderPermission[]) {\n const identity = this.identityContext.getIdentity();\n const identityPermissions = await this.identityContext.listPermissions();\n\n return DefaultPermissionsMerger.merge(identity, identityPermissions, permissions);\n }\n}\n"],"mappings":"AAGA,SAASA,wBAAwB;AAEjC,OAAO,MAAMC,qBAAqB,CAAmC;EACjEC,WAAWA,CAASC,eAA0C,EAAE;IAAA,KAA5CA,eAA0C,GAA1CA,eAA0C;EAAG;EAEjE,MAAMC,OAAOA,CAACC,WAA+B,EAAE;IAC3C,MAAMC,QAAQ,GAAG,IAAI,CAACH,eAAe,CAACI,WAAW,CAAC,CAAC;IACnD,MAAMC,mBAAmB,GAAG,MAAM,IAAI,CAACL,eAAe,CAACM,eAAe,CAAC,CAAC;IAExE,OAAOT,wBAAwB,CAACU,KAAK,CAACJ,QAAQ,EAAEE,mBAAmB,EAAEH,WAAW,CAAC;EACrF;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["DefaultPermissionsMerger","GetDefaultPermissions","constructor","identityContext","execute","permissions","identity","getIdentity","identityPermissions","listPermissions","merge"],"sources":["GetDefaultPermissions.ts"],"sourcesContent":["import type { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport type { IGetDefaultPermissions } from \"./IGetDefaultPermissions.js\";\nimport type { FolderPermission } from \"~/flp/flp.types.js\";\nimport { DefaultPermissionsMerger } from \"./DefaultPermissionsMerger.js\";\n\nexport class GetDefaultPermissions implements IGetDefaultPermissions {\n constructor(private identityContext: IdentityContext.Interface) {}\n\n async execute(permissions: FolderPermission[]) {\n const identity = this.identityContext.getIdentity();\n const identityPermissions = await this.identityContext.listPermissions();\n\n return DefaultPermissionsMerger.merge(identity, identityPermissions, permissions);\n }\n}\n"],"mappings":"AAGA,SAASA,wBAAwB;AAEjC,OAAO,MAAMC,qBAAqB,CAAmC;EACjEC,WAAWA,CAASC,eAA0C,EAAE;IAAA,KAA5CA,eAA0C,GAA1CA,eAA0C;EAAG;EAEjE,MAAMC,OAAOA,CAACC,WAA+B,EAAE;IAC3C,MAAMC,QAAQ,GAAG,IAAI,CAACH,eAAe,CAACI,WAAW,CAAC,CAAC;IACnD,MAAMC,mBAAmB,GAAG,MAAM,IAAI,CAACL,eAAe,CAACM,eAAe,CAAC,CAAC;IAExE,OAAOT,wBAAwB,CAACU,KAAK,CAACJ,QAAQ,EAAEE,mBAAmB,EAAEH,WAAW,CAAC;EACrF;AACJ","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import type { IGetDefaultPermissions } from "./IGetDefaultPermissions.js";
2
2
  import type { FolderPermission } from "../../../../../flp/flp.types.js";
3
- import type { IdentityContext } from "@webiny/api-core/features/IdentityContext";
4
- import { ListUserTeamsUseCase } from "@webiny/api-core/features/ListUserTeams";
3
+ import type { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
4
+ import { ListUserTeamsUseCase } from "@webiny/api-core/features/users/ListUserTeams/index.js";
5
5
  export declare class GetDefaultPermissionsWithTeams implements IGetDefaultPermissions {
6
6
  private identityContext;
7
7
  private listUserTeamsUseCase;
@@ -20,13 +20,13 @@ export class GetDefaultPermissionsWithTeams {
20
20
  if (identity && identityTeams.length) {
21
21
  for (const identityTeam of identityTeams) {
22
22
  // Check if the team has permissions for the folder.
23
- const teamPermission = permissions.find(p => p.target === `team:${identityTeam.id}`);
23
+ const teamPermission = permissions.find(p => p.target === `team:${identityTeam.slug}`);
24
24
  if (teamPermission) {
25
25
  // Grant the current identity the same permissions as the team, marking them as inherited.
26
26
  permissions.push({
27
27
  target: `admin:${identity.id}`,
28
28
  level: teamPermission.level,
29
- inheritedFrom: "team:" + identityTeam.id
29
+ inheritedFrom: "team:" + identityTeam.slug
30
30
  });
31
31
  }
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"names":["GetDefaultPermissionsWithTeams","constructor","identityContext","listUserTeamsUseCase","decoretee","execute","originalPermissions","identity","getIdentity","listTeamsResult","id","identityTeams","isOk","value","permissions","length","identityTeam","teamPermission","find","p","target","push","level","inheritedFrom"],"sources":["GetDefaultPermissionsWithTeams.ts"],"sourcesContent":["import type { IGetDefaultPermissions } from \"./IGetDefaultPermissions.js\";\nimport type { FolderPermission } from \"~/flp/flp.types.js\";\nimport type { IdentityContext } from \"@webiny/api-core/features/IdentityContext\";\nimport { ListUserTeamsUseCase } from \"@webiny/api-core/features/ListUserTeams\";\nimport type { Team } from \"@webiny/api-core/types/security.js\";\n\nexport class GetDefaultPermissionsWithTeams implements IGetDefaultPermissions {\n private identityContext: IdentityContext.Interface;\n private listUserTeamsUseCase: ListUserTeamsUseCase.Interface;\n private decoretee: IGetDefaultPermissions;\n\n constructor(\n identityContext: IdentityContext.Interface,\n listUserTeamsUseCase: ListUserTeamsUseCase.Interface,\n decoretee: IGetDefaultPermissions\n ) {\n this.identityContext = identityContext;\n this.listUserTeamsUseCase = listUserTeamsUseCase;\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.identityContext.getIdentity();\n\n // Get teams for current identity\n const listTeamsResult = await this.listUserTeamsUseCase.execute(identity.id);\n const identityTeams: Team[] = listTeamsResult.isOk() ? listTeamsResult.value : [];\n\n const permissions = [...originalPermissions]; // Clone the original permissions to avoid mutation.\n\n if (identity && 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":"AAMA,OAAO,MAAMA,8BAA8B,CAAmC;EAK1EC,WAAWA,CACPC,eAA0C,EAC1CC,oBAAoD,EACpDC,SAAiC,EACnC;IACE,IAAI,CAACF,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACC,oBAAoB,GAAGA,oBAAoB;IAChD,IAAI,CAACC,SAAS,GAAGA,SAAS;EAC9B;EAEA,MAAMC,OAAOA,CAACC,mBAAuC,EAAE;IACnD;AACR;AACA;AACA;AACA;IACQ,MAAMC,QAAQ,GAAG,IAAI,CAACL,eAAe,CAACM,WAAW,CAAC,CAAC;;IAEnD;IACA,MAAMC,eAAe,GAAG,MAAM,IAAI,CAACN,oBAAoB,CAACE,OAAO,CAACE,QAAQ,CAACG,EAAE,CAAC;IAC5E,MAAMC,aAAqB,GAAGF,eAAe,CAACG,IAAI,CAAC,CAAC,GAAGH,eAAe,CAACI,KAAK,GAAG,EAAE;IAEjF,MAAMC,WAAW,GAAG,CAAC,GAAGR,mBAAmB,CAAC,CAAC,CAAC;;IAE9C,IAAIC,QAAQ,IAAII,aAAa,CAACI,MAAM,EAAE;MAClC,KAAK,MAAMC,YAAY,IAAIL,aAAa,EAAE;QACtC;QACA,MAAMM,cAAc,GAAGH,WAAW,CAACI,IAAI,CACnCC,CAAC,IAAIA,CAAC,CAACC,MAAM,KAAK,QAAQJ,YAAY,CAACN,EAAE,EAC7C,CAAC;QAED,IAAIO,cAAc,EAAE;UAChB;UACAH,WAAW,CAACO,IAAI,CAAC;YACbD,MAAM,EAAE,SAASb,QAAQ,CAACG,EAAE,EAAE;YAC9BY,KAAK,EAAEL,cAAc,CAACK,KAAK;YAC3BC,aAAa,EAAE,OAAO,GAAGP,YAAY,CAACN;UAC1C,CAAC,CAAC;QACN;MACJ;IACJ;IAEA,OAAO,MAAM,IAAI,CAACN,SAAS,CAACC,OAAO,CAACS,WAAW,CAAC;EACpD;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["GetDefaultPermissionsWithTeams","constructor","identityContext","listUserTeamsUseCase","decoretee","execute","originalPermissions","identity","getIdentity","listTeamsResult","id","identityTeams","isOk","value","permissions","length","identityTeam","teamPermission","find","p","target","slug","push","level","inheritedFrom"],"sources":["GetDefaultPermissionsWithTeams.ts"],"sourcesContent":["import type { IGetDefaultPermissions } from \"./IGetDefaultPermissions.js\";\nimport type { FolderPermission } from \"~/flp/flp.types.js\";\nimport type { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { ListUserTeamsUseCase } from \"@webiny/api-core/features/users/ListUserTeams/index.js\";\nimport type { Team } from \"@webiny/api-core/types/security.js\";\n\nexport class GetDefaultPermissionsWithTeams implements IGetDefaultPermissions {\n private identityContext: IdentityContext.Interface;\n private listUserTeamsUseCase: ListUserTeamsUseCase.Interface;\n private decoretee: IGetDefaultPermissions;\n\n constructor(\n identityContext: IdentityContext.Interface,\n listUserTeamsUseCase: ListUserTeamsUseCase.Interface,\n decoretee: IGetDefaultPermissions\n ) {\n this.identityContext = identityContext;\n this.listUserTeamsUseCase = listUserTeamsUseCase;\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.identityContext.getIdentity();\n\n // Get teams for current identity\n const listTeamsResult = await this.listUserTeamsUseCase.execute(identity.id);\n const identityTeams: Team[] = listTeamsResult.isOk() ? listTeamsResult.value : [];\n\n const permissions = [...originalPermissions]; // Clone the original permissions to avoid mutation.\n\n if (identity && 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.slug}`\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.slug\n });\n }\n }\n }\n\n return await this.decoretee.execute(permissions);\n }\n}\n"],"mappings":"AAMA,OAAO,MAAMA,8BAA8B,CAAmC;EAK1EC,WAAWA,CACPC,eAA0C,EAC1CC,oBAAoD,EACpDC,SAAiC,EACnC;IACE,IAAI,CAACF,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACC,oBAAoB,GAAGA,oBAAoB;IAChD,IAAI,CAACC,SAAS,GAAGA,SAAS;EAC9B;EAEA,MAAMC,OAAOA,CAACC,mBAAuC,EAAE;IACnD;AACR;AACA;AACA;AACA;IACQ,MAAMC,QAAQ,GAAG,IAAI,CAACL,eAAe,CAACM,WAAW,CAAC,CAAC;;IAEnD;IACA,MAAMC,eAAe,GAAG,MAAM,IAAI,CAACN,oBAAoB,CAACE,OAAO,CAACE,QAAQ,CAACG,EAAE,CAAC;IAC5E,MAAMC,aAAqB,GAAGF,eAAe,CAACG,IAAI,CAAC,CAAC,GAAGH,eAAe,CAACI,KAAK,GAAG,EAAE;IAEjF,MAAMC,WAAW,GAAG,CAAC,GAAGR,mBAAmB,CAAC,CAAC,CAAC;;IAE9C,IAAIC,QAAQ,IAAII,aAAa,CAACI,MAAM,EAAE;MAClC,KAAK,MAAMC,YAAY,IAAIL,aAAa,EAAE;QACtC;QACA,MAAMM,cAAc,GAAGH,WAAW,CAACI,IAAI,CACnCC,CAAC,IAAIA,CAAC,CAACC,MAAM,KAAK,QAAQJ,YAAY,CAACK,IAAI,EAC/C,CAAC;QAED,IAAIJ,cAAc,EAAE;UAChB;UACAH,WAAW,CAACQ,IAAI,CAAC;YACbF,MAAM,EAAE,SAASb,QAAQ,CAACG,EAAE,EAAE;YAC9Ba,KAAK,EAAEN,cAAc,CAACM,KAAK;YAC3BC,aAAa,EAAE,OAAO,GAAGR,YAAY,CAACK;UAC1C,CAAC,CAAC;QACN;MACJ;IACJ;IAEA,OAAO,MAAM,IAAI,CAACjB,SAAS,CAACC,OAAO,CAACS,WAAW,CAAC;EACpD;AACJ","ignoreList":[]}
@@ -2,6 +2,7 @@ import type { FolderLevelPermission } from "../../../types.js";
2
2
  export interface IGetFolderPermission {
3
3
  execute: (id: string) => Promise<FolderLevelPermission | null>;
4
4
  }
5
+ /** Retrieve a folder-level permission. */
5
6
  export declare const GetFlpUseCase: import("@webiny/di").Abstraction<IGetFolderPermission>;
6
7
  export declare namespace GetFlpUseCase {
7
8
  type Interface = IGetFolderPermission;
@@ -1,4 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
+ /** Retrieve a folder-level permission. */
2
3
  export const GetFlpUseCase = createAbstraction("GetFlpUseCase");
3
4
 
4
5
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","GetFlpUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { FolderLevelPermission } from \"~/types.js\";\n\nexport interface IGetFolderPermission {\n execute: (id: string) => Promise<FolderLevelPermission | null>;\n}\n\nexport const GetFlpUseCase = createAbstraction<IGetFolderPermission>(\"GetFlpUseCase\");\n\nexport namespace GetFlpUseCase {\n export type Interface = IGetFolderPermission;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAOvD,OAAO,MAAMC,aAAa,GAAGD,iBAAiB,CAAuB,eAAe,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","GetFlpUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { FolderLevelPermission } from \"~/types.js\";\n\nexport interface IGetFolderPermission {\n execute: (id: string) => Promise<FolderLevelPermission | null>;\n}\n\n/** Retrieve a folder-level permission. */\nexport const GetFlpUseCase = createAbstraction<IGetFolderPermission>(\"GetFlpUseCase\");\n\nexport namespace GetFlpUseCase {\n export type Interface = IGetFolderPermission;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAOvD;AACA,OAAO,MAAMC,aAAa,GAAGD,iBAAiB,CAAuB,eAAe,CAAC","ignoreList":[]}
@@ -1 +1,4 @@
1
- export declare const GetFlpFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<import("~/types.js").AcoFolderLevelPermissionsCrud>;
1
+ export declare const GetFlpFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container, context: import("~/types.js").AcoFolderLevelPermissionsCrud): void;
4
+ };
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","GetFlpUseCase","UseCaseAbstraction","GetFlpFeature","name","register","container","context","registerFactory","get"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { GetFlpUseCase } from \"./GetFlpUseCase.js\";\nimport { GetFlpUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport type { AcoContext } from \"~/types.js\";\n\nexport const GetFlpFeature = createFeature({\n name: \"GetFlpFeature\",\n register(container, context: AcoContext[\"aco\"][\"flp\"]) {\n container.registerFactory(UseCaseAbstraction, () => {\n return new GetFlpUseCase(context.get);\n });\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,aAAa;AACtB,SAASA,aAAa,IAAIC,kBAAkB;AAG5C,OAAO,MAAMC,aAAa,GAAGH,aAAa,CAAC;EACvCI,IAAI,EAAE,eAAe;EACrBC,QAAQA,CAACC,SAAS,EAAEC,OAAiC,EAAE;IACnDD,SAAS,CAACE,eAAe,CAACN,kBAAkB,EAAE,MAAM;MAChD,OAAO,IAAID,aAAa,CAACM,OAAO,CAACE,GAAG,CAAC;IACzC,CAAC,CAAC;EACN;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createFeature","GetFlpUseCase","UseCaseAbstraction","GetFlpFeature","name","register","container","context","registerFactory","get"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { GetFlpUseCase } from \"./GetFlpUseCase.js\";\nimport { GetFlpUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport type { AcoContext } from \"~/types.js\";\n\nexport const GetFlpFeature = createFeature<AcoContext[\"aco\"][\"flp\"]>({\n name: \"GetFlpFeature\",\n register(container, context) {\n container.registerFactory(UseCaseAbstraction, () => {\n return new GetFlpUseCase(context.get);\n });\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,aAAa;AACtB,SAASA,aAAa,IAAIC,kBAAkB;AAG5C,OAAO,MAAMC,aAAa,GAAGH,aAAa,CAA2B;EACjEI,IAAI,EAAE,eAAe;EACrBC,QAAQA,CAACC,SAAS,EAAEC,OAAO,EAAE;IACzBD,SAAS,CAACE,eAAe,CAACN,kBAAkB,EAAE,MAAM;MAChD,OAAO,IAAID,aAAa,CAACM,OAAO,CAACE,GAAG,CAAC;IACzC,CAAC,CAAC;EACN;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -9,6 +9,7 @@ interface ListFlpsParams {
9
9
  export interface IListFlps {
10
10
  execute: (params: ListFlpsParams) => Promise<FolderLevelPermission[]>;
11
11
  }
12
+ /** List folder-level permissions. */
12
13
  export declare const ListFlpsUseCase: import("@webiny/di").Abstraction<IListFlps>;
13
14
  export declare namespace ListFlpsUseCase {
14
15
  type Interface = IListFlps;
@@ -1,4 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
+ /** List folder-level permissions. */
2
3
  export const ListFlpsUseCase = createAbstraction("ListFlpsUseCase");
3
4
 
4
5
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","ListFlpsUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { FolderLevelPermission } from \"~/types.js\";\n\ninterface ListFlpsParams {\n where: {\n path_startsWith?: string;\n parentId?: string;\n type: string;\n };\n}\n\nexport interface IListFlps {\n execute: (params: ListFlpsParams) => Promise<FolderLevelPermission[]>;\n}\n\nexport const ListFlpsUseCase = createAbstraction<IListFlps>(\"ListFlpsUseCase\");\n\nexport namespace ListFlpsUseCase {\n export type Interface = IListFlps;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAevD,OAAO,MAAMC,eAAe,GAAGD,iBAAiB,CAAY,iBAAiB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","ListFlpsUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { FolderLevelPermission } from \"~/types.js\";\n\ninterface ListFlpsParams {\n where: {\n path_startsWith?: string;\n parentId?: string;\n type: string;\n };\n}\n\nexport interface IListFlps {\n execute: (params: ListFlpsParams) => Promise<FolderLevelPermission[]>;\n}\n\n/** List folder-level permissions. */\nexport const ListFlpsUseCase = createAbstraction<IListFlps>(\"ListFlpsUseCase\");\n\nexport namespace ListFlpsUseCase {\n export type Interface = IListFlps;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAevD;AACA,OAAO,MAAMC,eAAe,GAAGD,iBAAiB,CAAY,iBAAiB,CAAC","ignoreList":[]}
@@ -1 +1,4 @@
1
- export declare const ListFlpsFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<import("~/types.js").AcoFolderLevelPermissionsCrud>;
1
+ export declare const ListFlpsFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container, context: import("~/types.js").AcoFolderLevelPermissionsCrud): void;
4
+ };
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","ListFlpsUseCase","UseCaseAbstraction","ListFlpsFeature","name","register","container","context","registerFactory","list"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { ListFlpsUseCase } from \"./ListFlpsUseCase.js\";\nimport { ListFlpsUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport type { AcoContext } from \"~/types.js\";\n\nexport const ListFlpsFeature = createFeature({\n name: \"ListFlpsFeature\",\n register(container, context: AcoContext[\"aco\"][\"flp\"]) {\n container.registerFactory(UseCaseAbstraction, () => {\n return new ListFlpsUseCase(context.list);\n });\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,eAAe;AACxB,SAASA,eAAe,IAAIC,kBAAkB;AAG9C,OAAO,MAAMC,eAAe,GAAGH,aAAa,CAAC;EACzCI,IAAI,EAAE,iBAAiB;EACvBC,QAAQA,CAACC,SAAS,EAAEC,OAAiC,EAAE;IACnDD,SAAS,CAACE,eAAe,CAACN,kBAAkB,EAAE,MAAM;MAChD,OAAO,IAAID,eAAe,CAACM,OAAO,CAACE,IAAI,CAAC;IAC5C,CAAC,CAAC;EACN;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createFeature","ListFlpsUseCase","UseCaseAbstraction","ListFlpsFeature","name","register","container","context","registerFactory","list"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { ListFlpsUseCase } from \"./ListFlpsUseCase.js\";\nimport { ListFlpsUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport type { AcoContext } from \"~/types.js\";\n\nexport const ListFlpsFeature = createFeature<AcoContext[\"aco\"][\"flp\"]>({\n name: \"ListFlpsFeature\",\n register(container, context) {\n container.registerFactory(UseCaseAbstraction, () => {\n return new ListFlpsUseCase(context.list);\n });\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,eAAe;AACxB,SAASA,eAAe,IAAIC,kBAAkB;AAG9C,OAAO,MAAMC,eAAe,GAAGH,aAAa,CAA2B;EACnEI,IAAI,EAAE,iBAAiB;EACvBC,QAAQA,CAACC,SAAS,EAAEC,OAAO,EAAE;IACzBD,SAAS,CAACE,eAAe,CAACN,kBAAkB,EAAE,MAAM;MAChD,OAAO,IAAID,eAAe,CAACM,OAAO,CAACE,IAAI,CAAC;IAC5C,CAAC,CAAC;EACN;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -8,6 +8,7 @@ export interface UpdateFlpParams {
8
8
  export interface IUpdateFlpUseCase {
9
9
  execute: (params: UpdateFlpParams) => Promise<void>;
10
10
  }
11
+ /** Update a folder-level permission. */
11
12
  export declare const UpdateFlpUseCase: import("@webiny/di").Abstraction<IUpdateFlpUseCase>;
12
13
  export declare namespace UpdateFlpUseCase {
13
14
  type Interface = IUpdateFlpUseCase;
@@ -2,6 +2,7 @@ import { createAbstraction } from "@webiny/feature/api";
2
2
 
3
3
  // Use Case Abstraction
4
4
 
5
+ /** Update a folder-level permission. */
5
6
  export const UpdateFlpUseCase = createAbstraction("UpdateFlpUseCase");
6
7
 
7
8
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","UpdateFlpUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Folder } from \"~/folder/folder.types.js\";\n\nexport interface UpdateFlpParams {\n folder: Folder;\n queued?: string[];\n isCloseToTimeout?: () => boolean;\n handleTimeout?: (queued: string[]) => void;\n}\n\n// Use Case Abstraction\nexport interface IUpdateFlpUseCase {\n execute: (params: UpdateFlpParams) => Promise<void>;\n}\n\nexport const UpdateFlpUseCase = createAbstraction<IUpdateFlpUseCase>(\"UpdateFlpUseCase\");\n\nexport namespace UpdateFlpUseCase {\n export type Interface = IUpdateFlpUseCase;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAUvD;;AAKA,OAAO,MAAMC,gBAAgB,GAAGD,iBAAiB,CAAoB,kBAAkB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","UpdateFlpUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Folder } from \"~/folder/folder.types.js\";\n\nexport interface UpdateFlpParams {\n folder: Folder;\n queued?: string[];\n isCloseToTimeout?: () => boolean;\n handleTimeout?: (queued: string[]) => void;\n}\n\n// Use Case Abstraction\nexport interface IUpdateFlpUseCase {\n execute: (params: UpdateFlpParams) => Promise<void>;\n}\n\n/** Update a folder-level permission. */\nexport const UpdateFlpUseCase = createAbstraction<IUpdateFlpUseCase>(\"UpdateFlpUseCase\");\n\nexport namespace UpdateFlpUseCase {\n export type Interface = IUpdateFlpUseCase;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAUvD;;AAKA;AACA,OAAO,MAAMC,gBAAgB,GAAGD,iBAAiB,CAAoB,kBAAkB,CAAC","ignoreList":[]}
@@ -1,6 +1,10 @@
1
+ import type { Container } from "@webiny/di";
1
2
  import type { AcoContext } from "../../../types.js";
2
3
  interface LegacyDeps {
3
4
  context: AcoContext;
4
5
  }
5
- export declare const UpdateFlpFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<LegacyDeps>;
6
+ export declare const UpdateFlpFeature: {
7
+ name: string;
8
+ register(container: Container, context: LegacyDeps): void;
9
+ };
6
10
  export {};
@@ -1,14 +1,14 @@
1
1
  import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
2
2
  import { UpdateFlpUseCase } from "../UpdateFlp/abstractions.js";
3
3
  import type { FolderAfterUpdateEvent } from "../../../features/folder/UpdateFolder/events.js";
4
- import { FolderAfterUpdateHandler } from "../../../features/folder/UpdateFolder/index.js";
5
- declare class UpdateFlpOnFolderUpdatedHandlerImpl implements FolderAfterUpdateHandler.Interface {
4
+ import { FolderAfterUpdateEventHandler } from "../../../features/folder/UpdateFolder/index.js";
5
+ declare class UpdateFlpOnFolderUpdatedHandlerImpl implements FolderAfterUpdateEventHandler.Interface {
6
6
  private updateFlpUseCase;
7
7
  private tasks?;
8
8
  constructor(updateFlpUseCase: UpdateFlpUseCase.Interface, tasks?: TaskService.Interface | undefined);
9
9
  handle(event: FolderAfterUpdateEvent): Promise<void>;
10
10
  }
11
11
  export declare const UpdateFlpOnFolderUpdatedHandler: typeof UpdateFlpOnFolderUpdatedHandlerImpl & {
12
- __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<import("@webiny/api-core/features/EventPublisher").DomainEvent<import("../../folder/UpdateFolder/abstractions.js").FolderAfterUpdatePayload>>>;
12
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<import("@webiny/api-core/features/eventPublisher/abstractions.js").DomainEvent<import("../../folder/UpdateFolder/abstractions.js").FolderAfterUpdatePayload>>>;
13
13
  };
14
14
  export {};
@@ -1,7 +1,7 @@
1
1
  import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
2
2
  import { UpdateFlpUseCase } from "../UpdateFlp/abstractions.js";
3
3
  import { UPDATE_FLP_TASK_ID } from "../../../flp/tasks/index.js";
4
- import { FolderAfterUpdateHandler } from "../../folder/UpdateFolder/index.js";
4
+ import { FolderAfterUpdateEventHandler } from "../../folder/UpdateFolder/index.js";
5
5
  class UpdateFlpOnFolderUpdatedHandlerImpl {
6
6
  constructor(updateFlpUseCase, tasks) {
7
7
  this.updateFlpUseCase = updateFlpUseCase;
@@ -29,7 +29,7 @@ class UpdateFlpOnFolderUpdatedHandlerImpl {
29
29
  }
30
30
  }
31
31
  }
32
- export const UpdateFlpOnFolderUpdatedHandler = FolderAfterUpdateHandler.createImplementation({
32
+ export const UpdateFlpOnFolderUpdatedHandler = FolderAfterUpdateEventHandler.createImplementation({
33
33
  implementation: UpdateFlpOnFolderUpdatedHandlerImpl,
34
34
  dependencies: [UpdateFlpUseCase, [TaskService, {
35
35
  optional: true
@@ -1 +1 @@
1
- {"version":3,"names":["TaskService","UpdateFlpUseCase","UPDATE_FLP_TASK_ID","FolderAfterUpdateHandler","UpdateFlpOnFolderUpdatedHandlerImpl","constructor","updateFlpUseCase","tasks","handle","event","folder","payload","trigger","definition","input","execute","UpdateFlpOnFolderUpdatedHandler","createImplementation","implementation","dependencies","optional"],"sources":["UpdateFlpOnFolderUpdatedHandler.ts"],"sourcesContent":["import { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport { UpdateFlpUseCase } from \"../UpdateFlp/abstractions.js\";\nimport type { FolderAfterUpdateEvent } from \"~/features/folder/UpdateFolder/events.js\";\nimport type { IUpdateFlpTaskInput } from \"~/types.js\";\nimport { UPDATE_FLP_TASK_ID } from \"~/flp/tasks/index.js\";\nimport { FolderAfterUpdateHandler } from \"~/features/folder/UpdateFolder/index.js\";\n\nclass UpdateFlpOnFolderUpdatedHandlerImpl implements FolderAfterUpdateHandler.Interface {\n constructor(\n private updateFlpUseCase: UpdateFlpUseCase.Interface,\n private tasks?: TaskService.Interface\n ) {}\n\n async handle(event: FolderAfterUpdateEvent): Promise<void> {\n const { folder } = event.payload;\n\n try {\n if (this.tasks) {\n await this.tasks.trigger<IUpdateFlpTaskInput>({\n definition: UPDATE_FLP_TASK_ID,\n input: { folder }\n });\n } else {\n await this.updateFlpUseCase.execute({ folder });\n }\n } catch {\n // Ignore errors\n }\n }\n}\n\nexport const UpdateFlpOnFolderUpdatedHandler = FolderAfterUpdateHandler.createImplementation({\n implementation: UpdateFlpOnFolderUpdatedHandlerImpl,\n dependencies: [UpdateFlpUseCase, [TaskService, { optional: true }]]\n});\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,qDAAqD;AACjF,SAASC,gBAAgB;AAGzB,SAASC,kBAAkB;AAC3B,SAASC,wBAAwB;AAEjC,MAAMC,mCAAmC,CAA+C;EACpFC,WAAWA,CACCC,gBAA4C,EAC5CC,KAA6B,EACvC;IAAA,KAFUD,gBAA4C,GAA5CA,gBAA4C;IAAA,KAC5CC,KAA6B,GAA7BA,KAA6B;EACtC;EAEH,MAAMC,MAAMA,CAACC,KAA6B,EAAiB;IACvD,MAAM;MAAEC;IAAO,CAAC,GAAGD,KAAK,CAACE,OAAO;IAEhC,IAAI;MACA,IAAI,IAAI,CAACJ,KAAK,EAAE;QACZ,MAAM,IAAI,CAACA,KAAK,CAACK,OAAO,CAAsB;UAC1CC,UAAU,EAAEX,kBAAkB;UAC9BY,KAAK,EAAE;YAAEJ;UAAO;QACpB,CAAC,CAAC;MACN,CAAC,MAAM;QACH,MAAM,IAAI,CAACJ,gBAAgB,CAACS,OAAO,CAAC;UAAEL;QAAO,CAAC,CAAC;MACnD;IACJ,CAAC,CAAC,MAAM;MACJ;IAAA;EAER;AACJ;AAEA,OAAO,MAAMM,+BAA+B,GAAGb,wBAAwB,CAACc,oBAAoB,CAAC;EACzFC,cAAc,EAAEd,mCAAmC;EACnDe,YAAY,EAAE,CAAClB,gBAAgB,EAAE,CAACD,WAAW,EAAE;IAAEoB,QAAQ,EAAE;EAAK,CAAC,CAAC;AACtE,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TaskService","UpdateFlpUseCase","UPDATE_FLP_TASK_ID","FolderAfterUpdateEventHandler","UpdateFlpOnFolderUpdatedHandlerImpl","constructor","updateFlpUseCase","tasks","handle","event","folder","payload","trigger","definition","input","execute","UpdateFlpOnFolderUpdatedHandler","createImplementation","implementation","dependencies","optional"],"sources":["UpdateFlpOnFolderUpdatedHandler.ts"],"sourcesContent":["import { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport { UpdateFlpUseCase } from \"../UpdateFlp/abstractions.js\";\nimport type { FolderAfterUpdateEvent } from \"~/features/folder/UpdateFolder/events.js\";\nimport type { IUpdateFlpTaskInput } from \"~/types.js\";\nimport { UPDATE_FLP_TASK_ID } from \"~/flp/tasks/index.js\";\nimport { FolderAfterUpdateEventHandler } from \"~/features/folder/UpdateFolder/index.js\";\n\nclass UpdateFlpOnFolderUpdatedHandlerImpl implements FolderAfterUpdateEventHandler.Interface {\n constructor(\n private updateFlpUseCase: UpdateFlpUseCase.Interface,\n private tasks?: TaskService.Interface\n ) {}\n\n async handle(event: FolderAfterUpdateEvent): Promise<void> {\n const { folder } = event.payload;\n\n try {\n if (this.tasks) {\n await this.tasks.trigger<IUpdateFlpTaskInput>({\n definition: UPDATE_FLP_TASK_ID,\n input: { folder }\n });\n } else {\n await this.updateFlpUseCase.execute({ folder });\n }\n } catch {\n // Ignore errors\n }\n }\n}\n\nexport const UpdateFlpOnFolderUpdatedHandler = FolderAfterUpdateEventHandler.createImplementation({\n implementation: UpdateFlpOnFolderUpdatedHandlerImpl,\n dependencies: [UpdateFlpUseCase, [TaskService, { optional: true }]]\n});\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,qDAAqD;AACjF,SAASC,gBAAgB;AAGzB,SAASC,kBAAkB;AAC3B,SAASC,6BAA6B;AAEtC,MAAMC,mCAAmC,CAAoD;EACzFC,WAAWA,CACCC,gBAA4C,EAC5CC,KAA6B,EACvC;IAAA,KAFUD,gBAA4C,GAA5CA,gBAA4C;IAAA,KAC5CC,KAA6B,GAA7BA,KAA6B;EACtC;EAEH,MAAMC,MAAMA,CAACC,KAA6B,EAAiB;IACvD,MAAM;MAAEC;IAAO,CAAC,GAAGD,KAAK,CAACE,OAAO;IAEhC,IAAI;MACA,IAAI,IAAI,CAACJ,KAAK,EAAE;QACZ,MAAM,IAAI,CAACA,KAAK,CAACK,OAAO,CAAsB;UAC1CC,UAAU,EAAEX,kBAAkB;UAC9BY,KAAK,EAAE;YAAEJ;UAAO;QACpB,CAAC,CAAC;MACN,CAAC,MAAM;QACH,MAAM,IAAI,CAACJ,gBAAgB,CAACS,OAAO,CAAC;UAAEL;QAAO,CAAC,CAAC;MACnD;IACJ,CAAC,CAAC,MAAM;MACJ;IAAA;EAER;AACJ;AAEA,OAAO,MAAMM,+BAA+B,GAAGb,6BAA6B,CAACc,oBAAoB,CAAC;EAC9FC,cAAc,EAAEd,mCAAmC;EACnDe,YAAY,EAAE,CAAClB,gBAAgB,EAAE,CAACD,WAAW,EAAE;IAAEoB,QAAQ,EAAE;EAAK,CAAC,CAAC;AACtE,CAAC,CAAC","ignoreList":[]}
@@ -1 +1,4 @@
1
- export declare const UpdateFlpOnFolderUpdatedFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ export declare const UpdateFlpOnFolderUpdatedFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -1,5 +1,5 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/EventPublisher";
2
+ import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import { CreateFolderUseCase as UseCaseAbstraction, CreateFolderRepository } from "./abstractions.js";
4
4
  import type { Folder, CreateFolderParams } from "../../../folder/folder.types.js";
5
5
  declare class CreateFolderUseCaseImpl implements UseCaseAbstraction.Interface {
@@ -1,5 +1,5 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
2
+ import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import { createImplementation } from "@webiny/di";
4
4
  import { CreateFolderUseCase as UseCaseAbstraction, CreateFolderRepository } from "./abstractions.js";
5
5
  import { FolderBeforeCreateEvent, FolderAfterCreateEvent } from "./events.js";
@@ -1 +1 @@
1
- {"version":3,"names":["Result","EventPublisher","createImplementation","CreateFolderUseCase","UseCaseAbstraction","CreateFolderRepository","FolderBeforeCreateEvent","FolderAfterCreateEvent","CreateFolderUseCaseImpl","constructor","eventPublisher","repository","execute","params","beforeCreateEvent","input","publish","result","isFail","folder","value","afterCreateEvent","ok","abstraction","implementation","dependencies"],"sources":["CreateFolderUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport { createImplementation } from \"@webiny/di\";\nimport {\n CreateFolderUseCase as UseCaseAbstraction,\n CreateFolderRepository\n} from \"./abstractions.js\";\nimport { FolderBeforeCreateEvent, FolderAfterCreateEvent } from \"./events.js\";\nimport type { Folder, CreateFolderParams } from \"~/folder/folder.types.js\";\n\nclass CreateFolderUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private eventPublisher: EventPublisherAbstraction.Interface,\n private repository: CreateFolderRepository.Interface\n ) {}\n\n async execute(params: CreateFolderParams): Promise<Result<Folder, UseCaseAbstraction.Error>> {\n // Publish before create event\n const beforeCreateEvent = new FolderBeforeCreateEvent({\n input: params\n });\n\n await this.eventPublisher.publish(beforeCreateEvent);\n\n // Execute the create operation\n const result = await this.repository.execute(params);\n\n if (result.isFail()) {\n return result;\n }\n\n const folder = result.value;\n\n // Publish after create event\n const afterCreateEvent = new FolderAfterCreateEvent({\n folder\n });\n\n await this.eventPublisher.publish(afterCreateEvent);\n\n return Result.ok(folder);\n }\n}\n\nexport const CreateFolderUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: CreateFolderUseCaseImpl,\n dependencies: [EventPublisher, CreateFolderRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,cAAc,QAEX,0CAA0C;AACjD,SAASC,oBAAoB,QAAQ,YAAY;AACjD,SACIC,mBAAmB,IAAIC,kBAAkB,EACzCC,sBAAsB;AAE1B,SAASC,uBAAuB,EAAEC,sBAAsB;AAGxD,MAAMC,uBAAuB,CAAyC;EAClEC,WAAWA,CACCC,cAAmD,EACnDC,UAA4C,EACtD;IAAA,KAFUD,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,UAA4C,GAA5CA,UAA4C;EACrD;EAEH,MAAMC,OAAOA,CAACC,MAA0B,EAAqD;IACzF;IACA,MAAMC,iBAAiB,GAAG,IAAIR,uBAAuB,CAAC;MAClDS,KAAK,EAAEF;IACX,CAAC,CAAC;IAEF,MAAM,IAAI,CAACH,cAAc,CAACM,OAAO,CAACF,iBAAiB,CAAC;;IAEpD;IACA,MAAMG,MAAM,GAAG,MAAM,IAAI,CAACN,UAAU,CAACC,OAAO,CAACC,MAAM,CAAC;IAEpD,IAAII,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOD,MAAM;IACjB;IAEA,MAAME,MAAM,GAAGF,MAAM,CAACG,KAAK;;IAE3B;IACA,MAAMC,gBAAgB,GAAG,IAAId,sBAAsB,CAAC;MAChDY;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,CAACT,cAAc,CAACM,OAAO,CAACK,gBAAgB,CAAC;IAEnD,OAAOrB,MAAM,CAACsB,EAAE,CAACH,MAAM,CAAC;EAC5B;AACJ;AAEA,OAAO,MAAMhB,mBAAmB,GAAGD,oBAAoB,CAAC;EACpDqB,WAAW,EAAEnB,kBAAkB;EAC/BoB,cAAc,EAAEhB,uBAAuB;EACvCiB,YAAY,EAAE,CAACxB,cAAc,EAAEI,sBAAsB;AACzD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Result","EventPublisher","createImplementation","CreateFolderUseCase","UseCaseAbstraction","CreateFolderRepository","FolderBeforeCreateEvent","FolderAfterCreateEvent","CreateFolderUseCaseImpl","constructor","eventPublisher","repository","execute","params","beforeCreateEvent","input","publish","result","isFail","folder","value","afterCreateEvent","ok","abstraction","implementation","dependencies"],"sources":["CreateFolderUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { createImplementation } from \"@webiny/di\";\nimport {\n CreateFolderUseCase as UseCaseAbstraction,\n CreateFolderRepository\n} from \"./abstractions.js\";\nimport { FolderBeforeCreateEvent, FolderAfterCreateEvent } from \"./events.js\";\nimport type { Folder, CreateFolderParams } from \"~/folder/folder.types.js\";\n\nclass CreateFolderUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private eventPublisher: EventPublisherAbstraction.Interface,\n private repository: CreateFolderRepository.Interface\n ) {}\n\n async execute(params: CreateFolderParams): Promise<Result<Folder, UseCaseAbstraction.Error>> {\n // Publish before create event\n const beforeCreateEvent = new FolderBeforeCreateEvent({\n input: params\n });\n\n await this.eventPublisher.publish(beforeCreateEvent);\n\n // Execute the create operation\n const result = await this.repository.execute(params);\n\n if (result.isFail()) {\n return result;\n }\n\n const folder = result.value;\n\n // Publish after create event\n const afterCreateEvent = new FolderAfterCreateEvent({\n folder\n });\n\n await this.eventPublisher.publish(afterCreateEvent);\n\n return Result.ok(folder);\n }\n}\n\nexport const CreateFolderUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: CreateFolderUseCaseImpl,\n dependencies: [EventPublisher, CreateFolderRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,cAAc,QAEX,mDAAmD;AAC1D,SAASC,oBAAoB,QAAQ,YAAY;AACjD,SACIC,mBAAmB,IAAIC,kBAAkB,EACzCC,sBAAsB;AAE1B,SAASC,uBAAuB,EAAEC,sBAAsB;AAGxD,MAAMC,uBAAuB,CAAyC;EAClEC,WAAWA,CACCC,cAAmD,EACnDC,UAA4C,EACtD;IAAA,KAFUD,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,UAA4C,GAA5CA,UAA4C;EACrD;EAEH,MAAMC,OAAOA,CAACC,MAA0B,EAAqD;IACzF;IACA,MAAMC,iBAAiB,GAAG,IAAIR,uBAAuB,CAAC;MAClDS,KAAK,EAAEF;IACX,CAAC,CAAC;IAEF,MAAM,IAAI,CAACH,cAAc,CAACM,OAAO,CAACF,iBAAiB,CAAC;;IAEpD;IACA,MAAMG,MAAM,GAAG,MAAM,IAAI,CAACN,UAAU,CAACC,OAAO,CAACC,MAAM,CAAC;IAEpD,IAAII,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOD,MAAM;IACjB;IAEA,MAAME,MAAM,GAAGF,MAAM,CAACG,KAAK;;IAE3B;IACA,MAAMC,gBAAgB,GAAG,IAAId,sBAAsB,CAAC;MAChDY;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,CAACT,cAAc,CAACM,OAAO,CAACK,gBAAgB,CAAC;IAEnD,OAAOrB,MAAM,CAACsB,EAAE,CAACH,MAAM,CAAC;EAC5B;AACJ;AAEA,OAAO,MAAMhB,mBAAmB,GAAGD,oBAAoB,CAAC;EACpDqB,WAAW,EAAEnB,kBAAkB;EAC/BoB,cAAc,EAAEhB,uBAAuB;EACvCiB,YAAY,EAAE,CAACxB,cAAc,EAAEI,sBAAsB;AACzD,CAAC,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import type { Result } from "@webiny/feature/api";
2
- import type { DomainEvent, IEventHandler } from "@webiny/api-core/features/EventPublisher";
2
+ import type { DomainEvent, IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import type { Folder, CreateFolderParams } from "../../../folder/folder.types.js";
4
4
  import type { FolderNotAuthorizedError, FolderPersistenceError, FolderValidationError } from "../../../domain/folder/errors.js";
5
5
  /**
@@ -13,6 +13,7 @@ export interface ICreateFolderRepositoryErrors {
13
13
  persistence: FolderPersistenceError;
14
14
  }
15
15
  type RepositoryError = ICreateFolderRepositoryErrors[keyof ICreateFolderRepositoryErrors];
16
+ /** Persist a newly created folder. */
16
17
  export declare const CreateFolderRepository: import("@webiny/di").Abstraction<ICreateFolderRepository>;
17
18
  export declare namespace CreateFolderRepository {
18
19
  type Interface = ICreateFolderRepository;
@@ -30,6 +31,7 @@ export interface ICreateFolderUseCaseErrors {
30
31
  validation: FolderValidationError;
31
32
  }
32
33
  type UseCaseError = ICreateFolderUseCaseErrors[keyof ICreateFolderUseCaseErrors];
34
+ /** Create a new folder. */
33
35
  export declare const CreateFolderUseCase: import("@webiny/di").Abstraction<ICreateFolderUseCase>;
34
36
  export declare namespace CreateFolderUseCase {
35
37
  type Interface = ICreateFolderUseCase;
@@ -42,13 +44,15 @@ export interface FolderBeforeCreatePayload {
42
44
  export interface FolderAfterCreatePayload {
43
45
  folder: Folder;
44
46
  }
45
- export declare const FolderBeforeCreateHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<FolderBeforeCreatePayload>>>;
46
- export declare namespace FolderBeforeCreateHandler {
47
+ /** Hook into folder lifecycle before a folder is created. */
48
+ export declare const FolderBeforeCreateEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<FolderBeforeCreatePayload>>>;
49
+ export declare namespace FolderBeforeCreateEventHandler {
47
50
  type Interface = IEventHandler<DomainEvent<FolderBeforeCreatePayload>>;
48
51
  type Event = DomainEvent<FolderBeforeCreatePayload>;
49
52
  }
50
- export declare const FolderAfterCreateHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<FolderAfterCreatePayload>>>;
51
- export declare namespace FolderAfterCreateHandler {
53
+ /** Hook into folder lifecycle after a folder is created. */
54
+ export declare const FolderAfterCreateEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<FolderAfterCreatePayload>>>;
55
+ export declare namespace FolderAfterCreateEventHandler {
52
56
  type Interface = IEventHandler<DomainEvent<FolderAfterCreatePayload>>;
53
57
  type Event = DomainEvent<FolderAfterCreatePayload>;
54
58
  }
@@ -4,18 +4,22 @@ import { createAbstraction } from "@webiny/feature/api";
4
4
  * CreateFolder repository interface
5
5
  */
6
6
 
7
+ /** Persist a newly created folder. */
7
8
  export const CreateFolderRepository = createAbstraction("CreateFolderRepository");
8
9
 
9
10
  /**
10
11
  * CreateFolder use case interface
11
12
  */
12
13
 
14
+ /** Create a new folder. */
13
15
  export const CreateFolderUseCase = createAbstraction("CreateFolderUseCase");
14
16
 
15
17
  // Event Payload Types
16
18
 
17
19
  // Event Handler Abstractions
18
- export const FolderBeforeCreateHandler = createAbstraction("FolderBeforeCreateHandler");
19
- export const FolderAfterCreateHandler = createAbstraction("FolderAfterCreateHandler");
20
+ /** Hook into folder lifecycle before a folder is created. */
21
+ export const FolderBeforeCreateEventHandler = createAbstraction("FolderBeforeCreateEventHandler");
22
+ /** Hook into folder lifecycle after a folder is created. */
23
+ export const FolderAfterCreateEventHandler = createAbstraction("FolderAfterCreateEventHandler");
20
24
 
21
25
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","CreateFolderRepository","CreateFolderUseCase","FolderBeforeCreateHandler","FolderAfterCreateHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { DomainEvent, IEventHandler } from \"@webiny/api-core/features/EventPublisher\";\nimport type { Folder, CreateFolderParams } from \"~/folder/folder.types.js\";\nimport type {\n FolderNotAuthorizedError,\n FolderPersistenceError,\n FolderValidationError\n} from \"~/domain/folder/errors.js\";\n\n/**\n * CreateFolder repository interface\n */\nexport interface ICreateFolderRepository {\n execute(data: CreateFolderParams): Promise<Result<Folder, RepositoryError>>;\n}\n\nexport interface ICreateFolderRepositoryErrors {\n validation: FolderValidationError;\n persistence: FolderPersistenceError;\n}\n\ntype RepositoryError = ICreateFolderRepositoryErrors[keyof ICreateFolderRepositoryErrors];\n\nexport const CreateFolderRepository =\n createAbstraction<ICreateFolderRepository>(\"CreateFolderRepository\");\n\nexport namespace CreateFolderRepository {\n export type Interface = ICreateFolderRepository;\n export type Error = RepositoryError;\n}\n\n/**\n * CreateFolder use case interface\n */\nexport interface ICreateFolderUseCase {\n execute(params: CreateFolderParams): Promise<Result<Folder, UseCaseError>>;\n}\n\nexport interface ICreateFolderUseCaseErrors {\n notAuthorized: FolderNotAuthorizedError;\n persistence: FolderPersistenceError;\n validation: FolderValidationError;\n}\n\ntype UseCaseError = ICreateFolderUseCaseErrors[keyof ICreateFolderUseCaseErrors];\n\nexport const CreateFolderUseCase = createAbstraction<ICreateFolderUseCase>(\"CreateFolderUseCase\");\n\nexport namespace CreateFolderUseCase {\n export type Interface = ICreateFolderUseCase;\n export type Return = Promise<Result<Folder, UseCaseError>>;\n export type Error = UseCaseError;\n}\n\n// Event Payload Types\nexport interface FolderBeforeCreatePayload {\n input: CreateFolderParams;\n}\n\nexport interface FolderAfterCreatePayload {\n folder: Folder;\n}\n\n// Event Handler Abstractions\nexport const FolderBeforeCreateHandler = createAbstraction<\n IEventHandler<DomainEvent<FolderBeforeCreatePayload>>\n>(\"FolderBeforeCreateHandler\");\n\nexport namespace FolderBeforeCreateHandler {\n export type Interface = IEventHandler<DomainEvent<FolderBeforeCreatePayload>>;\n export type Event = DomainEvent<FolderBeforeCreatePayload>;\n}\n\nexport const FolderAfterCreateHandler = createAbstraction<\n IEventHandler<DomainEvent<FolderAfterCreatePayload>>\n>(\"FolderAfterCreateHandler\");\n\nexport namespace FolderAfterCreateHandler {\n export type Interface = IEventHandler<DomainEvent<FolderAfterCreatePayload>>;\n export type Event = DomainEvent<FolderAfterCreatePayload>;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAUvD;AACA;AACA;;AAYA,OAAO,MAAMC,sBAAsB,GAC/BD,iBAAiB,CAA0B,wBAAwB,CAAC;;AAOxE;AACA;AACA;;AAaA,OAAO,MAAME,mBAAmB,GAAGF,iBAAiB,CAAuB,qBAAqB,CAAC;;AAQjG;;AASA;AACA,OAAO,MAAMG,yBAAyB,GAAGH,iBAAiB,CAExD,2BAA2B,CAAC;AAO9B,OAAO,MAAMI,wBAAwB,GAAGJ,iBAAiB,CAEvD,0BAA0B,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","CreateFolderRepository","CreateFolderUseCase","FolderBeforeCreateEventHandler","FolderAfterCreateEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { DomainEvent, IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { Folder, CreateFolderParams } from \"~/folder/folder.types.js\";\nimport type {\n FolderNotAuthorizedError,\n FolderPersistenceError,\n FolderValidationError\n} from \"~/domain/folder/errors.js\";\n\n/**\n * CreateFolder repository interface\n */\nexport interface ICreateFolderRepository {\n execute(data: CreateFolderParams): Promise<Result<Folder, RepositoryError>>;\n}\n\nexport interface ICreateFolderRepositoryErrors {\n validation: FolderValidationError;\n persistence: FolderPersistenceError;\n}\n\ntype RepositoryError = ICreateFolderRepositoryErrors[keyof ICreateFolderRepositoryErrors];\n\n/** Persist a newly created folder. */\nexport const CreateFolderRepository =\n createAbstraction<ICreateFolderRepository>(\"CreateFolderRepository\");\n\nexport namespace CreateFolderRepository {\n export type Interface = ICreateFolderRepository;\n export type Error = RepositoryError;\n}\n\n/**\n * CreateFolder use case interface\n */\nexport interface ICreateFolderUseCase {\n execute(params: CreateFolderParams): Promise<Result<Folder, UseCaseError>>;\n}\n\nexport interface ICreateFolderUseCaseErrors {\n notAuthorized: FolderNotAuthorizedError;\n persistence: FolderPersistenceError;\n validation: FolderValidationError;\n}\n\ntype UseCaseError = ICreateFolderUseCaseErrors[keyof ICreateFolderUseCaseErrors];\n\n/** Create a new folder. */\nexport const CreateFolderUseCase = createAbstraction<ICreateFolderUseCase>(\"CreateFolderUseCase\");\n\nexport namespace CreateFolderUseCase {\n export type Interface = ICreateFolderUseCase;\n export type Return = Promise<Result<Folder, UseCaseError>>;\n export type Error = UseCaseError;\n}\n\n// Event Payload Types\nexport interface FolderBeforeCreatePayload {\n input: CreateFolderParams;\n}\n\nexport interface FolderAfterCreatePayload {\n folder: Folder;\n}\n\n// Event Handler Abstractions\n/** Hook into folder lifecycle before a folder is created. */\nexport const FolderBeforeCreateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<FolderBeforeCreatePayload>>\n>(\"FolderBeforeCreateEventHandler\");\n\nexport namespace FolderBeforeCreateEventHandler {\n export type Interface = IEventHandler<DomainEvent<FolderBeforeCreatePayload>>;\n export type Event = DomainEvent<FolderBeforeCreatePayload>;\n}\n\n/** Hook into folder lifecycle after a folder is created. */\nexport const FolderAfterCreateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<FolderAfterCreatePayload>>\n>(\"FolderAfterCreateEventHandler\");\n\nexport namespace FolderAfterCreateEventHandler {\n export type Interface = IEventHandler<DomainEvent<FolderAfterCreatePayload>>;\n export type Event = DomainEvent<FolderAfterCreatePayload>;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAUvD;AACA;AACA;;AAYA;AACA,OAAO,MAAMC,sBAAsB,GAC/BD,iBAAiB,CAA0B,wBAAwB,CAAC;;AAOxE;AACA;AACA;;AAaA;AACA,OAAO,MAAME,mBAAmB,GAAGF,iBAAiB,CAAuB,qBAAqB,CAAC;;AAQjG;;AASA;AACA;AACA,OAAO,MAAMG,8BAA8B,GAAGH,iBAAiB,CAE7D,gCAAgC,CAAC;AAOnC;AACA,OAAO,MAAMI,6BAA6B,GAAGJ,iBAAiB,CAE5D,+BAA+B,CAAC","ignoreList":[]}
@@ -1,10 +1,10 @@
1
- import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
1
+ import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
2
2
  import type { FolderBeforeCreatePayload, FolderAfterCreatePayload } from "./abstractions.js";
3
3
  export declare class FolderBeforeCreateEvent extends DomainEvent<FolderBeforeCreatePayload> {
4
4
  eventType: "folder.beforeCreate";
5
- getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<DomainEvent<FolderBeforeCreatePayload>>>;
5
+ getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<FolderBeforeCreatePayload>>>;
6
6
  }
7
7
  export declare class FolderAfterCreateEvent extends DomainEvent<FolderAfterCreatePayload> {
8
8
  eventType: "folder.afterCreate";
9
- getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<DomainEvent<FolderAfterCreatePayload>>>;
9
+ getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<FolderAfterCreatePayload>>>;
10
10
  }
@@ -1,10 +1,10 @@
1
- import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
2
- import { FolderBeforeCreateHandler, FolderAfterCreateHandler } from "./abstractions.js";
1
+ import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
2
+ import { FolderBeforeCreateEventHandler, FolderAfterCreateEventHandler } from "./abstractions.js";
3
3
  // FolderBeforeCreate Event
4
4
  export class FolderBeforeCreateEvent extends DomainEvent {
5
5
  eventType = "folder.beforeCreate";
6
6
  getHandlerAbstraction() {
7
- return FolderBeforeCreateHandler;
7
+ return FolderBeforeCreateEventHandler;
8
8
  }
9
9
  }
10
10
 
@@ -12,7 +12,7 @@ export class FolderBeforeCreateEvent extends DomainEvent {
12
12
  export class FolderAfterCreateEvent extends DomainEvent {
13
13
  eventType = "folder.afterCreate";
14
14
  getHandlerAbstraction() {
15
- return FolderAfterCreateHandler;
15
+ return FolderAfterCreateEventHandler;
16
16
  }
17
17
  }
18
18
 
@@ -1 +1 @@
1
- {"version":3,"names":["DomainEvent","FolderBeforeCreateHandler","FolderAfterCreateHandler","FolderBeforeCreateEvent","eventType","getHandlerAbstraction","FolderAfterCreateEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport { FolderBeforeCreateHandler, FolderAfterCreateHandler } from \"./abstractions.js\";\nimport type { FolderBeforeCreatePayload, FolderAfterCreatePayload } from \"./abstractions.js\";\n\n// FolderBeforeCreate Event\nexport class FolderBeforeCreateEvent extends DomainEvent<FolderBeforeCreatePayload> {\n eventType = \"folder.beforeCreate\" as const;\n\n getHandlerAbstraction() {\n return FolderBeforeCreateHandler;\n }\n}\n\n// FolderAfterCreate Event\nexport class FolderAfterCreateEvent extends DomainEvent<FolderAfterCreatePayload> {\n eventType = \"folder.afterCreate\" as const;\n\n getHandlerAbstraction() {\n return FolderAfterCreateHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,0CAA0C;AACtE,SAASC,yBAAyB,EAAEC,wBAAwB;AAG5D;AACA,OAAO,MAAMC,uBAAuB,SAASH,WAAW,CAA4B;EAChFI,SAAS,GAAG,qBAAqB;EAEjCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,yBAAyB;EACpC;AACJ;;AAEA;AACA,OAAO,MAAMK,sBAAsB,SAASN,WAAW,CAA2B;EAC9EI,SAAS,GAAG,oBAAoB;EAEhCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,wBAAwB;EACnC;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["DomainEvent","FolderBeforeCreateEventHandler","FolderAfterCreateEventHandler","FolderBeforeCreateEvent","eventType","getHandlerAbstraction","FolderAfterCreateEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { FolderBeforeCreateEventHandler, FolderAfterCreateEventHandler } from \"./abstractions.js\";\nimport type { FolderBeforeCreatePayload, FolderAfterCreatePayload } from \"./abstractions.js\";\n\n// FolderBeforeCreate Event\nexport class FolderBeforeCreateEvent extends DomainEvent<FolderBeforeCreatePayload> {\n eventType = \"folder.beforeCreate\" as const;\n\n getHandlerAbstraction() {\n return FolderBeforeCreateEventHandler;\n }\n}\n\n// FolderAfterCreate Event\nexport class FolderAfterCreateEvent extends DomainEvent<FolderAfterCreatePayload> {\n eventType = \"folder.afterCreate\" as const;\n\n getHandlerAbstraction() {\n return FolderAfterCreateEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,mDAAmD;AAC/E,SAASC,8BAA8B,EAAEC,6BAA6B;AAGtE;AACA,OAAO,MAAMC,uBAAuB,SAASH,WAAW,CAA4B;EAChFI,SAAS,GAAG,qBAAqB;EAEjCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,8BAA8B;EACzC;AACJ;;AAEA;AACA,OAAO,MAAMK,sBAAsB,SAASN,WAAW,CAA2B;EAC9EI,SAAS,GAAG,oBAAoB;EAEhCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,6BAA6B;EACxC;AACJ","ignoreList":[]}
@@ -1 +1,5 @@
1
- export declare const CreateFolderFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ import type { Container } from "@webiny/di";
2
+ export declare const CreateFolderFeature: {
3
+ name: string;
4
+ register(container: Container): void;
5
+ };
@@ -1,2 +1,2 @@
1
1
  export { CreateFolderFeature } from "./feature.js";
2
- export { FolderAfterCreateHandler, FolderBeforeCreateHandler, CreateFolderUseCase } from "./abstractions.js";
2
+ export { FolderAfterCreateEventHandler, FolderBeforeCreateEventHandler, CreateFolderUseCase } from "./abstractions.js";
@@ -1,4 +1,4 @@
1
1
  export { CreateFolderFeature } from "./feature.js";
2
- export { FolderAfterCreateHandler, FolderBeforeCreateHandler, CreateFolderUseCase } from "./abstractions.js";
2
+ export { FolderAfterCreateEventHandler, FolderBeforeCreateEventHandler, CreateFolderUseCase } from "./abstractions.js";
3
3
 
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CreateFolderFeature","FolderAfterCreateHandler","FolderBeforeCreateHandler","CreateFolderUseCase"],"sources":["index.ts"],"sourcesContent":["export { CreateFolderFeature } from \"./feature.js\";\nexport {\n FolderAfterCreateHandler,\n FolderBeforeCreateHandler,\n CreateFolderUseCase\n} from \"./abstractions.js\";\n"],"mappings":"AAAA,SAASA,mBAAmB;AAC5B,SACIC,wBAAwB,EACxBC,yBAAyB,EACzBC,mBAAmB","ignoreList":[]}
1
+ {"version":3,"names":["CreateFolderFeature","FolderAfterCreateEventHandler","FolderBeforeCreateEventHandler","CreateFolderUseCase"],"sources":["index.ts"],"sourcesContent":["export { CreateFolderFeature } from \"./feature.js\";\nexport {\n FolderAfterCreateEventHandler,\n FolderBeforeCreateEventHandler,\n CreateFolderUseCase\n} from \"./abstractions.js\";\n"],"mappings":"AAAA,SAASA,mBAAmB;AAC5B,SACIC,6BAA6B,EAC7BC,8BAA8B,EAC9BC,mBAAmB","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/EventPublisher";
2
+ import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import { DeleteFolderUseCase as UseCaseAbstraction, DeleteFolderRepository } from "./abstractions.js";
4
4
  import { GetFolderRepository } from "../GetFolder/abstractions.js";
5
5
  declare class DeleteFolderUseCaseImpl implements UseCaseAbstraction.Interface {
@@ -1,5 +1,5 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
2
+ import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import { DeleteFolderUseCase as UseCaseAbstraction, DeleteFolderRepository } from "./abstractions.js";
4
4
  import { GetFolderRepository } from "../GetFolder/abstractions.js";
5
5
  import { FolderBeforeDeleteEvent, FolderAfterDeleteEvent } from "./events.js";
@@ -1 +1 @@
1
- {"version":3,"names":["Result","EventPublisher","DeleteFolderUseCase","UseCaseAbstraction","DeleteFolderRepository","GetFolderRepository","FolderBeforeDeleteEvent","FolderAfterDeleteEvent","createImplementation","FolderNotAuthorizedError","FolderNotEmptyError","DeleteFolderUseCaseImpl","constructor","eventPublisher","getFolderRepository","repository","execute","id","getFolderResult","isFail","fail","error","folder","value","beforeDeleteEvent","publish","err","code","result","afterDeleteEvent","ok","abstraction","implementation","dependencies"],"sources":["DeleteFolderUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport {\n DeleteFolderUseCase as UseCaseAbstraction,\n DeleteFolderRepository\n} from \"./abstractions.js\";\nimport { GetFolderRepository } from \"../GetFolder/abstractions.js\";\nimport { FolderBeforeDeleteEvent, FolderAfterDeleteEvent } from \"./events.js\";\nimport { createImplementation } from \"@webiny/di\";\nimport { FolderNotAuthorizedError, FolderNotEmptyError } from \"~/domain/folder/errors.js\";\n\nclass DeleteFolderUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getFolderRepository: GetFolderRepository.Interface,\n private repository: DeleteFolderRepository.Interface\n ) {}\n\n async execute(id: string): Promise<Result<void, UseCaseAbstraction.Error>> {\n // Get the folder before deletion\n const getFolderResult = await this.getFolderRepository.execute(id);\n\n if (getFolderResult.isFail()) {\n return Result.fail(getFolderResult.error);\n }\n\n const folder = getFolderResult.value;\n\n // Publish before delete event\n const beforeDeleteEvent = new FolderBeforeDeleteEvent({\n folder\n });\n\n try {\n await this.eventPublisher.publish(beforeDeleteEvent);\n } catch (err) {\n if (err.code === \"Aco/Folder/NotEmpty\") {\n return Result.fail(new FolderNotEmptyError());\n }\n return Result.fail(new FolderNotAuthorizedError());\n }\n\n // Execute the delete operation\n const result = await this.repository.execute(folder);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after delete event\n const afterDeleteEvent = new FolderAfterDeleteEvent({\n folder\n });\n\n await this.eventPublisher.publish(afterDeleteEvent);\n\n return Result.ok();\n }\n}\n\nexport const DeleteFolderUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: DeleteFolderUseCaseImpl,\n dependencies: [EventPublisher, GetFolderRepository, DeleteFolderRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,cAAc,QAEX,0CAA0C;AACjD,SACIC,mBAAmB,IAAIC,kBAAkB,EACzCC,sBAAsB;AAE1B,SAASC,mBAAmB;AAC5B,SAASC,uBAAuB,EAAEC,sBAAsB;AACxD,SAASC,oBAAoB,QAAQ,YAAY;AACjD,SAASC,wBAAwB,EAAEC,mBAAmB;AAEtD,MAAMC,uBAAuB,CAAyC;EAClEC,WAAWA,CACCC,cAAmD,EACnDC,mBAAkD,EAClDC,UAA4C,EACtD;IAAA,KAHUF,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,mBAAkD,GAAlDA,mBAAkD;IAAA,KAClDC,UAA4C,GAA5CA,UAA4C;EACrD;EAEH,MAAMC,OAAOA,CAACC,EAAU,EAAmD;IACvE;IACA,MAAMC,eAAe,GAAG,MAAM,IAAI,CAACJ,mBAAmB,CAACE,OAAO,CAACC,EAAE,CAAC;IAElE,IAAIC,eAAe,CAACC,MAAM,CAAC,CAAC,EAAE;MAC1B,OAAOnB,MAAM,CAACoB,IAAI,CAACF,eAAe,CAACG,KAAK,CAAC;IAC7C;IAEA,MAAMC,MAAM,GAAGJ,eAAe,CAACK,KAAK;;IAEpC;IACA,MAAMC,iBAAiB,GAAG,IAAIlB,uBAAuB,CAAC;MAClDgB;IACJ,CAAC,CAAC;IAEF,IAAI;MACA,MAAM,IAAI,CAACT,cAAc,CAACY,OAAO,CAACD,iBAAiB,CAAC;IACxD,CAAC,CAAC,OAAOE,GAAG,EAAE;MACV,IAAIA,GAAG,CAACC,IAAI,KAAK,qBAAqB,EAAE;QACpC,OAAO3B,MAAM,CAACoB,IAAI,CAAC,IAAIV,mBAAmB,CAAC,CAAC,CAAC;MACjD;MACA,OAAOV,MAAM,CAACoB,IAAI,CAAC,IAAIX,wBAAwB,CAAC,CAAC,CAAC;IACtD;;IAEA;IACA,MAAMmB,MAAM,GAAG,MAAM,IAAI,CAACb,UAAU,CAACC,OAAO,CAACM,MAAM,CAAC;IAEpD,IAAIM,MAAM,CAACT,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOS,MAAM;IACjB;;IAEA;IACA,MAAMC,gBAAgB,GAAG,IAAItB,sBAAsB,CAAC;MAChDe;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,CAACT,cAAc,CAACY,OAAO,CAACI,gBAAgB,CAAC;IAEnD,OAAO7B,MAAM,CAAC8B,EAAE,CAAC,CAAC;EACtB;AACJ;AAEA,OAAO,MAAM5B,mBAAmB,GAAGM,oBAAoB,CAAC;EACpDuB,WAAW,EAAE5B,kBAAkB;EAC/B6B,cAAc,EAAErB,uBAAuB;EACvCsB,YAAY,EAAE,CAAChC,cAAc,EAAEI,mBAAmB,EAAED,sBAAsB;AAC9E,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Result","EventPublisher","DeleteFolderUseCase","UseCaseAbstraction","DeleteFolderRepository","GetFolderRepository","FolderBeforeDeleteEvent","FolderAfterDeleteEvent","createImplementation","FolderNotAuthorizedError","FolderNotEmptyError","DeleteFolderUseCaseImpl","constructor","eventPublisher","getFolderRepository","repository","execute","id","getFolderResult","isFail","fail","error","folder","value","beforeDeleteEvent","publish","err","code","result","afterDeleteEvent","ok","abstraction","implementation","dependencies"],"sources":["DeleteFolderUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport {\n DeleteFolderUseCase as UseCaseAbstraction,\n DeleteFolderRepository\n} from \"./abstractions.js\";\nimport { GetFolderRepository } from \"../GetFolder/abstractions.js\";\nimport { FolderBeforeDeleteEvent, FolderAfterDeleteEvent } from \"./events.js\";\nimport { createImplementation } from \"@webiny/di\";\nimport { FolderNotAuthorizedError, FolderNotEmptyError } from \"~/domain/folder/errors.js\";\n\nclass DeleteFolderUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getFolderRepository: GetFolderRepository.Interface,\n private repository: DeleteFolderRepository.Interface\n ) {}\n\n async execute(id: string): Promise<Result<void, UseCaseAbstraction.Error>> {\n // Get the folder before deletion\n const getFolderResult = await this.getFolderRepository.execute(id);\n\n if (getFolderResult.isFail()) {\n return Result.fail(getFolderResult.error);\n }\n\n const folder = getFolderResult.value;\n\n // Publish before delete event\n const beforeDeleteEvent = new FolderBeforeDeleteEvent({\n folder\n });\n\n try {\n await this.eventPublisher.publish(beforeDeleteEvent);\n } catch (err) {\n if (err.code === \"Aco/Folder/NotEmpty\") {\n return Result.fail(new FolderNotEmptyError());\n }\n return Result.fail(new FolderNotAuthorizedError());\n }\n\n // Execute the delete operation\n const result = await this.repository.execute(folder);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after delete event\n const afterDeleteEvent = new FolderAfterDeleteEvent({\n folder\n });\n\n await this.eventPublisher.publish(afterDeleteEvent);\n\n return Result.ok();\n }\n}\n\nexport const DeleteFolderUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: DeleteFolderUseCaseImpl,\n dependencies: [EventPublisher, GetFolderRepository, DeleteFolderRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,cAAc,QAEX,mDAAmD;AAC1D,SACIC,mBAAmB,IAAIC,kBAAkB,EACzCC,sBAAsB;AAE1B,SAASC,mBAAmB;AAC5B,SAASC,uBAAuB,EAAEC,sBAAsB;AACxD,SAASC,oBAAoB,QAAQ,YAAY;AACjD,SAASC,wBAAwB,EAAEC,mBAAmB;AAEtD,MAAMC,uBAAuB,CAAyC;EAClEC,WAAWA,CACCC,cAAmD,EACnDC,mBAAkD,EAClDC,UAA4C,EACtD;IAAA,KAHUF,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,mBAAkD,GAAlDA,mBAAkD;IAAA,KAClDC,UAA4C,GAA5CA,UAA4C;EACrD;EAEH,MAAMC,OAAOA,CAACC,EAAU,EAAmD;IACvE;IACA,MAAMC,eAAe,GAAG,MAAM,IAAI,CAACJ,mBAAmB,CAACE,OAAO,CAACC,EAAE,CAAC;IAElE,IAAIC,eAAe,CAACC,MAAM,CAAC,CAAC,EAAE;MAC1B,OAAOnB,MAAM,CAACoB,IAAI,CAACF,eAAe,CAACG,KAAK,CAAC;IAC7C;IAEA,MAAMC,MAAM,GAAGJ,eAAe,CAACK,KAAK;;IAEpC;IACA,MAAMC,iBAAiB,GAAG,IAAIlB,uBAAuB,CAAC;MAClDgB;IACJ,CAAC,CAAC;IAEF,IAAI;MACA,MAAM,IAAI,CAACT,cAAc,CAACY,OAAO,CAACD,iBAAiB,CAAC;IACxD,CAAC,CAAC,OAAOE,GAAG,EAAE;MACV,IAAIA,GAAG,CAACC,IAAI,KAAK,qBAAqB,EAAE;QACpC,OAAO3B,MAAM,CAACoB,IAAI,CAAC,IAAIV,mBAAmB,CAAC,CAAC,CAAC;MACjD;MACA,OAAOV,MAAM,CAACoB,IAAI,CAAC,IAAIX,wBAAwB,CAAC,CAAC,CAAC;IACtD;;IAEA;IACA,MAAMmB,MAAM,GAAG,MAAM,IAAI,CAACb,UAAU,CAACC,OAAO,CAACM,MAAM,CAAC;IAEpD,IAAIM,MAAM,CAACT,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOS,MAAM;IACjB;;IAEA;IACA,MAAMC,gBAAgB,GAAG,IAAItB,sBAAsB,CAAC;MAChDe;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,CAACT,cAAc,CAACY,OAAO,CAACI,gBAAgB,CAAC;IAEnD,OAAO7B,MAAM,CAAC8B,EAAE,CAAC,CAAC;EACtB;AACJ;AAEA,OAAO,MAAM5B,mBAAmB,GAAGM,oBAAoB,CAAC;EACpDuB,WAAW,EAAE5B,kBAAkB;EAC/B6B,cAAc,EAAErB,uBAAuB;EACvCsB,YAAY,EAAE,CAAChC,cAAc,EAAEI,mBAAmB,EAAED,sBAAsB;AAC9E,CAAC,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import type { Result } from "@webiny/feature/api";
2
- import type { DomainEvent, IEventHandler } from "@webiny/api-core/features/EventPublisher";
2
+ import type { DomainEvent, IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import type { Folder } from "../../../folder/folder.types.js";
4
4
  import { type FolderNotAuthorizedError, FolderNotEmptyError, type FolderNotFoundError, type FolderPersistenceError } from "../../../domain/folder/errors.js";
5
5
  /**
@@ -13,6 +13,7 @@ export interface IDeleteFolderRepositoryErrors {
13
13
  persistence: FolderPersistenceError;
14
14
  }
15
15
  type RepositoryError = IDeleteFolderRepositoryErrors[keyof IDeleteFolderRepositoryErrors];
16
+ /** Persist folder deletion. */
16
17
  export declare const DeleteFolderRepository: import("@webiny/di").Abstraction<IDeleteFolderRepository>;
17
18
  export declare namespace DeleteFolderRepository {
18
19
  type Interface = IDeleteFolderRepository;
@@ -31,6 +32,7 @@ export interface IDeleteFolderUseCaseErrors {
31
32
  persistence: FolderPersistenceError;
32
33
  }
33
34
  type UseCaseError = IDeleteFolderUseCaseErrors[keyof IDeleteFolderUseCaseErrors];
35
+ /** Delete a folder. */
34
36
  export declare const DeleteFolderUseCase: import("@webiny/di").Abstraction<IDeleteFolderUseCase>;
35
37
  export declare namespace DeleteFolderUseCase {
36
38
  type Interface = IDeleteFolderUseCase;
@@ -42,13 +44,15 @@ export interface FolderBeforeDeletePayload {
42
44
  export interface FolderAfterDeletePayload {
43
45
  folder: Folder;
44
46
  }
45
- export declare const FolderBeforeDeleteHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<FolderBeforeDeletePayload>>>;
46
- export declare namespace FolderBeforeDeleteHandler {
47
+ /** Hook into folder lifecycle before a folder is deleted. */
48
+ export declare const FolderBeforeDeleteEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<FolderBeforeDeletePayload>>>;
49
+ export declare namespace FolderBeforeDeleteEventHandler {
47
50
  type Interface = IEventHandler<DomainEvent<FolderBeforeDeletePayload>>;
48
51
  type Event = DomainEvent<FolderBeforeDeletePayload>;
49
52
  }
50
- export declare const FolderAfterDeleteHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<FolderAfterDeletePayload>>>;
51
- export declare namespace FolderAfterDeleteHandler {
53
+ /** Hook into folder lifecycle after a folder is deleted. */
54
+ export declare const FolderAfterDeleteEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<FolderAfterDeletePayload>>>;
55
+ export declare namespace FolderAfterDeleteEventHandler {
52
56
  type Interface = IEventHandler<DomainEvent<FolderAfterDeletePayload>>;
53
57
  type Event = DomainEvent<FolderAfterDeletePayload>;
54
58
  }
@@ -4,18 +4,22 @@ import { createAbstraction } from "@webiny/feature/api";
4
4
  * DeleteFolder repository interface
5
5
  */
6
6
 
7
+ /** Persist folder deletion. */
7
8
  export const DeleteFolderRepository = createAbstraction("DeleteFolderRepository");
8
9
 
9
10
  /**
10
11
  * DeleteFolder use case interface
11
12
  */
12
13
 
14
+ /** Delete a folder. */
13
15
  export const DeleteFolderUseCase = createAbstraction("DeleteFolderUseCase");
14
16
 
15
17
  // Event Payload Types
16
18
 
17
19
  // Event Handler Abstractions
18
- export const FolderBeforeDeleteHandler = createAbstraction("FolderBeforeDeleteHandler");
19
- export const FolderAfterDeleteHandler = createAbstraction("FolderAfterDeleteHandler");
20
+ /** Hook into folder lifecycle before a folder is deleted. */
21
+ export const FolderBeforeDeleteEventHandler = createAbstraction("FolderBeforeDeleteEventHandler");
22
+ /** Hook into folder lifecycle after a folder is deleted. */
23
+ export const FolderAfterDeleteEventHandler = createAbstraction("FolderAfterDeleteEventHandler");
20
24
 
21
25
  //# sourceMappingURL=abstractions.js.map