@webiny/api-website-builder 6.1.0-beta.3 → 6.2.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/domain/page/PagePath.d.ts +7 -0
- package/domain/page/PagePath.js +36 -0
- package/domain/page/PagePath.js.map +1 -0
- package/domain/page/errors.d.ts +6 -0
- package/domain/page/errors.js +11 -0
- package/domain/page/errors.js.map +1 -1
- package/domain/permissionsSchema.d.ts +29 -0
- package/domain/{permissions.js → permissionsSchema.js} +4 -5
- package/domain/permissionsSchema.js.map +1 -0
- package/features/installer/ApiKeyInstaller.d.ts +1 -1
- package/features/installer/ApiKeyInstaller.js +1 -1
- package/features/installer/ApiKeyInstaller.js.map +1 -1
- package/features/pages/CreatePage/CreatePageUseCase.d.ts +2 -2
- package/features/pages/CreatePage/CreatePageUseCase.js +3 -3
- package/features/pages/CreatePage/CreatePageUseCase.js.map +1 -1
- package/features/pages/CreatePage/abstractions.d.ts +1 -1
- package/features/pages/CreatePage/abstractions.js.map +1 -1
- package/features/pages/CreatePage/events.d.ts +3 -3
- package/features/pages/CreatePage/events.js +1 -1
- package/features/pages/CreatePage/events.js.map +1 -1
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.d.ts +2 -2
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.js +3 -3
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.js.map +1 -1
- package/features/pages/CreatePageRevisionFrom/abstractions.d.ts +2 -2
- package/features/pages/CreatePageRevisionFrom/abstractions.js.map +1 -1
- package/features/pages/CreatePageRevisionFrom/events.d.ts +3 -3
- package/features/pages/CreatePageRevisionFrom/events.js +1 -1
- package/features/pages/CreatePageRevisionFrom/events.js.map +1 -1
- package/features/pages/DeletePage/DeletePageUseCase.d.ts +2 -2
- package/features/pages/DeletePage/DeletePageUseCase.js +3 -3
- package/features/pages/DeletePage/DeletePageUseCase.js.map +1 -1
- package/features/pages/DeletePage/abstractions.d.ts +2 -2
- package/features/pages/DeletePage/abstractions.js.map +1 -1
- package/features/pages/DeletePage/events.d.ts +3 -3
- package/features/pages/DeletePage/events.js +1 -1
- package/features/pages/DeletePage/events.js.map +1 -1
- package/features/pages/DuplicatePage/DuplicatePageRepository.d.ts +2 -2
- package/features/pages/DuplicatePage/DuplicatePageRepository.js +9 -1
- package/features/pages/DuplicatePage/DuplicatePageRepository.js.map +1 -1
- package/features/pages/DuplicatePage/DuplicatePageUseCase.d.ts +2 -2
- package/features/pages/DuplicatePage/DuplicatePageUseCase.js +3 -3
- package/features/pages/DuplicatePage/DuplicatePageUseCase.js.map +1 -1
- package/features/pages/DuplicatePage/abstractions.d.ts +9 -3
- package/features/pages/DuplicatePage/abstractions.js.map +1 -1
- package/features/pages/DuplicatePage/events.d.ts +3 -3
- package/features/pages/DuplicatePage/events.js +1 -1
- package/features/pages/DuplicatePage/events.js.map +1 -1
- package/features/pages/DuplicatePage/index.d.ts +2 -1
- package/features/pages/DuplicatePage/index.js +1 -1
- package/features/pages/DuplicatePage/index.js.map +1 -1
- package/features/pages/GetDeletedPageById/GetDeletedPageByIdUseCase.d.ts +1 -1
- package/features/pages/GetDeletedPageById/GetDeletedPageByIdUseCase.js +2 -2
- package/features/pages/GetDeletedPageById/GetDeletedPageByIdUseCase.js.map +1 -1
- package/features/pages/GetPageById/GetPageByIdUseCase.d.ts +1 -1
- package/features/pages/GetPageById/GetPageByIdUseCase.js +2 -2
- package/features/pages/GetPageById/GetPageByIdUseCase.js.map +1 -1
- package/features/pages/GetPageByPath/GetPageByPathUseCase.d.ts +1 -1
- package/features/pages/GetPageByPath/GetPageByPathUseCase.js +2 -2
- package/features/pages/GetPageByPath/GetPageByPathUseCase.js.map +1 -1
- package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsRepository.d.ts +15 -0
- package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsRepository.js +61 -0
- package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsRepository.js.map +1 -0
- package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsUseCase.d.ts +10 -0
- package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsUseCase.js +20 -0
- package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsUseCase.js.map +1 -0
- package/features/pages/GetPageLanguagePaths/abstractions.d.ts +20 -0
- package/features/pages/GetPageLanguagePaths/abstractions.js +6 -0
- package/features/pages/GetPageLanguagePaths/abstractions.js.map +1 -0
- package/features/pages/GetPageLanguagePaths/feature.d.ts +1 -0
- package/features/pages/GetPageLanguagePaths/feature.js +12 -0
- package/features/pages/GetPageLanguagePaths/feature.js.map +1 -0
- package/features/pages/GetPageLanguagePaths/index.d.ts +1 -0
- package/features/pages/GetPageLanguagePaths/index.js +3 -0
- package/features/pages/GetPageLanguagePaths/index.js.map +1 -0
- package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.d.ts +1 -1
- package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.js +2 -2
- package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.js.map +1 -1
- package/features/pages/ListDeletedPages/ListDeletedPagesUseCase.d.ts +1 -1
- package/features/pages/ListDeletedPages/ListDeletedPagesUseCase.js +2 -2
- package/features/pages/ListDeletedPages/ListDeletedPagesUseCase.js.map +1 -1
- package/features/pages/ListPages/ListPagesUseCase.d.ts +1 -1
- package/features/pages/ListPages/ListPagesUseCase.js +2 -2
- package/features/pages/ListPages/ListPagesUseCase.js.map +1 -1
- package/features/pages/MovePage/MovePageUseCase.d.ts +2 -2
- package/features/pages/MovePage/MovePageUseCase.js +3 -3
- package/features/pages/MovePage/MovePageUseCase.js.map +1 -1
- package/features/pages/MovePage/abstractions.d.ts +2 -2
- package/features/pages/MovePage/abstractions.js.map +1 -1
- package/features/pages/MovePage/events.d.ts +3 -3
- package/features/pages/MovePage/events.js +1 -1
- package/features/pages/MovePage/events.js.map +1 -1
- package/features/pages/PublishPage/PublishPageUseCase.d.ts +2 -2
- package/features/pages/PublishPage/PublishPageUseCase.js +3 -3
- package/features/pages/PublishPage/PublishPageUseCase.js.map +1 -1
- package/features/pages/PublishPage/abstractions.d.ts +2 -2
- package/features/pages/PublishPage/abstractions.js.map +1 -1
- package/features/pages/PublishPage/events.d.ts +3 -3
- package/features/pages/PublishPage/events.js +1 -1
- package/features/pages/PublishPage/events.js.map +1 -1
- package/features/pages/RestorePage/RestorePageUseCase.d.ts +2 -2
- package/features/pages/RestorePage/RestorePageUseCase.js +3 -3
- package/features/pages/RestorePage/RestorePageUseCase.js.map +1 -1
- package/features/pages/RestorePage/abstractions.d.ts +2 -2
- package/features/pages/RestorePage/abstractions.js.map +1 -1
- package/features/pages/RestorePage/events.d.ts +3 -3
- package/features/pages/RestorePage/events.js +1 -1
- package/features/pages/RestorePage/events.js.map +1 -1
- package/features/pages/TranslatePage/TranslatePageUseCase.d.ts +17 -0
- package/features/pages/TranslatePage/TranslatePageUseCase.js +74 -0
- package/features/pages/TranslatePage/TranslatePageUseCase.js.map +1 -0
- package/features/pages/TranslatePage/abstractions.d.ts +29 -0
- package/features/pages/TranslatePage/abstractions.js +14 -0
- package/features/pages/TranslatePage/abstractions.js.map +1 -0
- package/features/pages/TranslatePage/feature.d.ts +1 -0
- package/features/pages/TranslatePage/feature.js +10 -0
- package/features/pages/TranslatePage/feature.js.map +1 -0
- package/features/pages/TranslatePage/index.d.ts +1 -0
- package/features/pages/TranslatePage/index.js +3 -0
- package/features/pages/TranslatePage/index.js.map +1 -0
- package/features/pages/TrashPage/TrashPageUseCase.d.ts +2 -2
- package/features/pages/TrashPage/TrashPageUseCase.js +3 -3
- package/features/pages/TrashPage/TrashPageUseCase.js.map +1 -1
- package/features/pages/TrashPage/abstractions.d.ts +2 -2
- package/features/pages/TrashPage/abstractions.js.map +1 -1
- package/features/pages/TrashPage/events.d.ts +3 -3
- package/features/pages/TrashPage/events.js +1 -1
- package/features/pages/TrashPage/events.js.map +1 -1
- package/features/pages/UnpublishPage/UnpublishPageUseCase.d.ts +2 -2
- package/features/pages/UnpublishPage/UnpublishPageUseCase.js +3 -3
- package/features/pages/UnpublishPage/UnpublishPageUseCase.js.map +1 -1
- package/features/pages/UnpublishPage/abstractions.d.ts +2 -2
- package/features/pages/UnpublishPage/abstractions.js.map +1 -1
- package/features/pages/UnpublishPage/events.d.ts +3 -3
- package/features/pages/UnpublishPage/events.js +1 -1
- package/features/pages/UnpublishPage/events.js.map +1 -1
- package/features/pages/UpdatePage/UpdatePageUseCase.d.ts +2 -2
- package/features/pages/UpdatePage/UpdatePageUseCase.js +3 -3
- package/features/pages/UpdatePage/UpdatePageUseCase.js.map +1 -1
- package/features/pages/UpdatePage/abstractions.d.ts +1 -1
- package/features/pages/UpdatePage/abstractions.js.map +1 -1
- package/features/pages/UpdatePage/events.d.ts +3 -3
- package/features/pages/UpdatePage/events.js +1 -1
- package/features/pages/UpdatePage/events.js.map +1 -1
- package/features/permissions/abstractions.d.ts +34 -0
- package/features/permissions/abstractions.js +5 -0
- package/features/permissions/abstractions.js.map +1 -0
- package/features/permissions/feature.d.ts +1 -0
- package/features/permissions/feature.js +6 -0
- package/features/permissions/feature.js.map +1 -0
- package/features/redirects/CreateRedirect/CreateRedirectUseCase.d.ts +2 -2
- package/features/redirects/CreateRedirect/CreateRedirectUseCase.js +3 -3
- package/features/redirects/CreateRedirect/CreateRedirectUseCase.js.map +1 -1
- package/features/redirects/CreateRedirect/abstractions.d.ts +2 -2
- package/features/redirects/CreateRedirect/abstractions.js.map +1 -1
- package/features/redirects/CreateRedirect/events.d.ts +3 -3
- package/features/redirects/CreateRedirect/events.js +1 -1
- package/features/redirects/CreateRedirect/events.js.map +1 -1
- package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.d.ts +2 -2
- package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.js +3 -3
- package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.js.map +1 -1
- package/features/redirects/DeleteRedirect/abstractions.d.ts +2 -2
- package/features/redirects/DeleteRedirect/abstractions.js.map +1 -1
- package/features/redirects/DeleteRedirect/events.d.ts +3 -3
- package/features/redirects/DeleteRedirect/events.js +1 -1
- package/features/redirects/DeleteRedirect/events.js.map +1 -1
- package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.d.ts +1 -1
- package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.js +2 -2
- package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.js.map +1 -1
- package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.d.ts +1 -1
- package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.js +2 -2
- package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.js.map +1 -1
- package/features/redirects/ListRedirects/ListRedirectsUseCase.d.ts +1 -1
- package/features/redirects/ListRedirects/ListRedirectsUseCase.js +2 -2
- package/features/redirects/ListRedirects/ListRedirectsUseCase.js.map +1 -1
- package/features/redirects/MoveRedirect/MoveRedirectUseCase.d.ts +2 -2
- package/features/redirects/MoveRedirect/MoveRedirectUseCase.js +3 -3
- package/features/redirects/MoveRedirect/MoveRedirectUseCase.js.map +1 -1
- package/features/redirects/MoveRedirect/abstractions.d.ts +2 -2
- package/features/redirects/MoveRedirect/abstractions.js.map +1 -1
- package/features/redirects/MoveRedirect/events.d.ts +3 -3
- package/features/redirects/MoveRedirect/events.js +1 -1
- package/features/redirects/MoveRedirect/events.js.map +1 -1
- package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.d.ts +2 -2
- package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.js +3 -3
- package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.js.map +1 -1
- package/features/redirects/UpdateRedirect/abstractions.d.ts +2 -2
- package/features/redirects/UpdateRedirect/abstractions.js.map +1 -1
- package/features/redirects/UpdateRedirect/events.d.ts +3 -3
- package/features/redirects/UpdateRedirect/events.js +1 -1
- package/features/redirects/UpdateRedirect/events.js.map +1 -1
- package/graphql/pages/pages.gql.js +34 -0
- package/graphql/pages/pages.gql.js.map +1 -1
- package/graphql/pages/pages.typeDefs.d.ts +1 -1
- package/graphql/pages/pages.typeDefs.js +2 -0
- package/graphql/pages/pages.typeDefs.js.map +1 -1
- package/index.js +6 -2
- package/index.js.map +1 -1
- package/package.json +20 -19
- package/domain/permissions.d.ts +0 -125
- package/domain/permissions.js.map +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry";
|
|
2
2
|
import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById";
|
|
3
|
-
import { DuplicatePageRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
3
|
+
import { DuplicatePageRepository as RepositoryAbstraction, type DuplicatePageCallback } from "./abstractions.js";
|
|
4
4
|
import { PageModel } from "../../../domain/page/abstractions.js";
|
|
5
5
|
declare class DuplicatePageRepositoryImpl implements RepositoryAbstraction.Interface {
|
|
6
6
|
private createEntry;
|
|
7
7
|
private getEntryById;
|
|
8
8
|
private pageModel;
|
|
9
9
|
constructor(createEntry: CreateEntryUseCase.Interface, getEntryById: GetEntryByIdUseCase.Interface, pageModel: PageModel.Interface);
|
|
10
|
-
execute(params: RepositoryAbstraction.Params): RepositoryAbstraction.Return;
|
|
10
|
+
execute(params: RepositoryAbstraction.Params, callback?: DuplicatePageCallback): RepositoryAbstraction.Return;
|
|
11
11
|
}
|
|
12
12
|
export declare const DuplicatePageRepository: typeof DuplicatePageRepositoryImpl & {
|
|
13
13
|
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IDuplicatePageRepository>;
|
|
@@ -12,7 +12,7 @@ class DuplicatePageRepositoryImpl {
|
|
|
12
12
|
this.getEntryById = getEntryById;
|
|
13
13
|
this.pageModel = pageModel;
|
|
14
14
|
}
|
|
15
|
-
async execute(params) {
|
|
15
|
+
async execute(params, callback) {
|
|
16
16
|
// First, get the page to duplicate
|
|
17
17
|
const getResult = await this.getEntryById.execute(this.pageModel, params.id);
|
|
18
18
|
if (getResult.isFail()) {
|
|
@@ -36,6 +36,14 @@ class DuplicatePageRepositoryImpl {
|
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
+
// Allow callers to mutate page data before creation
|
|
40
|
+
if (callback) {
|
|
41
|
+
await callback({
|
|
42
|
+
original: originalPage,
|
|
43
|
+
duplicate: newPageData
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
|
|
39
47
|
// Create the duplicated page
|
|
40
48
|
const result = await this.createEntry.execute(this.pageModel, {
|
|
41
49
|
location: newPageData.location,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Result","pick","CreateEntryUseCase","GetEntryByIdUseCase","DuplicatePageRepository","RepositoryAbstraction","PageModel","EntryToPageMapper","PageNotFoundError","PagePersistenceError","PageValidationError","DuplicatePageRepositoryImpl","constructor","createEntry","getEntryById","pageModel","execute","params","getResult","id","isFail","error","code","fail","originalPage","toPage","value","dataToDuplicate","newPageData","properties","path","title","result","location","values","message","page","ok","createImplementation","implementation","dependencies"],"sources":["DuplicatePageRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport pick from \"lodash/pick.js\";\nimport { CreateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById\";\nimport {
|
|
1
|
+
{"version":3,"names":["Result","pick","CreateEntryUseCase","GetEntryByIdUseCase","DuplicatePageRepository","RepositoryAbstraction","PageModel","EntryToPageMapper","PageNotFoundError","PagePersistenceError","PageValidationError","DuplicatePageRepositoryImpl","constructor","createEntry","getEntryById","pageModel","execute","params","callback","getResult","id","isFail","error","code","fail","originalPage","toPage","value","dataToDuplicate","newPageData","properties","path","title","original","duplicate","result","location","values","message","page","ok","createImplementation","implementation","dependencies"],"sources":["DuplicatePageRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport pick from \"lodash/pick.js\";\nimport { CreateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById\";\nimport {\n DuplicatePageRepository as RepositoryAbstraction,\n type DuplicatePageCallback\n} from \"./abstractions.js\";\nimport { PageModel } from \"~/domain/page/abstractions.js\";\nimport { EntryToPageMapper } from \"~/domain/page/EntryToPageMapper.js\";\nimport {\n PageNotFoundError,\n PagePersistenceError,\n PageValidationError\n} from \"~/domain/page/errors.js\";\n\nclass DuplicatePageRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private createEntry: CreateEntryUseCase.Interface,\n private getEntryById: GetEntryByIdUseCase.Interface,\n private pageModel: PageModel.Interface\n ) {}\n\n async execute(\n params: RepositoryAbstraction.Params,\n callback?: DuplicatePageCallback\n ): RepositoryAbstraction.Return {\n // First, get the page to duplicate\n const getResult = await this.getEntryById.execute(this.pageModel, params.id);\n\n if (getResult.isFail()) {\n if (getResult.error.code === \"Cms/Entry/NotFound\") {\n return Result.fail(new PageNotFoundError(params.id));\n }\n return Result.fail(new PagePersistenceError(getResult.error));\n }\n\n const originalPage = EntryToPageMapper.toPage(getResult.value);\n\n // Pick only the necessary data for duplication\n const dataToDuplicate = pick(originalPage, [\n \"bindings\",\n \"elements\",\n \"location\",\n \"properties\",\n \"metadata\",\n \"extensions\"\n ]);\n\n // Create new page data with \"Copy of\" prefix\n const newPageData = {\n ...dataToDuplicate,\n properties: {\n ...dataToDuplicate.properties,\n path: `${originalPage.properties.path}-copy`,\n title: \"Copy of \" + originalPage.properties.title\n }\n };\n\n // Allow callers to mutate page data before creation\n if (callback) {\n await callback({ original: originalPage, duplicate: newPageData });\n }\n\n // Create the duplicated page\n const result = await this.createEntry.execute(this.pageModel, {\n location: newPageData.location,\n values: newPageData\n });\n\n if (result.isFail()) {\n if (result.error.code === \"Cms/Entry/ValidationError\") {\n return Result.fail(new PageValidationError(result.error.message));\n }\n return Result.fail(new PagePersistenceError(result.error));\n }\n\n const page = EntryToPageMapper.toPage(result.value);\n return Result.ok(page);\n }\n}\n\nexport const DuplicatePageRepository = RepositoryAbstraction.createImplementation({\n implementation: DuplicatePageRepositoryImpl,\n dependencies: [CreateEntryUseCase, GetEntryByIdUseCase, PageModel]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,OAAOC,IAAI,MAAM,gBAAgB;AACjC,SAASC,kBAAkB,QAAQ,4DAA4D;AAC/F,SAASC,mBAAmB,QAAQ,6DAA6D;AACjG,SACIC,uBAAuB,IAAIC,qBAAqB;AAGpD,SAASC,SAAS;AAClB,SAASC,iBAAiB;AAC1B,SACIC,iBAAiB,EACjBC,oBAAoB,EACpBC,mBAAmB;AAGvB,MAAMC,2BAA2B,CAA4C;EACzEC,WAAWA,CACCC,WAAyC,EACzCC,YAA2C,EAC3CC,SAA8B,EACxC;IAAA,KAHUF,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,YAA2C,GAA3CA,YAA2C;IAAA,KAC3CC,SAA8B,GAA9BA,SAA8B;EACvC;EAEH,MAAMC,OAAOA,CACTC,MAAoC,EACpCC,QAAgC,EACJ;IAC5B;IACA,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACL,YAAY,CAACE,OAAO,CAAC,IAAI,CAACD,SAAS,EAAEE,MAAM,CAACG,EAAE,CAAC;IAE5E,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,IAAIF,SAAS,CAACG,KAAK,CAACC,IAAI,KAAK,oBAAoB,EAAE;QAC/C,OAAOvB,MAAM,CAACwB,IAAI,CAAC,IAAIhB,iBAAiB,CAACS,MAAM,CAACG,EAAE,CAAC,CAAC;MACxD;MACA,OAAOpB,MAAM,CAACwB,IAAI,CAAC,IAAIf,oBAAoB,CAACU,SAAS,CAACG,KAAK,CAAC,CAAC;IACjE;IAEA,MAAMG,YAAY,GAAGlB,iBAAiB,CAACmB,MAAM,CAACP,SAAS,CAACQ,KAAK,CAAC;;IAE9D;IACA,MAAMC,eAAe,GAAG3B,IAAI,CAACwB,YAAY,EAAE,CACvC,UAAU,EACV,UAAU,EACV,UAAU,EACV,YAAY,EACZ,UAAU,EACV,YAAY,CACf,CAAC;;IAEF;IACA,MAAMI,WAAW,GAAG;MAChB,GAAGD,eAAe;MAClBE,UAAU,EAAE;QACR,GAAGF,eAAe,CAACE,UAAU;QAC7BC,IAAI,EAAE,GAAGN,YAAY,CAACK,UAAU,CAACC,IAAI,OAAO;QAC5CC,KAAK,EAAE,UAAU,GAAGP,YAAY,CAACK,UAAU,CAACE;MAChD;IACJ,CAAC;;IAED;IACA,IAAId,QAAQ,EAAE;MACV,MAAMA,QAAQ,CAAC;QAAEe,QAAQ,EAAER,YAAY;QAAES,SAAS,EAAEL;MAAY,CAAC,CAAC;IACtE;;IAEA;IACA,MAAMM,MAAM,GAAG,MAAM,IAAI,CAACtB,WAAW,CAACG,OAAO,CAAC,IAAI,CAACD,SAAS,EAAE;MAC1DqB,QAAQ,EAAEP,WAAW,CAACO,QAAQ;MAC9BC,MAAM,EAAER;IACZ,CAAC,CAAC;IAEF,IAAIM,MAAM,CAACd,MAAM,CAAC,CAAC,EAAE;MACjB,IAAIc,MAAM,CAACb,KAAK,CAACC,IAAI,KAAK,2BAA2B,EAAE;QACnD,OAAOvB,MAAM,CAACwB,IAAI,CAAC,IAAId,mBAAmB,CAACyB,MAAM,CAACb,KAAK,CAACgB,OAAO,CAAC,CAAC;MACrE;MACA,OAAOtC,MAAM,CAACwB,IAAI,CAAC,IAAIf,oBAAoB,CAAC0B,MAAM,CAACb,KAAK,CAAC,CAAC;IAC9D;IAEA,MAAMiB,IAAI,GAAGhC,iBAAiB,CAACmB,MAAM,CAACS,MAAM,CAACR,KAAK,CAAC;IACnD,OAAO3B,MAAM,CAACwC,EAAE,CAACD,IAAI,CAAC;EAC1B;AACJ;AAEA,OAAO,MAAMnC,uBAAuB,GAAGC,qBAAqB,CAACoC,oBAAoB,CAAC;EAC9EC,cAAc,EAAE/B,2BAA2B;EAC3CgC,YAAY,EAAE,CAACzC,kBAAkB,EAAEC,mBAAmB,EAAEG,SAAS;AACrE,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/
|
|
1
|
+
import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
2
|
import { DuplicatePageUseCase as UseCaseAbstraction, DuplicatePageRepository } from "./abstractions.js";
|
|
3
3
|
import { GetPageByIdUseCase } from "../../../features/pages/GetPageById/index.js";
|
|
4
|
-
import { WbPermissions } from "../../../
|
|
4
|
+
import { WbPermissions } from "../../../features/permissions/abstractions.js";
|
|
5
5
|
declare class DuplicatePageUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
6
6
|
private permissions;
|
|
7
7
|
private eventPublisher;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Result, createImplementation } from "@webiny/feature/api";
|
|
2
|
-
import { EventPublisher } from "@webiny/api-core/features/
|
|
2
|
+
import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
3
3
|
import { DuplicatePageUseCase as UseCaseAbstraction, DuplicatePageRepository } from "./abstractions.js";
|
|
4
4
|
import { PageBeforeDuplicateEvent, PageAfterDuplicateEvent } from "./events.js";
|
|
5
5
|
import { GetPageByIdUseCase } from "../GetPageById/index.js";
|
|
6
|
-
import { WbPermissions } from "
|
|
6
|
+
import { WbPermissions } from "../../permissions/abstractions.js";
|
|
7
7
|
import { PageNotAuthorizedError } from "../../../domain/page/errors.js";
|
|
8
8
|
class DuplicatePageUseCaseImpl {
|
|
9
9
|
constructor(permissions, eventPublisher, getPageById, repository) {
|
|
@@ -49,7 +49,7 @@ class DuplicatePageUseCaseImpl {
|
|
|
49
49
|
export const DuplicatePageUseCase = createImplementation({
|
|
50
50
|
abstraction: UseCaseAbstraction,
|
|
51
51
|
implementation: DuplicatePageUseCaseImpl,
|
|
52
|
-
dependencies: [WbPermissions
|
|
52
|
+
dependencies: [WbPermissions, EventPublisher, GetPageByIdUseCase, DuplicatePageRepository]
|
|
53
53
|
});
|
|
54
54
|
|
|
55
55
|
//# sourceMappingURL=DuplicatePageUseCase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Result","createImplementation","EventPublisher","DuplicatePageUseCase","UseCaseAbstraction","DuplicatePageRepository","PageBeforeDuplicateEvent","PageAfterDuplicateEvent","GetPageByIdUseCase","WbPermissions","PageNotAuthorizedError","DuplicatePageUseCaseImpl","constructor","permissions","eventPublisher","getPageById","repository","execute","params","hasPermission","canCreate","fail","getResult","id","isFail","original","value","beforeEvent","publish","result","afterEvent","page","ok","abstraction","implementation","dependencies"
|
|
1
|
+
{"version":3,"names":["Result","createImplementation","EventPublisher","DuplicatePageUseCase","UseCaseAbstraction","DuplicatePageRepository","PageBeforeDuplicateEvent","PageAfterDuplicateEvent","GetPageByIdUseCase","WbPermissions","PageNotAuthorizedError","DuplicatePageUseCaseImpl","constructor","permissions","eventPublisher","getPageById","repository","execute","params","hasPermission","canCreate","fail","getResult","id","isFail","original","value","beforeEvent","publish","result","afterEvent","page","ok","abstraction","implementation","dependencies"],"sources":["DuplicatePageUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport {\n DuplicatePageUseCase as UseCaseAbstraction,\n DuplicatePageRepository\n} from \"./abstractions.js\";\nimport { PageBeforeDuplicateEvent, PageAfterDuplicateEvent } 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 DuplicatePageUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getPageById: GetPageByIdUseCase.Interface,\n private repository: 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 // Get the original page for events\n const getResult = await this.getPageById.execute(params.id);\n\n if (getResult.isFail()) {\n return getResult;\n }\n\n const original = getResult.value;\n\n // Publish before duplicate event\n const beforeEvent = new PageBeforeDuplicateEvent({\n original\n });\n\n await this.eventPublisher.publish(beforeEvent);\n\n // Execute the duplicate operation\n const result = await this.repository.execute(params);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after duplicate event\n const afterEvent = new PageAfterDuplicateEvent({\n original,\n page: result.value\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok(result.value);\n }\n}\n\nexport const DuplicatePageUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: DuplicatePageUseCaseImpl,\n dependencies: [WbPermissions, EventPublisher, GetPageByIdUseCase, DuplicatePageRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,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,SAAS,CAAC,MAAM,CAAC;IAC9D,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOnB,MAAM,CAACqB,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,QAAQ,GAAGH,SAAS,CAACI,KAAK;;IAEhC;IACA,MAAMC,WAAW,GAAG,IAAIrB,wBAAwB,CAAC;MAC7CmB;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,CAACX,cAAc,CAACc,OAAO,CAACD,WAAW,CAAC;;IAE9C;IACA,MAAME,MAAM,GAAG,MAAM,IAAI,CAACb,UAAU,CAACC,OAAO,CAACC,MAAM,CAAC;IAEpD,IAAIW,MAAM,CAACL,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOK,MAAM;IACjB;;IAEA;IACA,MAAMC,UAAU,GAAG,IAAIvB,uBAAuB,CAAC;MAC3CkB,QAAQ;MACRM,IAAI,EAAEF,MAAM,CAACH;IACjB,CAAC,CAAC;IAEF,MAAM,IAAI,CAACZ,cAAc,CAACc,OAAO,CAACE,UAAU,CAAC;IAE7C,OAAO9B,MAAM,CAACgC,EAAE,CAACH,MAAM,CAACH,KAAK,CAAC;EAClC;AACJ;AAEA,OAAO,MAAMvB,oBAAoB,GAAGF,oBAAoB,CAAC;EACrDgC,WAAW,EAAE7B,kBAAkB;EAC/B8B,cAAc,EAAEvB,wBAAwB;EACxCwB,YAAY,EAAE,CAAC1B,aAAa,EAAEP,cAAc,EAAEM,kBAAkB,EAAEH,uBAAuB;AAC7F,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { type Result } from "@webiny/feature/api";
|
|
2
|
-
import type { IEventHandler } from "@webiny/api-core/features/
|
|
3
|
-
import type { DomainEvent } from "@webiny/api-core/features/
|
|
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 { PageValidationError, PageNotFoundError, PagePersistenceError, PageNotAuthorizedError } from "../../../domain/page/errors.js";
|
|
6
6
|
export interface IDuplicateWbPageParams {
|
|
7
7
|
id: string;
|
|
8
8
|
}
|
|
9
|
+
export type DuplicatePageData = Pick<WbPage, "bindings" | "elements" | "location" | "properties" | "metadata" | "extensions">;
|
|
10
|
+
export interface DuplicatePageCallbackParams {
|
|
11
|
+
original: WbPage;
|
|
12
|
+
duplicate: DuplicatePageData;
|
|
13
|
+
}
|
|
14
|
+
export type DuplicatePageCallback = (params: DuplicatePageCallbackParams) => Promise<void> | void;
|
|
9
15
|
export interface IDuplicatePageRepository {
|
|
10
|
-
execute(params: IDuplicateWbPageParams): Promise<Result<WbPage, RepositoryError>>;
|
|
16
|
+
execute(params: IDuplicateWbPageParams, callback?: DuplicatePageCallback): Promise<Result<WbPage, RepositoryError>>;
|
|
11
17
|
}
|
|
12
18
|
export interface IDuplicatePageRepositoryErrors {
|
|
13
19
|
validation: PageValidationError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","DuplicatePageRepository","DuplicatePageUseCase","PageBeforeDuplicateEventHandler","PageAfterDuplicateEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/
|
|
1
|
+
{"version":3,"names":["createAbstraction","DuplicatePageRepository","DuplicatePageUseCase","PageBeforeDuplicateEventHandler","PageAfterDuplicateEventHandler"],"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 PageValidationError,\n PageNotFoundError,\n PagePersistenceError,\n PageNotAuthorizedError\n} from \"~/domain/page/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IDuplicateWbPageParams {\n id: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport type DuplicatePageData = Pick<\n WbPage,\n \"bindings\" | \"elements\" | \"location\" | \"properties\" | \"metadata\" | \"extensions\"\n>;\n\nexport interface DuplicatePageCallbackParams {\n original: WbPage;\n duplicate: DuplicatePageData;\n}\n\nexport type DuplicatePageCallback = (params: DuplicatePageCallbackParams) => Promise<void> | void;\n\nexport interface IDuplicatePageRepository {\n execute(\n params: IDuplicateWbPageParams,\n callback?: DuplicatePageCallback\n ): Promise<Result<WbPage, RepositoryError>>;\n}\n\nexport interface IDuplicatePageRepositoryErrors {\n validation: PageValidationError;\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype RepositoryError = IDuplicatePageRepositoryErrors[keyof IDuplicatePageRepositoryErrors];\n\nexport const DuplicatePageRepository = createAbstraction<IDuplicatePageRepository>(\n \"Wb/DuplicatePageRepository\"\n);\n\nexport namespace DuplicatePageRepository {\n export type Interface = IDuplicatePageRepository;\n export type Params = IDuplicateWbPageParams;\n export type Return = Promise<Result<WbPage, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IDuplicatePageUseCase {\n execute(params: IDuplicateWbPageParams): Promise<Result<WbPage, UseCaseError>>;\n}\n\nexport interface IDuplicatePageUseCaseErrors {\n notAuthorized: PageNotAuthorizedError;\n validation: PageValidationError;\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype UseCaseError = IDuplicatePageUseCaseErrors[keyof IDuplicatePageUseCaseErrors];\n\n/** Duplicate a page. */\nexport const DuplicatePageUseCase =\n createAbstraction<IDuplicatePageUseCase>(\"Wb/DuplicatePageUseCase\");\n\nexport namespace DuplicatePageUseCase {\n export type Interface = IDuplicatePageUseCase;\n export type Params = IDuplicateWbPageParams;\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 PageBeforeDuplicatePayload {\n original: WbPage;\n}\n\nexport interface PageAfterDuplicatePayload {\n original: WbPage;\n page: WbPage;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\n/** Hook into page lifecycle before a page is duplicated. */\nexport const PageBeforeDuplicateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageBeforeDuplicatePayload>>\n>(\"Wb/PageBeforeDuplicateEventHandler\");\n\nexport namespace PageBeforeDuplicateEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageBeforeDuplicatePayload>>;\n export type Event = DomainEvent<PageBeforeDuplicatePayload>;\n export type Page = WbPage;\n}\n\n/** Hook into page lifecycle after a page is duplicated. */\nexport const PageAfterDuplicateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageAfterDuplicatePayload>>\n>(\"Wb/PageAfterDuplicateEventHandler\");\n\nexport namespace PageAfterDuplicateEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageAfterDuplicatePayload>>;\n export type Event = DomainEvent<PageAfterDuplicatePayload>;\n export type Page = WbPage;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAWpE;AACA;AACA;;AAMA;AACA;AACA;;AA6BA,OAAO,MAAMC,uBAAuB,GAAGD,iBAAiB,CACpD,4BACJ,CAAC;;AASD;AACA;AACA;;AAeA;AACA,OAAO,MAAME,oBAAoB,GAC7BF,iBAAiB,CAAwB,yBAAyB,CAAC;;AAUvE;AACA;AACA;;AAWA;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/
|
|
1
|
+
import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
2
|
import type { PageBeforeDuplicatePayload, PageAfterDuplicatePayload } from "./abstractions.js";
|
|
3
3
|
export declare class PageBeforeDuplicateEvent extends DomainEvent<PageBeforeDuplicatePayload> {
|
|
4
4
|
eventType: "page.beforeDuplicate";
|
|
5
|
-
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/
|
|
5
|
+
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<PageBeforeDuplicatePayload>>>;
|
|
6
6
|
}
|
|
7
7
|
export declare class PageAfterDuplicateEvent extends DomainEvent<PageAfterDuplicatePayload> {
|
|
8
8
|
eventType: "page.afterDuplicate";
|
|
9
|
-
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/
|
|
9
|
+
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<PageAfterDuplicatePayload>>>;
|
|
10
10
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DomainEvent } from "@webiny/api-core/features/
|
|
1
|
+
import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
2
|
import { PageBeforeDuplicateEventHandler, PageAfterDuplicateEventHandler } from "./abstractions.js";
|
|
3
3
|
// PageBeforeDuplicate Event
|
|
4
4
|
export class PageBeforeDuplicateEvent extends DomainEvent {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DomainEvent","PageBeforeDuplicateEventHandler","PageAfterDuplicateEventHandler","PageBeforeDuplicateEvent","eventType","getHandlerAbstraction","PageAfterDuplicateEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/
|
|
1
|
+
{"version":3,"names":["DomainEvent","PageBeforeDuplicateEventHandler","PageAfterDuplicateEventHandler","PageBeforeDuplicateEvent","eventType","getHandlerAbstraction","PageAfterDuplicateEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { PageBeforeDuplicateEventHandler, PageAfterDuplicateEventHandler } from \"./abstractions.js\";\nimport type { PageBeforeDuplicatePayload, PageAfterDuplicatePayload } from \"./abstractions.js\";\n\n// PageBeforeDuplicate Event\nexport class PageBeforeDuplicateEvent extends DomainEvent<PageBeforeDuplicatePayload> {\n eventType = \"page.beforeDuplicate\" as const;\n\n getHandlerAbstraction() {\n return PageBeforeDuplicateEventHandler;\n }\n}\n\n// PageAfterDuplicate Event\nexport class PageAfterDuplicateEvent extends DomainEvent<PageAfterDuplicatePayload> {\n eventType = \"page.afterDuplicate\" as const;\n\n getHandlerAbstraction() {\n return PageAfterDuplicateEventHandler;\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 +1,2 @@
|
|
|
1
|
-
export { PageAfterDuplicateEventHandler, PageBeforeDuplicateEventHandler, DuplicatePageUseCase } from "./abstractions.js";
|
|
1
|
+
export { PageAfterDuplicateEventHandler, PageBeforeDuplicateEventHandler, DuplicatePageUseCase, DuplicatePageRepository } from "./abstractions.js";
|
|
2
|
+
export type { DuplicatePageCallback, DuplicatePageCallbackParams, DuplicatePageData } from "./abstractions.js";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { PageAfterDuplicateEventHandler, PageBeforeDuplicateEventHandler, DuplicatePageUseCase } from "./abstractions.js";
|
|
1
|
+
export { PageAfterDuplicateEventHandler, PageBeforeDuplicateEventHandler, DuplicatePageUseCase, DuplicatePageRepository } from "./abstractions.js";
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PageAfterDuplicateEventHandler","PageBeforeDuplicateEventHandler","DuplicatePageUseCase"],"sources":["index.ts"],"sourcesContent":["export {\n PageAfterDuplicateEventHandler,\n PageBeforeDuplicateEventHandler,\n DuplicatePageUseCase\n} from \"./abstractions.js\";\n"],"mappings":"AAAA,SACIA,8BAA8B,EAC9BC,+BAA+B,EAC/BC,oBAAoB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["PageAfterDuplicateEventHandler","PageBeforeDuplicateEventHandler","DuplicatePageUseCase","DuplicatePageRepository"],"sources":["index.ts"],"sourcesContent":["export {\n PageAfterDuplicateEventHandler,\n PageBeforeDuplicateEventHandler,\n DuplicatePageUseCase,\n DuplicatePageRepository\n} from \"./abstractions.js\";\nexport type {\n DuplicatePageCallback,\n DuplicatePageCallbackParams,\n DuplicatePageData\n} from \"./abstractions.js\";\n"],"mappings":"AAAA,SACIA,8BAA8B,EAC9BC,+BAA+B,EAC/BC,oBAAoB,EACpBC,uBAAuB","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { GetDeletedPageByIdUseCase as UseCaseAbstraction, GetDeletedPageByIdRepository } from "./abstractions.js";
|
|
2
|
-
import { WbPermissions } from "../../../
|
|
2
|
+
import { WbPermissions } from "../../../features/permissions/abstractions.js";
|
|
3
3
|
declare class GetDeletedPageByIdUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
4
4
|
private permissions;
|
|
5
5
|
private repository;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { GetDeletedPageByIdUseCase as UseCaseAbstraction, GetDeletedPageByIdRepository } from "./abstractions.js";
|
|
3
|
-
import { WbPermissions } from "
|
|
3
|
+
import { WbPermissions } from "../../permissions/abstractions.js";
|
|
4
4
|
import { PageNotAuthorizedError } from "../../../domain/page/errors.js";
|
|
5
5
|
class GetDeletedPageByIdUseCaseImpl {
|
|
6
6
|
constructor(permissions, repository) {
|
|
@@ -25,7 +25,7 @@ class GetDeletedPageByIdUseCaseImpl {
|
|
|
25
25
|
}
|
|
26
26
|
export const GetDeletedPageByIdUseCase = UseCaseAbstraction.createImplementation({
|
|
27
27
|
implementation: GetDeletedPageByIdUseCaseImpl,
|
|
28
|
-
dependencies: [WbPermissions
|
|
28
|
+
dependencies: [WbPermissions, GetDeletedPageByIdRepository]
|
|
29
29
|
});
|
|
30
30
|
|
|
31
31
|
//# sourceMappingURL=GetDeletedPageByIdUseCase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Result","GetDeletedPageByIdUseCase","UseCaseAbstraction","GetDeletedPageByIdRepository","WbPermissions","PageNotAuthorizedError","GetDeletedPageByIdUseCaseImpl","constructor","permissions","repository","execute","id","hasPermission","canRead","fail","result","isFail","canAccess","value","createImplementation","implementation","dependencies"
|
|
1
|
+
{"version":3,"names":["Result","GetDeletedPageByIdUseCase","UseCaseAbstraction","GetDeletedPageByIdRepository","WbPermissions","PageNotAuthorizedError","GetDeletedPageByIdUseCaseImpl","constructor","permissions","repository","execute","id","hasPermission","canRead","fail","result","isFail","canAccess","value","createImplementation","implementation","dependencies"],"sources":["GetDeletedPageByIdUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n GetDeletedPageByIdUseCase as UseCaseAbstraction,\n GetDeletedPageByIdRepository\n} from \"./abstractions.js\";\nimport { WbPermissions } from \"~/features/permissions/abstractions.js\";\nimport { PageNotAuthorizedError } from \"~/domain/page/errors.js\";\n\nclass GetDeletedPageByIdUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private repository: GetDeletedPageByIdRepository.Interface\n ) {}\n\n async execute(id: string): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canRead(\"page\");\n if (!hasPermission) {\n return Result.fail(new PageNotAuthorizedError());\n }\n\n const result = await this.repository.execute(id);\n\n if (result.isFail()) {\n return result;\n }\n\n const canAccess = await this.permissions.canAccess(\"page\", result.value);\n if (!canAccess) {\n return Result.fail(new PageNotAuthorizedError());\n }\n\n return result;\n }\n}\n\nexport const GetDeletedPageByIdUseCase = UseCaseAbstraction.createImplementation({\n implementation: GetDeletedPageByIdUseCaseImpl,\n dependencies: [WbPermissions, GetDeletedPageByIdRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,yBAAyB,IAAIC,kBAAkB,EAC/CC,4BAA4B;AAEhC,SAASC,aAAa;AACtB,SAASC,sBAAsB;AAE/B,MAAMC,6BAA6B,CAAyC;EACxEC,WAAWA,CACCC,WAAoC,EACpCC,UAAkD,EAC5D;IAAA,KAFUD,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,UAAkD,GAAlDA,UAAkD;EAC3D;EAEH,MAAMC,OAAOA,CAACC,EAAU,EAA6B;IACjD,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACJ,WAAW,CAACK,OAAO,CAAC,MAAM,CAAC;IAC5D,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOZ,MAAM,CAACc,IAAI,CAAC,IAAIT,sBAAsB,CAAC,CAAC,CAAC;IACpD;IAEA,MAAMU,MAAM,GAAG,MAAM,IAAI,CAACN,UAAU,CAACC,OAAO,CAACC,EAAE,CAAC;IAEhD,IAAII,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOD,MAAM;IACjB;IAEA,MAAME,SAAS,GAAG,MAAM,IAAI,CAACT,WAAW,CAACS,SAAS,CAAC,MAAM,EAAEF,MAAM,CAACG,KAAK,CAAC;IACxE,IAAI,CAACD,SAAS,EAAE;MACZ,OAAOjB,MAAM,CAACc,IAAI,CAAC,IAAIT,sBAAsB,CAAC,CAAC,CAAC;IACpD;IAEA,OAAOU,MAAM;EACjB;AACJ;AAEA,OAAO,MAAMd,yBAAyB,GAAGC,kBAAkB,CAACiB,oBAAoB,CAAC;EAC7EC,cAAc,EAAEd,6BAA6B;EAC7Ce,YAAY,EAAE,CAACjB,aAAa,EAAED,4BAA4B;AAC9D,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { GetPageByIdUseCase as UseCaseAbstraction, GetPageByIdRepository } from "./abstractions.js";
|
|
2
|
-
import { WbPermissions } from "../../../
|
|
2
|
+
import { WbPermissions } from "../../../features/permissions/abstractions.js";
|
|
3
3
|
declare class GetPageByIdUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
4
4
|
private permissions;
|
|
5
5
|
private repository;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { GetPageByIdUseCase as UseCaseAbstraction, GetPageByIdRepository } from "./abstractions.js";
|
|
3
|
-
import { WbPermissions } from "
|
|
3
|
+
import { WbPermissions } from "../../permissions/abstractions.js";
|
|
4
4
|
import { PageNotAuthorizedError } from "../../../domain/page/errors.js";
|
|
5
5
|
class GetPageByIdUseCaseImpl {
|
|
6
6
|
constructor(permissions, repository) {
|
|
@@ -25,7 +25,7 @@ class GetPageByIdUseCaseImpl {
|
|
|
25
25
|
}
|
|
26
26
|
export const GetPageByIdUseCase = UseCaseAbstraction.createImplementation({
|
|
27
27
|
implementation: GetPageByIdUseCaseImpl,
|
|
28
|
-
dependencies: [WbPermissions
|
|
28
|
+
dependencies: [WbPermissions, GetPageByIdRepository]
|
|
29
29
|
});
|
|
30
30
|
|
|
31
31
|
//# sourceMappingURL=GetPageByIdUseCase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Result","GetPageByIdUseCase","UseCaseAbstraction","GetPageByIdRepository","WbPermissions","PageNotAuthorizedError","GetPageByIdUseCaseImpl","constructor","permissions","repository","execute","id","hasPermission","canRead","fail","result","isFail","canAccess","value","createImplementation","implementation","dependencies"
|
|
1
|
+
{"version":3,"names":["Result","GetPageByIdUseCase","UseCaseAbstraction","GetPageByIdRepository","WbPermissions","PageNotAuthorizedError","GetPageByIdUseCaseImpl","constructor","permissions","repository","execute","id","hasPermission","canRead","fail","result","isFail","canAccess","value","createImplementation","implementation","dependencies"],"sources":["GetPageByIdUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { GetPageByIdUseCase as UseCaseAbstraction, GetPageByIdRepository } from \"./abstractions.js\";\nimport { WbPermissions } from \"~/features/permissions/abstractions.js\";\nimport { PageNotAuthorizedError } from \"~/domain/page/errors.js\";\n\nclass GetPageByIdUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private repository: GetPageByIdRepository.Interface\n ) {}\n\n async execute(id: string): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canRead(\"page\");\n if (!hasPermission) {\n return Result.fail(new PageNotAuthorizedError());\n }\n\n const result = await this.repository.execute(id);\n\n if (result.isFail()) {\n return result;\n }\n\n const canAccess = await this.permissions.canAccess(\"page\", result.value);\n if (!canAccess) {\n return Result.fail(new PageNotAuthorizedError());\n }\n\n return result;\n }\n}\n\nexport const GetPageByIdUseCase = UseCaseAbstraction.createImplementation({\n implementation: GetPageByIdUseCaseImpl,\n dependencies: [WbPermissions, GetPageByIdRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,kBAAkB,IAAIC,kBAAkB,EAAEC,qBAAqB;AACxE,SAASC,aAAa;AACtB,SAASC,sBAAsB;AAE/B,MAAMC,sBAAsB,CAAyC;EACjEC,WAAWA,CACCC,WAAoC,EACpCC,UAA2C,EACrD;IAAA,KAFUD,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,UAA2C,GAA3CA,UAA2C;EACpD;EAEH,MAAMC,OAAOA,CAACC,EAAU,EAA6B;IACjD,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACJ,WAAW,CAACK,OAAO,CAAC,MAAM,CAAC;IAC5D,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOZ,MAAM,CAACc,IAAI,CAAC,IAAIT,sBAAsB,CAAC,CAAC,CAAC;IACpD;IAEA,MAAMU,MAAM,GAAG,MAAM,IAAI,CAACN,UAAU,CAACC,OAAO,CAACC,EAAE,CAAC;IAEhD,IAAII,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOD,MAAM;IACjB;IAEA,MAAME,SAAS,GAAG,MAAM,IAAI,CAACT,WAAW,CAACS,SAAS,CAAC,MAAM,EAAEF,MAAM,CAACG,KAAK,CAAC;IACxE,IAAI,CAACD,SAAS,EAAE;MACZ,OAAOjB,MAAM,CAACc,IAAI,CAAC,IAAIT,sBAAsB,CAAC,CAAC,CAAC;IACpD;IAEA,OAAOU,MAAM;EACjB;AACJ;AAEA,OAAO,MAAMd,kBAAkB,GAAGC,kBAAkB,CAACiB,oBAAoB,CAAC;EACtEC,cAAc,EAAEd,sBAAsB;EACtCe,YAAY,EAAE,CAACjB,aAAa,EAAED,qBAAqB;AACvD,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { GetPageByPathUseCase as UseCaseAbstraction, GetPageByPathRepository } from "./abstractions.js";
|
|
2
|
-
import { WbPermissions } from "../../../
|
|
2
|
+
import { WbPermissions } from "../../../features/permissions/abstractions.js";
|
|
3
3
|
declare class GetPageByPathUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
4
4
|
private permissions;
|
|
5
5
|
private repository;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { GetPageByPathUseCase as UseCaseAbstraction, GetPageByPathRepository } from "./abstractions.js";
|
|
3
|
-
import { WbPermissions } from "
|
|
3
|
+
import { WbPermissions } from "../../permissions/abstractions.js";
|
|
4
4
|
import { PageNotAuthorizedError } from "../../../domain/page/errors.js";
|
|
5
5
|
class GetPageByPathUseCaseImpl {
|
|
6
6
|
constructor(permissions, repository) {
|
|
@@ -25,7 +25,7 @@ class GetPageByPathUseCaseImpl {
|
|
|
25
25
|
}
|
|
26
26
|
export const GetPageByPathUseCase = UseCaseAbstraction.createImplementation({
|
|
27
27
|
implementation: GetPageByPathUseCaseImpl,
|
|
28
|
-
dependencies: [WbPermissions
|
|
28
|
+
dependencies: [WbPermissions, GetPageByPathRepository]
|
|
29
29
|
});
|
|
30
30
|
|
|
31
31
|
//# sourceMappingURL=GetPageByPathUseCase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Result","GetPageByPathUseCase","UseCaseAbstraction","GetPageByPathRepository","WbPermissions","PageNotAuthorizedError","GetPageByPathUseCaseImpl","constructor","permissions","repository","execute","path","hasPermission","canRead","fail","result","isFail","canAccess","value","createImplementation","implementation","dependencies"
|
|
1
|
+
{"version":3,"names":["Result","GetPageByPathUseCase","UseCaseAbstraction","GetPageByPathRepository","WbPermissions","PageNotAuthorizedError","GetPageByPathUseCaseImpl","constructor","permissions","repository","execute","path","hasPermission","canRead","fail","result","isFail","canAccess","value","createImplementation","implementation","dependencies"],"sources":["GetPageByPathUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n GetPageByPathUseCase as UseCaseAbstraction,\n GetPageByPathRepository\n} from \"./abstractions.js\";\nimport { WbPermissions } from \"~/features/permissions/abstractions.js\";\nimport { PageNotAuthorizedError } from \"~/domain/page/errors.js\";\n\nclass GetPageByPathUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private repository: GetPageByPathRepository.Interface\n ) {}\n\n async execute(path: string): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canRead(\"page\");\n if (!hasPermission) {\n return Result.fail(new PageNotAuthorizedError());\n }\n\n const result = await this.repository.execute(path);\n\n if (result.isFail()) {\n return result;\n }\n\n const canAccess = await this.permissions.canAccess(\"page\", result.value);\n if (!canAccess) {\n return Result.fail(new PageNotAuthorizedError());\n }\n\n return result;\n }\n}\n\nexport const GetPageByPathUseCase = UseCaseAbstraction.createImplementation({\n implementation: GetPageByPathUseCaseImpl,\n dependencies: [WbPermissions, GetPageByPathRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,oBAAoB,IAAIC,kBAAkB,EAC1CC,uBAAuB;AAE3B,SAASC,aAAa;AACtB,SAASC,sBAAsB;AAE/B,MAAMC,wBAAwB,CAAyC;EACnEC,WAAWA,CACCC,WAAoC,EACpCC,UAA6C,EACvD;IAAA,KAFUD,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,UAA6C,GAA7CA,UAA6C;EACtD;EAEH,MAAMC,OAAOA,CAACC,IAAY,EAA6B;IACnD,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACJ,WAAW,CAACK,OAAO,CAAC,MAAM,CAAC;IAC5D,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOZ,MAAM,CAACc,IAAI,CAAC,IAAIT,sBAAsB,CAAC,CAAC,CAAC;IACpD;IAEA,MAAMU,MAAM,GAAG,MAAM,IAAI,CAACN,UAAU,CAACC,OAAO,CAACC,IAAI,CAAC;IAElD,IAAII,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOD,MAAM;IACjB;IAEA,MAAME,SAAS,GAAG,MAAM,IAAI,CAACT,WAAW,CAACS,SAAS,CAAC,MAAM,EAAEF,MAAM,CAACG,KAAK,CAAC;IACxE,IAAI,CAACD,SAAS,EAAE;MACZ,OAAOjB,MAAM,CAACc,IAAI,CAAC,IAAIT,sBAAsB,CAAC,CAAC,CAAC;IACpD;IAEA,OAAOU,MAAM;EACjB;AACJ;AAEA,OAAO,MAAMd,oBAAoB,GAAGC,kBAAkB,CAACiB,oBAAoB,CAAC;EACxEC,cAAc,EAAEd,wBAAwB;EACxCe,YAAY,EAAE,CAACjB,aAAa,EAAED,uBAAuB;AACzD,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ListPublishedEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries";
|
|
2
|
+
import { GetEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntry";
|
|
3
|
+
import { GetPageLanguagePathsRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
4
|
+
import { PageModel } from "../../../domain/page/abstractions.js";
|
|
5
|
+
declare class GetPageLanguagePathsRepositoryImpl implements RepositoryAbstraction.Interface {
|
|
6
|
+
private pageModel;
|
|
7
|
+
private listPublished;
|
|
8
|
+
private getEntry;
|
|
9
|
+
constructor(pageModel: PageModel.Interface, listPublished: ListPublishedEntriesUseCase.Interface, getEntry: GetEntryUseCase.Interface);
|
|
10
|
+
execute(rootEntryId: string): RepositoryAbstraction.Return;
|
|
11
|
+
}
|
|
12
|
+
export declare const GetPageLanguagePathsRepository: typeof GetPageLanguagePathsRepositoryImpl & {
|
|
13
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetPageLanguagePathsRepository>;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { ListPublishedEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries";
|
|
3
|
+
import { GetEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntry";
|
|
4
|
+
import { GetPageLanguagePathsRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
5
|
+
import { PageModel } from "../../../domain/page/abstractions.js";
|
|
6
|
+
import { EntryToPageMapper } from "../../../domain/page/EntryToPageMapper.js";
|
|
7
|
+
import { PagePersistenceError } from "../../../domain/page/errors.js";
|
|
8
|
+
class GetPageLanguagePathsRepositoryImpl {
|
|
9
|
+
constructor(pageModel, listPublished, getEntry) {
|
|
10
|
+
this.pageModel = pageModel;
|
|
11
|
+
this.listPublished = listPublished;
|
|
12
|
+
this.getEntry = getEntry;
|
|
13
|
+
}
|
|
14
|
+
async execute(rootEntryId) {
|
|
15
|
+
const [sourceResult, translationsResult] = await Promise.all([
|
|
16
|
+
// Fetch the source page itself.
|
|
17
|
+
this.getEntry.execute(this.pageModel, {
|
|
18
|
+
where: {
|
|
19
|
+
entryId: rootEntryId,
|
|
20
|
+
published: true
|
|
21
|
+
}
|
|
22
|
+
}),
|
|
23
|
+
// Fetch all translated pages pointing to the source.
|
|
24
|
+
this.listPublished.execute(this.pageModel, {
|
|
25
|
+
where: {
|
|
26
|
+
values: {
|
|
27
|
+
properties: {
|
|
28
|
+
sourcePage: rootEntryId
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
})]);
|
|
33
|
+
if (translationsResult.isFail()) {
|
|
34
|
+
return Result.fail(new PagePersistenceError(translationsResult.error));
|
|
35
|
+
}
|
|
36
|
+
const languagePaths = {};
|
|
37
|
+
|
|
38
|
+
// Include the source page.
|
|
39
|
+
if (!sourceResult.isFail() && sourceResult.value) {
|
|
40
|
+
const source = EntryToPageMapper.toPage(sourceResult.value);
|
|
41
|
+
if (source.properties?.language && source.properties?.path) {
|
|
42
|
+
languagePaths[source.properties.language] = source.properties.path;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Include all translations.
|
|
47
|
+
for (const entry of translationsResult.value.entries) {
|
|
48
|
+
const page = EntryToPageMapper.toPage(entry);
|
|
49
|
+
if (page.properties?.language && page.properties?.path) {
|
|
50
|
+
languagePaths[page.properties.language] = page.properties.path;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return Result.ok(languagePaths);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export const GetPageLanguagePathsRepository = RepositoryAbstraction.createImplementation({
|
|
57
|
+
implementation: GetPageLanguagePathsRepositoryImpl,
|
|
58
|
+
dependencies: [PageModel, ListPublishedEntriesUseCase, GetEntryUseCase]
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
//# sourceMappingURL=GetPageLanguagePathsRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Result","ListPublishedEntriesUseCase","GetEntryUseCase","GetPageLanguagePathsRepository","RepositoryAbstraction","PageModel","EntryToPageMapper","PagePersistenceError","GetPageLanguagePathsRepositoryImpl","constructor","pageModel","listPublished","getEntry","execute","rootEntryId","sourceResult","translationsResult","Promise","all","where","entryId","published","values","properties","sourcePage","isFail","fail","error","languagePaths","value","source","toPage","language","path","entry","entries","page","ok","createImplementation","implementation","dependencies"],"sources":["GetPageLanguagePathsRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { ListPublishedEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries\";\nimport { GetEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntry\";\nimport { GetPageLanguagePathsRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { type CmsEntryWbPage, PageModel } from \"~/domain/page/abstractions.js\";\nimport { EntryToPageMapper } from \"~/domain/page/EntryToPageMapper.js\";\nimport { PagePersistenceError } from \"~/domain/page/errors.js\";\n\nclass GetPageLanguagePathsRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private pageModel: PageModel.Interface,\n private listPublished: ListPublishedEntriesUseCase.Interface,\n private getEntry: GetEntryUseCase.Interface\n ) {}\n\n async execute(rootEntryId: string): RepositoryAbstraction.Return {\n const [sourceResult, translationsResult] = await Promise.all([\n // Fetch the source page itself.\n this.getEntry.execute<CmsEntryWbPage>(this.pageModel, {\n where: { entryId: rootEntryId, published: true }\n }),\n // Fetch all translated pages pointing to the source.\n this.listPublished.execute<CmsEntryWbPage>(this.pageModel, {\n where: {\n values: {\n properties: { sourcePage: rootEntryId }\n }\n }\n })\n ]);\n\n if (translationsResult.isFail()) {\n return Result.fail(new PagePersistenceError(translationsResult.error));\n }\n\n const languagePaths: Record<string, string> = {};\n\n // Include the source page.\n if (!sourceResult.isFail() && sourceResult.value) {\n const source = EntryToPageMapper.toPage(sourceResult.value);\n if (source.properties?.language && source.properties?.path) {\n languagePaths[source.properties.language] = source.properties.path;\n }\n }\n\n // Include all translations.\n for (const entry of translationsResult.value.entries) {\n const page = EntryToPageMapper.toPage(entry);\n if (page.properties?.language && page.properties?.path) {\n languagePaths[page.properties.language] = page.properties.path;\n }\n }\n\n return Result.ok(languagePaths);\n }\n}\n\nexport const GetPageLanguagePathsRepository = RepositoryAbstraction.createImplementation({\n implementation: GetPageLanguagePathsRepositoryImpl,\n dependencies: [PageModel, ListPublishedEntriesUseCase, GetEntryUseCase]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,2BAA2B,QAAQ,4DAA4D;AACxG,SAASC,eAAe,QAAQ,yDAAyD;AACzF,SAASC,8BAA8B,IAAIC,qBAAqB;AAChE,SAA8BC,SAAS;AACvC,SAASC,iBAAiB;AAC1B,SAASC,oBAAoB;AAE7B,MAAMC,kCAAkC,CAA4C;EAChFC,WAAWA,CACCC,SAA8B,EAC9BC,aAAoD,EACpDC,QAAmC,EAC7C;IAAA,KAHUF,SAA8B,GAA9BA,SAA8B;IAAA,KAC9BC,aAAoD,GAApDA,aAAoD;IAAA,KACpDC,QAAmC,GAAnCA,QAAmC;EAC5C;EAEH,MAAMC,OAAOA,CAACC,WAAmB,EAAgC;IAC7D,MAAM,CAACC,YAAY,EAAEC,kBAAkB,CAAC,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC;IACzD;IACA,IAAI,CAACN,QAAQ,CAACC,OAAO,CAAiB,IAAI,CAACH,SAAS,EAAE;MAClDS,KAAK,EAAE;QAAEC,OAAO,EAAEN,WAAW;QAAEO,SAAS,EAAE;MAAK;IACnD,CAAC,CAAC;IACF;IACA,IAAI,CAACV,aAAa,CAACE,OAAO,CAAiB,IAAI,CAACH,SAAS,EAAE;MACvDS,KAAK,EAAE;QACHG,MAAM,EAAE;UACJC,UAAU,EAAE;YAAEC,UAAU,EAAEV;UAAY;QAC1C;MACJ;IACJ,CAAC,CAAC,CACL,CAAC;IAEF,IAAIE,kBAAkB,CAACS,MAAM,CAAC,CAAC,EAAE;MAC7B,OAAOzB,MAAM,CAAC0B,IAAI,CAAC,IAAInB,oBAAoB,CAACS,kBAAkB,CAACW,KAAK,CAAC,CAAC;IAC1E;IAEA,MAAMC,aAAqC,GAAG,CAAC,CAAC;;IAEhD;IACA,IAAI,CAACb,YAAY,CAACU,MAAM,CAAC,CAAC,IAAIV,YAAY,CAACc,KAAK,EAAE;MAC9C,MAAMC,MAAM,GAAGxB,iBAAiB,CAACyB,MAAM,CAAChB,YAAY,CAACc,KAAK,CAAC;MAC3D,IAAIC,MAAM,CAACP,UAAU,EAAES,QAAQ,IAAIF,MAAM,CAACP,UAAU,EAAEU,IAAI,EAAE;QACxDL,aAAa,CAACE,MAAM,CAACP,UAAU,CAACS,QAAQ,CAAC,GAAGF,MAAM,CAACP,UAAU,CAACU,IAAI;MACtE;IACJ;;IAEA;IACA,KAAK,MAAMC,KAAK,IAAIlB,kBAAkB,CAACa,KAAK,CAACM,OAAO,EAAE;MAClD,MAAMC,IAAI,GAAG9B,iBAAiB,CAACyB,MAAM,CAACG,KAAK,CAAC;MAC5C,IAAIE,IAAI,CAACb,UAAU,EAAES,QAAQ,IAAII,IAAI,CAACb,UAAU,EAAEU,IAAI,EAAE;QACpDL,aAAa,CAACQ,IAAI,CAACb,UAAU,CAACS,QAAQ,CAAC,GAAGI,IAAI,CAACb,UAAU,CAACU,IAAI;MAClE;IACJ;IAEA,OAAOjC,MAAM,CAACqC,EAAE,CAACT,aAAa,CAAC;EACnC;AACJ;AAEA,OAAO,MAAMzB,8BAA8B,GAAGC,qBAAqB,CAACkC,oBAAoB,CAAC;EACrFC,cAAc,EAAE/B,kCAAkC;EAClDgC,YAAY,EAAE,CAACnC,SAAS,EAAEJ,2BAA2B,EAAEC,eAAe;AAC1E,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { GetPageLanguagePathsUseCase as UseCaseAbstraction, GetPageLanguagePathsRepository } from "./abstractions.js";
|
|
2
|
+
declare class GetPageLanguagePathsUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
3
|
+
private repository;
|
|
4
|
+
constructor(repository: GetPageLanguagePathsRepository.Interface);
|
|
5
|
+
execute(rootEntryId: string): UseCaseAbstraction.Return;
|
|
6
|
+
}
|
|
7
|
+
export declare const GetPageLanguagePathsUseCase: typeof GetPageLanguagePathsUseCaseImpl & {
|
|
8
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetPageLanguagePathsUseCase>;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { GetPageLanguagePathsUseCase as UseCaseAbstraction, GetPageLanguagePathsRepository } from "./abstractions.js";
|
|
3
|
+
class GetPageLanguagePathsUseCaseImpl {
|
|
4
|
+
constructor(repository) {
|
|
5
|
+
this.repository = repository;
|
|
6
|
+
}
|
|
7
|
+
async execute(rootEntryId) {
|
|
8
|
+
const result = await this.repository.execute(rootEntryId);
|
|
9
|
+
if (result.isFail()) {
|
|
10
|
+
return result;
|
|
11
|
+
}
|
|
12
|
+
return Result.ok(result.value);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export const GetPageLanguagePathsUseCase = UseCaseAbstraction.createImplementation({
|
|
16
|
+
implementation: GetPageLanguagePathsUseCaseImpl,
|
|
17
|
+
dependencies: [GetPageLanguagePathsRepository]
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=GetPageLanguagePathsUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Result","GetPageLanguagePathsUseCase","UseCaseAbstraction","GetPageLanguagePathsRepository","GetPageLanguagePathsUseCaseImpl","constructor","repository","execute","rootEntryId","result","isFail","ok","value","createImplementation","implementation","dependencies"],"sources":["GetPageLanguagePathsUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n GetPageLanguagePathsUseCase as UseCaseAbstraction,\n GetPageLanguagePathsRepository\n} from \"./abstractions.js\";\n\nclass GetPageLanguagePathsUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(private repository: GetPageLanguagePathsRepository.Interface) {}\n\n async execute(rootEntryId: string): UseCaseAbstraction.Return {\n const result = await this.repository.execute(rootEntryId);\n\n if (result.isFail()) {\n return result;\n }\n\n return Result.ok(result.value);\n }\n}\n\nexport const GetPageLanguagePathsUseCase = UseCaseAbstraction.createImplementation({\n implementation: GetPageLanguagePathsUseCaseImpl,\n dependencies: [GetPageLanguagePathsRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,2BAA2B,IAAIC,kBAAkB,EACjDC,8BAA8B;AAGlC,MAAMC,+BAA+B,CAAyC;EAC1EC,WAAWA,CAASC,UAAoD,EAAE;IAAA,KAAtDA,UAAoD,GAApDA,UAAoD;EAAG;EAE3E,MAAMC,OAAOA,CAACC,WAAmB,EAA6B;IAC1D,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACH,UAAU,CAACC,OAAO,CAACC,WAAW,CAAC;IAEzD,IAAIC,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOD,MAAM;IACjB;IAEA,OAAOT,MAAM,CAACW,EAAE,CAACF,MAAM,CAACG,KAAK,CAAC;EAClC;AACJ;AAEA,OAAO,MAAMX,2BAA2B,GAAGC,kBAAkB,CAACW,oBAAoB,CAAC;EAC/EC,cAAc,EAAEV,+BAA+B;EAC/CW,YAAY,EAAE,CAACZ,8BAA8B;AACjD,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Result } from "@webiny/feature/api";
|
|
2
|
+
import type { PagePersistenceError } from "../../../domain/page/errors.js";
|
|
3
|
+
export type PageLanguagePaths = Record<string, string>;
|
|
4
|
+
export interface IGetPageLanguagePathsRepository {
|
|
5
|
+
execute(rootEntryId: string): Promise<Result<PageLanguagePaths, PagePersistenceError>>;
|
|
6
|
+
}
|
|
7
|
+
export declare const GetPageLanguagePathsRepository: import("@webiny/di").Abstraction<IGetPageLanguagePathsRepository>;
|
|
8
|
+
export declare namespace GetPageLanguagePathsRepository {
|
|
9
|
+
type Interface = IGetPageLanguagePathsRepository;
|
|
10
|
+
type Return = Promise<Result<PageLanguagePaths, PagePersistenceError>>;
|
|
11
|
+
}
|
|
12
|
+
export interface IGetPageLanguagePathsUseCase {
|
|
13
|
+
execute(rootEntryId: string): Promise<Result<PageLanguagePaths, PagePersistenceError>>;
|
|
14
|
+
}
|
|
15
|
+
/** Retrieve all published language paths of a page as { languageCode: path }. */
|
|
16
|
+
export declare const GetPageLanguagePathsUseCase: import("@webiny/di").Abstraction<IGetPageLanguagePathsUseCase>;
|
|
17
|
+
export declare namespace GetPageLanguagePathsUseCase {
|
|
18
|
+
type Interface = IGetPageLanguagePathsUseCase;
|
|
19
|
+
type Return = Promise<Result<PageLanguagePaths, PagePersistenceError>>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
+
export const GetPageLanguagePathsRepository = createAbstraction("Wb/GetPageLanguagePathsRepository");
|
|
3
|
+
/** Retrieve all published language paths of a page as { languageCode: path }. */
|
|
4
|
+
export const GetPageLanguagePathsUseCase = createAbstraction("Wb/GetPageLanguagePathsUseCase");
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=abstractions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createAbstraction","GetPageLanguagePathsRepository","GetPageLanguagePathsUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { PagePersistenceError } from \"~/domain/page/errors.js\";\n\nexport type PageLanguagePaths = Record<string, string>;\n\nexport interface IGetPageLanguagePathsRepository {\n execute(rootEntryId: string): Promise<Result<PageLanguagePaths, PagePersistenceError>>;\n}\n\nexport const GetPageLanguagePathsRepository = createAbstraction<IGetPageLanguagePathsRepository>(\n \"Wb/GetPageLanguagePathsRepository\"\n);\n\nexport namespace GetPageLanguagePathsRepository {\n export type Interface = IGetPageLanguagePathsRepository;\n export type Return = Promise<Result<PageLanguagePaths, PagePersistenceError>>;\n}\n\nexport interface IGetPageLanguagePathsUseCase {\n execute(rootEntryId: string): Promise<Result<PageLanguagePaths, PagePersistenceError>>;\n}\n\n/** Retrieve all published language paths of a page as { languageCode: path }. */\nexport const GetPageLanguagePathsUseCase = createAbstraction<IGetPageLanguagePathsUseCase>(\n \"Wb/GetPageLanguagePathsUseCase\"\n);\n\nexport namespace GetPageLanguagePathsUseCase {\n export type Interface = IGetPageLanguagePathsUseCase;\n export type Return = Promise<Result<PageLanguagePaths, PagePersistenceError>>;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAUvD,OAAO,MAAMC,8BAA8B,GAAGD,iBAAiB,CAC3D,mCACJ,CAAC;AAWD;AACA,OAAO,MAAME,2BAA2B,GAAGF,iBAAiB,CACxD,gCACJ,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const GetPageLanguagePathsFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { GetPageLanguagePathsRepository } from "./GetPageLanguagePathsRepository.js";
|
|
3
|
+
import { GetPageLanguagePathsUseCase } from "./GetPageLanguagePathsUseCase.js";
|
|
4
|
+
export const GetPageLanguagePathsFeature = createFeature({
|
|
5
|
+
name: "WebsiteBuilder/GetPageLanguagePaths",
|
|
6
|
+
register(container) {
|
|
7
|
+
container.register(GetPageLanguagePathsRepository).inSingletonScope();
|
|
8
|
+
container.register(GetPageLanguagePathsUseCase);
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createFeature","GetPageLanguagePathsRepository","GetPageLanguagePathsUseCase","GetPageLanguagePathsFeature","name","register","container","inSingletonScope"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { GetPageLanguagePathsRepository } from \"./GetPageLanguagePathsRepository.js\";\nimport { GetPageLanguagePathsUseCase } from \"./GetPageLanguagePathsUseCase.js\";\n\nexport const GetPageLanguagePathsFeature = createFeature({\n name: \"WebsiteBuilder/GetPageLanguagePaths\",\n register(container) {\n container.register(GetPageLanguagePathsRepository).inSingletonScope();\n container.register(GetPageLanguagePathsUseCase);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,8BAA8B;AACvC,SAASC,2BAA2B;AAEpC,OAAO,MAAMC,2BAA2B,GAAGH,aAAa,CAAC;EACrDI,IAAI,EAAE,qCAAqC;EAC3CC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACJ,8BAA8B,CAAC,CAACM,gBAAgB,CAAC,CAAC;IACrED,SAAS,CAACD,QAAQ,CAACH,2BAA2B,CAAC;EACnD;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./abstractions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./abstractions.js\";\n"],"mappings":"AAAA","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { GetPageRevisionsUseCase as UseCaseAbstraction, GetPageRevisionsRepository } from "./abstractions.js";
|
|
2
|
-
import { WbPermissions } from "../../../
|
|
2
|
+
import { WbPermissions } from "../../../features/permissions/abstractions.js";
|
|
3
3
|
declare class GetPageRevisionsUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
4
4
|
private permissions;
|
|
5
5
|
private repository;
|