@webiny/api-website-builder 6.1.0-beta.3 → 6.2.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/domain/page/PagePath.d.ts +7 -0
  2. package/domain/page/PagePath.js +36 -0
  3. package/domain/page/PagePath.js.map +1 -0
  4. package/domain/page/errors.d.ts +6 -0
  5. package/domain/page/errors.js +11 -0
  6. package/domain/page/errors.js.map +1 -1
  7. package/domain/permissionsSchema.d.ts +29 -0
  8. package/domain/{permissions.js → permissionsSchema.js} +4 -5
  9. package/domain/permissionsSchema.js.map +1 -0
  10. package/features/installer/ApiKeyInstaller.d.ts +1 -1
  11. package/features/installer/ApiKeyInstaller.js +1 -1
  12. package/features/installer/ApiKeyInstaller.js.map +1 -1
  13. package/features/pages/CreatePage/CreatePageUseCase.d.ts +2 -2
  14. package/features/pages/CreatePage/CreatePageUseCase.js +3 -3
  15. package/features/pages/CreatePage/CreatePageUseCase.js.map +1 -1
  16. package/features/pages/CreatePage/abstractions.d.ts +1 -1
  17. package/features/pages/CreatePage/abstractions.js.map +1 -1
  18. package/features/pages/CreatePage/events.d.ts +3 -3
  19. package/features/pages/CreatePage/events.js +1 -1
  20. package/features/pages/CreatePage/events.js.map +1 -1
  21. package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.d.ts +2 -2
  22. package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.js +3 -3
  23. package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.js.map +1 -1
  24. package/features/pages/CreatePageRevisionFrom/abstractions.d.ts +2 -2
  25. package/features/pages/CreatePageRevisionFrom/abstractions.js.map +1 -1
  26. package/features/pages/CreatePageRevisionFrom/events.d.ts +3 -3
  27. package/features/pages/CreatePageRevisionFrom/events.js +1 -1
  28. package/features/pages/CreatePageRevisionFrom/events.js.map +1 -1
  29. package/features/pages/DeletePage/DeletePageUseCase.d.ts +2 -2
  30. package/features/pages/DeletePage/DeletePageUseCase.js +3 -3
  31. package/features/pages/DeletePage/DeletePageUseCase.js.map +1 -1
  32. package/features/pages/DeletePage/abstractions.d.ts +2 -2
  33. package/features/pages/DeletePage/abstractions.js.map +1 -1
  34. package/features/pages/DeletePage/events.d.ts +3 -3
  35. package/features/pages/DeletePage/events.js +1 -1
  36. package/features/pages/DeletePage/events.js.map +1 -1
  37. package/features/pages/DuplicatePage/DuplicatePageRepository.d.ts +2 -2
  38. package/features/pages/DuplicatePage/DuplicatePageRepository.js +9 -1
  39. package/features/pages/DuplicatePage/DuplicatePageRepository.js.map +1 -1
  40. package/features/pages/DuplicatePage/DuplicatePageUseCase.d.ts +2 -2
  41. package/features/pages/DuplicatePage/DuplicatePageUseCase.js +3 -3
  42. package/features/pages/DuplicatePage/DuplicatePageUseCase.js.map +1 -1
  43. package/features/pages/DuplicatePage/abstractions.d.ts +9 -3
  44. package/features/pages/DuplicatePage/abstractions.js.map +1 -1
  45. package/features/pages/DuplicatePage/events.d.ts +3 -3
  46. package/features/pages/DuplicatePage/events.js +1 -1
  47. package/features/pages/DuplicatePage/events.js.map +1 -1
  48. package/features/pages/DuplicatePage/index.d.ts +2 -1
  49. package/features/pages/DuplicatePage/index.js +1 -1
  50. package/features/pages/DuplicatePage/index.js.map +1 -1
  51. package/features/pages/GetDeletedPageById/GetDeletedPageByIdUseCase.d.ts +1 -1
  52. package/features/pages/GetDeletedPageById/GetDeletedPageByIdUseCase.js +2 -2
  53. package/features/pages/GetDeletedPageById/GetDeletedPageByIdUseCase.js.map +1 -1
  54. package/features/pages/GetPageById/GetPageByIdUseCase.d.ts +1 -1
  55. package/features/pages/GetPageById/GetPageByIdUseCase.js +2 -2
  56. package/features/pages/GetPageById/GetPageByIdUseCase.js.map +1 -1
  57. package/features/pages/GetPageByPath/GetPageByPathUseCase.d.ts +1 -1
  58. package/features/pages/GetPageByPath/GetPageByPathUseCase.js +2 -2
  59. package/features/pages/GetPageByPath/GetPageByPathUseCase.js.map +1 -1
  60. package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsRepository.d.ts +15 -0
  61. package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsRepository.js +61 -0
  62. package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsRepository.js.map +1 -0
  63. package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsUseCase.d.ts +10 -0
  64. package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsUseCase.js +20 -0
  65. package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsUseCase.js.map +1 -0
  66. package/features/pages/GetPageLanguagePaths/abstractions.d.ts +20 -0
  67. package/features/pages/GetPageLanguagePaths/abstractions.js +6 -0
  68. package/features/pages/GetPageLanguagePaths/abstractions.js.map +1 -0
  69. package/features/pages/GetPageLanguagePaths/feature.d.ts +1 -0
  70. package/features/pages/GetPageLanguagePaths/feature.js +12 -0
  71. package/features/pages/GetPageLanguagePaths/feature.js.map +1 -0
  72. package/features/pages/GetPageLanguagePaths/index.d.ts +1 -0
  73. package/features/pages/GetPageLanguagePaths/index.js +3 -0
  74. package/features/pages/GetPageLanguagePaths/index.js.map +1 -0
  75. package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.d.ts +1 -1
  76. package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.js +2 -2
  77. package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.js.map +1 -1
  78. package/features/pages/ListDeletedPages/ListDeletedPagesUseCase.d.ts +1 -1
  79. package/features/pages/ListDeletedPages/ListDeletedPagesUseCase.js +2 -2
  80. package/features/pages/ListDeletedPages/ListDeletedPagesUseCase.js.map +1 -1
  81. package/features/pages/ListPages/ListPagesUseCase.d.ts +1 -1
  82. package/features/pages/ListPages/ListPagesUseCase.js +2 -2
  83. package/features/pages/ListPages/ListPagesUseCase.js.map +1 -1
  84. package/features/pages/MovePage/MovePageUseCase.d.ts +2 -2
  85. package/features/pages/MovePage/MovePageUseCase.js +3 -3
  86. package/features/pages/MovePage/MovePageUseCase.js.map +1 -1
  87. package/features/pages/MovePage/abstractions.d.ts +2 -2
  88. package/features/pages/MovePage/abstractions.js.map +1 -1
  89. package/features/pages/MovePage/events.d.ts +3 -3
  90. package/features/pages/MovePage/events.js +1 -1
  91. package/features/pages/MovePage/events.js.map +1 -1
  92. package/features/pages/PublishPage/PublishPageUseCase.d.ts +2 -2
  93. package/features/pages/PublishPage/PublishPageUseCase.js +3 -3
  94. package/features/pages/PublishPage/PublishPageUseCase.js.map +1 -1
  95. package/features/pages/PublishPage/abstractions.d.ts +2 -2
  96. package/features/pages/PublishPage/abstractions.js.map +1 -1
  97. package/features/pages/PublishPage/events.d.ts +3 -3
  98. package/features/pages/PublishPage/events.js +1 -1
  99. package/features/pages/PublishPage/events.js.map +1 -1
  100. package/features/pages/RestorePage/RestorePageUseCase.d.ts +2 -2
  101. package/features/pages/RestorePage/RestorePageUseCase.js +3 -3
  102. package/features/pages/RestorePage/RestorePageUseCase.js.map +1 -1
  103. package/features/pages/RestorePage/abstractions.d.ts +2 -2
  104. package/features/pages/RestorePage/abstractions.js.map +1 -1
  105. package/features/pages/RestorePage/events.d.ts +3 -3
  106. package/features/pages/RestorePage/events.js +1 -1
  107. package/features/pages/RestorePage/events.js.map +1 -1
  108. package/features/pages/TranslatePage/TranslatePageUseCase.d.ts +17 -0
  109. package/features/pages/TranslatePage/TranslatePageUseCase.js +74 -0
  110. package/features/pages/TranslatePage/TranslatePageUseCase.js.map +1 -0
  111. package/features/pages/TranslatePage/abstractions.d.ts +29 -0
  112. package/features/pages/TranslatePage/abstractions.js +14 -0
  113. package/features/pages/TranslatePage/abstractions.js.map +1 -0
  114. package/features/pages/TranslatePage/feature.d.ts +1 -0
  115. package/features/pages/TranslatePage/feature.js +10 -0
  116. package/features/pages/TranslatePage/feature.js.map +1 -0
  117. package/features/pages/TranslatePage/index.d.ts +1 -0
  118. package/features/pages/TranslatePage/index.js +3 -0
  119. package/features/pages/TranslatePage/index.js.map +1 -0
  120. package/features/pages/TrashPage/TrashPageUseCase.d.ts +2 -2
  121. package/features/pages/TrashPage/TrashPageUseCase.js +3 -3
  122. package/features/pages/TrashPage/TrashPageUseCase.js.map +1 -1
  123. package/features/pages/TrashPage/abstractions.d.ts +2 -2
  124. package/features/pages/TrashPage/abstractions.js.map +1 -1
  125. package/features/pages/TrashPage/events.d.ts +3 -3
  126. package/features/pages/TrashPage/events.js +1 -1
  127. package/features/pages/TrashPage/events.js.map +1 -1
  128. package/features/pages/UnpublishPage/UnpublishPageUseCase.d.ts +2 -2
  129. package/features/pages/UnpublishPage/UnpublishPageUseCase.js +3 -3
  130. package/features/pages/UnpublishPage/UnpublishPageUseCase.js.map +1 -1
  131. package/features/pages/UnpublishPage/abstractions.d.ts +2 -2
  132. package/features/pages/UnpublishPage/abstractions.js.map +1 -1
  133. package/features/pages/UnpublishPage/events.d.ts +3 -3
  134. package/features/pages/UnpublishPage/events.js +1 -1
  135. package/features/pages/UnpublishPage/events.js.map +1 -1
  136. package/features/pages/UpdatePage/UpdatePageUseCase.d.ts +2 -2
  137. package/features/pages/UpdatePage/UpdatePageUseCase.js +3 -3
  138. package/features/pages/UpdatePage/UpdatePageUseCase.js.map +1 -1
  139. package/features/pages/UpdatePage/abstractions.d.ts +1 -1
  140. package/features/pages/UpdatePage/abstractions.js.map +1 -1
  141. package/features/pages/UpdatePage/events.d.ts +3 -3
  142. package/features/pages/UpdatePage/events.js +1 -1
  143. package/features/pages/UpdatePage/events.js.map +1 -1
  144. package/features/permissions/abstractions.d.ts +34 -0
  145. package/features/permissions/abstractions.js +5 -0
  146. package/features/permissions/abstractions.js.map +1 -0
  147. package/features/permissions/feature.d.ts +1 -0
  148. package/features/permissions/feature.js +6 -0
  149. package/features/permissions/feature.js.map +1 -0
  150. package/features/redirects/CreateRedirect/CreateRedirectUseCase.d.ts +2 -2
  151. package/features/redirects/CreateRedirect/CreateRedirectUseCase.js +3 -3
  152. package/features/redirects/CreateRedirect/CreateRedirectUseCase.js.map +1 -1
  153. package/features/redirects/CreateRedirect/abstractions.d.ts +2 -2
  154. package/features/redirects/CreateRedirect/abstractions.js.map +1 -1
  155. package/features/redirects/CreateRedirect/events.d.ts +3 -3
  156. package/features/redirects/CreateRedirect/events.js +1 -1
  157. package/features/redirects/CreateRedirect/events.js.map +1 -1
  158. package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.d.ts +2 -2
  159. package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.js +3 -3
  160. package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.js.map +1 -1
  161. package/features/redirects/DeleteRedirect/abstractions.d.ts +2 -2
  162. package/features/redirects/DeleteRedirect/abstractions.js.map +1 -1
  163. package/features/redirects/DeleteRedirect/events.d.ts +3 -3
  164. package/features/redirects/DeleteRedirect/events.js +1 -1
  165. package/features/redirects/DeleteRedirect/events.js.map +1 -1
  166. package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.d.ts +1 -1
  167. package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.js +2 -2
  168. package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.js.map +1 -1
  169. package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.d.ts +1 -1
  170. package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.js +2 -2
  171. package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.js.map +1 -1
  172. package/features/redirects/ListRedirects/ListRedirectsUseCase.d.ts +1 -1
  173. package/features/redirects/ListRedirects/ListRedirectsUseCase.js +2 -2
  174. package/features/redirects/ListRedirects/ListRedirectsUseCase.js.map +1 -1
  175. package/features/redirects/MoveRedirect/MoveRedirectUseCase.d.ts +2 -2
  176. package/features/redirects/MoveRedirect/MoveRedirectUseCase.js +3 -3
  177. package/features/redirects/MoveRedirect/MoveRedirectUseCase.js.map +1 -1
  178. package/features/redirects/MoveRedirect/abstractions.d.ts +2 -2
  179. package/features/redirects/MoveRedirect/abstractions.js.map +1 -1
  180. package/features/redirects/MoveRedirect/events.d.ts +3 -3
  181. package/features/redirects/MoveRedirect/events.js +1 -1
  182. package/features/redirects/MoveRedirect/events.js.map +1 -1
  183. package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.d.ts +2 -2
  184. package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.js +3 -3
  185. package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.js.map +1 -1
  186. package/features/redirects/UpdateRedirect/abstractions.d.ts +2 -2
  187. package/features/redirects/UpdateRedirect/abstractions.js.map +1 -1
  188. package/features/redirects/UpdateRedirect/events.d.ts +3 -3
  189. package/features/redirects/UpdateRedirect/events.js +1 -1
  190. package/features/redirects/UpdateRedirect/events.js.map +1 -1
  191. package/graphql/pages/pages.gql.js +34 -0
  192. package/graphql/pages/pages.gql.js.map +1 -1
  193. package/graphql/pages/pages.typeDefs.d.ts +1 -1
  194. package/graphql/pages/pages.typeDefs.js +2 -0
  195. package/graphql/pages/pages.typeDefs.js.map +1 -1
  196. package/index.js +6 -2
  197. package/index.js.map +1 -1
  198. package/package.json +20 -19
  199. package/domain/permissions.d.ts +0 -125
  200. package/domain/permissions.js.map +0 -1
