@webiny/api-website-builder 6.1.0 → 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,74 @@
1
+ import { Result, createImplementation } from "@webiny/feature/api";
2
+ import { TranslatePageUseCase as UseCaseAbstraction } from "./abstractions.js";
3
+ import { DuplicatePageRepository } from "../DuplicatePage/abstractions.js";
4
+ import { GetPageByIdUseCase } from "../GetPageById/index.js";
5
+ import { GetLanguageByCodeUseCase } from "@webiny/languages/exports/api/languages.js";
6
+ import { ListLanguagesUseCase } from "@webiny/languages/exports/api/languages.js";
7
+ import { WbPermissions } from "../../permissions/abstractions.js";
8
+ import { PageNotAuthorizedError, PageTranslationError, PagePersistenceError } from "../../../domain/page/errors.js";
9
+ import { PagePath } from "../../../domain/page/PagePath.js";
10
+ class TranslatePageUseCaseImpl {
11
+ constructor(permissions, getPageById, getLanguageByCode, listLanguages, duplicatePageRepository) {
12
+ this.permissions = permissions;
13
+ this.getPageById = getPageById;
14
+ this.getLanguageByCode = getLanguageByCode;
15
+ this.listLanguages = listLanguages;
16
+ this.duplicatePageRepository = duplicatePageRepository;
17
+ }
18
+ async execute(params) {
19
+ const hasPermission = await this.permissions.canCreate("page");
20
+ if (!hasPermission) {
21
+ return Result.fail(new PageNotAuthorizedError());
22
+ }
23
+
24
+ // Validate language code.
25
+ const languageResult = await this.getLanguageByCode.execute(params.languageCode);
26
+ if (languageResult.isFail()) {
27
+ return Result.fail(new PageTranslationError(params.languageCode));
28
+ }
29
+
30
+ // Get all supported language codes.
31
+ const languagesResult = await this.listLanguages.execute();
32
+ if (languagesResult.isFail()) {
33
+ return Result.fail(new PagePersistenceError(new Error("Failed to fetch supported languages")));
34
+ }
35
+ const supportedCodes = languagesResult.value.map(lang => lang.code);
36
+
37
+ // Fetch source page to resolve lineage.
38
+ const getResult = await this.getPageById.execute(params.pageId);
39
+ if (getResult.isFail()) {
40
+ return getResult;
41
+ }
42
+ const sourcePage = getResult.value;
43
+
44
+ // Resolve sourcePage: always point to the root base page.
45
+ const resolvedSourcePageId = sourcePage.properties.sourcePage ?? sourcePage.entryId;
46
+
47
+ // Duplicate the page with translation modifications.
48
+ const result = await this.duplicatePageRepository.execute({
49
+ id: params.pageId
50
+ }, ({
51
+ duplicate
52
+ }) => {
53
+ const originalPath = sourcePage.properties.path ?? "/";
54
+ const pagePath = PagePath.create(originalPath);
55
+ const translatedPath = pagePath.setLanguageCode(params.languageCode, supportedCodes).toString();
56
+ duplicate.properties.language = params.languageCode;
57
+ duplicate.properties.sourcePage = resolvedSourcePageId;
58
+ duplicate.properties.path = translatedPath;
59
+ duplicate.properties.title = sourcePage.properties.title;
60
+ duplicate.location.folderId = params.folderId;
61
+ });
62
+ if (result.isFail()) {
63
+ return result;
64
+ }
65
+ return Result.ok(result.value);
66
+ }
67
+ }
68
+ export const TranslatePageUseCase = createImplementation({
69
+ abstraction: UseCaseAbstraction,
70
+ implementation: TranslatePageUseCaseImpl,
71
+ dependencies: [WbPermissions, GetPageByIdUseCase, GetLanguageByCodeUseCase, ListLanguagesUseCase, DuplicatePageRepository]
72
+ });
73
+
74
+ //# sourceMappingURL=TranslatePageUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Result","createImplementation","TranslatePageUseCase","UseCaseAbstraction","DuplicatePageRepository","GetPageByIdUseCase","GetLanguageByCodeUseCase","ListLanguagesUseCase","WbPermissions","PageNotAuthorizedError","PageTranslationError","PagePersistenceError","PagePath","TranslatePageUseCaseImpl","constructor","permissions","getPageById","getLanguageByCode","listLanguages","duplicatePageRepository","execute","params","hasPermission","canCreate","fail","languageResult","languageCode","isFail","languagesResult","Error","supportedCodes","value","map","lang","code","getResult","pageId","sourcePage","resolvedSourcePageId","properties","entryId","result","id","duplicate","originalPath","path","pagePath","create","translatedPath","setLanguageCode","toString","language","title","location","folderId","ok","abstraction","implementation","dependencies"],"sources":["TranslatePageUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport { TranslatePageUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { DuplicatePageRepository } from \"~/features/pages/DuplicatePage/abstractions.js\";\nimport { GetPageByIdUseCase } from \"~/features/pages/GetPageById/index.js\";\nimport { GetLanguageByCodeUseCase } from \"@webiny/languages/exports/api/languages.js\";\nimport { ListLanguagesUseCase } from \"@webiny/languages/exports/api/languages.js\";\nimport { WbPermissions } from \"~/features/permissions/abstractions.js\";\nimport {\n PageNotAuthorizedError,\n PageTranslationError,\n PagePersistenceError\n} from \"~/domain/page/errors.js\";\nimport { PagePath } from \"~/domain/page/PagePath.js\";\n\nclass TranslatePageUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private getPageById: GetPageByIdUseCase.Interface,\n private getLanguageByCode: GetLanguageByCodeUseCase.Interface,\n private listLanguages: ListLanguagesUseCase.Interface,\n private duplicatePageRepository: DuplicatePageRepository.Interface\n ) {}\n\n async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canCreate(\"page\");\n if (!hasPermission) {\n return Result.fail(new PageNotAuthorizedError());\n }\n\n // Validate language code.\n const languageResult = await this.getLanguageByCode.execute(params.languageCode);\n if (languageResult.isFail()) {\n return Result.fail(new PageTranslationError(params.languageCode));\n }\n\n // Get all supported language codes.\n const languagesResult = await this.listLanguages.execute();\n if (languagesResult.isFail()) {\n return Result.fail(\n new PagePersistenceError(new Error(\"Failed to fetch supported languages\"))\n );\n }\n\n const supportedCodes = languagesResult.value.map(lang => lang.code);\n\n // Fetch source page to resolve lineage.\n const getResult = await this.getPageById.execute(params.pageId);\n if (getResult.isFail()) {\n return getResult;\n }\n\n const sourcePage = getResult.value;\n\n // Resolve sourcePage: always point to the root base page.\n const resolvedSourcePageId = sourcePage.properties.sourcePage ?? sourcePage.entryId;\n\n // Duplicate the page with translation modifications.\n const result = await this.duplicatePageRepository.execute(\n { id: params.pageId },\n ({ duplicate }) => {\n const originalPath: string = sourcePage.properties.path ?? \"/\";\n const pagePath = PagePath.create(originalPath);\n const translatedPath = pagePath\n .setLanguageCode(params.languageCode, supportedCodes)\n .toString();\n\n duplicate.properties.language = params.languageCode;\n duplicate.properties.sourcePage = resolvedSourcePageId;\n duplicate.properties.path = translatedPath;\n duplicate.properties.title = sourcePage.properties.title;\n duplicate.location.folderId = params.folderId;\n }\n );\n\n if (result.isFail()) {\n return result;\n }\n\n return Result.ok(result.value);\n }\n}\n\nexport const TranslatePageUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: TranslatePageUseCaseImpl,\n dependencies: [\n WbPermissions,\n GetPageByIdUseCase,\n GetLanguageByCodeUseCase,\n ListLanguagesUseCase,\n DuplicatePageRepository\n ]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SAASC,oBAAoB,IAAIC,kBAAkB;AACnD,SAASC,uBAAuB;AAChC,SAASC,kBAAkB;AAC3B,SAASC,wBAAwB,QAAQ,4CAA4C;AACrF,SAASC,oBAAoB,QAAQ,4CAA4C;AACjF,SAASC,aAAa;AACtB,SACIC,sBAAsB,EACtBC,oBAAoB,EACpBC,oBAAoB;AAExB,SAASC,QAAQ;AAEjB,MAAMC,wBAAwB,CAAyC;EACnEC,WAAWA,CACCC,WAAoC,EACpCC,WAAyC,EACzCC,iBAAqD,EACrDC,aAA6C,EAC7CC,uBAA0D,EACpE;IAAA,KALUJ,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,iBAAqD,GAArDA,iBAAqD;IAAA,KACrDC,aAA6C,GAA7CA,aAA6C;IAAA,KAC7CC,uBAA0D,GAA1DA,uBAA0D;EACnE;EAEH,MAAMC,OAAOA,CAACC,MAAiC,EAA6B;IACxE,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACP,WAAW,CAACQ,SAAS,CAAC,MAAM,CAAC;IAC9D,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOtB,MAAM,CAACwB,IAAI,CAAC,IAAIf,sBAAsB,CAAC,CAAC,CAAC;IACpD;;IAEA;IACA,MAAMgB,cAAc,GAAG,MAAM,IAAI,CAACR,iBAAiB,CAACG,OAAO,CAACC,MAAM,CAACK,YAAY,CAAC;IAChF,IAAID,cAAc,CAACE,MAAM,CAAC,CAAC,EAAE;MACzB,OAAO3B,MAAM,CAACwB,IAAI,CAAC,IAAId,oBAAoB,CAACW,MAAM,CAACK,YAAY,CAAC,CAAC;IACrE;;IAEA;IACA,MAAME,eAAe,GAAG,MAAM,IAAI,CAACV,aAAa,CAACE,OAAO,CAAC,CAAC;IAC1D,IAAIQ,eAAe,CAACD,MAAM,CAAC,CAAC,EAAE;MAC1B,OAAO3B,MAAM,CAACwB,IAAI,CACd,IAAIb,oBAAoB,CAAC,IAAIkB,KAAK,CAAC,qCAAqC,CAAC,CAC7E,CAAC;IACL;IAEA,MAAMC,cAAc,GAAGF,eAAe,CAACG,KAAK,CAACC,GAAG,CAACC,IAAI,IAAIA,IAAI,CAACC,IAAI,CAAC;;IAEnE;IACA,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACnB,WAAW,CAACI,OAAO,CAACC,MAAM,CAACe,MAAM,CAAC;IAC/D,IAAID,SAAS,CAACR,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOQ,SAAS;IACpB;IAEA,MAAME,UAAU,GAAGF,SAAS,CAACJ,KAAK;;IAElC;IACA,MAAMO,oBAAoB,GAAGD,UAAU,CAACE,UAAU,CAACF,UAAU,IAAIA,UAAU,CAACG,OAAO;;IAEnF;IACA,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACtB,uBAAuB,CAACC,OAAO,CACrD;MAAEsB,EAAE,EAAErB,MAAM,CAACe;IAAO,CAAC,EACrB,CAAC;MAAEO;IAAU,CAAC,KAAK;MACf,MAAMC,YAAoB,GAAGP,UAAU,CAACE,UAAU,CAACM,IAAI,IAAI,GAAG;MAC9D,MAAMC,QAAQ,GAAGlC,QAAQ,CAACmC,MAAM,CAACH,YAAY,CAAC;MAC9C,MAAMI,cAAc,GAAGF,QAAQ,CAC1BG,eAAe,CAAC5B,MAAM,CAACK,YAAY,EAAEI,cAAc,CAAC,CACpDoB,QAAQ,CAAC,CAAC;MAEfP,SAAS,CAACJ,UAAU,CAACY,QAAQ,GAAG9B,MAAM,CAACK,YAAY;MACnDiB,SAAS,CAACJ,UAAU,CAACF,UAAU,GAAGC,oBAAoB;MACtDK,SAAS,CAACJ,UAAU,CAACM,IAAI,GAAGG,cAAc;MAC1CL,SAAS,CAACJ,UAAU,CAACa,KAAK,GAAGf,UAAU,CAACE,UAAU,CAACa,KAAK;MACxDT,SAAS,CAACU,QAAQ,CAACC,QAAQ,GAAGjC,MAAM,CAACiC,QAAQ;IACjD,CACJ,CAAC;IAED,IAAIb,MAAM,CAACd,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOc,MAAM;IACjB;IAEA,OAAOzC,MAAM,CAACuD,EAAE,CAACd,MAAM,CAACV,KAAK,CAAC;EAClC;AACJ;AAEA,OAAO,MAAM7B,oBAAoB,GAAGD,oBAAoB,CAAC;EACrDuD,WAAW,EAAErD,kBAAkB;EAC/BsD,cAAc,EAAE5C,wBAAwB;EACxC6C,YAAY,EAAE,CACVlD,aAAa,EACbH,kBAAkB,EAClBC,wBAAwB,EACxBC,oBAAoB,EACpBH,uBAAuB;AAE/B,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ import { type Result } from "@webiny/feature/api";
2
+ import type { WbPage } from "../../../domain/page/abstractions.js";
3
+ import { PageValidationError, PageNotFoundError, PagePersistenceError, PageNotAuthorizedError, PageTranslationError } from "../../../domain/page/errors.js";
4
+ export interface ITranslateWbPageParams {
5
+ pageId: string;
6
+ languageCode: string;
7
+ folderId: string;
8
+ }
9
+ export interface ITranslatePageUseCase {
10
+ execute(params: ITranslateWbPageParams): Promise<Result<WbPage, UseCaseError>>;
11
+ }
12
+ export interface ITranslatePageUseCaseErrors {
13
+ notAuthorized: PageNotAuthorizedError;
14
+ validation: PageValidationError;
15
+ notFound: PageNotFoundError;
16
+ persistence: PagePersistenceError;
17
+ translation: PageTranslationError;
18
+ }
19
+ type UseCaseError = ITranslatePageUseCaseErrors[keyof ITranslatePageUseCaseErrors];
20
+ /** Translate a page to a different language. */
21
+ export declare const TranslatePageUseCase: import("@webiny/di").Abstraction<ITranslatePageUseCase>;
22
+ export declare namespace TranslatePageUseCase {
23
+ type Interface = ITranslatePageUseCase;
24
+ type Params = ITranslateWbPageParams;
25
+ type Return = Promise<Result<WbPage, UseCaseError>>;
26
+ type Error = UseCaseError;
27
+ type Page = WbPage;
28
+ }
29
+ export {};
@@ -0,0 +1,14 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+
3
+ // ============================================================================
4
+ // Type Definitions
5
+ // ============================================================================
6
+
7
+ // ============================================================================
8
+ // Use Case Abstraction
9
+ // ============================================================================
10
+
11
+ /** Translate a page to a different language. */
12
+ export const TranslatePageUseCase = createAbstraction("Wb/TranslatePageUseCase");
13
+
14
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createAbstraction","TranslatePageUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { WbPage } from \"~/domain/page/abstractions.js\";\nimport {\n PageValidationError,\n PageNotFoundError,\n PagePersistenceError,\n PageNotAuthorizedError,\n PageTranslationError\n} from \"~/domain/page/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface ITranslateWbPageParams {\n pageId: string;\n languageCode: string;\n folderId: string;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface ITranslatePageUseCase {\n execute(params: ITranslateWbPageParams): Promise<Result<WbPage, UseCaseError>>;\n}\n\nexport interface ITranslatePageUseCaseErrors {\n notAuthorized: PageNotAuthorizedError;\n validation: PageValidationError;\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n translation: PageTranslationError;\n}\n\ntype UseCaseError = ITranslatePageUseCaseErrors[keyof ITranslatePageUseCaseErrors];\n\n/** Translate a page to a different language. */\nexport const TranslatePageUseCase =\n createAbstraction<ITranslatePageUseCase>(\"Wb/TranslatePageUseCase\");\n\nexport namespace TranslatePageUseCase {\n export type Interface = ITranslatePageUseCase;\n export type Params = ITranslateWbPageParams;\n export type Return = Promise<Result<WbPage, UseCaseError>>;\n export type Error = UseCaseError;\n export type Page = WbPage;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAUpE;AACA;AACA;;AAQA;AACA;AACA;;AAgBA;AACA,OAAO,MAAMC,oBAAoB,GAC7BD,iBAAiB,CAAwB,yBAAyB,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export declare const TranslatePageFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
@@ -0,0 +1,10 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { TranslatePageUseCase } from "./TranslatePageUseCase.js";
3
+ export const TranslatePageFeature = createFeature({
4
+ name: "WebsiteBuilder/TranslatePage",
5
+ register(container) {
6
+ container.register(TranslatePageUseCase);
7
+ }
8
+ });
9
+
10
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createFeature","TranslatePageUseCase","TranslatePageFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { TranslatePageUseCase } from \"./TranslatePageUseCase.js\";\n\nexport const TranslatePageFeature = createFeature({\n name: \"WebsiteBuilder/TranslatePage\",\n register(container) {\n container.register(TranslatePageUseCase);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,oBAAoB;AAE7B,OAAO,MAAMC,oBAAoB,GAAGF,aAAa,CAAC;EAC9CG,IAAI,EAAE,8BAA8B;EACpCC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,oBAAoB,CAAC;EAC5C;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export { TranslatePageUseCase } from "./abstractions.js";
@@ -0,0 +1,3 @@
1
+ export { TranslatePageUseCase } from "./abstractions.js";
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TranslatePageUseCase"],"sources":["index.ts"],"sourcesContent":["export { TranslatePageUseCase } from \"./abstractions.js\";\n"],"mappings":"AAAA,SAASA,oBAAoB","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 { TrashPageUseCase as UseCaseAbstraction, TrashPageRepository } from "./abstractions.js";
3
3
  import { GetPageByIdUseCase } from "../../../features/pages/GetPageById/index.js";