@@ -0,0 +1,34 @@
1
+ import type { Permissions } from "@webiny/api-core/features/security/permissions/index.js";
2
+ import { WB_PERMISSIONS_SCHEMA } from "../../domain/permissionsSchema.js";
3
+ export declare const WbPermissions: import("@webiny/di").Abstraction<import("@webiny/api-core/features/security/permissions/types").PermissionsTyped<{
4
+ readonly prefix: "wb";
5
+ readonly fullAccess: true;
6
+ readonly entities: readonly [{
7
+ readonly id: "page";
8
+ readonly permission: "wb.page";
9
+ readonly scopes: readonly ["full", "own"];
10
+ readonly actions: readonly [{
11
+ readonly name: "rwd";
12
+ }, {
13
+ readonly name: "pw";
14
+ }];
15
+ }, {
16
+ readonly id: "redirect";
17
+ readonly permission: "wb.redirect";
18
+ readonly scopes: readonly ["full", "own"];
19
+ readonly actions: readonly [{
20
+ readonly name: "rwd";
21
+ }];
22
+ }, {
23
+ readonly id: "settings";
24
+ readonly permission: "wb.settings";
25
+ readonly scopes: readonly ["full"];
26
+ }, {
27
+ readonly id: "integrations";
28
+ readonly permission: "wb.integrations";
29
+ readonly scopes: readonly ["full"];
30
+ }];
31
+ }>>;
32
+ export declare namespace WbPermissions {
33
+ type Interface = Permissions<typeof WB_PERMISSIONS_SCHEMA>;
34
+ }
@@ -0,0 +1,5 @@
1
+ import { createPermissionsAbstraction } from "@webiny/api-core/features/security/permissions/index.js";
2
+ import { WB_PERMISSIONS_SCHEMA } from "../../domain/permissionsSchema.js";
3
+ export const WbPermissions = createPermissionsAbstraction(WB_PERMISSIONS_SCHEMA);
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createPermissionsAbstraction","WB_PERMISSIONS_SCHEMA","WbPermissions"],"sources":["abstractions.ts"],"sourcesContent":["import { createPermissionsAbstraction } from \"@webiny/api-core/features/security/permissions/index.js\";\nimport type { Permissions } from \"@webiny/api-core/features/security/permissions/index.js\";\nimport { WB_PERMISSIONS_SCHEMA } from \"~/domain/permissionsSchema.js\";\n\nexport const WbPermissions = createPermissionsAbstraction(WB_PERMISSIONS_SCHEMA);\n\nexport namespace WbPermissions {\n export type Interface = Permissions<typeof WB_PERMISSIONS_SCHEMA>;\n}\n"],"mappings":"AAAA,SAASA,4BAA4B,QAAQ,yDAAyD;AAEtG,SAASC,qBAAqB;AAE9B,OAAO,MAAMC,aAAa,GAAGF,4BAA4B,CAACC,qBAAqB,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export declare const WbPermissionsFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
@@ -0,0 +1,6 @@
1
+ import { createPermissionsFeature } from "@webiny/api-core/features/security/permissions/index.js";
2
+ import { WB_PERMISSIONS_SCHEMA } from "../../domain/permissionsSchema.js";
3
+ import { WbPermissions } from "./abstractions.js";
4
+ export const WbPermissionsFeature = createPermissionsFeature(WB_PERMISSIONS_SCHEMA, WbPermissions);
5
+
6
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createPermissionsFeature","WB_PERMISSIONS_SCHEMA","WbPermissions","WbPermissionsFeature"],"sources":["feature.ts"],"sourcesContent":["import { createPermissionsFeature } from \"@webiny/api-core/features/security/permissions/index.js\";\nimport { WB_PERMISSIONS_SCHEMA } from \"~/domain/permissionsSchema.js\";\nimport { WbPermissions } from \"./abstractions.js\";\n\nexport const WbPermissionsFeature = createPermissionsFeature(WB_PERMISSIONS_SCHEMA, WbPermissions);\n"],"mappings":"AAAA,SAASA,wBAAwB,QAAQ,yDAAyD;AAClG,SAASC,qBAAqB;AAC9B,SAASC,aAAa;AAEtB,OAAO,MAAMC,oBAAoB,GAAGH,wBAAwB,CAACC,qBAAqB,EAAEC,aAAa,CAAC","ignoreList":[]}
@@ -1,6 +1,6 @@
1
- import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/EventPublisher";
1
+ import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/eventPublisher/index.js";
2
2
  import { CreateRedirectUseCase as UseCaseAbstraction, CreateRedirectRepository } from "./abstractions.js";
3
- import { WbPermissions } from "../../../domain/permissions.js";
3
+ import { WbPermissions } from "../../../features/permissions/abstractions.js";
4
4
  declare class CreateRedirectUseCaseImpl implements UseCaseAbstraction.Interface {
5
5
  private permissions;
6
6
  private eventPublisher;
@@ -1,8 +1,8 @@
1
1
  import { Result, createImplementation } 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 { CreateRedirectUseCase as UseCaseAbstraction, CreateRedirectRepository } from "./abstractions.js";
4
4
  import { RedirectBeforeCreateEvent, RedirectAfterCreateEvent } from "./events.js";
5
- import { WbPermissions } from "../../../domain/permissions.js";
5
+ import { WbPermissions } from "../../permissions/abstractions.js";
6
6
  import { RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
7
7
  class CreateRedirectUseCaseImpl {
8
8
  constructor(permissions, eventPublisher, repository) {
@@ -39,7 +39,7 @@ class CreateRedirectUseCaseImpl {
39
39
  export const CreateRedirectUseCase = createImplementation({
40
40
  abstraction: UseCaseAbstraction,
41
41
  implementation: CreateRedirectUseCaseImpl,
42
- dependencies: [WbPermissions.Abstraction, EventPublisher, CreateRedirectRepository]
42
+ dependencies: [WbPermissions, EventPublisher, CreateRedirectRepository]
43
43
  });
44
44
 
45
45
  //# sourceMappingURL=CreateRedirectUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","createImplementation","EventPublisher","CreateRedirectUseCase","UseCaseAbstraction","CreateRedirectRepository","RedirectBeforeCreateEvent","RedirectAfterCreateEvent","WbPermissions","RedirectNotAuthorizedError","CreateRedirectUseCaseImpl","constructor","permissions","eventPublisher","repository","execute","data","hasPermission","canCreate","fail","beforeCreateEvent","input","publish","result","isFail","afterCreateEvent","redirect","value","ok","abstraction","implementation","dependencies","Abstraction"],"sources":["CreateRedirectUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport {\n CreateRedirectUseCase as UseCaseAbstraction,\n CreateRedirectRepository\n} from \"./abstractions.js\";\nimport { RedirectBeforeCreateEvent, RedirectAfterCreateEvent } from \"./events.js\";\nimport { WbPermissions } from \"~/domain/permissions.js\";\nimport { RedirectNotAuthorizedError } from \"~/domain/redirect/errors.js\";\n\nclass CreateRedirectUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private repository: CreateRedirectRepository.Interface\n ) {}\n\n async execute(data: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canCreate(\"redirect\");\n if (!hasPermission) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n // Publish before create event\n const beforeCreateEvent = new RedirectBeforeCreateEvent({ input: data });\n await this.eventPublisher.publish(beforeCreateEvent);\n\n // Execute the create operation\n const result = await this.repository.execute(data);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after create event\n const afterCreateEvent = new RedirectAfterCreateEvent({ redirect: result.value });\n await this.eventPublisher.publish(afterCreateEvent);\n\n return Result.ok(result.value);\n }\n}\n\nexport const CreateRedirectUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: CreateRedirectUseCaseImpl,\n dependencies: [WbPermissions.Abstraction, EventPublisher, CreateRedirectRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,cAAc,QAEX,0CAA0C;AACjD,SACIC,qBAAqB,IAAIC,kBAAkB,EAC3CC,wBAAwB;AAE5B,SAASC,yBAAyB,EAAEC,wBAAwB;AAC5D,SAASC,aAAa;AACtB,SAASC,0BAA0B;AAEnC,MAAMC,yBAAyB,CAAyC;EACpEC,WAAWA,CACCC,WAAoC,EACpCC,cAAmD,EACnDC,UAA8C,EACxD;IAAA,KAHUF,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,UAA8C,GAA9CA,UAA8C;EACvD;EAEH,MAAMC,OAAOA,CAACC,IAA+B,EAA6B;IACtE,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACL,WAAW,CAACM,SAAS,CAAC,UAAU,CAAC;IAClE,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOjB,MAAM,CAACmB,IAAI,CAAC,IAAIV,0BAA0B,CAAC,CAAC,CAAC;IACxD;;IAEA;IACA,MAAMW,iBAAiB,GAAG,IAAId,yBAAyB,CAAC;MAAEe,KAAK,EAAEL;IAAK,CAAC,CAAC;IACxE,MAAM,IAAI,CAACH,cAAc,CAACS,OAAO,CAACF,iBAAiB,CAAC;;IAEpD;IACA,MAAMG,MAAM,GAAG,MAAM,IAAI,CAACT,UAAU,CAACC,OAAO,CAACC,IAAI,CAAC;IAElD,IAAIO,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOD,MAAM;IACjB;;IAEA;IACA,MAAME,gBAAgB,GAAG,IAAIlB,wBAAwB,CAAC;MAAEmB,QAAQ,EAAEH,MAAM,CAACI;IAAM,CAAC,CAAC;IACjF,MAAM,IAAI,CAACd,cAAc,CAACS,OAAO,CAACG,gBAAgB,CAAC;IAEnD,OAAOzB,MAAM,CAAC4B,EAAE,CAACL,MAAM,CAACI,KAAK,CAAC;EAClC;AACJ;AAEA,OAAO,MAAMxB,qBAAqB,GAAGF,oBAAoB,CAAC;EACtD4B,WAAW,EAAEzB,kBAAkB;EAC/B0B,cAAc,EAAEpB,yBAAyB;EACzCqB,YAAY,EAAE,CAACvB,aAAa,CAACwB,WAAW,EAAE9B,cAAc,EAAEG,wBAAwB;AACtF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Result","createImplementation","EventPublisher","CreateRedirectUseCase","UseCaseAbstraction","CreateRedirectRepository","RedirectBeforeCreateEvent","RedirectAfterCreateEvent","WbPermissions","RedirectNotAuthorizedError","CreateRedirectUseCaseImpl","constructor","permissions","eventPublisher","repository","execute","data","hasPermission","canCreate","fail","beforeCreateEvent","input","publish","result","isFail","afterCreateEvent","redirect","value","ok","abstraction","implementation","dependencies"],"sources":["CreateRedirectUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport {\n CreateRedirectUseCase as UseCaseAbstraction,\n CreateRedirectRepository\n} from \"./abstractions.js\";\nimport { RedirectBeforeCreateEvent, RedirectAfterCreateEvent } from \"./events.js\";\nimport { WbPermissions } from \"~/features/permissions/abstractions.js\";\nimport { RedirectNotAuthorizedError } from \"~/domain/redirect/errors.js\";\n\nclass CreateRedirectUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private repository: CreateRedirectRepository.Interface\n ) {}\n\n async execute(data: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canCreate(\"redirect\");\n if (!hasPermission) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n // Publish before create event\n const beforeCreateEvent = new RedirectBeforeCreateEvent({ input: data });\n await this.eventPublisher.publish(beforeCreateEvent);\n\n // Execute the create operation\n const result = await this.repository.execute(data);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after create event\n const afterCreateEvent = new RedirectAfterCreateEvent({ redirect: result.value });\n await this.eventPublisher.publish(afterCreateEvent);\n\n return Result.ok(result.value);\n }\n}\n\nexport const CreateRedirectUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: CreateRedirectUseCaseImpl,\n dependencies: [WbPermissions, EventPublisher, CreateRedirectRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,cAAc,QAEX,mDAAmD;AAC1D,SACIC,qBAAqB,IAAIC,kBAAkB,EAC3CC,wBAAwB;AAE5B,SAASC,yBAAyB,EAAEC,wBAAwB;AAC5D,SAASC,aAAa;AACtB,SAASC,0BAA0B;AAEnC,MAAMC,yBAAyB,CAAyC;EACpEC,WAAWA,CACCC,WAAoC,EACpCC,cAAmD,EACnDC,UAA8C,EACxD;IAAA,KAHUF,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,UAA8C,GAA9CA,UAA8C;EACvD;EAEH,MAAMC,OAAOA,CAACC,IAA+B,EAA6B;IACtE,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACL,WAAW,CAACM,SAAS,CAAC,UAAU,CAAC;IAClE,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOjB,MAAM,CAACmB,IAAI,CAAC,IAAIV,0BAA0B,CAAC,CAAC,CAAC;IACxD;;IAEA;IACA,MAAMW,iBAAiB,GAAG,IAAId,yBAAyB,CAAC;MAAEe,KAAK,EAAEL;IAAK,CAAC,CAAC;IACxE,MAAM,IAAI,CAACH,cAAc,CAACS,OAAO,CAACF,iBAAiB,CAAC;;IAEpD;IACA,MAAMG,MAAM,GAAG,MAAM,IAAI,CAACT,UAAU,CAACC,OAAO,CAACC,IAAI,CAAC;IAElD,IAAIO,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOD,MAAM;IACjB;;IAEA;IACA,MAAME,gBAAgB,GAAG,IAAIlB,wBAAwB,CAAC;MAAEmB,QAAQ,EAAEH,MAAM,CAACI;IAAM,CAAC,CAAC;IACjF,MAAM,IAAI,CAACd,cAAc,CAACS,OAAO,CAACG,gBAAgB,CAAC;IAEnD,OAAOzB,MAAM,CAAC4B,EAAE,CAACL,MAAM,CAACI,KAAK,CAAC;EAClC;AACJ;AAEA,OAAO,MAAMxB,qBAAqB,GAAGF,oBAAoB,CAAC;EACtD4B,WAAW,EAAEzB,kBAAkB;EAC/B0B,cAAc,EAAEpB,yBAAyB;EACzCqB,YAAY,EAAE,CAACvB,aAAa,EAAEN,cAAc,EAAEG,wBAAwB;AAC1E,CAAC,CAAC","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import { type Result } from "@webiny/feature/api";
2
- import type { IEventHandler } from "@webiny/api-core/features/EventPublisher";
3
- import type { DomainEvent } from "@webiny/api-core/features/EventPublisher";
2
+ import type { IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
3
+ import type { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
4
4
  import type { WbRedirect } from "../../../domain/redirect/abstractions.js";
5
5
  import { RedirectPersistenceError, RedirectValidationError, RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
6
6
  export type ICreateWbRedirectData = Pick<WbRedirect, "redirectFrom" | "redirectTo" | "redirectType" | "isEnabled" | "location">;
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","CreateRedirectRepository","CreateRedirectUseCase","RedirectBeforeCreateEventHandler","RedirectAfterCreateEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/EventPublisher\";\nimport type { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport type { WbRedirect } from \"~/domain/redirect/abstractions.js\";\nimport {\n RedirectPersistenceError,\n RedirectValidationError,\n RedirectNotAuthorizedError\n} from \"~/domain/redirect/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport type ICreateWbRedirectData = Pick<\n WbRedirect,\n \"redirectFrom\" | \"redirectTo\" | \"redirectType\" | \"isEnabled\" | \"location\"\n>;\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface ICreateRedirectRepository {\n execute(data: ICreateWbRedirectData): Promise<Result<WbRedirect, RepositoryError>>;\n}\n\nexport interface ICreateRedirectRepositoryErrors {\n validation: RedirectValidationError;\n persistence: RedirectPersistenceError;\n}\n\ntype RepositoryError = ICreateRedirectRepositoryErrors[keyof ICreateRedirectRepositoryErrors];\n\nexport const CreateRedirectRepository = createAbstraction<ICreateRedirectRepository>(\n \"Wb/CreateRedirectRepository\"\n);\n\nexport namespace CreateRedirectRepository {\n export type Interface = ICreateRedirectRepository;\n export type Params = ICreateWbRedirectData;\n export type Return = Promise<Result<WbRedirect, RepositoryError>>;\n export type Error = RepositoryError;\n export type Redirect = WbRedirect;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface ICreateRedirectUseCase {\n execute(data: ICreateWbRedirectData): Promise<Result<WbRedirect, UseCaseError>>;\n}\n\nexport interface ICreateRedirectUseCaseErrors {\n notAuthorized: RedirectNotAuthorizedError;\n validation: RedirectValidationError;\n persistence: RedirectPersistenceError;\n}\n\ntype UseCaseError = ICreateRedirectUseCaseErrors[keyof ICreateRedirectUseCaseErrors];\n\n/** Create a URL redirect. */\nexport const CreateRedirectUseCase = createAbstraction<ICreateRedirectUseCase>(\n \"Wb/CreateRedirectUseCase\"\n);\n\nexport namespace CreateRedirectUseCase {\n export type Interface = ICreateRedirectUseCase;\n export type Params = ICreateWbRedirectData;\n export type Return = Promise<Result<WbRedirect, UseCaseError>>;\n export type Error = UseCaseError;\n export type Redirect = WbRedirect;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface RedirectBeforeCreatePayload {\n input: ICreateWbRedirectData;\n}\n\nexport interface RedirectAfterCreatePayload {\n redirect: WbRedirect;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\n/** Hook into redirect lifecycle before a redirect is created. */\nexport const RedirectBeforeCreateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectBeforeCreatePayload>>\n>(\"Wb/RedirectBeforeCreateEventHandler\");\n\nexport namespace RedirectBeforeCreateEventHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectBeforeCreatePayload>>;\n export type Event = DomainEvent<RedirectBeforeCreatePayload>;\n export type Redirect = WbRedirect;\n}\n\n/** Hook into redirect lifecycle after a redirect is created. */\nexport const RedirectAfterCreateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectAfterCreatePayload>>\n>(\"Wb/RedirectAfterCreateEventHandler\");\n\nexport namespace RedirectAfterCreateEventHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectAfterCreatePayload>>;\n export type Event = DomainEvent<RedirectAfterCreatePayload>;\n export type Redirect = WbRedirect;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAUpE;AACA;AACA;;AAOA;AACA;AACA;;AAaA,OAAO,MAAMC,wBAAwB,GAAGD,iBAAiB,CACrD,6BACJ,CAAC;;AAUD;AACA;AACA;;AAcA;AACA,OAAO,MAAME,qBAAqB,GAAGF,iBAAiB,CAClD,0BACJ,CAAC;;AAUD;AACA;AACA;;AAUA;AACA;AACA;;AAEA;AACA,OAAO,MAAMG,gCAAgC,GAAGH,iBAAiB,CAE/D,qCAAqC,CAAC;AAQxC;AACA,OAAO,MAAMI,+BAA+B,GAAGJ,iBAAiB,CAE9D,oCAAoC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","CreateRedirectRepository","CreateRedirectUseCase","RedirectBeforeCreateEventHandler","RedirectAfterCreateEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { WbRedirect } from \"~/domain/redirect/abstractions.js\";\nimport {\n RedirectPersistenceError,\n RedirectValidationError,\n RedirectNotAuthorizedError\n} from \"~/domain/redirect/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport type ICreateWbRedirectData = Pick<\n WbRedirect,\n \"redirectFrom\" | \"redirectTo\" | \"redirectType\" | \"isEnabled\" | \"location\"\n>;\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface ICreateRedirectRepository {\n execute(data: ICreateWbRedirectData): Promise<Result<WbRedirect, RepositoryError>>;\n}\n\nexport interface ICreateRedirectRepositoryErrors {\n validation: RedirectValidationError;\n persistence: RedirectPersistenceError;\n}\n\ntype RepositoryError = ICreateRedirectRepositoryErrors[keyof ICreateRedirectRepositoryErrors];\n\nexport const CreateRedirectRepository = createAbstraction<ICreateRedirectRepository>(\n \"Wb/CreateRedirectRepository\"\n);\n\nexport namespace CreateRedirectRepository {\n export type Interface = ICreateRedirectRepository;\n export type Params = ICreateWbRedirectData;\n export type Return = Promise<Result<WbRedirect, RepositoryError>>;\n export type Error = RepositoryError;\n export type Redirect = WbRedirect;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface ICreateRedirectUseCase {\n execute(data: ICreateWbRedirectData): Promise<Result<WbRedirect, UseCaseError>>;\n}\n\nexport interface ICreateRedirectUseCaseErrors {\n notAuthorized: RedirectNotAuthorizedError;\n validation: RedirectValidationError;\n persistence: RedirectPersistenceError;\n}\n\ntype UseCaseError = ICreateRedirectUseCaseErrors[keyof ICreateRedirectUseCaseErrors];\n\n/** Create a URL redirect. */\nexport const CreateRedirectUseCase = createAbstraction<ICreateRedirectUseCase>(\n \"Wb/CreateRedirectUseCase\"\n);\n\nexport namespace CreateRedirectUseCase {\n export type Interface = ICreateRedirectUseCase;\n export type Params = ICreateWbRedirectData;\n export type Return = Promise<Result<WbRedirect, UseCaseError>>;\n export type Error = UseCaseError;\n export type Redirect = WbRedirect;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface RedirectBeforeCreatePayload {\n input: ICreateWbRedirectData;\n}\n\nexport interface RedirectAfterCreatePayload {\n redirect: WbRedirect;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\n/** Hook into redirect lifecycle before a redirect is created. */\nexport const RedirectBeforeCreateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectBeforeCreatePayload>>\n>(\"Wb/RedirectBeforeCreateEventHandler\");\n\nexport namespace RedirectBeforeCreateEventHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectBeforeCreatePayload>>;\n export type Event = DomainEvent<RedirectBeforeCreatePayload>;\n export type Redirect = WbRedirect;\n}\n\n/** Hook into redirect lifecycle after a redirect is created. */\nexport const RedirectAfterCreateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectAfterCreatePayload>>\n>(\"Wb/RedirectAfterCreateEventHandler\");\n\nexport namespace RedirectAfterCreateEventHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectAfterCreatePayload>>;\n export type Event = DomainEvent<RedirectAfterCreatePayload>;\n export type Redirect = WbRedirect;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAUpE;AACA;AACA;;AAOA;AACA;AACA;;AAaA,OAAO,MAAMC,wBAAwB,GAAGD,iBAAiB,CACrD,6BACJ,CAAC;;AAUD;AACA;AACA;;AAcA;AACA,OAAO,MAAME,qBAAqB,GAAGF,iBAAiB,CAClD,0BACJ,CAAC;;AAUD;AACA;AACA;;AAUA;AACA;AACA;;AAEA;AACA,OAAO,MAAMG,gCAAgC,GAAGH,iBAAiB,CAE/D,qCAAqC,CAAC;AAQxC;AACA,OAAO,MAAMI,+BAA+B,GAAGJ,iBAAiB,CAE9D,oCAAoC,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 { RedirectBeforeCreatePayload, RedirectAfterCreatePayload } from "./abstractions.js";
3
3
  export declare class RedirectBeforeCreateEvent extends DomainEvent<RedirectBeforeCreatePayload> {
4
4
  eventType: "redirect.beforeCreate";
5
- getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<DomainEvent<RedirectBeforeCreatePayload>>>;
5
+ getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<RedirectBeforeCreatePayload>>>;
6
6
  }
7
7
  export declare class RedirectAfterCreateEvent extends DomainEvent<RedirectAfterCreatePayload> {
8
8
  eventType: "redirect.afterCreate";
9
- getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<DomainEvent<RedirectAfterCreatePayload>>>;
9
+ getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<RedirectAfterCreatePayload>>>;
10
10
  }
@@ -1,4 +1,4 @@
1
- import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
1
+ import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
2
2
  import { RedirectBeforeCreateEventHandler, RedirectAfterCreateEventHandler } from "./abstractions.js";
3
3
  // RedirectBeforeCreate Event
4
4
  export class RedirectBeforeCreateEvent extends DomainEvent {
@@ -1 +1 @@
1
- {"version":3,"names":["DomainEvent","RedirectBeforeCreateEventHandler","RedirectAfterCreateEventHandler","RedirectBeforeCreateEvent","eventType","getHandlerAbstraction","RedirectAfterCreateEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport {\n RedirectBeforeCreateEventHandler,\n RedirectAfterCreateEventHandler\n} from \"./abstractions.js\";\nimport type { RedirectBeforeCreatePayload, RedirectAfterCreatePayload } from \"./abstractions.js\";\n\n// RedirectBeforeCreate Event\nexport class RedirectBeforeCreateEvent extends DomainEvent<RedirectBeforeCreatePayload> {\n eventType = \"redirect.beforeCreate\" as const;\n\n getHandlerAbstraction() {\n return RedirectBeforeCreateEventHandler;\n }\n}\n\n// RedirectAfterCreate Event\nexport class RedirectAfterCreateEvent extends DomainEvent<RedirectAfterCreatePayload> {\n eventType = \"redirect.afterCreate\" as const;\n\n getHandlerAbstraction() {\n return RedirectAfterCreateEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,0CAA0C;AACtE,SACIC,gCAAgC,EAChCC,+BAA+B;AAInC;AACA,OAAO,MAAMC,yBAAyB,SAASH,WAAW,CAA8B;EACpFI,SAAS,GAAG,uBAAuB;EAEnCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,gCAAgC;EAC3C;AACJ;;AAEA;AACA,OAAO,MAAMK,wBAAwB,SAASN,WAAW,CAA6B;EAClFI,SAAS,GAAG,sBAAsB;EAElCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,+BAA+B;EAC1C;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["DomainEvent","RedirectBeforeCreateEventHandler","RedirectAfterCreateEventHandler","RedirectBeforeCreateEvent","eventType","getHandlerAbstraction","RedirectAfterCreateEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport {\n RedirectBeforeCreateEventHandler,\n RedirectAfterCreateEventHandler\n} from \"./abstractions.js\";\nimport type { RedirectBeforeCreatePayload, RedirectAfterCreatePayload } from \"./abstractions.js\";\n\n// RedirectBeforeCreate Event\nexport class RedirectBeforeCreateEvent extends DomainEvent<RedirectBeforeCreatePayload> {\n eventType = \"redirect.beforeCreate\" as const;\n\n getHandlerAbstraction() {\n return RedirectBeforeCreateEventHandler;\n }\n}\n\n// RedirectAfterCreate Event\nexport class RedirectAfterCreateEvent extends DomainEvent<RedirectAfterCreatePayload> {\n eventType = \"redirect.afterCreate\" as const;\n\n getHandlerAbstraction() {\n return RedirectAfterCreateEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,mDAAmD;AAC/E,SACIC,gCAAgC,EAChCC,+BAA+B;AAInC;AACA,OAAO,MAAMC,yBAAyB,SAASH,WAAW,CAA8B;EACpFI,SAAS,GAAG,uBAAuB;EAEnCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,gCAAgC;EAC3C;AACJ;;AAEA;AACA,OAAO,MAAMK,wBAAwB,SAASN,WAAW,CAA6B;EAClFI,SAAS,GAAG,sBAAsB;EAElCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,+BAA+B;EAC1C;AACJ","ignoreList":[]}
@@ -1,7 +1,7 @@
1
- import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/EventPublisher";
1
+ import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/eventPublisher/index.js";
2
2
  import { DeleteRedirectUseCase as UseCaseAbstraction, DeleteRedirectRepository } from "./abstractions.js";
3
3
  import { GetRedirectByIdUseCase } from "../../../features/redirects/GetRedirectById/index.js";
4
- import { WbPermissions } from "../../../domain/permissions.js";
4
+ import { WbPermissions } from "../../../features/permissions/abstractions.js";
5
5
  declare class DeleteRedirectUseCaseImpl implements UseCaseAbstraction.Interface {
6
6
  private permissions;
7
7
  private eventPublisher;
@@ -1,9 +1,9 @@
1
1
  import { Result, createImplementation } 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 { DeleteRedirectUseCase as UseCaseAbstraction, DeleteRedirectRepository } from "./abstractions.js";
4
4
  import { RedirectBeforeDeleteEvent, RedirectAfterDeleteEvent } from "./events.js";
5
5
  import { GetRedirectByIdUseCase } from "../GetRedirectById/index.js";
6
- import { WbPermissions } from "../../../domain/permissions.js";
6
+ import { WbPermissions } from "../../permissions/abstractions.js";
7
7
  import { RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
8
8
  class DeleteRedirectUseCaseImpl {
9
9
  constructor(permissions, eventPublisher, getRedirectById, repository) {
@@ -47,7 +47,7 @@ class DeleteRedirectUseCaseImpl {
47
47
  export const DeleteRedirectUseCase = createImplementation({
48
48
  abstraction: UseCaseAbstraction,
49
49
  implementation: DeleteRedirectUseCaseImpl,
50
- dependencies: [WbPermissions.Abstraction, EventPublisher, GetRedirectByIdUseCase, DeleteRedirectRepository]
50
+ dependencies: [WbPermissions, EventPublisher, GetRedirectByIdUseCase, DeleteRedirectRepository]
51
51
  });
52
52
 
53
53
  //# sourceMappingURL=DeleteRedirectUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","createImplementation","EventPublisher","DeleteRedirectUseCase","UseCaseAbstraction","DeleteRedirectRepository","RedirectBeforeDeleteEvent","RedirectAfterDeleteEvent","GetRedirectByIdUseCase","WbPermissions","RedirectNotAuthorizedError","DeleteRedirectUseCaseImpl","constructor","permissions","eventPublisher","getRedirectById","repository","execute","params","getResult","id","isFail","fail","error","redirect","value","canDelete","beforeEvent","publish","result","afterEvent","ok","abstraction","implementation","dependencies","Abstraction"],"sources":["DeleteRedirectUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport {\n DeleteRedirectUseCase as UseCaseAbstraction,\n DeleteRedirectRepository\n} from \"./abstractions.js\";\nimport { RedirectBeforeDeleteEvent, RedirectAfterDeleteEvent } from \"./events.js\";\nimport { GetRedirectByIdUseCase } from \"~/features/redirects/GetRedirectById/index.js\";\nimport { WbPermissions } from \"~/domain/permissions.js\";\nimport { RedirectNotAuthorizedError } from \"~/domain/redirect/errors.js\";\n\nclass DeleteRedirectUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getRedirectById: GetRedirectByIdUseCase.Interface,\n private repository: DeleteRedirectRepository.Interface\n ) {}\n\n async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n // Get the redirect first to include in events and for item-level permission check\n const getResult = await this.getRedirectById.execute(params.id);\n\n if (getResult.isFail()) {\n return Result.fail(getResult.error);\n }\n\n const redirect = getResult.value;\n\n const canDelete = await this.permissions.canDelete(\"redirect\", redirect);\n if (!canDelete) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n // Publish before delete event\n const beforeEvent = new RedirectBeforeDeleteEvent({\n redirect\n });\n\n await this.eventPublisher.publish(beforeEvent);\n\n // Execute the delete operation\n const result = await this.repository.execute(params);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after delete event\n const afterEvent = new RedirectAfterDeleteEvent({\n redirect\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok();\n }\n}\n\nexport const DeleteRedirectUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: DeleteRedirectUseCaseImpl,\n dependencies: [\n WbPermissions.Abstraction,\n EventPublisher,\n GetRedirectByIdUseCase,\n DeleteRedirectRepository\n ]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,cAAc,QAEX,0CAA0C;AACjD,SACIC,qBAAqB,IAAIC,kBAAkB,EAC3CC,wBAAwB;AAE5B,SAASC,yBAAyB,EAAEC,wBAAwB;AAC5D,SAASC,sBAAsB;AAC/B,SAASC,aAAa;AACtB,SAASC,0BAA0B;AAEnC,MAAMC,yBAAyB,CAAyC;EACpEC,WAAWA,CACCC,WAAoC,EACpCC,cAAmD,EACnDC,eAAiD,EACjDC,UAA8C,EACxD;IAAA,KAJUH,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,eAAiD,GAAjDA,eAAiD;IAAA,KACjDC,UAA8C,GAA9CA,UAA8C;EACvD;EAEH,MAAMC,OAAOA,CAACC,MAAiC,EAA6B;IACxE;IACA,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACJ,eAAe,CAACE,OAAO,CAACC,MAAM,CAACE,EAAE,CAAC;IAE/D,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOrB,MAAM,CAACsB,IAAI,CAACH,SAAS,CAACI,KAAK,CAAC;IACvC;IAEA,MAAMC,QAAQ,GAAGL,SAAS,CAACM,KAAK;IAEhC,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACb,WAAW,CAACa,SAAS,CAAC,UAAU,EAAEF,QAAQ,CAAC;IACxE,IAAI,CAACE,SAAS,EAAE;MACZ,OAAO1B,MAAM,CAACsB,IAAI,CAAC,IAAIZ,0BAA0B,CAAC,CAAC,CAAC;IACxD;;IAEA;IACA,MAAMiB,WAAW,GAAG,IAAIrB,yBAAyB,CAAC;MAC9CkB;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,CAACV,cAAc,CAACc,OAAO,CAACD,WAAW,CAAC;;IAE9C;IACA,MAAME,MAAM,GAAG,MAAM,IAAI,CAACb,UAAU,CAACC,OAAO,CAACC,MAAM,CAAC;IAEpD,IAAIW,MAAM,CAACR,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOQ,MAAM;IACjB;;IAEA;IACA,MAAMC,UAAU,GAAG,IAAIvB,wBAAwB,CAAC;MAC5CiB;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,CAACV,cAAc,CAACc,OAAO,CAACE,UAAU,CAAC;IAE7C,OAAO9B,MAAM,CAAC+B,EAAE,CAAC,CAAC;EACtB;AACJ;AAEA,OAAO,MAAM5B,qBAAqB,GAAGF,oBAAoB,CAAC;EACtD+B,WAAW,EAAE5B,kBAAkB;EAC/B6B,cAAc,EAAEtB,yBAAyB;EACzCuB,YAAY,EAAE,CACVzB,aAAa,CAAC0B,WAAW,EACzBjC,cAAc,EACdM,sBAAsB,EACtBH,wBAAwB;AAEhC,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Result","createImplementation","EventPublisher","DeleteRedirectUseCase","UseCaseAbstraction","DeleteRedirectRepository","RedirectBeforeDeleteEvent","RedirectAfterDeleteEvent","GetRedirectByIdUseCase","WbPermissions","RedirectNotAuthorizedError","DeleteRedirectUseCaseImpl","constructor","permissions","eventPublisher","getRedirectById","repository","execute","params","getResult","id","isFail","fail","error","redirect","value","canDelete","beforeEvent","publish","result","afterEvent","ok","abstraction","implementation","dependencies"],"sources":["DeleteRedirectUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport {\n DeleteRedirectUseCase as UseCaseAbstraction,\n DeleteRedirectRepository\n} from \"./abstractions.js\";\nimport { RedirectBeforeDeleteEvent, RedirectAfterDeleteEvent } from \"./events.js\";\nimport { GetRedirectByIdUseCase } from \"~/features/redirects/GetRedirectById/index.js\";\nimport { WbPermissions } from \"~/features/permissions/abstractions.js\";\nimport { RedirectNotAuthorizedError } from \"~/domain/redirect/errors.js\";\n\nclass DeleteRedirectUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getRedirectById: GetRedirectByIdUseCase.Interface,\n private repository: DeleteRedirectRepository.Interface\n ) {}\n\n async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n // Get the redirect first to include in events and for item-level permission check\n const getResult = await this.getRedirectById.execute(params.id);\n\n if (getResult.isFail()) {\n return Result.fail(getResult.error);\n }\n\n const redirect = getResult.value;\n\n const canDelete = await this.permissions.canDelete(\"redirect\", redirect);\n if (!canDelete) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n // Publish before delete event\n const beforeEvent = new RedirectBeforeDeleteEvent({\n redirect\n });\n\n await this.eventPublisher.publish(beforeEvent);\n\n // Execute the delete operation\n const result = await this.repository.execute(params);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after delete event\n const afterEvent = new RedirectAfterDeleteEvent({\n redirect\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok();\n }\n}\n\nexport const DeleteRedirectUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: DeleteRedirectUseCaseImpl,\n dependencies: [WbPermissions, EventPublisher, GetRedirectByIdUseCase, DeleteRedirectRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,cAAc,QAEX,mDAAmD;AAC1D,SACIC,qBAAqB,IAAIC,kBAAkB,EAC3CC,wBAAwB;AAE5B,SAASC,yBAAyB,EAAEC,wBAAwB;AAC5D,SAASC,sBAAsB;AAC/B,SAASC,aAAa;AACtB,SAASC,0BAA0B;AAEnC,MAAMC,yBAAyB,CAAyC;EACpEC,WAAWA,CACCC,WAAoC,EACpCC,cAAmD,EACnDC,eAAiD,EACjDC,UAA8C,EACxD;IAAA,KAJUH,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,eAAiD,GAAjDA,eAAiD;IAAA,KACjDC,UAA8C,GAA9CA,UAA8C;EACvD;EAEH,MAAMC,OAAOA,CAACC,MAAiC,EAA6B;IACxE;IACA,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACJ,eAAe,CAACE,OAAO,CAACC,MAAM,CAACE,EAAE,CAAC;IAE/D,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOrB,MAAM,CAACsB,IAAI,CAACH,SAAS,CAACI,KAAK,CAAC;IACvC;IAEA,MAAMC,QAAQ,GAAGL,SAAS,CAACM,KAAK;IAEhC,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACb,WAAW,CAACa,SAAS,CAAC,UAAU,EAAEF,QAAQ,CAAC;IACxE,IAAI,CAACE,SAAS,EAAE;MACZ,OAAO1B,MAAM,CAACsB,IAAI,CAAC,IAAIZ,0BAA0B,CAAC,CAAC,CAAC;IACxD;;IAEA;IACA,MAAMiB,WAAW,GAAG,IAAIrB,yBAAyB,CAAC;MAC9CkB;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,CAACV,cAAc,CAACc,OAAO,CAACD,WAAW,CAAC;;IAE9C;IACA,MAAME,MAAM,GAAG,MAAM,IAAI,CAACb,UAAU,CAACC,OAAO,CAACC,MAAM,CAAC;IAEpD,IAAIW,MAAM,CAACR,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOQ,MAAM;IACjB;;IAEA;IACA,MAAMC,UAAU,GAAG,IAAIvB,wBAAwB,CAAC;MAC5CiB;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,CAACV,cAAc,CAACc,OAAO,CAACE,UAAU,CAAC;IAE7C,OAAO9B,MAAM,CAAC+B,EAAE,CAAC,CAAC;EACtB;AACJ;AAEA,OAAO,MAAM5B,qBAAqB,GAAGF,oBAAoB,CAAC;EACtD+B,WAAW,EAAE5B,kBAAkB;EAC/B6B,cAAc,EAAEtB,yBAAyB;EACzCuB,YAAY,EAAE,CAACzB,aAAa,EAAEP,cAAc,EAAEM,sBAAsB,EAAEH,wBAAwB;AAClG,CAAC,CAAC","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import { type Result } from "@webiny/feature/api";
2
- import type { IEventHandler } from "@webiny/api-core/features/EventPublisher";
3
- import type { DomainEvent } from "@webiny/api-core/features/EventPublisher";
2
+ import type { IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
3
+ import type { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
4
4
  import type { WbRedirect } from "../../../domain/redirect/abstractions.js";
5
5
  import { RedirectNotFoundError, RedirectPersistenceError, RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
6
6
  export interface IDeleteWbRedirectParams {
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DeleteRedirectRepository","DeleteRedirectUseCase","RedirectBeforeDeleteEventHandler","RedirectAfterDeleteEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/EventPublisher\";\nimport type { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport type { WbRedirect } from \"~/domain/redirect/abstractions.js\";\nimport {\n RedirectNotFoundError,\n RedirectPersistenceError,\n RedirectNotAuthorizedError\n} from \"~/domain/redirect/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IDeleteWbRedirectParams {\n id: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IDeleteRedirectRepository {\n execute(params: IDeleteWbRedirectParams): Promise<Result<void, RepositoryError>>;\n}\n\nexport interface IDeleteRedirectRepositoryErrors {\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype RepositoryError = IDeleteRedirectRepositoryErrors[keyof IDeleteRedirectRepositoryErrors];\n\nexport const DeleteRedirectRepository = createAbstraction<IDeleteRedirectRepository>(\n \"Wb/DeleteRedirectRepository\"\n);\n\nexport namespace DeleteRedirectRepository {\n export type Interface = IDeleteRedirectRepository;\n export type Params = IDeleteWbRedirectParams;\n export type Return = Promise<Result<void, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IDeleteRedirectUseCase {\n execute(params: IDeleteWbRedirectParams): Promise<Result<void, UseCaseError>>;\n}\n\nexport interface IDeleteRedirectUseCaseErrors {\n notAuthorized: RedirectNotAuthorizedError;\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype UseCaseError = IDeleteRedirectUseCaseErrors[keyof IDeleteRedirectUseCaseErrors];\n\n/** Delete a URL redirect. */\nexport const DeleteRedirectUseCase = createAbstraction<IDeleteRedirectUseCase>(\n \"Wb/DeleteRedirectUseCase\"\n);\n\nexport namespace DeleteRedirectUseCase {\n export type Interface = IDeleteRedirectUseCase;\n export type Params = IDeleteWbRedirectParams;\n export type Return = Promise<Result<void, UseCaseError>>;\n export type Error = UseCaseError;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface RedirectBeforeDeletePayload {\n redirect: WbRedirect;\n}\n\nexport interface RedirectAfterDeletePayload {\n redirect: WbRedirect;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\n/** Hook into redirect lifecycle before a redirect is deleted. */\nexport const RedirectBeforeDeleteEventHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectBeforeDeletePayload>>\n>(\"Wb/RedirectBeforeDeleteEventHandler\");\n\nexport namespace RedirectBeforeDeleteEventHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectBeforeDeletePayload>>;\n export type Event = DomainEvent<RedirectBeforeDeletePayload>;\n export type Redirect = WbRedirect;\n}\n\n/** Hook into redirect lifecycle after a redirect is deleted. */\nexport const RedirectAfterDeleteEventHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectAfterDeletePayload>>\n>(\"Wb/RedirectAfterDeleteEventHandler\");\n\nexport namespace RedirectAfterDeleteEventHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectAfterDeletePayload>>;\n export type Event = DomainEvent<RedirectAfterDeletePayload>;\n export type Redirect = WbRedirect;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAUpE;AACA;AACA;;AAMA;AACA;AACA;;AAaA,OAAO,MAAMC,wBAAwB,GAAGD,iBAAiB,CACrD,6BACJ,CAAC;;AASD;AACA;AACA;;AAcA;AACA,OAAO,MAAME,qBAAqB,GAAGF,iBAAiB,CAClD,0BACJ,CAAC;;AASD;AACA;AACA;;AAUA;AACA;AACA;;AAEA;AACA,OAAO,MAAMG,gCAAgC,GAAGH,iBAAiB,CAE/D,qCAAqC,CAAC;AAQxC;AACA,OAAO,MAAMI,+BAA+B,GAAGJ,iBAAiB,CAE9D,oCAAoC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","DeleteRedirectRepository","DeleteRedirectUseCase","RedirectBeforeDeleteEventHandler","RedirectAfterDeleteEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { WbRedirect } from \"~/domain/redirect/abstractions.js\";\nimport {\n RedirectNotFoundError,\n RedirectPersistenceError,\n RedirectNotAuthorizedError\n} from \"~/domain/redirect/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IDeleteWbRedirectParams {\n id: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IDeleteRedirectRepository {\n execute(params: IDeleteWbRedirectParams): Promise<Result<void, RepositoryError>>;\n}\n\nexport interface IDeleteRedirectRepositoryErrors {\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype RepositoryError = IDeleteRedirectRepositoryErrors[keyof IDeleteRedirectRepositoryErrors];\n\nexport const DeleteRedirectRepository = createAbstraction<IDeleteRedirectRepository>(\n \"Wb/DeleteRedirectRepository\"\n);\n\nexport namespace DeleteRedirectRepository {\n export type Interface = IDeleteRedirectRepository;\n export type Params = IDeleteWbRedirectParams;\n export type Return = Promise<Result<void, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IDeleteRedirectUseCase {\n execute(params: IDeleteWbRedirectParams): Promise<Result<void, UseCaseError>>;\n}\n\nexport interface IDeleteRedirectUseCaseErrors {\n notAuthorized: RedirectNotAuthorizedError;\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype UseCaseError = IDeleteRedirectUseCaseErrors[keyof IDeleteRedirectUseCaseErrors];\n\n/** Delete a URL redirect. */\nexport const DeleteRedirectUseCase = createAbstraction<IDeleteRedirectUseCase>(\n \"Wb/DeleteRedirectUseCase\"\n);\n\nexport namespace DeleteRedirectUseCase {\n export type Interface = IDeleteRedirectUseCase;\n export type Params = IDeleteWbRedirectParams;\n export type Return = Promise<Result<void, UseCaseError>>;\n export type Error = UseCaseError;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface RedirectBeforeDeletePayload {\n redirect: WbRedirect;\n}\n\nexport interface RedirectAfterDeletePayload {\n redirect: WbRedirect;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\n/** Hook into redirect lifecycle before a redirect is deleted. */\nexport const RedirectBeforeDeleteEventHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectBeforeDeletePayload>>\n>(\"Wb/RedirectBeforeDeleteEventHandler\");\n\nexport namespace RedirectBeforeDeleteEventHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectBeforeDeletePayload>>;\n export type Event = DomainEvent<RedirectBeforeDeletePayload>;\n export type Redirect = WbRedirect;\n}\n\n/** Hook into redirect lifecycle after a redirect is deleted. */\nexport const RedirectAfterDeleteEventHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectAfterDeletePayload>>\n>(\"Wb/RedirectAfterDeleteEventHandler\");\n\nexport namespace RedirectAfterDeleteEventHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectAfterDeletePayload>>;\n export type Event = DomainEvent<RedirectAfterDeletePayload>;\n export type Redirect = WbRedirect;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAUpE;AACA;AACA;;AAMA;AACA;AACA;;AAaA,OAAO,MAAMC,wBAAwB,GAAGD,iBAAiB,CACrD,6BACJ,CAAC;;AASD;AACA;AACA;;AAcA;AACA,OAAO,MAAME,qBAAqB,GAAGF,iBAAiB,CAClD,0BACJ,CAAC;;AASD;AACA;AACA;;AAUA;AACA;AACA;;AAEA;AACA,OAAO,MAAMG,gCAAgC,GAAGH,iBAAiB,CAE/D,qCAAqC,CAAC;AAQxC;AACA,OAAO,MAAMI,+BAA+B,GAAGJ,iBAAiB,CAE9D,oCAAoC,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 { RedirectBeforeDeletePayload, RedirectAfterDeletePayload } from "./abstractions.js";
3
3
  export declare class RedirectBeforeDeleteEvent extends DomainEvent<RedirectBeforeDeletePayload> {
4
4
  eventType: "redirect.beforeDelete";
5
- getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<DomainEvent<RedirectBeforeDeletePayload>>>;
5
+ getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<RedirectBeforeDeletePayload>>>;
6
6
  }
7
7
  export declare class RedirectAfterDeleteEvent extends DomainEvent<RedirectAfterDeletePayload> {
8
8
  eventType: "redirect.afterDelete";
9
- getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<DomainEvent<RedirectAfterDeletePayload>>>;
9
+ getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<RedirectAfterDeletePayload>>>;
10
10
  }
@@ -1,4 +1,4 @@
1
- import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
1
+ import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
2
2
  import { RedirectBeforeDeleteEventHandler, RedirectAfterDeleteEventHandler } from "./abstractions.js";
3
3
  // RedirectBeforeDelete Event
4
4
  export class RedirectBeforeDeleteEvent extends DomainEvent {
@@ -1 +1 @@
1
- {"version":3,"names":["DomainEvent","RedirectBeforeDeleteEventHandler","RedirectAfterDeleteEventHandler","RedirectBeforeDeleteEvent","eventType","getHandlerAbstraction","RedirectAfterDeleteEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport {\n RedirectBeforeDeleteEventHandler,\n RedirectAfterDeleteEventHandler\n} from \"./abstractions.js\";\nimport type { RedirectBeforeDeletePayload, RedirectAfterDeletePayload } from \"./abstractions.js\";\n\n// RedirectBeforeDelete Event\nexport class RedirectBeforeDeleteEvent extends DomainEvent<RedirectBeforeDeletePayload> {\n eventType = \"redirect.beforeDelete\" as const;\n\n getHandlerAbstraction() {\n return RedirectBeforeDeleteEventHandler;\n }\n}\n\n// RedirectAfterDelete Event\nexport class RedirectAfterDeleteEvent extends DomainEvent<RedirectAfterDeletePayload> {\n eventType = \"redirect.afterDelete\" as const;\n\n getHandlerAbstraction() {\n return RedirectAfterDeleteEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,0CAA0C;AACtE,SACIC,gCAAgC,EAChCC,+BAA+B;AAInC;AACA,OAAO,MAAMC,yBAAyB,SAASH,WAAW,CAA8B;EACpFI,SAAS,GAAG,uBAAuB;EAEnCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,gCAAgC;EAC3C;AACJ;;AAEA;AACA,OAAO,MAAMK,wBAAwB,SAASN,WAAW,CAA6B;EAClFI,SAAS,GAAG,sBAAsB;EAElCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,+BAA+B;EAC1C;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["DomainEvent","RedirectBeforeDeleteEventHandler","RedirectAfterDeleteEventHandler","RedirectBeforeDeleteEvent","eventType","getHandlerAbstraction","RedirectAfterDeleteEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport {\n RedirectBeforeDeleteEventHandler,\n RedirectAfterDeleteEventHandler\n} from \"./abstractions.js\";\nimport type { RedirectBeforeDeletePayload, RedirectAfterDeletePayload } from \"./abstractions.js\";\n\n// RedirectBeforeDelete Event\nexport class RedirectBeforeDeleteEvent extends DomainEvent<RedirectBeforeDeletePayload> {\n eventType = \"redirect.beforeDelete\" as const;\n\n getHandlerAbstraction() {\n return RedirectBeforeDeleteEventHandler;\n }\n}\n\n// RedirectAfterDelete Event\nexport class RedirectAfterDeleteEvent extends DomainEvent<RedirectAfterDeletePayload> {\n eventType = \"redirect.afterDelete\" as const;\n\n getHandlerAbstraction() {\n return RedirectAfterDeleteEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,mDAAmD;AAC/E,SACIC,gCAAgC,EAChCC,+BAA+B;AAInC;AACA,OAAO,MAAMC,yBAAyB,SAASH,WAAW,CAA8B;EACpFI,SAAS,GAAG,uBAAuB;EAEnCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,gCAAgC;EAC3C;AACJ;;AAEA;AACA,OAAO,MAAMK,wBAAwB,SAASN,WAAW,CAA6B;EAClFI,SAAS,GAAG,sBAAsB;EAElCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,+BAA+B;EAC1C;AACJ","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import { GetActiveRedirectsUseCase as UseCaseAbstraction, GetActiveRedirectsRepository } from "./abstractions.js";
2
- import { WbPermissions } from "../../../domain/permissions.js";
2
+ import { WbPermissions } from "../../../features/permissions/abstractions.js";
3
3
  declare class GetActiveRedirectsUseCaseImpl implements UseCaseAbstraction.Interface {
4
4
  private permissions;
5
5
  private repository;
@@ -1,6 +1,6 @@
1
1
  import { Result, createImplementation } from "@webiny/feature/api";
2
2
  import { GetActiveRedirectsUseCase as UseCaseAbstraction, GetActiveRedirectsRepository } from "./abstractions.js";
3
- import { WbPermissions } from "../../../domain/permissions.js";
3
+ import { WbPermissions } from "../../permissions/abstractions.js";
4
4
  import { RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
5
5
  class GetActiveRedirectsUseCaseImpl {
6
6
  constructor(permissions, repository) {
@@ -18,7 +18,7 @@ class GetActiveRedirectsUseCaseImpl {
18
18
  export const GetActiveRedirectsUseCase = createImplementation({
19
19
  abstraction: UseCaseAbstraction,
20
20
  implementation: GetActiveRedirectsUseCaseImpl,
21
- dependencies: [WbPermissions.Abstraction, GetActiveRedirectsRepository]
21
+ dependencies: [WbPermissions, GetActiveRedirectsRepository]
22
22
  });
23
23
 
24
24
  //# sourceMappingURL=GetActiveRedirectsUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","createImplementation","GetActiveRedirectsUseCase","UseCaseAbstraction","GetActiveRedirectsRepository","WbPermissions","RedirectNotAuthorizedError","GetActiveRedirectsUseCaseImpl","constructor","permissions","repository","execute","hasPermission","canRead","fail","abstraction","implementation","dependencies","Abstraction"],"sources":["GetActiveRedirectsUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n GetActiveRedirectsUseCase as UseCaseAbstraction,\n GetActiveRedirectsRepository\n} from \"./abstractions.js\";\nimport { WbPermissions } from \"~/domain/permissions.js\";\nimport { RedirectNotAuthorizedError } from \"~/domain/redirect/errors.js\";\n\nclass GetActiveRedirectsUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private repository: GetActiveRedirectsRepository.Interface\n ) {}\n\n async execute(): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canRead(\"redirect\");\n if (!hasPermission) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n return await this.repository.execute();\n }\n}\n\nexport const GetActiveRedirectsUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: GetActiveRedirectsUseCaseImpl,\n dependencies: [WbPermissions.Abstraction, GetActiveRedirectsRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,yBAAyB,IAAIC,kBAAkB,EAC/CC,4BAA4B;AAEhC,SAASC,aAAa;AACtB,SAASC,0BAA0B;AAEnC,MAAMC,6BAA6B,CAAyC;EACxEC,WAAWA,CACCC,WAAoC,EACpCC,UAAkD,EAC5D;IAAA,KAFUD,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,UAAkD,GAAlDA,UAAkD;EAC3D;EAEH,MAAMC,OAAOA,CAAA,EAA8B;IACvC,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACH,WAAW,CAACI,OAAO,CAAC,UAAU,CAAC;IAChE,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOZ,MAAM,CAACc,IAAI,CAAC,IAAIR,0BAA0B,CAAC,CAAC,CAAC;IACxD;IAEA,OAAO,MAAM,IAAI,CAACI,UAAU,CAACC,OAAO,CAAC,CAAC;EAC1C;AACJ;AAEA,OAAO,MAAMT,yBAAyB,GAAGD,oBAAoB,CAAC;EAC1Dc,WAAW,EAAEZ,kBAAkB;EAC/Ba,cAAc,EAAET,6BAA6B;EAC7CU,YAAY,EAAE,CAACZ,aAAa,CAACa,WAAW,EAAEd,4BAA4B;AAC1E,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Result","createImplementation","GetActiveRedirectsUseCase","UseCaseAbstraction","GetActiveRedirectsRepository","WbPermissions","RedirectNotAuthorizedError","GetActiveRedirectsUseCaseImpl","constructor","permissions","repository","execute","hasPermission","canRead","fail","abstraction","implementation","dependencies"],"sources":["GetActiveRedirectsUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n GetActiveRedirectsUseCase as UseCaseAbstraction,\n GetActiveRedirectsRepository\n} from \"./abstractions.js\";\nimport { WbPermissions } from \"~/features/permissions/abstractions.js\";\nimport { RedirectNotAuthorizedError } from \"~/domain/redirect/errors.js\";\n\nclass GetActiveRedirectsUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private repository: GetActiveRedirectsRepository.Interface\n ) {}\n\n async execute(): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canRead(\"redirect\");\n if (!hasPermission) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n return await this.repository.execute();\n }\n}\n\nexport const GetActiveRedirectsUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: GetActiveRedirectsUseCaseImpl,\n dependencies: [WbPermissions, GetActiveRedirectsRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,yBAAyB,IAAIC,kBAAkB,EAC/CC,4BAA4B;AAEhC,SAASC,aAAa;AACtB,SAASC,0BAA0B;AAEnC,MAAMC,6BAA6B,CAAyC;EACxEC,WAAWA,CACCC,WAAoC,EACpCC,UAAkD,EAC5D;IAAA,KAFUD,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,UAAkD,GAAlDA,UAAkD;EAC3D;EAEH,MAAMC,OAAOA,CAAA,EAA8B;IACvC,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACH,WAAW,CAACI,OAAO,CAAC,UAAU,CAAC;IAChE,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOZ,MAAM,CAACc,IAAI,CAAC,IAAIR,0BAA0B,CAAC,CAAC,CAAC;IACxD;IAEA,OAAO,MAAM,IAAI,CAACI,UAAU,CAACC,OAAO,CAAC,CAAC;EAC1C;AACJ;AAEA,OAAO,MAAMT,yBAAyB,GAAGD,oBAAoB,CAAC;EAC1Dc,WAAW,EAAEZ,kBAAkB;EAC/Ba,cAAc,EAAET,6BAA6B;EAC7CU,YAAY,EAAE,CAACZ,aAAa,EAAED,4BAA4B;AAC9D,CAAC,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import { GetRedirectByIdUseCase as UseCaseAbstraction, GetRedirectByIdRepository } from "./abstractions.js";
2
- import { WbPermissions } from "../../../domain/permissions.js";
2
+ import { WbPermissions } from "../../../features/permissions/abstractions.js";
3
3
  declare class GetRedirectByIdUseCaseImpl implements UseCaseAbstraction.Interface {
4
4
  private permissions;
5
5
  private repository;
@@ -1,6 +1,6 @@
1
1
  import { Result, createImplementation } from "@webiny/feature/api";
2
2
  import { GetRedirectByIdUseCase as UseCaseAbstraction, GetRedirectByIdRepository } from "./abstractions.js";
3
- import { WbPermissions } from "../../../domain/permissions.js";
3
+ import { WbPermissions } from "../../permissions/abstractions.js";
4
4
  import { RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
5
5
  class GetRedirectByIdUseCaseImpl {
6
6
  constructor(permissions, repository) {
@@ -26,7 +26,7 @@ class GetRedirectByIdUseCaseImpl {
26
26
  export const GetRedirectByIdUseCase = createImplementation({
27
27
  abstraction: UseCaseAbstraction,
28
28
  implementation: GetRedirectByIdUseCaseImpl,
29
- dependencies: [WbPermissions.Abstraction, GetRedirectByIdRepository]
29
+ dependencies: [WbPermissions, GetRedirectByIdRepository]
30
30
  });
31
31
 
32
32
  //# sourceMappingURL=GetRedirectByIdUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","createImplementation","GetRedirectByIdUseCase","UseCaseAbstraction","GetRedirectByIdRepository","WbPermissions","RedirectNotAuthorizedError","GetRedirectByIdUseCaseImpl","constructor","permissions","repository","execute","id","hasPermission","canRead","fail","result","isFail","canAccess","value","abstraction","implementation","dependencies","Abstraction"],"sources":["GetRedirectByIdUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n GetRedirectByIdUseCase as UseCaseAbstraction,\n GetRedirectByIdRepository\n} from \"./abstractions.js\";\nimport { WbPermissions } from \"~/domain/permissions.js\";\nimport { RedirectNotAuthorizedError } from \"~/domain/redirect/errors.js\";\n\nclass GetRedirectByIdUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private repository: GetRedirectByIdRepository.Interface\n ) {}\n\n async execute(id: string): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canRead(\"redirect\");\n if (!hasPermission) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n const result = await this.repository.execute(id);\n\n if (result.isFail()) {\n return result;\n }\n\n const canAccess = await this.permissions.canAccess(\"redirect\", result.value);\n if (!canAccess) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n return result;\n }\n}\n\nexport const GetRedirectByIdUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: GetRedirectByIdUseCaseImpl,\n dependencies: [WbPermissions.Abstraction, GetRedirectByIdRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,sBAAsB,IAAIC,kBAAkB,EAC5CC,yBAAyB;AAE7B,SAASC,aAAa;AACtB,SAASC,0BAA0B;AAEnC,MAAMC,0BAA0B,CAAyC;EACrEC,WAAWA,CACCC,WAAoC,EACpCC,UAA+C,EACzD;IAAA,KAFUD,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,UAA+C,GAA/CA,UAA+C;EACxD;EAEH,MAAMC,OAAOA,CAACC,EAAU,EAA6B;IACjD,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACJ,WAAW,CAACK,OAAO,CAAC,UAAU,CAAC;IAChE,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOb,MAAM,CAACe,IAAI,CAAC,IAAIT,0BAA0B,CAAC,CAAC,CAAC;IACxD;IAEA,MAAMU,MAAM,GAAG,MAAM,IAAI,CAACN,UAAU,CAACC,OAAO,CAACC,EAAE,CAAC;IAEhD,IAAII,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOD,MAAM;IACjB;IAEA,MAAME,SAAS,GAAG,MAAM,IAAI,CAACT,WAAW,CAACS,SAAS,CAAC,UAAU,EAAEF,MAAM,CAACG,KAAK,CAAC;IAC5E,IAAI,CAACD,SAAS,EAAE;MACZ,OAAOlB,MAAM,CAACe,IAAI,CAAC,IAAIT,0BAA0B,CAAC,CAAC,CAAC;IACxD;IAEA,OAAOU,MAAM;EACjB;AACJ;AAEA,OAAO,MAAMd,sBAAsB,GAAGD,oBAAoB,CAAC;EACvDmB,WAAW,EAAEjB,kBAAkB;EAC/BkB,cAAc,EAAEd,0BAA0B;EAC1Ce,YAAY,EAAE,CAACjB,aAAa,CAACkB,WAAW,EAAEnB,yBAAyB;AACvE,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Result","createImplementation","GetRedirectByIdUseCase","UseCaseAbstraction","GetRedirectByIdRepository","WbPermissions","RedirectNotAuthorizedError","GetRedirectByIdUseCaseImpl","constructor","permissions","repository","execute","id","hasPermission","canRead","fail","result","isFail","canAccess","value","abstraction","implementation","dependencies"],"sources":["GetRedirectByIdUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n GetRedirectByIdUseCase as UseCaseAbstraction,\n GetRedirectByIdRepository\n} from \"./abstractions.js\";\nimport { WbPermissions } from \"~/features/permissions/abstractions.js\";\nimport { RedirectNotAuthorizedError } from \"~/domain/redirect/errors.js\";\n\nclass GetRedirectByIdUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private repository: GetRedirectByIdRepository.Interface\n ) {}\n\n async execute(id: string): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canRead(\"redirect\");\n if (!hasPermission) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n const result = await this.repository.execute(id);\n\n if (result.isFail()) {\n return result;\n }\n\n const canAccess = await this.permissions.canAccess(\"redirect\", result.value);\n if (!canAccess) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n return result;\n }\n}\n\nexport const GetRedirectByIdUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: GetRedirectByIdUseCaseImpl,\n dependencies: [WbPermissions, GetRedirectByIdRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,sBAAsB,IAAIC,kBAAkB,EAC5CC,yBAAyB;AAE7B,SAASC,aAAa;AACtB,SAASC,0BAA0B;AAEnC,MAAMC,0BAA0B,CAAyC;EACrEC,WAAWA,CACCC,WAAoC,EACpCC,UAA+C,EACzD;IAAA,KAFUD,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,UAA+C,GAA/CA,UAA+C;EACxD;EAEH,MAAMC,OAAOA,CAACC,EAAU,EAA6B;IACjD,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACJ,WAAW,CAACK,OAAO,CAAC,UAAU,CAAC;IAChE,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOb,MAAM,CAACe,IAAI,CAAC,IAAIT,0BAA0B,CAAC,CAAC,CAAC;IACxD;IAEA,MAAMU,MAAM,GAAG,MAAM,IAAI,CAACN,UAAU,CAACC,OAAO,CAACC,EAAE,CAAC;IAEhD,IAAII,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOD,MAAM;IACjB;IAEA,MAAME,SAAS,GAAG,MAAM,IAAI,CAACT,WAAW,CAACS,SAAS,CAAC,UAAU,EAAEF,MAAM,CAACG,KAAK,CAAC;IAC5E,IAAI,CAACD,SAAS,EAAE;MACZ,OAAOlB,MAAM,CAACe,IAAI,CAAC,IAAIT,0BAA0B,CAAC,CAAC,CAAC;IACxD;IAEA,OAAOU,MAAM;EACjB;AACJ;AAEA,OAAO,MAAMd,sBAAsB,GAAGD,oBAAoB,CAAC;EACvDmB,WAAW,EAAEjB,kBAAkB;EAC/BkB,cAAc,EAAEd,0BAA0B;EAC1Ce,YAAY,EAAE,CAACjB,aAAa,EAAED,yBAAyB;AAC3D,CAAC,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import { ListRedirectsUseCase as UseCaseAbstraction, ListRedirectsRepository } from "./abstractions.js";
2
- import { WbPermissions } from "../../../domain/permissions.js";
2
+ import { WbPermissions } from "../../../features/permissions/abstractions.js";
3
3
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
4
4
  declare class ListRedirectsUseCaseImpl implements UseCaseAbstraction.Interface {
5
5
  private permissions;
@@ -1,6 +1,6 @@
1
1
  import { Result, createImplementation } from "@webiny/feature/api";
2
2
  import { ListRedirectsUseCase as UseCaseAbstraction, ListRedirectsRepository } from "./abstractions.js";
3
- import { WbPermissions } from "../../../domain/permissions.js";
3
+ import { WbPermissions } from "../../permissions/abstractions.js";
4
4
  import { RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
5
5
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
6
6
  class ListRedirectsUseCaseImpl {
@@ -30,7 +30,7 @@ class ListRedirectsUseCaseImpl {
30
30
  export const ListRedirectsUseCase = createImplementation({
31
31
  abstraction: UseCaseAbstraction,
32
32
  implementation: ListRedirectsUseCaseImpl,
33
- dependencies: [WbPermissions.Abstraction, IdentityContext, ListRedirectsRepository]
33
+ dependencies: [WbPermissions, IdentityContext, ListRedirectsRepository]
34
34
  });
35
35
 
36
36
  //# sourceMappingURL=ListRedirectsUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","createImplementation","ListRedirectsUseCase","UseCaseAbstraction","ListRedirectsRepository","WbPermissions","RedirectNotAuthorizedError","IdentityContext","ListRedirectsUseCaseImpl","constructor","permissions","identityContext","repository","execute","params","hasPermission","canRead","fail","where","onlyOwnRecords","identity","getIdentity","createdBy","id","abstraction","implementation","dependencies","Abstraction"],"sources":["ListRedirectsUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n ListRedirectsUseCase as UseCaseAbstraction,\n ListRedirectsRepository\n} from \"./abstractions.js\";\nimport { WbPermissions } from \"~/domain/permissions.js\";\nimport { RedirectNotAuthorizedError } from \"~/domain/redirect/errors.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\n\nclass ListRedirectsUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private identityContext: IdentityContext.Interface,\n private repository: ListRedirectsRepository.Interface\n ) {}\n\n async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canRead(\"redirect\");\n if (!hasPermission) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n const where = { ...params.where };\n\n if (await this.permissions.onlyOwnRecords(\"redirect\")) {\n const identity = this.identityContext.getIdentity();\n where.createdBy = identity.id;\n }\n\n return await this.repository.execute({ ...params, where });\n }\n}\n\nexport const ListRedirectsUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: ListRedirectsUseCaseImpl,\n dependencies: [WbPermissions.Abstraction, IdentityContext, ListRedirectsRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,oBAAoB,IAAIC,kBAAkB,EAC1CC,uBAAuB;AAE3B,SAASC,aAAa;AACtB,SAASC,0BAA0B;AACnC,SAASC,eAAe,QAAQ,6DAA6D;AAE7F,MAAMC,wBAAwB,CAAyC;EACnEC,WAAWA,CACCC,WAAoC,EACpCC,eAA0C,EAC1CC,UAA6C,EACvD;IAAA,KAHUF,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,UAA6C,GAA7CA,UAA6C;EACtD;EAEH,MAAMC,OAAOA,CAACC,MAAiC,EAA6B;IACxE,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACL,WAAW,CAACM,OAAO,CAAC,UAAU,CAAC;IAChE,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOf,MAAM,CAACiB,IAAI,CAAC,IAAIX,0BAA0B,CAAC,CAAC,CAAC;IACxD;IAEA,MAAMY,KAAK,GAAG;MAAE,GAAGJ,MAAM,CAACI;IAAM,CAAC;IAEjC,IAAI,MAAM,IAAI,CAACR,WAAW,CAACS,cAAc,CAAC,UAAU,CAAC,EAAE;MACnD,MAAMC,QAAQ,GAAG,IAAI,CAACT,eAAe,CAACU,WAAW,CAAC,CAAC;MACnDH,KAAK,CAACI,SAAS,GAAGF,QAAQ,CAACG,EAAE;IACjC;IAEA,OAAO,MAAM,IAAI,CAACX,UAAU,CAACC,OAAO,CAAC;MAAE,GAAGC,MAAM;MAAEI;IAAM,CAAC,CAAC;EAC9D;AACJ;AAEA,OAAO,MAAMhB,oBAAoB,GAAGD,oBAAoB,CAAC;EACrDuB,WAAW,EAAErB,kBAAkB;EAC/BsB,cAAc,EAAEjB,wBAAwB;EACxCkB,YAAY,EAAE,CAACrB,aAAa,CAACsB,WAAW,EAAEpB,eAAe,EAAEH,uBAAuB;AACtF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Result","createImplementation","ListRedirectsUseCase","UseCaseAbstraction","ListRedirectsRepository","WbPermissions","RedirectNotAuthorizedError","IdentityContext","ListRedirectsUseCaseImpl","constructor","permissions","identityContext","repository","execute","params","hasPermission","canRead","fail","where","onlyOwnRecords","identity","getIdentity","createdBy","id","abstraction","implementation","dependencies"],"sources":["ListRedirectsUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n ListRedirectsUseCase as UseCaseAbstraction,\n ListRedirectsRepository\n} from \"./abstractions.js\";\nimport { WbPermissions } from \"~/features/permissions/abstractions.js\";\nimport { RedirectNotAuthorizedError } from \"~/domain/redirect/errors.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\n\nclass ListRedirectsUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private identityContext: IdentityContext.Interface,\n private repository: ListRedirectsRepository.Interface\n ) {}\n\n async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canRead(\"redirect\");\n if (!hasPermission) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n const where = { ...params.where };\n\n if (await this.permissions.onlyOwnRecords(\"redirect\")) {\n const identity = this.identityContext.getIdentity();\n where.createdBy = identity.id;\n }\n\n return await this.repository.execute({ ...params, where });\n }\n}\n\nexport const ListRedirectsUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: ListRedirectsUseCaseImpl,\n dependencies: [WbPermissions, IdentityContext, ListRedirectsRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,oBAAoB,IAAIC,kBAAkB,EAC1CC,uBAAuB;AAE3B,SAASC,aAAa;AACtB,SAASC,0BAA0B;AACnC,SAASC,eAAe,QAAQ,6DAA6D;AAE7F,MAAMC,wBAAwB,CAAyC;EACnEC,WAAWA,CACCC,WAAoC,EACpCC,eAA0C,EAC1CC,UAA6C,EACvD;IAAA,KAHUF,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,UAA6C,GAA7CA,UAA6C;EACtD;EAEH,MAAMC,OAAOA,CAACC,MAAiC,EAA6B;IACxE,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACL,WAAW,CAACM,OAAO,CAAC,UAAU,CAAC;IAChE,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOf,MAAM,CAACiB,IAAI,CAAC,IAAIX,0BAA0B,CAAC,CAAC,CAAC;IACxD;IAEA,MAAMY,KAAK,GAAG;MAAE,GAAGJ,MAAM,CAACI;IAAM,CAAC;IAEjC,IAAI,MAAM,IAAI,CAACR,WAAW,CAACS,cAAc,CAAC,UAAU,CAAC,EAAE;MACnD,MAAMC,QAAQ,GAAG,IAAI,CAACT,eAAe,CAACU,WAAW,CAAC,CAAC;MACnDH,KAAK,CAACI,SAAS,GAAGF,QAAQ,CAACG,EAAE;IACjC;IAEA,OAAO,MAAM,IAAI,CAACX,UAAU,CAACC,OAAO,CAAC;MAAE,GAAGC,MAAM;MAAEI;IAAM,CAAC,CAAC;EAC9D;AACJ;AAEA,OAAO,MAAMhB,oBAAoB,GAAGD,oBAAoB,CAAC;EACrDuB,WAAW,EAAErB,kBAAkB;EAC/BsB,cAAc,EAAEjB,wBAAwB;EACxCkB,YAAY,EAAE,CAACrB,aAAa,EAAEE,eAAe,EAAEH,uBAAuB;AAC1E,CAAC,CAAC","ignoreList":[]}
@@ -1,7 +1,7 @@
1
- import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/EventPublisher";
1
+ import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/eventPublisher/index.js";
2
2
  import { MoveRedirectUseCase as UseCaseAbstraction, MoveRedirectRepository } from "./abstractions.js";
3
3
  import { GetRedirectByIdUseCase } from "../../../features/redirects/GetRedirectById/index.js";
4
- import { WbPermissions } from "../../../domain/permissions.js";
4
+ import { WbPermissions } from "../../../features/permissions/abstractions.js";
5
5
  declare class MoveRedirectUseCaseImpl implements UseCaseAbstraction.Interface {
6
6
  private permissions;
7
7
  private eventPublisher;
@@ -1,9 +1,9 @@
1
1
  import { Result, createImplementation } 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 { MoveRedirectUseCase as UseCaseAbstraction, MoveRedirectRepository } from "./abstractions.js";
4
4
  import { RedirectBeforeMoveEvent, RedirectAfterMoveEvent } from "./events.js";
5
5
  import { GetRedirectByIdUseCase } from "../GetRedirectById/index.js";
6
- import { WbPermissions } from "../../../domain/permissions.js";
6
+ import { WbPermissions } from "../../permissions/abstractions.js";
7
7
  import { RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
8
8
  class MoveRedirectUseCaseImpl {
9
9
  constructor(permissions, eventPublisher, getRedirectById, repository) {
@@ -55,7 +55,7 @@ class MoveRedirectUseCaseImpl {
55
55
  export const MoveRedirectUseCase = createImplementation({
56
56
  abstraction: UseCaseAbstraction,
57
57
  implementation: MoveRedirectUseCaseImpl,
58
- dependencies: [WbPermissions.Abstraction, EventPublisher, GetRedirectByIdUseCase, MoveRedirectRepository]
58
+ dependencies: [WbPermissions, EventPublisher, GetRedirectByIdUseCase, MoveRedirectRepository]
59
59
  });
60
60
 
61
61
  //# sourceMappingURL=MoveRedirectUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","createImplementation","EventPublisher","MoveRedirectUseCase","UseCaseAbstraction","MoveRedirectRepository","RedirectBeforeMoveEvent","RedirectAfterMoveEvent","GetRedirectByIdUseCase","WbPermissions","RedirectNotAuthorizedError","MoveRedirectUseCaseImpl","constructor","permissions","eventPublisher","getRedirectById","repository","execute","params","hasPermission","canEdit","fail","getResult","id","isFail","original","value","beforeEvent","input","publish","result","afterEvent","redirect","ok","abstraction","implementation","dependencies","Abstraction"],"sources":["MoveRedirectUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport {\n MoveRedirectUseCase as UseCaseAbstraction,\n MoveRedirectRepository\n} from \"./abstractions.js\";\nimport { RedirectBeforeMoveEvent, RedirectAfterMoveEvent } from \"./events.js\";\nimport { GetRedirectByIdUseCase } from \"~/features/redirects/GetRedirectById/index.js\";\nimport { WbPermissions } from \"~/domain/permissions.js\";\nimport { RedirectNotAuthorizedError } from \"~/domain/redirect/errors.js\";\n\nclass MoveRedirectUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getRedirectById: GetRedirectByIdUseCase.Interface,\n private repository: MoveRedirectRepository.Interface\n ) {}\n\n async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canEdit(\"redirect\");\n if (!hasPermission) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n // Get the original redirect for events\n const getResult = await this.getRedirectById.execute(params.id);\n\n if (getResult.isFail()) {\n return getResult;\n }\n\n const original = getResult.value;\n\n const canEdit = await this.permissions.canEdit(\"redirect\", original);\n if (!canEdit) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n // Publish before move event\n const beforeEvent = new RedirectBeforeMoveEvent({\n original,\n input: params\n });\n\n await this.eventPublisher.publish(beforeEvent);\n\n // Execute the move operation\n const result = await this.repository.execute(params);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after move event\n const afterEvent = new RedirectAfterMoveEvent({\n original,\n input: params,\n redirect: result.value\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok(result.value);\n }\n}\n\nexport const MoveRedirectUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: MoveRedirectUseCaseImpl,\n dependencies: [\n WbPermissions.Abstraction,\n EventPublisher,\n GetRedirectByIdUseCase,\n MoveRedirectRepository\n ]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,cAAc,QAEX,0CAA0C;AACjD,SACIC,mBAAmB,IAAIC,kBAAkB,EACzCC,sBAAsB;AAE1B,SAASC,uBAAuB,EAAEC,sBAAsB;AACxD,SAASC,sBAAsB;AAC/B,SAASC,aAAa;AACtB,SAASC,0BAA0B;AAEnC,MAAMC,uBAAuB,CAAyC;EAClEC,WAAWA,CACCC,WAAoC,EACpCC,cAAmD,EACnDC,eAAiD,EACjDC,UAA4C,EACtD;IAAA,KAJUH,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,eAAiD,GAAjDA,eAAiD;IAAA,KACjDC,UAA4C,GAA5CA,UAA4C;EACrD;EAEH,MAAMC,OAAOA,CAACC,MAAiC,EAA6B;IACxE,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACN,WAAW,CAACO,OAAO,CAAC,UAAU,CAAC;IAChE,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOnB,MAAM,CAACqB,IAAI,CAAC,IAAIX,0BAA0B,CAAC,CAAC,CAAC;IACxD;;IAEA;IACA,MAAMY,SAAS,GAAG,MAAM,IAAI,CAACP,eAAe,CAACE,OAAO,CAACC,MAAM,CAACK,EAAE,CAAC;IAE/D,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOF,SAAS;IACpB;IAEA,MAAMG,QAAQ,GAAGH,SAAS,CAACI,KAAK;IAEhC,MAAMN,OAAO,GAAG,MAAM,IAAI,CAACP,WAAW,CAACO,OAAO,CAAC,UAAU,EAAEK,QAAQ,CAAC;IACpE,IAAI,CAACL,OAAO,EAAE;MACV,OAAOpB,MAAM,CAACqB,IAAI,CAAC,IAAIX,0BAA0B,CAAC,CAAC,CAAC;IACxD;;IAEA;IACA,MAAMiB,WAAW,GAAG,IAAIrB,uBAAuB,CAAC;MAC5CmB,QAAQ;MACRG,KAAK,EAAEV;IACX,CAAC,CAAC;IAEF,MAAM,IAAI,CAACJ,cAAc,CAACe,OAAO,CAACF,WAAW,CAAC;;IAE9C;IACA,MAAMG,MAAM,GAAG,MAAM,IAAI,CAACd,UAAU,CAACC,OAAO,CAACC,MAAM,CAAC;IAEpD,IAAIY,MAAM,CAACN,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOM,MAAM;IACjB;;IAEA;IACA,MAAMC,UAAU,GAAG,IAAIxB,sBAAsB,CAAC;MAC1CkB,QAAQ;MACRG,KAAK,EAAEV,MAAM;MACbc,QAAQ,EAAEF,MAAM,CAACJ;IACrB,CAAC,CAAC;IAEF,MAAM,IAAI,CAACZ,cAAc,CAACe,OAAO,CAACE,UAAU,CAAC;IAE7C,OAAO/B,MAAM,CAACiC,EAAE,CAACH,MAAM,CAACJ,KAAK,CAAC;EAClC;AACJ;AAEA,OAAO,MAAMvB,mBAAmB,GAAGF,oBAAoB,CAAC;EACpDiC,WAAW,EAAE9B,kBAAkB;EAC/B+B,cAAc,EAAExB,uBAAuB;EACvCyB,YAAY,EAAE,CACV3B,aAAa,CAAC4B,WAAW,EACzBnC,cAAc,EACdM,sBAAsB,EACtBH,sBAAsB;AAE9B,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Result","createImplementation","EventPublisher","MoveRedirectUseCase","UseCaseAbstraction","MoveRedirectRepository","RedirectBeforeMoveEvent","RedirectAfterMoveEvent","GetRedirectByIdUseCase","WbPermissions","RedirectNotAuthorizedError","MoveRedirectUseCaseImpl","constructor","permissions","eventPublisher","getRedirectById","repository","execute","params","hasPermission","canEdit","fail","getResult","id","isFail","original","value","beforeEvent","input","publish","result","afterEvent","redirect","ok","abstraction","implementation","dependencies"],"sources":["MoveRedirectUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport {\n MoveRedirectUseCase as UseCaseAbstraction,\n MoveRedirectRepository\n} from \"./abstractions.js\";\nimport { RedirectBeforeMoveEvent, RedirectAfterMoveEvent } from \"./events.js\";\nimport { GetRedirectByIdUseCase } from \"~/features/redirects/GetRedirectById/index.js\";\nimport { WbPermissions } from \"~/features/permissions/abstractions.js\";\nimport { RedirectNotAuthorizedError } from \"~/domain/redirect/errors.js\";\n\nclass MoveRedirectUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getRedirectById: GetRedirectByIdUseCase.Interface,\n private repository: MoveRedirectRepository.Interface\n ) {}\n\n async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canEdit(\"redirect\");\n if (!hasPermission) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n // Get the original redirect for events\n const getResult = await this.getRedirectById.execute(params.id);\n\n if (getResult.isFail()) {\n return getResult;\n }\n\n const original = getResult.value;\n\n const canEdit = await this.permissions.canEdit(\"redirect\", original);\n if (!canEdit) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n // Publish before move event\n const beforeEvent = new RedirectBeforeMoveEvent({\n original,\n input: params\n });\n\n await this.eventPublisher.publish(beforeEvent);\n\n // Execute the move operation\n const result = await this.repository.execute(params);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after move event\n const afterEvent = new RedirectAfterMoveEvent({\n original,\n input: params,\n redirect: result.value\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok(result.value);\n }\n}\n\nexport const MoveRedirectUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: MoveRedirectUseCaseImpl,\n dependencies: [WbPermissions, EventPublisher, GetRedirectByIdUseCase, MoveRedirectRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,cAAc,QAEX,mDAAmD;AAC1D,SACIC,mBAAmB,IAAIC,kBAAkB,EACzCC,sBAAsB;AAE1B,SAASC,uBAAuB,EAAEC,sBAAsB;AACxD,SAASC,sBAAsB;AAC/B,SAASC,aAAa;AACtB,SAASC,0BAA0B;AAEnC,MAAMC,uBAAuB,CAAyC;EAClEC,WAAWA,CACCC,WAAoC,EACpCC,cAAmD,EACnDC,eAAiD,EACjDC,UAA4C,EACtD;IAAA,KAJUH,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,eAAiD,GAAjDA,eAAiD;IAAA,KACjDC,UAA4C,GAA5CA,UAA4C;EACrD;EAEH,MAAMC,OAAOA,CAACC,MAAiC,EAA6B;IACxE,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACN,WAAW,CAACO,OAAO,CAAC,UAAU,CAAC;IAChE,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOnB,MAAM,CAACqB,IAAI,CAAC,IAAIX,0BAA0B,CAAC,CAAC,CAAC;IACxD;;IAEA;IACA,MAAMY,SAAS,GAAG,MAAM,IAAI,CAACP,eAAe,CAACE,OAAO,CAACC,MAAM,CAACK,EAAE,CAAC;IAE/D,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOF,SAAS;IACpB;IAEA,MAAMG,QAAQ,GAAGH,SAAS,CAACI,KAAK;IAEhC,MAAMN,OAAO,GAAG,MAAM,IAAI,CAACP,WAAW,CAACO,OAAO,CAAC,UAAU,EAAEK,QAAQ,CAAC;IACpE,IAAI,CAACL,OAAO,EAAE;MACV,OAAOpB,MAAM,CAACqB,IAAI,CAAC,IAAIX,0BAA0B,CAAC,CAAC,CAAC;IACxD;;IAEA;IACA,MAAMiB,WAAW,GAAG,IAAIrB,uBAAuB,CAAC;MAC5CmB,QAAQ;MACRG,KAAK,EAAEV;IACX,CAAC,CAAC;IAEF,MAAM,IAAI,CAACJ,cAAc,CAACe,OAAO,CAACF,WAAW,CAAC;;IAE9C;IACA,MAAMG,MAAM,GAAG,MAAM,IAAI,CAACd,UAAU,CAACC,OAAO,CAACC,MAAM,CAAC;IAEpD,IAAIY,MAAM,CAACN,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOM,MAAM;IACjB;;IAEA;IACA,MAAMC,UAAU,GAAG,IAAIxB,sBAAsB,CAAC;MAC1CkB,QAAQ;MACRG,KAAK,EAAEV,MAAM;MACbc,QAAQ,EAAEF,MAAM,CAACJ;IACrB,CAAC,CAAC;IAEF,MAAM,IAAI,CAACZ,cAAc,CAACe,OAAO,CAACE,UAAU,CAAC;IAE7C,OAAO/B,MAAM,CAACiC,EAAE,CAACH,MAAM,CAACJ,KAAK,CAAC;EAClC;AACJ;AAEA,OAAO,MAAMvB,mBAAmB,GAAGF,oBAAoB,CAAC;EACpDiC,WAAW,EAAE9B,kBAAkB;EAC/B+B,cAAc,EAAExB,uBAAuB;EACvCyB,YAAY,EAAE,CAAC3B,aAAa,EAAEP,cAAc,EAAEM,sBAAsB,EAAEH,sBAAsB;AAChG,CAAC,CAAC","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import { type Result } from "@webiny/feature/api";
2
- import type { IEventHandler } from "@webiny/api-core/features/EventPublisher";
3
- import type { DomainEvent } from "@webiny/api-core/features/EventPublisher";
2
+ import type { IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
3
+ import type { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
4
4
  import type { WbRedirect } from "../../../domain/redirect/abstractions.js";
5
5
  import { RedirectNotFoundError, RedirectPersistenceError, RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
6
6
  export interface IMoveWbRedirectParams {
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","MoveRedirectRepository","MoveRedirectUseCase","RedirectBeforeMoveEventHandler","RedirectAfterMoveEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/EventPublisher\";\nimport type { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport type { WbRedirect } from \"~/domain/redirect/abstractions.js\";\nimport {\n RedirectNotFoundError,\n RedirectPersistenceError,\n RedirectNotAuthorizedError\n} from \"~/domain/redirect/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IMoveWbRedirectParams {\n id: string;\n folderId: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IMoveRedirectRepository {\n execute(params: IMoveWbRedirectParams): Promise<Result<WbRedirect, RepositoryError>>;\n}\n\nexport interface IMoveRedirectRepositoryErrors {\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype RepositoryError = IMoveRedirectRepositoryErrors[keyof IMoveRedirectRepositoryErrors];\n\nexport const MoveRedirectRepository = createAbstraction<IMoveRedirectRepository>(\n \"Wb/MoveRedirectRepository\"\n);\n\nexport namespace MoveRedirectRepository {\n export type Interface = IMoveRedirectRepository;\n export type Params = IMoveWbRedirectParams;\n export type Return = Promise<Result<WbRedirect, RepositoryError>>;\n export type Error = RepositoryError;\n export type Redirect = WbRedirect;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IMoveRedirectUseCase {\n execute(params: IMoveWbRedirectParams): Promise<Result<WbRedirect, UseCaseError>>;\n}\n\nexport interface IMoveRedirectUseCaseErrors {\n notAuthorized: RedirectNotAuthorizedError;\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype UseCaseError = IMoveRedirectUseCaseErrors[keyof IMoveRedirectUseCaseErrors];\n\n/** Move a URL redirect to a different folder. */\nexport const MoveRedirectUseCase =\n createAbstraction<IMoveRedirectUseCase>(\"Wb/MoveRedirectUseCase\");\n\nexport namespace MoveRedirectUseCase {\n export type Interface = IMoveRedirectUseCase;\n export type Params = IMoveWbRedirectParams;\n export type Return = Promise<Result<WbRedirect, UseCaseError>>;\n export type Error = UseCaseError;\n export type Redirect = WbRedirect;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface RedirectBeforeMovePayload {\n original: WbRedirect;\n input: IMoveWbRedirectParams;\n}\n\nexport interface RedirectAfterMovePayload {\n original: WbRedirect;\n input: IMoveWbRedirectParams;\n redirect: WbRedirect;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\n/** Hook into redirect lifecycle before a redirect is moved. */\nexport const RedirectBeforeMoveEventHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectBeforeMovePayload>>\n>(\"Wb/RedirectBeforeMoveEventHandler\");\n\nexport namespace RedirectBeforeMoveEventHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectBeforeMovePayload>>;\n export type Event = DomainEvent<RedirectBeforeMovePayload>;\n export type Redirect = WbRedirect;\n}\n\n/** Hook into redirect lifecycle after a redirect is moved. */\nexport const RedirectAfterMoveEventHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectAfterMovePayload>>\n>(\"Wb/RedirectAfterMoveEventHandler\");\n\nexport namespace RedirectAfterMoveEventHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectAfterMovePayload>>;\n export type Event = DomainEvent<RedirectAfterMovePayload>;\n export type Redirect = WbRedirect;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAUpE;AACA;AACA;;AAOA;AACA;AACA;;AAaA,OAAO,MAAMC,sBAAsB,GAAGD,iBAAiB,CACnD,2BACJ,CAAC;;AAUD;AACA;AACA;;AAcA;AACA,OAAO,MAAME,mBAAmB,GAC5BF,iBAAiB,CAAuB,wBAAwB,CAAC;;AAUrE;AACA;AACA;;AAaA;AACA;AACA;;AAEA;AACA,OAAO,MAAMG,8BAA8B,GAAGH,iBAAiB,CAE7D,mCAAmC,CAAC;AAQtC;AACA,OAAO,MAAMI,6BAA6B,GAAGJ,iBAAiB,CAE5D,kCAAkC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","MoveRedirectRepository","MoveRedirectUseCase","RedirectBeforeMoveEventHandler","RedirectAfterMoveEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { WbRedirect } from \"~/domain/redirect/abstractions.js\";\nimport {\n RedirectNotFoundError,\n RedirectPersistenceError,\n RedirectNotAuthorizedError\n} from \"~/domain/redirect/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IMoveWbRedirectParams {\n id: string;\n folderId: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IMoveRedirectRepository {\n execute(params: IMoveWbRedirectParams): Promise<Result<WbRedirect, RepositoryError>>;\n}\n\nexport interface IMoveRedirectRepositoryErrors {\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype RepositoryError = IMoveRedirectRepositoryErrors[keyof IMoveRedirectRepositoryErrors];\n\nexport const MoveRedirectRepository = createAbstraction<IMoveRedirectRepository>(\n \"Wb/MoveRedirectRepository\"\n);\n\nexport namespace MoveRedirectRepository {\n export type Interface = IMoveRedirectRepository;\n export type Params = IMoveWbRedirectParams;\n export type Return = Promise<Result<WbRedirect, RepositoryError>>;\n export type Error = RepositoryError;\n export type Redirect = WbRedirect;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IMoveRedirectUseCase {\n execute(params: IMoveWbRedirectParams): Promise<Result<WbRedirect, UseCaseError>>;\n}\n\nexport interface IMoveRedirectUseCaseErrors {\n notAuthorized: RedirectNotAuthorizedError;\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype UseCaseError = IMoveRedirectUseCaseErrors[keyof IMoveRedirectUseCaseErrors];\n\n/** Move a URL redirect to a different folder. */\nexport const MoveRedirectUseCase =\n createAbstraction<IMoveRedirectUseCase>(\"Wb/MoveRedirectUseCase\");\n\nexport namespace MoveRedirectUseCase {\n export type Interface = IMoveRedirectUseCase;\n export type Params = IMoveWbRedirectParams;\n export type Return = Promise<Result<WbRedirect, UseCaseError>>;\n export type Error = UseCaseError;\n export type Redirect = WbRedirect;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface RedirectBeforeMovePayload {\n original: WbRedirect;\n input: IMoveWbRedirectParams;\n}\n\nexport interface RedirectAfterMovePayload {\n original: WbRedirect;\n input: IMoveWbRedirectParams;\n redirect: WbRedirect;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\n/** Hook into redirect lifecycle before a redirect is moved. */\nexport const RedirectBeforeMoveEventHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectBeforeMovePayload>>\n>(\"Wb/RedirectBeforeMoveEventHandler\");\n\nexport namespace RedirectBeforeMoveEventHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectBeforeMovePayload>>;\n export type Event = DomainEvent<RedirectBeforeMovePayload>;\n export type Redirect = WbRedirect;\n}\n\n/** Hook into redirect lifecycle after a redirect is moved. */\nexport const RedirectAfterMoveEventHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectAfterMovePayload>>\n>(\"Wb/RedirectAfterMoveEventHandler\");\n\nexport namespace RedirectAfterMoveEventHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectAfterMovePayload>>;\n export type Event = DomainEvent<RedirectAfterMovePayload>;\n export type Redirect = WbRedirect;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAUpE;AACA;AACA;;AAOA;AACA;AACA;;AAaA,OAAO,MAAMC,sBAAsB,GAAGD,iBAAiB,CACnD,2BACJ,CAAC;;AAUD;AACA;AACA;;AAcA;AACA,OAAO,MAAME,mBAAmB,GAC5BF,iBAAiB,CAAuB,wBAAwB,CAAC;;AAUrE;AACA;AACA;;AAaA;AACA;AACA;;AAEA;AACA,OAAO,MAAMG,8BAA8B,GAAGH,iBAAiB,CAE7D,mCAAmC,CAAC;AAQtC;AACA,OAAO,MAAMI,6BAA6B,GAAGJ,iBAAiB,CAE5D,kCAAkC,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 { RedirectBeforeMovePayload, RedirectAfterMovePayload } from "./abstractions.js";
3
3
  export declare class RedirectBeforeMoveEvent extends DomainEvent<RedirectBeforeMovePayload> {
4
4
  eventType: "redirect.beforeMove";
5
- getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<DomainEvent<RedirectBeforeMovePayload>>>;
5
+ getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<RedirectBeforeMovePayload>>>;
6
6
  }
7
7
  export declare class RedirectAfterMoveEvent extends DomainEvent<RedirectAfterMovePayload> {
8
8
  eventType: "redirect.afterMove";
9
- getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<DomainEvent<RedirectAfterMovePayload>>>;
9
+ getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<RedirectAfterMovePayload>>>;
10
10
  }
@@ -1,4 +1,4 @@
1
- import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
1
+ import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
2
2
  import { RedirectBeforeMoveEventHandler, RedirectAfterMoveEventHandler } from "./abstractions.js";
3
3
  // RedirectBeforeMove Event
4
4
  export class RedirectBeforeMoveEvent extends DomainEvent {