4
- import { WbPermissions } from "../../../domain/permissions.js";
4
+ import { WbPermissions } from "../../../features/permissions/abstractions.js";
5
5
  declare class TrashPageUseCaseImpl implements UseCaseAbstraction.Interface {
6
6
  private permissions;
7
7
  private eventPublisher;
@@ -1,9 +1,9 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
2
+ import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import { TrashPageUseCase as UseCaseAbstraction, TrashPageRepository } from "./abstractions.js";
4
4
  import { PageBeforeTrashEvent, PageAfterTrashEvent } from "./events.js";
5
5
  import { GetPageByIdUseCase } from "../GetPageById/index.js";
6
- import { WbPermissions } from "../../../domain/permissions.js";
6
+ import { WbPermissions } from "../../permissions/abstractions.js";
7
7
  import { PageNotAuthorizedError } from "../../../domain/page/errors.js";
8
8
  class TrashPageUseCaseImpl {
9
9
  constructor(permissions, eventPublisher, getPageById, repository) {
@@ -46,7 +46,7 @@ class TrashPageUseCaseImpl {
46
46
  }
47
47
  export const TrashPageUseCase = UseCaseAbstraction.createImplementation({
48
48
  implementation: TrashPageUseCaseImpl,
49
- dependencies: [WbPermissions.Abstraction, EventPublisher, GetPageByIdUseCase, TrashPageRepository]
49
+ dependencies: [WbPermissions, EventPublisher, GetPageByIdUseCase, TrashPageRepository]
50
50
  });
51
51
 
52
52
  //# sourceMappingURL=TrashPageUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","EventPublisher","TrashPageUseCase","UseCaseAbstraction","TrashPageRepository","PageBeforeTrashEvent","PageAfterTrashEvent","GetPageByIdUseCase","WbPermissions","PageNotAuthorizedError","TrashPageUseCaseImpl","constructor","permissions","eventPublisher","getPageById","repository","execute","params","getResult","id","isFail","fail","error","page","value","canDelete","beforeEvent","publish","result","afterEvent","ok","createImplementation","implementation","dependencies","Abstraction"],"sources":["TrashPageUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport { TrashPageUseCase as UseCaseAbstraction, TrashPageRepository } from \"./abstractions.js\";\nimport { PageBeforeTrashEvent, PageAfterTrashEvent } from \"./events.js\";\nimport { GetPageByIdUseCase } from \"~/features/pages/GetPageById/index.js\";\nimport { WbPermissions } from \"~/domain/permissions.js\";\nimport { PageNotAuthorizedError } from \"~/domain/page/errors.js\";\n\nclass TrashPageUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getPageById: GetPageByIdUseCase.Interface,\n private repository: TrashPageRepository.Interface\n ) {}\n\n public async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n // Get the page first to include in events and for item-level permission check\n const getResult = await this.getPageById.execute(params.id);\n\n if (getResult.isFail()) {\n return Result.fail(getResult.error);\n }\n\n const page = getResult.value;\n\n const canDelete = await this.permissions.canDelete(\"page\", page);\n if (!canDelete) {\n return Result.fail(new PageNotAuthorizedError());\n }\n\n // Publish before delete event\n const beforeEvent = new PageBeforeTrashEvent({\n page\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 PageAfterTrashEvent({\n page\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok();\n }\n}\n\nexport const TrashPageUseCase = UseCaseAbstraction.createImplementation({\n implementation: TrashPageUseCaseImpl,\n dependencies: [\n WbPermissions.Abstraction,\n EventPublisher,\n GetPageByIdUseCase,\n TrashPageRepository\n ]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,cAAc,QAEX,0CAA0C;AACjD,SAASC,gBAAgB,IAAIC,kBAAkB,EAAEC,mBAAmB;AACpE,SAASC,oBAAoB,EAAEC,mBAAmB;AAClD,SAASC,kBAAkB;AAC3B,SAASC,aAAa;AACtB,SAASC,sBAAsB;AAE/B,MAAMC,oBAAoB,CAAyC;EAC/DC,WAAWA,CACCC,WAAoC,EACpCC,cAAmD,EACnDC,WAAyC,EACzCC,UAAyC,EACnD;IAAA,KAJUH,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,UAAyC,GAAzCA,UAAyC;EAClD;EAEH,MAAaC,OAAOA,CAACC,MAAiC,EAA6B;IAC/E;IACA,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACJ,WAAW,CAACE,OAAO,CAACC,MAAM,CAACE,EAAE,CAAC;IAE3D,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOpB,MAAM,CAACqB,IAAI,CAACH,SAAS,CAACI,KAAK,CAAC;IACvC;IAEA,MAAMC,IAAI,GAAGL,SAAS,CAACM,KAAK;IAE5B,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACb,WAAW,CAACa,SAAS,CAAC,MAAM,EAAEF,IAAI,CAAC;IAChE,IAAI,CAACE,SAAS,EAAE;MACZ,OAAOzB,MAAM,CAACqB,IAAI,CAAC,IAAIZ,sBAAsB,CAAC,CAAC,CAAC;IACpD;;IAEA;IACA,MAAMiB,WAAW,GAAG,IAAIrB,oBAAoB,CAAC;MACzCkB;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,mBAAmB,CAAC;MACvCiB;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,CAACV,cAAc,CAACc,OAAO,CAACE,UAAU,CAAC;IAE7C,OAAO7B,MAAM,CAAC8B,EAAE,CAAC,CAAC;EACtB;AACJ;AAEA,OAAO,MAAM5B,gBAAgB,GAAGC,kBAAkB,CAAC4B,oBAAoB,CAAC;EACpEC,cAAc,EAAEtB,oBAAoB;EACpCuB,YAAY,EAAE,CACVzB,aAAa,CAAC0B,WAAW,EACzBjC,cAAc,EACdM,kBAAkB,EAClBH,mBAAmB;AAE3B,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Result","EventPublisher","TrashPageUseCase","UseCaseAbstraction","TrashPageRepository","PageBeforeTrashEvent","PageAfterTrashEvent","GetPageByIdUseCase","WbPermissions","PageNotAuthorizedError","TrashPageUseCaseImpl","constructor","permissions","eventPublisher","getPageById","repository","execute","params","getResult","id","isFail","fail","error","page","value","canDelete","beforeEvent","publish","result","afterEvent","ok","createImplementation","implementation","dependencies"],"sources":["TrashPageUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { TrashPageUseCase as UseCaseAbstraction, TrashPageRepository } from \"./abstractions.js\";\nimport { PageBeforeTrashEvent, PageAfterTrashEvent } from \"./events.js\";\nimport { GetPageByIdUseCase } from \"~/features/pages/GetPageById/index.js\";\nimport { WbPermissions } from \"~/features/permissions/abstractions.js\";\nimport { PageNotAuthorizedError } from \"~/domain/page/errors.js\";\n\nclass TrashPageUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getPageById: GetPageByIdUseCase.Interface,\n private repository: TrashPageRepository.Interface\n ) {}\n\n public async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n // Get the page first to include in events and for item-level permission check\n const getResult = await this.getPageById.execute(params.id);\n\n if (getResult.isFail()) {\n return Result.fail(getResult.error);\n }\n\n const page = getResult.value;\n\n const canDelete = await this.permissions.canDelete(\"page\", page);\n if (!canDelete) {\n return Result.fail(new PageNotAuthorizedError());\n }\n\n // Publish before delete event\n const beforeEvent = new PageBeforeTrashEvent({\n page\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 PageAfterTrashEvent({\n page\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok();\n }\n}\n\nexport const TrashPageUseCase = UseCaseAbstraction.createImplementation({\n implementation: TrashPageUseCaseImpl,\n dependencies: [WbPermissions, EventPublisher, GetPageByIdUseCase, TrashPageRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,cAAc,QAEX,mDAAmD;AAC1D,SAASC,gBAAgB,IAAIC,kBAAkB,EAAEC,mBAAmB;AACpE,SAASC,oBAAoB,EAAEC,mBAAmB;AAClD,SAASC,kBAAkB;AAC3B,SAASC,aAAa;AACtB,SAASC,sBAAsB;AAE/B,MAAMC,oBAAoB,CAAyC;EAC/DC,WAAWA,CACCC,WAAoC,EACpCC,cAAmD,EACnDC,WAAyC,EACzCC,UAAyC,EACnD;IAAA,KAJUH,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,UAAyC,GAAzCA,UAAyC;EAClD;EAEH,MAAaC,OAAOA,CAACC,MAAiC,EAA6B;IAC/E;IACA,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACJ,WAAW,CAACE,OAAO,CAACC,MAAM,CAACE,EAAE,CAAC;IAE3D,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOpB,MAAM,CAACqB,IAAI,CAACH,SAAS,CAACI,KAAK,CAAC;IACvC;IAEA,MAAMC,IAAI,GAAGL,SAAS,CAACM,KAAK;IAE5B,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACb,WAAW,CAACa,SAAS,CAAC,MAAM,EAAEF,IAAI,CAAC;IAChE,IAAI,CAACE,SAAS,EAAE;MACZ,OAAOzB,MAAM,CAACqB,IAAI,CAAC,IAAIZ,sBAAsB,CAAC,CAAC,CAAC;IACpD;;IAEA;IACA,MAAMiB,WAAW,GAAG,IAAIrB,oBAAoB,CAAC;MACzCkB;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,mBAAmB,CAAC;MACvCiB;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,CAACV,cAAc,CAACc,OAAO,CAACE,UAAU,CAAC;IAE7C,OAAO7B,MAAM,CAAC8B,EAAE,CAAC,CAAC;EACtB;AACJ;AAEA,OAAO,MAAM5B,gBAAgB,GAAGC,kBAAkB,CAAC4B,oBAAoB,CAAC;EACpEC,cAAc,EAAEtB,oBAAoB;EACpCuB,YAAY,EAAE,CAACzB,aAAa,EAAEP,cAAc,EAAEM,kBAAkB,EAAEH,mBAAmB;AACzF,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 { WbPage } from "../../../domain/page/abstractions.js";
5
5
  import { PageNotFoundError, PagePersistenceError, PageNotAuthorizedError } from "../../../domain/page/errors.js";
6
6
  export interface ITrashWbPageParams {
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","TrashPageRepository","TrashPageUseCase","PageBeforeTrashEventHandler","PageAfterTrashEventHandler"],"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 { WbPage } from \"~/domain/page/abstractions.js\";\nimport {\n PageNotFoundError,\n PagePersistenceError,\n PageNotAuthorizedError\n} from \"~/domain/page/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface ITrashWbPageParams {\n id: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface ITrashPageRepository {\n execute(params: ITrashWbPageParams): Promise<Result<void, RepositoryError>>;\n}\n\nexport interface ITrashPageRepositoryErrors {\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype RepositoryError = ITrashPageRepositoryErrors[keyof ITrashPageRepositoryErrors];\n\nexport const TrashPageRepository =\n createAbstraction<ITrashPageRepository>(\"Wb/TrashPageRepository\");\n\nexport namespace TrashPageRepository {\n export type Interface = ITrashPageRepository;\n export type Params = ITrashWbPageParams;\n export type Return = Promise<Result<void, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface ITrashPageUseCase {\n execute(params: ITrashWbPageParams): Promise<Result<void, UseCaseError>>;\n}\n\nexport interface ITrashPageUseCaseErrors {\n notAuthorized: PageNotAuthorizedError;\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype UseCaseError = ITrashPageUseCaseErrors[keyof ITrashPageUseCaseErrors];\n\nexport const TrashPageUseCase = createAbstraction<ITrashPageUseCase>(\"Wb/TrashPageUseCase\");\n\nexport namespace TrashPageUseCase {\n export type Interface = ITrashPageUseCase;\n export type Params = ITrashWbPageParams;\n export type Return = Promise<Result<void, UseCaseError>>;\n export type Error = UseCaseError;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface PageBeforeTrashPayload {\n page: WbPage;\n}\n\nexport interface PageAfterTrashPayload {\n page: WbPage;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\nexport const PageBeforeTrashEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageBeforeTrashPayload>>\n>(\"Wb/PageBeforeTrashEventHandler\");\n\nexport namespace PageBeforeTrashEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageBeforeTrashPayload>>;\n export type Event = DomainEvent<PageBeforeTrashPayload>;\n export type Page = WbPage;\n}\n\nexport const PageAfterTrashEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageAfterTrashPayload>>\n>(\"Wb/PageAfterTrashEventHandler\");\n\nexport namespace PageAfterTrashEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageAfterTrashPayload>>;\n export type Event = DomainEvent<PageAfterTrashPayload>;\n export type Page = WbPage;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAUpE;AACA;AACA;;AAMA;AACA;AACA;;AAaA,OAAO,MAAMC,mBAAmB,GAC5BD,iBAAiB,CAAuB,wBAAwB,CAAC;;AASrE;AACA;AACA;;AAcA,OAAO,MAAME,gBAAgB,GAAGF,iBAAiB,CAAoB,qBAAqB,CAAC;;AAS3F;AACA;AACA;;AAUA;AACA;AACA;;AAEA,OAAO,MAAMG,2BAA2B,GAAGH,iBAAiB,CAE1D,gCAAgC,CAAC;AAQnC,OAAO,MAAMI,0BAA0B,GAAGJ,iBAAiB,CAEzD,+BAA+B,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","TrashPageRepository","TrashPageUseCase","PageBeforeTrashEventHandler","PageAfterTrashEventHandler"],"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 { WbPage } from \"~/domain/page/abstractions.js\";\nimport {\n PageNotFoundError,\n PagePersistenceError,\n PageNotAuthorizedError\n} from \"~/domain/page/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface ITrashWbPageParams {\n id: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface ITrashPageRepository {\n execute(params: ITrashWbPageParams): Promise<Result<void, RepositoryError>>;\n}\n\nexport interface ITrashPageRepositoryErrors {\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype RepositoryError = ITrashPageRepositoryErrors[keyof ITrashPageRepositoryErrors];\n\nexport const TrashPageRepository =\n createAbstraction<ITrashPageRepository>(\"Wb/TrashPageRepository\");\n\nexport namespace TrashPageRepository {\n export type Interface = ITrashPageRepository;\n export type Params = ITrashWbPageParams;\n export type Return = Promise<Result<void, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface ITrashPageUseCase {\n execute(params: ITrashWbPageParams): Promise<Result<void, UseCaseError>>;\n}\n\nexport interface ITrashPageUseCaseErrors {\n notAuthorized: PageNotAuthorizedError;\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype UseCaseError = ITrashPageUseCaseErrors[keyof ITrashPageUseCaseErrors];\n\nexport const TrashPageUseCase = createAbstraction<ITrashPageUseCase>(\"Wb/TrashPageUseCase\");\n\nexport namespace TrashPageUseCase {\n export type Interface = ITrashPageUseCase;\n export type Params = ITrashWbPageParams;\n export type Return = Promise<Result<void, UseCaseError>>;\n export type Error = UseCaseError;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface PageBeforeTrashPayload {\n page: WbPage;\n}\n\nexport interface PageAfterTrashPayload {\n page: WbPage;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\nexport const PageBeforeTrashEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageBeforeTrashPayload>>\n>(\"Wb/PageBeforeTrashEventHandler\");\n\nexport namespace PageBeforeTrashEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageBeforeTrashPayload>>;\n export type Event = DomainEvent<PageBeforeTrashPayload>;\n export type Page = WbPage;\n}\n\nexport const PageAfterTrashEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageAfterTrashPayload>>\n>(\"Wb/PageAfterTrashEventHandler\");\n\nexport namespace PageAfterTrashEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageAfterTrashPayload>>;\n export type Event = DomainEvent<PageAfterTrashPayload>;\n export type Page = WbPage;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAUpE;AACA;AACA;;AAMA;AACA;AACA;;AAaA,OAAO,MAAMC,mBAAmB,GAC5BD,iBAAiB,CAAuB,wBAAwB,CAAC;;AASrE;AACA;AACA;;AAcA,OAAO,MAAME,gBAAgB,GAAGF,iBAAiB,CAAoB,qBAAqB,CAAC;;AAS3F;AACA;AACA;;AAUA;AACA;AACA;;AAEA,OAAO,MAAMG,2BAA2B,GAAGH,iBAAiB,CAE1D,gCAAgC,CAAC;AAQnC,OAAO,MAAMI,0BAA0B,GAAGJ,iBAAiB,CAEzD,+BAA+B,CAAC","ignoreList":[]}
@@ -1,10 +1,10 @@
1
- import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
1
+ import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
2
2
  import type { PageBeforeTrashPayload, PageAfterTrashPayload } from "./abstractions.js";
3
3
  export declare class PageBeforeTrashEvent extends DomainEvent<PageBeforeTrashPayload> {
4
4
  eventType: "page.beforeTrash";
5
- getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<DomainEvent<PageBeforeTrashPayload>>>;
5
+ getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<PageBeforeTrashPayload>>>;
6
6
  }
7
7
  export declare class PageAfterTrashEvent extends DomainEvent<PageAfterTrashPayload> {
8
8
  eventType: "page.afterTrash";
9
- getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<DomainEvent<PageAfterTrashPayload>>>;
9
+ getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<PageAfterTrashPayload>>>;
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 { PageBeforeTrashEventHandler, PageAfterTrashEventHandler } from "./abstractions.js";
3
3
  // PageBeforeTrash Event
4
4
  export class PageBeforeTrashEvent extends DomainEvent {
@@ -1 +1 @@
1
- {"version":3,"names":["DomainEvent","PageBeforeTrashEventHandler","PageAfterTrashEventHandler","PageBeforeTrashEvent","eventType","getHandlerAbstraction","PageAfterTrashEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport { PageBeforeTrashEventHandler, PageAfterTrashEventHandler } from \"./abstractions.js\";\nimport type { PageBeforeTrashPayload, PageAfterTrashPayload } from \"./abstractions.js\";\n\n// PageBeforeTrash Event\nexport class PageBeforeTrashEvent extends DomainEvent<PageBeforeTrashPayload> {\n eventType = \"page.beforeTrash\" as const;\n\n getHandlerAbstraction() {\n return PageBeforeTrashEventHandler;\n }\n}\n\n// PageAfterTrash Event\nexport class PageAfterTrashEvent extends DomainEvent<PageAfterTrashPayload> {\n eventType = \"page.afterTrash\" as const;\n\n getHandlerAbstraction() {\n return PageAfterTrashEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,0CAA0C;AACtE,SAASC,2BAA2B,EAAEC,0BAA0B;AAGhE;AACA,OAAO,MAAMC,oBAAoB,SAASH,WAAW,CAAyB;EAC1EI,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,2BAA2B;EACtC;AACJ;;AAEA;AACA,OAAO,MAAMK,mBAAmB,SAASN,WAAW,CAAwB;EACxEI,SAAS,GAAG,iBAAiB;EAE7BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,0BAA0B;EACrC;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["DomainEvent","PageBeforeTrashEventHandler","PageAfterTrashEventHandler","PageBeforeTrashEvent","eventType","getHandlerAbstraction","PageAfterTrashEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { PageBeforeTrashEventHandler, PageAfterTrashEventHandler } from \"./abstractions.js\";\nimport type { PageBeforeTrashPayload, PageAfterTrashPayload } from \"./abstractions.js\";\n\n// PageBeforeTrash Event\nexport class PageBeforeTrashEvent extends DomainEvent<PageBeforeTrashPayload> {\n eventType = \"page.beforeTrash\" as const;\n\n getHandlerAbstraction() {\n return PageBeforeTrashEventHandler;\n }\n}\n\n// PageAfterTrash Event\nexport class PageAfterTrashEvent extends DomainEvent<PageAfterTrashPayload> {\n eventType = \"page.afterTrash\" as const;\n\n getHandlerAbstraction() {\n return PageAfterTrashEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,mDAAmD;AAC/E,SAASC,2BAA2B,EAAEC,0BAA0B;AAGhE;AACA,OAAO,MAAMC,oBAAoB,SAASH,WAAW,CAAyB;EAC1EI,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,2BAA2B;EACtC;AACJ;;AAEA;AACA,OAAO,MAAMK,mBAAmB,SAASN,WAAW,CAAwB;EACxEI,SAAS,GAAG,iBAAiB;EAE7BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,0BAA0B;EACrC;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 { UnpublishPageUseCase as UseCaseAbstraction, UnpublishPageRepository } from "./abstractions.js";
3
3
  import { GetPageByIdUseCase } from "../../../features/pages/GetPageById/index.js";
4
- import { WbPermissions } from "../../../domain/permissions.js";
4
+ import { WbPermissions } from "../../../features/permissions/abstractions.js";
5
5
  declare class UnpublishPageUseCaseImpl implements UseCaseAbstraction.Interface {
6
6
  private permissions;
7
7
  private eventPublisher;
@@ -1,9 +1,9 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
2
+ import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import { UnpublishPageUseCase as UseCaseAbstraction, UnpublishPageRepository } from "./abstractions.js";
4
4
  import { PageBeforeUnpublishEvent, PageAfterUnpublishEvent } from "./events.js";
5
5
  import { GetPageByIdUseCase } from "../GetPageById/index.js";
6
- import { WbPermissions } from "../../../domain/permissions.js";
6
+ import { WbPermissions } from "../../permissions/abstractions.js";
7
7
  import { PageNotAuthorizedError } from "../../../domain/page/errors.js";
8
8
  class UnpublishPageUseCaseImpl {
9
9
  constructor(permissions, eventPublisher, getPageById, repository) {
@@ -51,7 +51,7 @@ class UnpublishPageUseCaseImpl {
51
51
  }
52
52
  export const UnpublishPageUseCase = UseCaseAbstraction.createImplementation({
53
53
  implementation: UnpublishPageUseCaseImpl,
54
- dependencies: [WbPermissions.Abstraction, EventPublisher, GetPageByIdUseCase, UnpublishPageRepository]
54
+ dependencies: [WbPermissions, EventPublisher, GetPageByIdUseCase, UnpublishPageRepository]
55
55
  });
56
56
 
57
57
  //# sourceMappingURL=UnpublishPageUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","EventPublisher","UnpublishPageUseCase","UseCaseAbstraction","UnpublishPageRepository","PageBeforeUnpublishEvent","PageAfterUnpublishEvent","GetPageByIdUseCase","WbPermissions","PageNotAuthorizedError","UnpublishPageUseCaseImpl","constructor","permissions","eventPublisher","getPageById","repository","execute","params","hasPermission","canUnpublish","fail","getResult","id","isFail","page","value","canAccess","beforeEvent","publish","result","afterEvent","ok","createImplementation","implementation","dependencies","Abstraction"],"sources":["UnpublishPageUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport {\n UnpublishPageUseCase as UseCaseAbstraction,\n UnpublishPageRepository\n} from \"./abstractions.js\";\nimport { PageBeforeUnpublishEvent, PageAfterUnpublishEvent } from \"./events.js\";\nimport { GetPageByIdUseCase } from \"~/features/pages/GetPageById/index.js\";\nimport { WbPermissions } from \"~/domain/permissions.js\";\nimport { PageNotAuthorizedError } from \"~/domain/page/errors.js\";\n\nclass UnpublishPageUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getPageById: GetPageByIdUseCase.Interface,\n private repository: UnpublishPageRepository.Interface\n ) {}\n\n async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canUnpublish(\"page\");\n if (!hasPermission) {\n return Result.fail(new PageNotAuthorizedError());\n }\n\n // Get the page first for the before event\n const getResult = await this.getPageById.execute(params.id);\n\n if (getResult.isFail()) {\n return getResult;\n }\n\n const page = getResult.value;\n\n const canAccess = await this.permissions.canAccess(\"page\", page);\n if (!canAccess) {\n return Result.fail(new PageNotAuthorizedError());\n }\n\n // Publish before unpublish event\n const beforeEvent = new PageBeforeUnpublishEvent({\n page\n });\n\n await this.eventPublisher.publish(beforeEvent);\n\n // Execute the unpublish operation\n const result = await this.repository.execute(params);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after unpublish event\n const afterEvent = new PageAfterUnpublishEvent({\n page: result.value\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok(result.value);\n }\n}\n\nexport const UnpublishPageUseCase = UseCaseAbstraction.createImplementation({\n implementation: UnpublishPageUseCaseImpl,\n dependencies: [\n WbPermissions.Abstraction,\n EventPublisher,\n GetPageByIdUseCase,\n UnpublishPageRepository\n ]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,cAAc,QAEX,0CAA0C;AACjD,SACIC,oBAAoB,IAAIC,kBAAkB,EAC1CC,uBAAuB;AAE3B,SAASC,wBAAwB,EAAEC,uBAAuB;AAC1D,SAASC,kBAAkB;AAC3B,SAASC,aAAa;AACtB,SAASC,sBAAsB;AAE/B,MAAMC,wBAAwB,CAAyC;EACnEC,WAAWA,CACCC,WAAoC,EACpCC,cAAmD,EACnDC,WAAyC,EACzCC,UAA6C,EACvD;IAAA,KAJUH,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,UAA6C,GAA7CA,UAA6C;EACtD;EAEH,MAAMC,OAAOA,CAACC,MAAiC,EAA6B;IACxE,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACN,WAAW,CAACO,YAAY,CAAC,MAAM,CAAC;IACjE,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOlB,MAAM,CAACoB,IAAI,CAAC,IAAIX,sBAAsB,CAAC,CAAC,CAAC;IACpD;;IAEA;IACA,MAAMY,SAAS,GAAG,MAAM,IAAI,CAACP,WAAW,CAACE,OAAO,CAACC,MAAM,CAACK,EAAE,CAAC;IAE3D,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOF,SAAS;IACpB;IAEA,MAAMG,IAAI,GAAGH,SAAS,CAACI,KAAK;IAE5B,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACd,WAAW,CAACc,SAAS,CAAC,MAAM,EAAEF,IAAI,CAAC;IAChE,IAAI,CAACE,SAAS,EAAE;MACZ,OAAO1B,MAAM,CAACoB,IAAI,CAAC,IAAIX,sBAAsB,CAAC,CAAC,CAAC;IACpD;;IAEA;IACA,MAAMkB,WAAW,GAAG,IAAItB,wBAAwB,CAAC;MAC7CmB;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,CAACX,cAAc,CAACe,OAAO,CAACD,WAAW,CAAC;;IAE9C;IACA,MAAME,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,uBAAuB,CAAC;MAC3CkB,IAAI,EAAEK,MAAM,CAACJ;IACjB,CAAC,CAAC;IAEF,MAAM,IAAI,CAACZ,cAAc,CAACe,OAAO,CAACE,UAAU,CAAC;IAE7C,OAAO9B,MAAM,CAAC+B,EAAE,CAACF,MAAM,CAACJ,KAAK,CAAC;EAClC;AACJ;AAEA,OAAO,MAAMvB,oBAAoB,GAAGC,kBAAkB,CAAC6B,oBAAoB,CAAC;EACxEC,cAAc,EAAEvB,wBAAwB;EACxCwB,YAAY,EAAE,CACV1B,aAAa,CAAC2B,WAAW,EACzBlC,cAAc,EACdM,kBAAkB,EAClBH,uBAAuB;AAE/B,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Result","EventPublisher","UnpublishPageUseCase","UseCaseAbstraction","UnpublishPageRepository","PageBeforeUnpublishEvent","PageAfterUnpublishEvent","GetPageByIdUseCase","WbPermissions","PageNotAuthorizedError","UnpublishPageUseCaseImpl","constructor","permissions","eventPublisher","getPageById","repository","execute","params","hasPermission","canUnpublish","fail","getResult","id","isFail","page","value","canAccess","beforeEvent","publish","result","afterEvent","ok","createImplementation","implementation","dependencies"],"sources":["UnpublishPageUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport {\n UnpublishPageUseCase as UseCaseAbstraction,\n UnpublishPageRepository\n} from \"./abstractions.js\";\nimport { PageBeforeUnpublishEvent, PageAfterUnpublishEvent } from \"./events.js\";\nimport { GetPageByIdUseCase } from \"~/features/pages/GetPageById/index.js\";\nimport { WbPermissions } from \"~/features/permissions/abstractions.js\";\nimport { PageNotAuthorizedError } from \"~/domain/page/errors.js\";\n\nclass UnpublishPageUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getPageById: GetPageByIdUseCase.Interface,\n private repository: UnpublishPageRepository.Interface\n ) {}\n\n async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canUnpublish(\"page\");\n if (!hasPermission) {\n return Result.fail(new PageNotAuthorizedError());\n }\n\n // Get the page first for the before event\n const getResult = await this.getPageById.execute(params.id);\n\n if (getResult.isFail()) {\n return getResult;\n }\n\n const page = getResult.value;\n\n const canAccess = await this.permissions.canAccess(\"page\", page);\n if (!canAccess) {\n return Result.fail(new PageNotAuthorizedError());\n }\n\n // Publish before unpublish event\n const beforeEvent = new PageBeforeUnpublishEvent({\n page\n });\n\n await this.eventPublisher.publish(beforeEvent);\n\n // Execute the unpublish operation\n const result = await this.repository.execute(params);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after unpublish event\n const afterEvent = new PageAfterUnpublishEvent({\n page: result.value\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok(result.value);\n }\n}\n\nexport const UnpublishPageUseCase = UseCaseAbstraction.createImplementation({\n implementation: UnpublishPageUseCaseImpl,\n dependencies: [WbPermissions, EventPublisher, GetPageByIdUseCase, UnpublishPageRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,cAAc,QAEX,mDAAmD;AAC1D,SACIC,oBAAoB,IAAIC,kBAAkB,EAC1CC,uBAAuB;AAE3B,SAASC,wBAAwB,EAAEC,uBAAuB;AAC1D,SAASC,kBAAkB;AAC3B,SAASC,aAAa;AACtB,SAASC,sBAAsB;AAE/B,MAAMC,wBAAwB,CAAyC;EACnEC,WAAWA,CACCC,WAAoC,EACpCC,cAAmD,EACnDC,WAAyC,EACzCC,UAA6C,EACvD;IAAA,KAJUH,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,UAA6C,GAA7CA,UAA6C;EACtD;EAEH,MAAMC,OAAOA,CAACC,MAAiC,EAA6B;IACxE,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACN,WAAW,CAACO,YAAY,CAAC,MAAM,CAAC;IACjE,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOlB,MAAM,CAACoB,IAAI,CAAC,IAAIX,sBAAsB,CAAC,CAAC,CAAC;IACpD;;IAEA;IACA,MAAMY,SAAS,GAAG,MAAM,IAAI,CAACP,WAAW,CAACE,OAAO,CAACC,MAAM,CAACK,EAAE,CAAC;IAE3D,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOF,SAAS;IACpB;IAEA,MAAMG,IAAI,GAAGH,SAAS,CAACI,KAAK;IAE5B,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACd,WAAW,CAACc,SAAS,CAAC,MAAM,EAAEF,IAAI,CAAC;IAChE,IAAI,CAACE,SAAS,EAAE;MACZ,OAAO1B,MAAM,CAACoB,IAAI,CAAC,IAAIX,sBAAsB,CAAC,CAAC,CAAC;IACpD;;IAEA;IACA,MAAMkB,WAAW,GAAG,IAAItB,wBAAwB,CAAC;MAC7CmB;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,CAACX,cAAc,CAACe,OAAO,CAACD,WAAW,CAAC;;IAE9C;IACA,MAAME,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,uBAAuB,CAAC;MAC3CkB,IAAI,EAAEK,MAAM,CAACJ;IACjB,CAAC,CAAC;IAEF,MAAM,IAAI,CAACZ,cAAc,CAACe,OAAO,CAACE,UAAU,CAAC;IAE7C,OAAO9B,MAAM,CAAC+B,EAAE,CAACF,MAAM,CAACJ,KAAK,CAAC;EAClC;AACJ;AAEA,OAAO,MAAMvB,oBAAoB,GAAGC,kBAAkB,CAAC6B,oBAAoB,CAAC;EACxEC,cAAc,EAAEvB,wBAAwB;EACxCwB,YAAY,EAAE,CAAC1B,aAAa,EAAEP,cAAc,EAAEM,kBAAkB,EAAEH,uBAAuB;AAC7F,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 { WbPage } from "../../../domain/page/abstractions.js";
5
5
  import { PageNotFoundError, PagePersistenceError, PageNotAuthorizedError } from "../../../domain/page/errors.js";
6
6
  export interface IUnpublishWbPageParams {
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","UnpublishPageRepository","UnpublishPageUseCase","PageBeforeUnpublishEventHandler","PageAfterUnpublishEventHandler"],"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 { WbPage } from \"~/domain/page/abstractions.js\";\nimport {\n PageNotFoundError,\n PagePersistenceError,\n PageNotAuthorizedError\n} from \"~/domain/page/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IUnpublishWbPageParams {\n id: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IUnpublishPageRepository {\n execute(params: IUnpublishWbPageParams): Promise<Result<WbPage, RepositoryError>>;\n}\n\nexport interface IUnpublishPageRepositoryErrors {\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype RepositoryError = IUnpublishPageRepositoryErrors[keyof IUnpublishPageRepositoryErrors];\n\nexport const UnpublishPageRepository = createAbstraction<IUnpublishPageRepository>(\n \"Wb/UnpublishPageRepository\"\n);\n\nexport namespace UnpublishPageRepository {\n export type Interface = IUnpublishPageRepository;\n export type Params = IUnpublishWbPageParams;\n export type Return = Promise<Result<WbPage, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IUnpublishPageUseCase {\n execute(params: IUnpublishWbPageParams): Promise<Result<WbPage, UseCaseError>>;\n}\n\nexport interface IUnpublishPageUseCaseErrors {\n notAuthorized: PageNotAuthorizedError;\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype UseCaseError = IUnpublishPageUseCaseErrors[keyof IUnpublishPageUseCaseErrors];\n\n/** Unpublish a page. */\nexport const UnpublishPageUseCase =\n createAbstraction<IUnpublishPageUseCase>(\"Wb/UnpublishPageUseCase\");\n\nexport namespace UnpublishPageUseCase {\n export type Interface = IUnpublishPageUseCase;\n export type Params = IUnpublishWbPageParams;\n export type Return = Promise<Result<WbPage, UseCaseError>>;\n export type Error = UseCaseError;\n export type Page = WbPage;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface PageBeforeUnpublishPayload {\n page: WbPage;\n}\n\nexport interface PageAfterUnpublishPayload {\n page: WbPage;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\n/** Hook into page lifecycle before a page is unpublished. */\nexport const PageBeforeUnpublishEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageBeforeUnpublishPayload>>\n>(\"Wb/PageBeforeUnpublishEventHandler\");\n\nexport namespace PageBeforeUnpublishEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageBeforeUnpublishPayload>>;\n export type Event = DomainEvent<PageBeforeUnpublishPayload>;\n export type Page = WbPage;\n}\n\n/** Hook into page lifecycle after a page is unpublished. */\nexport const PageAfterUnpublishEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageAfterUnpublishPayload>>\n>(\"Wb/PageAfterUnpublishEventHandler\");\n\nexport namespace PageAfterUnpublishEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageAfterUnpublishPayload>>;\n export type Event = DomainEvent<PageAfterUnpublishPayload>;\n export type Page = WbPage;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAUpE;AACA;AACA;;AAMA;AACA;AACA;;AAaA,OAAO,MAAMC,uBAAuB,GAAGD,iBAAiB,CACpD,4BACJ,CAAC;;AASD;AACA;AACA;;AAcA;AACA,OAAO,MAAME,oBAAoB,GAC7BF,iBAAiB,CAAwB,yBAAyB,CAAC;;AAUvE;AACA;AACA;;AAUA;AACA;AACA;;AAEA;AACA,OAAO,MAAMG,+BAA+B,GAAGH,iBAAiB,CAE9D,oCAAoC,CAAC;AAQvC;AACA,OAAO,MAAMI,8BAA8B,GAAGJ,iBAAiB,CAE7D,mCAAmC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","UnpublishPageRepository","UnpublishPageUseCase","PageBeforeUnpublishEventHandler","PageAfterUnpublishEventHandler"],"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 { WbPage } from \"~/domain/page/abstractions.js\";\nimport {\n PageNotFoundError,\n PagePersistenceError,\n PageNotAuthorizedError\n} from \"~/domain/page/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IUnpublishWbPageParams {\n id: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IUnpublishPageRepository {\n execute(params: IUnpublishWbPageParams): Promise<Result<WbPage, RepositoryError>>;\n}\n\nexport interface IUnpublishPageRepositoryErrors {\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype RepositoryError = IUnpublishPageRepositoryErrors[keyof IUnpublishPageRepositoryErrors];\n\nexport const UnpublishPageRepository = createAbstraction<IUnpublishPageRepository>(\n \"Wb/UnpublishPageRepository\"\n);\n\nexport namespace UnpublishPageRepository {\n export type Interface = IUnpublishPageRepository;\n export type Params = IUnpublishWbPageParams;\n export type Return = Promise<Result<WbPage, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IUnpublishPageUseCase {\n execute(params: IUnpublishWbPageParams): Promise<Result<WbPage, UseCaseError>>;\n}\n\nexport interface IUnpublishPageUseCaseErrors {\n notAuthorized: PageNotAuthorizedError;\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype UseCaseError = IUnpublishPageUseCaseErrors[keyof IUnpublishPageUseCaseErrors];\n\n/** Unpublish a page. */\nexport const UnpublishPageUseCase =\n createAbstraction<IUnpublishPageUseCase>(\"Wb/UnpublishPageUseCase\");\n\nexport namespace UnpublishPageUseCase {\n export type Interface = IUnpublishPageUseCase;\n export type Params = IUnpublishWbPageParams;\n export type Return = Promise<Result<WbPage, UseCaseError>>;\n export type Error = UseCaseError;\n export type Page = WbPage;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface PageBeforeUnpublishPayload {\n page: WbPage;\n}\n\nexport interface PageAfterUnpublishPayload {\n page: WbPage;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\n/** Hook into page lifecycle before a page is unpublished. */\nexport const PageBeforeUnpublishEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageBeforeUnpublishPayload>>\n>(\"Wb/PageBeforeUnpublishEventHandler\");\n\nexport namespace PageBeforeUnpublishEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageBeforeUnpublishPayload>>;\n export type Event = DomainEvent<PageBeforeUnpublishPayload>;\n export type Page = WbPage;\n}\n\n/** Hook into page lifecycle after a page is unpublished. */\nexport const PageAfterUnpublishEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageAfterUnpublishPayload>>\n>(\"Wb/PageAfterUnpublishEventHandler\");\n\nexport namespace PageAfterUnpublishEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageAfterUnpublishPayload>>;\n export type Event = DomainEvent<PageAfterUnpublishPayload>;\n export type Page = WbPage;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAUpE;AACA;AACA;;AAMA;AACA;AACA;;AAaA,OAAO,MAAMC,uBAAuB,GAAGD,iBAAiB,CACpD,4BACJ,CAAC;;AASD;AACA;AACA;;AAcA;AACA,OAAO,MAAME,oBAAoB,GAC7BF,iBAAiB,CAAwB,yBAAyB,CAAC;;AAUvE;AACA;AACA;;AAUA;AACA;AACA;;AAEA;AACA,OAAO,MAAMG,+BAA+B,GAAGH,iBAAiB,CAE9D,oCAAoC,CAAC;AAQvC;AACA,OAAO,MAAMI,8BAA8B,GAAGJ,iBAAiB,CAE7D,mCAAmC,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 { PageBeforeUnpublishPayload, PageAfterUnpublishPayload } from "./abstractions.js";
3
3
  export declare class PageBeforeUnpublishEvent extends DomainEvent<PageBeforeUnpublishPayload> {
4
4
  eventType: "page.beforeUnpublish";
5
- getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<DomainEvent<PageBeforeUnpublishPayload>>>;
5
+ getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<PageBeforeUnpublishPayload>>>;
6
6
  }
7
7
  export declare class PageAfterUnpublishEvent extends DomainEvent<PageAfterUnpublishPayload> {
8
8
  eventType: "page.afterUnpublish";
9
- getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<DomainEvent<PageAfterUnpublishPayload>>>;
9
+ getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<PageAfterUnpublishPayload>>>;
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 { PageBeforeUnpublishEventHandler, PageAfterUnpublishEventHandler } from "./abstractions.js";
3
3
  // PageBeforeUnpublish Event
4
4
  export class PageBeforeUnpublishEvent extends DomainEvent {
@@ -1 +1 @@
1
- {"version":3,"names":["DomainEvent","PageBeforeUnpublishEventHandler","PageAfterUnpublishEventHandler","PageBeforeUnpublishEvent","eventType","getHandlerAbstraction","PageAfterUnpublishEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport { PageBeforeUnpublishEventHandler, PageAfterUnpublishEventHandler } from \"./abstractions.js\";\nimport type { PageBeforeUnpublishPayload, PageAfterUnpublishPayload } from \"./abstractions.js\";\n\n// PageBeforeUnpublish Event\nexport class PageBeforeUnpublishEvent extends DomainEvent<PageBeforeUnpublishPayload> {\n eventType = \"page.beforeUnpublish\" as const;\n\n getHandlerAbstraction() {\n return PageBeforeUnpublishEventHandler;\n }\n}\n\n// PageAfterUnpublish Event\nexport class PageAfterUnpublishEvent extends DomainEvent<PageAfterUnpublishPayload> {\n eventType = \"page.afterUnpublish\" as const;\n\n getHandlerAbstraction() {\n return PageAfterUnpublishEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,0CAA0C;AACtE,SAASC,+BAA+B,EAAEC,8BAA8B;AAGxE;AACA,OAAO,MAAMC,wBAAwB,SAASH,WAAW,CAA6B;EAClFI,SAAS,GAAG,sBAAsB;EAElCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,+BAA+B;EAC1C;AACJ;;AAEA;AACA,OAAO,MAAMK,uBAAuB,SAASN,WAAW,CAA4B;EAChFI,SAAS,GAAG,qBAAqB;EAEjCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,8BAA8B;EACzC;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["DomainEvent","PageBeforeUnpublishEventHandler","PageAfterUnpublishEventHandler","PageBeforeUnpublishEvent","eventType","getHandlerAbstraction","PageAfterUnpublishEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { PageBeforeUnpublishEventHandler, PageAfterUnpublishEventHandler } from \"./abstractions.js\";\nimport type { PageBeforeUnpublishPayload, PageAfterUnpublishPayload } from \"./abstractions.js\";\n\n// PageBeforeUnpublish Event\nexport class PageBeforeUnpublishEvent extends DomainEvent<PageBeforeUnpublishPayload> {\n eventType = \"page.beforeUnpublish\" as const;\n\n getHandlerAbstraction() {\n return PageBeforeUnpublishEventHandler;\n }\n}\n\n// PageAfterUnpublish Event\nexport class PageAfterUnpublishEvent extends DomainEvent<PageAfterUnpublishPayload> {\n eventType = \"page.afterUnpublish\" as const;\n\n getHandlerAbstraction() {\n return PageAfterUnpublishEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,mDAAmD;AAC/E,SAASC,+BAA+B,EAAEC,8BAA8B;AAGxE;AACA,OAAO,MAAMC,wBAAwB,SAASH,WAAW,CAA6B;EAClFI,SAAS,GAAG,sBAAsB;EAElCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,+BAA+B;EAC1C;AACJ;;AAEA;AACA,OAAO,MAAMK,uBAAuB,SAASN,WAAW,CAA4B;EAChFI,SAAS,GAAG,qBAAqB;EAEjCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,8BAA8B;EACzC;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 { UpdatePageUseCase as UseCaseAbstraction, UpdatePageRepository } from "./abstractions.js";
3
3
  import { GetPageByIdUseCase } from "../../../features/pages/GetPageById/index.js";
4
- import { WbPermissions } from "../../../domain/permissions.js";
4
+ import { WbPermissions } from "../../../features/permissions/abstractions.js";
5
5
  declare class UpdatePageUseCaseImpl implements UseCaseAbstraction.Interface {
6
6
  private permissions;
7
7
  private eventPublisher;
@@ -1,9 +1,9 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
2
+ import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import { UpdatePageUseCase as UseCaseAbstraction, UpdatePageRepository } from "./abstractions.js";
4
4
  import { PageBeforeUpdateEvent, PageAfterUpdateEvent } from "./events.js";
5
5
  import { GetPageByIdUseCase } from "../GetPageById/index.js";
6
- import { WbPermissions } from "../../../domain/permissions.js";
6
+ import { WbPermissions } from "../../permissions/abstractions.js";
7
7
  import { PageNotAuthorizedError } from "../../../domain/page/errors.js";
8
8
  class UpdatePageUseCaseImpl {
9
9
  constructor(permissions, eventPublisher, getPageById, repository) {
@@ -60,7 +60,7 @@ class UpdatePageUseCaseImpl {
60
60
  }
61
61
  export const UpdatePageUseCase = UseCaseAbstraction.createImplementation({
62
62
  implementation: UpdatePageUseCaseImpl,
63
- dependencies: [WbPermissions.Abstraction, EventPublisher, GetPageByIdUseCase, UpdatePageRepository]
63
+ dependencies: [WbPermissions, EventPublisher, GetPageByIdUseCase, UpdatePageRepository]
64
64
  });
65
65
 
66
66
  //# sourceMappingURL=UpdatePageUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","EventPublisher","UpdatePageUseCase","UseCaseAbstraction","UpdatePageRepository","PageBeforeUpdateEvent","PageAfterUpdateEvent","GetPageByIdUseCase","WbPermissions","PageNotAuthorizedError","UpdatePageUseCaseImpl","constructor","permissions","eventPublisher","getPageById","repository","execute","id","data","hasPermission","canEdit","fail","getResult","isFail","original","value","beforeEvent","input","publish","result","afterEvent","page","ok","createImplementation","implementation","dependencies","Abstraction"],"sources":["UpdatePageUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport { UpdatePageUseCase as UseCaseAbstraction, UpdatePageRepository } from \"./abstractions.js\";\nimport { PageBeforeUpdateEvent, PageAfterUpdateEvent } from \"./events.js\";\nimport { GetPageByIdUseCase } from \"~/features/pages/GetPageById/index.js\";\nimport { WbPermissions } from \"~/domain/permissions.js\";\nimport { PageNotAuthorizedError } from \"~/domain/page/errors.js\";\n\nclass UpdatePageUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getPageById: GetPageByIdUseCase.Interface,\n private repository: UpdatePageRepository.Interface\n ) {}\n\n async execute(id: string, data: UseCaseAbstraction.UpdateData): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canEdit(\"page\");\n if (!hasPermission) {\n return Result.fail(new PageNotAuthorizedError());\n }\n\n // Get the original page for events\n const getResult = await this.getPageById.execute(id);\n\n if (getResult.isFail()) {\n return getResult;\n }\n\n const original = getResult.value;\n\n const canEdit = await this.permissions.canEdit(\"page\", original);\n if (!canEdit) {\n return Result.fail(new PageNotAuthorizedError());\n }\n\n // Publish before update event\n const beforeEvent = new PageBeforeUpdateEvent({\n original,\n input: { id, data }\n });\n\n await this.eventPublisher.publish(beforeEvent);\n\n // Execute the update operation\n const result = await this.repository.execute(id, data);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after update event\n const afterEvent = new PageAfterUpdateEvent({\n original,\n input: { id, data },\n page: result.value\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok(result.value);\n }\n}\n\nexport const UpdatePageUseCase = UseCaseAbstraction.createImplementation({\n implementation: UpdatePageUseCaseImpl,\n dependencies: [\n WbPermissions.Abstraction,\n EventPublisher,\n GetPageByIdUseCase,\n UpdatePageRepository\n ]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,cAAc,QAEX,0CAA0C;AACjD,SAASC,iBAAiB,IAAIC,kBAAkB,EAAEC,oBAAoB;AACtE,SAASC,qBAAqB,EAAEC,oBAAoB;AACpD,SAASC,kBAAkB;AAC3B,SAASC,aAAa;AACtB,SAASC,sBAAsB;AAE/B,MAAMC,qBAAqB,CAAyC;EAChEC,WAAWA,CACCC,WAAoC,EACpCC,cAAmD,EACnDC,WAAyC,EACzCC,UAA0C,EACpD;IAAA,KAJUH,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,UAA0C,GAA1CA,UAA0C;EACnD;EAEH,MAAMC,OAAOA,CAACC,EAAU,EAAEC,IAAmC,EAA6B;IACtF,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACP,WAAW,CAACQ,OAAO,CAAC,MAAM,CAAC;IAC5D,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOnB,MAAM,CAACqB,IAAI,CAAC,IAAIZ,sBAAsB,CAAC,CAAC,CAAC;IACpD;;IAEA;IACA,MAAMa,SAAS,GAAG,MAAM,IAAI,CAACR,WAAW,CAACE,OAAO,CAACC,EAAE,CAAC;IAEpD,IAAIK,SAAS,CAACC,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOD,SAAS;IACpB;IAEA,MAAME,QAAQ,GAAGF,SAAS,CAACG,KAAK;IAEhC,MAAML,OAAO,GAAG,MAAM,IAAI,CAACR,WAAW,CAACQ,OAAO,CAAC,MAAM,EAAEI,QAAQ,CAAC;IAChE,IAAI,CAACJ,OAAO,EAAE;MACV,OAAOpB,MAAM,CAACqB,IAAI,CAAC,IAAIZ,sBAAsB,CAAC,CAAC,CAAC;IACpD;;IAEA;IACA,MAAMiB,WAAW,GAAG,IAAIrB,qBAAqB,CAAC;MAC1CmB,QAAQ;MACRG,KAAK,EAAE;QAAEV,EAAE;QAAEC;MAAK;IACtB,CAAC,CAAC;IAEF,MAAM,IAAI,CAACL,cAAc,CAACe,OAAO,CAACF,WAAW,CAAC;;IAE9C;IACA,MAAMG,MAAM,GAAG,MAAM,IAAI,CAACd,UAAU,CAACC,OAAO,CAACC,EAAE,EAAEC,IAAI,CAAC;IAEtD,IAAIW,MAAM,CAACN,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOM,MAAM;IACjB;;IAEA;IACA,MAAMC,UAAU,GAAG,IAAIxB,oBAAoB,CAAC;MACxCkB,QAAQ;MACRG,KAAK,EAAE;QAAEV,EAAE;QAAEC;MAAK,CAAC;MACnBa,IAAI,EAAEF,MAAM,CAACJ;IACjB,CAAC,CAAC;IAEF,MAAM,IAAI,CAACZ,cAAc,CAACe,OAAO,CAACE,UAAU,CAAC;IAE7C,OAAO9B,MAAM,CAACgC,EAAE,CAACH,MAAM,CAACJ,KAAK,CAAC;EAClC;AACJ;AAEA,OAAO,MAAMvB,iBAAiB,GAAGC,kBAAkB,CAAC8B,oBAAoB,CAAC;EACrEC,cAAc,EAAExB,qBAAqB;EACrCyB,YAAY,EAAE,CACV3B,aAAa,CAAC4B,WAAW,EACzBnC,cAAc,EACdM,kBAAkB,EAClBH,oBAAoB;AAE5B,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Result","EventPublisher","UpdatePageUseCase","UseCaseAbstraction","UpdatePageRepository","PageBeforeUpdateEvent","PageAfterUpdateEvent","GetPageByIdUseCase","WbPermissions","PageNotAuthorizedError","UpdatePageUseCaseImpl","constructor","permissions","eventPublisher","getPageById","repository","execute","id","data","hasPermission","canEdit","fail","getResult","isFail","original","value","beforeEvent","input","publish","result","afterEvent","page","ok","createImplementation","implementation","dependencies"],"sources":["UpdatePageUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { UpdatePageUseCase as UseCaseAbstraction, UpdatePageRepository } from \"./abstractions.js\";\nimport { PageBeforeUpdateEvent, PageAfterUpdateEvent } from \"./events.js\";\nimport { GetPageByIdUseCase } from \"~/features/pages/GetPageById/index.js\";\nimport { WbPermissions } from \"~/features/permissions/abstractions.js\";\nimport { PageNotAuthorizedError } from \"~/domain/page/errors.js\";\n\nclass UpdatePageUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getPageById: GetPageByIdUseCase.Interface,\n private repository: UpdatePageRepository.Interface\n ) {}\n\n async execute(id: string, data: UseCaseAbstraction.UpdateData): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canEdit(\"page\");\n if (!hasPermission) {\n return Result.fail(new PageNotAuthorizedError());\n }\n\n // Get the original page for events\n const getResult = await this.getPageById.execute(id);\n\n if (getResult.isFail()) {\n return getResult;\n }\n\n const original = getResult.value;\n\n const canEdit = await this.permissions.canEdit(\"page\", original);\n if (!canEdit) {\n return Result.fail(new PageNotAuthorizedError());\n }\n\n // Publish before update event\n const beforeEvent = new PageBeforeUpdateEvent({\n original,\n input: { id, data }\n });\n\n await this.eventPublisher.publish(beforeEvent);\n\n // Execute the update operation\n const result = await this.repository.execute(id, data);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after update event\n const afterEvent = new PageAfterUpdateEvent({\n original,\n input: { id, data },\n page: result.value\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok(result.value);\n }\n}\n\nexport const UpdatePageUseCase = UseCaseAbstraction.createImplementation({\n implementation: UpdatePageUseCaseImpl,\n dependencies: [WbPermissions, EventPublisher, GetPageByIdUseCase, UpdatePageRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,cAAc,QAEX,mDAAmD;AAC1D,SAASC,iBAAiB,IAAIC,kBAAkB,EAAEC,oBAAoB;AACtE,SAASC,qBAAqB,EAAEC,oBAAoB;AACpD,SAASC,kBAAkB;AAC3B,SAASC,aAAa;AACtB,SAASC,sBAAsB;AAE/B,MAAMC,qBAAqB,CAAyC;EAChEC,WAAWA,CACCC,WAAoC,EACpCC,cAAmD,EACnDC,WAAyC,EACzCC,UAA0C,EACpD;IAAA,KAJUH,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,UAA0C,GAA1CA,UAA0C;EACnD;EAEH,MAAMC,OAAOA,CAACC,EAAU,EAAEC,IAAmC,EAA6B;IACtF,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACP,WAAW,CAACQ,OAAO,CAAC,MAAM,CAAC;IAC5D,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOnB,MAAM,CAACqB,IAAI,CAAC,IAAIZ,sBAAsB,CAAC,CAAC,CAAC;IACpD;;IAEA;IACA,MAAMa,SAAS,GAAG,MAAM,IAAI,CAACR,WAAW,CAACE,OAAO,CAACC,EAAE,CAAC;IAEpD,IAAIK,SAAS,CAACC,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOD,SAAS;IACpB;IAEA,MAAME,QAAQ,GAAGF,SAAS,CAACG,KAAK;IAEhC,MAAML,OAAO,GAAG,MAAM,IAAI,CAACR,WAAW,CAACQ,OAAO,CAAC,MAAM,EAAEI,QAAQ,CAAC;IAChE,IAAI,CAACJ,OAAO,EAAE;MACV,OAAOpB,MAAM,CAACqB,IAAI,CAAC,IAAIZ,sBAAsB,CAAC,CAAC,CAAC;IACpD;;IAEA;IACA,MAAMiB,WAAW,GAAG,IAAIrB,qBAAqB,CAAC;MAC1CmB,QAAQ;MACRG,KAAK,EAAE;QAAEV,EAAE;QAAEC;MAAK;IACtB,CAAC,CAAC;IAEF,MAAM,IAAI,CAACL,cAAc,CAACe,OAAO,CAACF,WAAW,CAAC;;IAE9C;IACA,MAAMG,MAAM,GAAG,MAAM,IAAI,CAACd,UAAU,CAACC,OAAO,CAACC,EAAE,EAAEC,IAAI,CAAC;IAEtD,IAAIW,MAAM,CAACN,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOM,MAAM;IACjB;;IAEA;IACA,MAAMC,UAAU,GAAG,IAAIxB,oBAAoB,CAAC;MACxCkB,QAAQ;MACRG,KAAK,EAAE;QAAEV,EAAE;QAAEC;MAAK,CAAC;MACnBa,IAAI,EAAEF,MAAM,CAACJ;IACjB,CAAC,CAAC;IAEF,MAAM,IAAI,CAACZ,cAAc,CAACe,OAAO,CAACE,UAAU,CAAC;IAE7C,OAAO9B,MAAM,CAACgC,EAAE,CAACH,MAAM,CAACJ,KAAK,CAAC;EAClC;AACJ;AAEA,OAAO,MAAMvB,iBAAiB,GAAGC,kBAAkB,CAAC8B,oBAAoB,CAAC;EACrEC,cAAc,EAAExB,qBAAqB;EACrCyB,YAAY,EAAE,CAAC3B,aAAa,EAAEP,cAAc,EAAEM,kBAAkB,EAAEH,oBAAoB;AAC1F,CAAC,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import { type Result } from "@webiny/feature/api";
2
- import type { DomainEvent, IEventHandler } from "@webiny/api-core/features/EventPublisher";
2
+ import type { DomainEvent, IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import type { WbPage } from "../../../domain/page/abstractions.js";
4
4
  import type { WbLocation } from "../../../domain/shared/abstractions.js";
5
5
  import type { ICmsEntrySystem } from "@webiny/api-headless-cms/types/index.js";
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","UpdatePageRepository","UpdatePageUseCase","PageBeforeUpdateEventHandler","PageAfterUpdateEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { DomainEvent, IEventHandler } from \"@webiny/api-core/features/EventPublisher\";\nimport type { WbPage } from \"~/domain/page/abstractions.js\";\nimport type { WbLocation } from \"~/domain/shared/abstractions.js\";\nimport type { ICmsEntrySystem } from \"@webiny/api-headless-cms/types/index.js\";\nimport {\n PageNotAuthorizedError,\n PageNotFoundError,\n PagePersistenceError,\n PageValidationError\n} from \"~/domain/page/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IUpdateWbPageData {\n location?: WbLocation;\n properties?: Record<string, any>;\n metadata?: Record<string, any>;\n bindings?: Record<string, any>;\n elements?: Record<string, any>;\n system?: ICmsEntrySystem;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IUpdatePageRepository {\n execute(id: string, data: IUpdateWbPageData): Promise<Result<WbPage, RepositoryError>>;\n}\n\nexport interface IUpdatePageRepositoryErrors {\n validation: PageValidationError;\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype RepositoryError = IUpdatePageRepositoryErrors[keyof IUpdatePageRepositoryErrors];\n\nexport const UpdatePageRepository =\n createAbstraction<IUpdatePageRepository>(\"Wb/UpdatePageRepository\");\n\nexport namespace UpdatePageRepository {\n export type Interface = IUpdatePageRepository;\n export type UpdateData = IUpdateWbPageData;\n export type Return = Promise<Result<WbPage, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IUpdatePageUseCase {\n execute(id: string, data: IUpdateWbPageData): Promise<Result<WbPage, UseCaseError>>;\n}\n\nexport interface IUpdatePageUseCaseErrors {\n notAuthorized: PageNotAuthorizedError;\n validation: PageValidationError;\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype UseCaseError = IUpdatePageUseCaseErrors[keyof IUpdatePageUseCaseErrors];\n\n/** Update a page. */\nexport const UpdatePageUseCase = createAbstraction<IUpdatePageUseCase>(\"Wb/UpdatePageUseCase\");\n\nexport namespace UpdatePageUseCase {\n export type Interface = IUpdatePageUseCase;\n export type UpdateData = IUpdateWbPageData;\n export type Return = Promise<Result<WbPage, UseCaseError>>;\n export type Error = UseCaseError;\n export type Page = WbPage;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface PageBeforeUpdatePayload {\n original: WbPage;\n input: {\n id: string;\n data: IUpdateWbPageData;\n };\n}\n\nexport interface PageAfterUpdatePayload {\n original: WbPage;\n input: {\n id: string;\n data: IUpdateWbPageData;\n };\n page: WbPage;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\n/** Hook into page lifecycle before a page is updated. */\nexport const PageBeforeUpdateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageBeforeUpdatePayload>>\n>(\"Wb/PageBeforeUpdateEventHandler\");\n\nexport namespace PageBeforeUpdateEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageBeforeUpdatePayload>>;\n export type Event = DomainEvent<PageBeforeUpdatePayload>;\n export type Page = WbPage;\n}\n\n/** Hook into page lifecycle after a page is updated. */\nexport const PageAfterUpdateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageAfterUpdatePayload>>\n>(\"Wb/PageAfterUpdateEventHandler\");\n\nexport namespace PageAfterUpdateEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageAfterUpdatePayload>>;\n export type Event = DomainEvent<PageAfterUpdatePayload>;\n export type Page = WbPage;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAYpE;AACA;AACA;;AAWA;AACA;AACA;;AAcA,OAAO,MAAMC,oBAAoB,GAC7BD,iBAAiB,CAAwB,yBAAyB,CAAC;;AASvE;AACA;AACA;;AAeA;AACA,OAAO,MAAME,iBAAiB,GAAGF,iBAAiB,CAAqB,sBAAsB,CAAC;;AAU9F;AACA;AACA;;AAmBA;AACA;AACA;;AAEA;AACA,OAAO,MAAMG,4BAA4B,GAAGH,iBAAiB,CAE3D,iCAAiC,CAAC;AAQpC;AACA,OAAO,MAAMI,2BAA2B,GAAGJ,iBAAiB,CAE1D,gCAAgC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","UpdatePageRepository","UpdatePageUseCase","PageBeforeUpdateEventHandler","PageAfterUpdateEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { DomainEvent, IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { WbPage } from \"~/domain/page/abstractions.js\";\nimport type { WbLocation } from \"~/domain/shared/abstractions.js\";\nimport type { ICmsEntrySystem } from \"@webiny/api-headless-cms/types/index.js\";\nimport {\n PageNotAuthorizedError,\n PageNotFoundError,\n PagePersistenceError,\n PageValidationError\n} from \"~/domain/page/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IUpdateWbPageData {\n location?: WbLocation;\n properties?: Record<string, any>;\n metadata?: Record<string, any>;\n bindings?: Record<string, any>;\n elements?: Record<string, any>;\n system?: ICmsEntrySystem;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IUpdatePageRepository {\n execute(id: string, data: IUpdateWbPageData): Promise<Result<WbPage, RepositoryError>>;\n}\n\nexport interface IUpdatePageRepositoryErrors {\n validation: PageValidationError;\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype RepositoryError = IUpdatePageRepositoryErrors[keyof IUpdatePageRepositoryErrors];\n\nexport const UpdatePageRepository =\n createAbstraction<IUpdatePageRepository>(\"Wb/UpdatePageRepository\");\n\nexport namespace UpdatePageRepository {\n export type Interface = IUpdatePageRepository;\n export type UpdateData = IUpdateWbPageData;\n export type Return = Promise<Result<WbPage, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IUpdatePageUseCase {\n execute(id: string, data: IUpdateWbPageData): Promise<Result<WbPage, UseCaseError>>;\n}\n\nexport interface IUpdatePageUseCaseErrors {\n notAuthorized: PageNotAuthorizedError;\n validation: PageValidationError;\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype UseCaseError = IUpdatePageUseCaseErrors[keyof IUpdatePageUseCaseErrors];\n\n/** Update a page. */\nexport const UpdatePageUseCase = createAbstraction<IUpdatePageUseCase>(\"Wb/UpdatePageUseCase\");\n\nexport namespace UpdatePageUseCase {\n export type Interface = IUpdatePageUseCase;\n export type UpdateData = IUpdateWbPageData;\n export type Return = Promise<Result<WbPage, UseCaseError>>;\n export type Error = UseCaseError;\n export type Page = WbPage;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface PageBeforeUpdatePayload {\n original: WbPage;\n input: {\n id: string;\n data: IUpdateWbPageData;\n };\n}\n\nexport interface PageAfterUpdatePayload {\n original: WbPage;\n input: {\n id: string;\n data: IUpdateWbPageData;\n };\n page: WbPage;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\n/** Hook into page lifecycle before a page is updated. */\nexport const PageBeforeUpdateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageBeforeUpdatePayload>>\n>(\"Wb/PageBeforeUpdateEventHandler\");\n\nexport namespace PageBeforeUpdateEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageBeforeUpdatePayload>>;\n export type Event = DomainEvent<PageBeforeUpdatePayload>;\n export type Page = WbPage;\n}\n\n/** Hook into page lifecycle after a page is updated. */\nexport const PageAfterUpdateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageAfterUpdatePayload>>\n>(\"Wb/PageAfterUpdateEventHandler\");\n\nexport namespace PageAfterUpdateEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageAfterUpdatePayload>>;\n export type Event = DomainEvent<PageAfterUpdatePayload>;\n export type Page = WbPage;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAYpE;AACA;AACA;;AAWA;AACA;AACA;;AAcA,OAAO,MAAMC,oBAAoB,GAC7BD,iBAAiB,CAAwB,yBAAyB,CAAC;;AASvE;AACA;AACA;;AAeA;AACA,OAAO,MAAME,iBAAiB,GAAGF,iBAAiB,CAAqB,sBAAsB,CAAC;;AAU9F;AACA;AACA;;AAmBA;AACA;AACA;;AAEA;AACA,OAAO,MAAMG,4BAA4B,GAAGH,iBAAiB,CAE3D,iCAAiC,CAAC;AAQpC;AACA,OAAO,MAAMI,2BAA2B,GAAGJ,iBAAiB,CAE1D,gCAAgC,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 { PageBeforeUpdatePayload, PageAfterUpdatePayload } from "./abstractions.js";
3
3
  export declare class PageBeforeUpdateEvent extends DomainEvent<PageBeforeUpdatePayload> {
4
4
  eventType: "page.beforeUpdate";
5
- getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<DomainEvent<PageBeforeUpdatePayload>>>;
5
+ getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<PageBeforeUpdatePayload>>>;
6
6
  }
7
7
  export declare class PageAfterUpdateEvent extends DomainEvent<PageAfterUpdatePayload> {
8
8
  eventType: "page.afterUpdate";
9
- getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<DomainEvent<PageAfterUpdatePayload>>>;
9
+ getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<PageAfterUpdatePayload>>>;
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 { PageBeforeUpdateEventHandler, PageAfterUpdateEventHandler } from "./abstractions.js";
3
3
  // PageBeforeUpdate Event
4
4
  export class PageBeforeUpdateEvent extends DomainEvent {
@@ -1 +1 @@
1
- {"version":3,"names":["DomainEvent","PageBeforeUpdateEventHandler","PageAfterUpdateEventHandler","PageBeforeUpdateEvent","eventType","getHandlerAbstraction","PageAfterUpdateEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport { PageBeforeUpdateEventHandler, PageAfterUpdateEventHandler } from \"./abstractions.js\";\nimport type { PageBeforeUpdatePayload, PageAfterUpdatePayload } from \"./abstractions.js\";\n\n// PageBeforeUpdate Event\nexport class PageBeforeUpdateEvent extends DomainEvent<PageBeforeUpdatePayload> {\n eventType = \"page.beforeUpdate\" as const;\n\n getHandlerAbstraction() {\n return PageBeforeUpdateEventHandler;\n }\n}\n\n// PageAfterUpdate Event\nexport class PageAfterUpdateEvent extends DomainEvent<PageAfterUpdatePayload> {\n eventType = \"page.afterUpdate\" as const;\n\n getHandlerAbstraction() {\n return PageAfterUpdateEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,0CAA0C;AACtE,SAASC,4BAA4B,EAAEC,2BAA2B;AAGlE;AACA,OAAO,MAAMC,qBAAqB,SAASH,WAAW,CAA0B;EAC5EI,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMK,oBAAoB,SAASN,WAAW,CAAyB;EAC1EI,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,2BAA2B;EACtC;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["DomainEvent","PageBeforeUpdateEventHandler","PageAfterUpdateEventHandler","PageBeforeUpdateEvent","eventType","getHandlerAbstraction","PageAfterUpdateEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { PageBeforeUpdateEventHandler, PageAfterUpdateEventHandler } from \"./abstractions.js\";\nimport type { PageBeforeUpdatePayload, PageAfterUpdatePayload } from \"./abstractions.js\";\n\n// PageBeforeUpdate Event\nexport class PageBeforeUpdateEvent extends DomainEvent<PageBeforeUpdatePayload> {\n eventType = \"page.beforeUpdate\" as const;\n\n getHandlerAbstraction() {\n return PageBeforeUpdateEventHandler;\n }\n}\n\n// PageAfterUpdate Event\nexport class PageAfterUpdateEvent extends DomainEvent<PageAfterUpdatePayload> {\n eventType = \"page.afterUpdate\" as const;\n\n getHandlerAbstraction() {\n return PageAfterUpdateEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,mDAAmD;AAC/E,SAASC,4BAA4B,EAAEC,2BAA2B;AAGlE;AACA,OAAO,MAAMC,qBAAqB,SAASH,WAAW,CAA0B;EAC5EI,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMK,oBAAoB,SAASN,WAAW,CAAyB;EAC1EI,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,2BAA2B;EACtC;AACJ","ignoreList":[]}