@webiny/api-website-builder 6.0.0-rc.7 → 6.1.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/EntryToPageMapper.js +1 -0
- package/domain/page/EntryToPageMapper.js.map +1 -1
- package/domain/page/abstractions.d.ts +6 -1
- package/domain/page/abstractions.js.map +1 -1
- package/domain/page/errors.d.ts +6 -0
- package/domain/page/errors.js +11 -0
- package/domain/page/errors.js.map +1 -1
- package/exports/api/website-builder/page.d.ts +4 -0
- package/exports/api/website-builder/page.js +4 -0
- package/exports/api/website-builder/page.js.map +1 -1
- package/features/nextjs/abstractions.d.ts +1 -0
- package/features/nextjs/abstractions.js +1 -0
- package/features/nextjs/abstractions.js.map +1 -1
- package/features/pages/CreatePage/abstractions.d.ts +3 -0
- package/features/pages/CreatePage/abstractions.js +3 -0
- package/features/pages/CreatePage/abstractions.js.map +1 -1
- package/features/pages/CreatePageRevisionFrom/abstractions.d.ts +3 -0
- package/features/pages/CreatePageRevisionFrom/abstractions.js +3 -0
- package/features/pages/CreatePageRevisionFrom/abstractions.js.map +1 -1
- package/features/pages/DeletePage/DeletePageRepository.d.ts +1 -3
- package/features/pages/DeletePage/DeletePageRepository.js +2 -13
- package/features/pages/DeletePage/DeletePageRepository.js.map +1 -1
- package/features/pages/DeletePage/DeletePageUseCase.d.ts +4 -4
- package/features/pages/DeletePage/DeletePageUseCase.js +7 -7
- package/features/pages/DeletePage/DeletePageUseCase.js.map +1 -1
- package/features/pages/DeletePage/abstractions.d.ts +5 -1
- package/features/pages/DeletePage/abstractions.js +3 -0
- package/features/pages/DeletePage/abstractions.js.map +1 -1
- package/features/pages/DuplicatePage/abstractions.d.ts +3 -0
- package/features/pages/DuplicatePage/abstractions.js +3 -0
- package/features/pages/DuplicatePage/abstractions.js.map +1 -1
- package/features/pages/GetDeletedPageById/GetDeletedPageByIdRepository.d.ts +13 -0
- package/features/pages/GetDeletedPageById/GetDeletedPageByIdRepository.js +32 -0
- package/features/pages/GetDeletedPageById/GetDeletedPageByIdRepository.js.map +1 -0
- package/features/pages/GetDeletedPageById/GetDeletedPageByIdUseCase.d.ts +12 -0
- package/features/pages/GetDeletedPageById/GetDeletedPageByIdUseCase.js +31 -0
- package/features/pages/GetDeletedPageById/GetDeletedPageByIdUseCase.js.map +1 -0
- package/features/pages/GetDeletedPageById/abstractions.d.ts +42 -0
- package/features/pages/GetDeletedPageById/abstractions.js +15 -0
- package/features/pages/GetDeletedPageById/abstractions.js.map +1 -0
- package/features/pages/GetDeletedPageById/feature.d.ts +1 -0
- package/features/pages/GetDeletedPageById/feature.js +12 -0
- package/features/pages/GetDeletedPageById/feature.js.map +1 -0
- package/features/pages/GetDeletedPageById/index.d.ts +1 -0
- package/features/pages/GetDeletedPageById/index.js +3 -0
- package/features/pages/GetDeletedPageById/index.js.map +1 -0
- package/features/pages/GetPageById/abstractions.d.ts +1 -0
- package/features/pages/GetPageById/abstractions.js +1 -0
- package/features/pages/GetPageById/abstractions.js.map +1 -1
- package/features/pages/GetPageByPath/abstractions.d.ts +1 -0
- package/features/pages/GetPageByPath/abstractions.js +1 -0
- package/features/pages/GetPageByPath/abstractions.js.map +1 -1
- package/features/pages/GetPageRevisions/abstractions.d.ts +1 -0
- package/features/pages/GetPageRevisions/abstractions.js +1 -0
- package/features/pages/GetPageRevisions/abstractions.js.map +1 -1
- package/features/pages/ListDeletedPages/ListDeletedPagesRepository.d.ts +17 -0
- package/features/pages/ListDeletedPages/ListDeletedPagesRepository.js +49 -0
- package/features/pages/ListDeletedPages/ListDeletedPagesRepository.js.map +1 -0
- package/features/pages/ListDeletedPages/ListDeletedPagesUseCase.d.ts +14 -0
- package/features/pages/ListDeletedPages/ListDeletedPagesUseCase.js +35 -0
- package/features/pages/ListDeletedPages/ListDeletedPagesUseCase.js.map +1 -0
- package/features/pages/ListDeletedPages/abstractions.d.ts +56 -0
- package/features/pages/ListDeletedPages/abstractions.js +15 -0
- package/features/pages/ListDeletedPages/abstractions.js.map +1 -0
- package/features/pages/ListDeletedPages/feature.d.ts +1 -0
- package/features/pages/ListDeletedPages/feature.js +12 -0
- package/features/pages/ListDeletedPages/feature.js.map +1 -0
- package/features/pages/ListDeletedPages/index.d.ts +1 -0
- package/features/pages/ListDeletedPages/index.js +3 -0
- package/features/pages/ListDeletedPages/index.js.map +1 -0
- package/features/pages/ListPages/abstractions.d.ts +1 -0
- package/features/pages/ListPages/abstractions.js +1 -0
- package/features/pages/ListPages/abstractions.js.map +1 -1
- package/features/pages/MovePage/abstractions.d.ts +3 -0
- package/features/pages/MovePage/abstractions.js +3 -0
- package/features/pages/MovePage/abstractions.js.map +1 -1
- package/features/pages/PublishPage/abstractions.d.ts +3 -0
- package/features/pages/PublishPage/abstractions.js +3 -0
- package/features/pages/PublishPage/abstractions.js.map +1 -1
- package/features/pages/RestorePage/RestorePageRepository.d.ts +13 -0
- package/features/pages/RestorePage/RestorePageRepository.js +30 -0
- package/features/pages/RestorePage/RestorePageRepository.js.map +1 -0
- package/features/pages/RestorePage/RestorePageUseCase.d.ts +16 -0
- package/features/pages/RestorePage/RestorePageUseCase.js +52 -0
- package/features/pages/RestorePage/RestorePageUseCase.js.map +1 -0
- package/features/pages/RestorePage/abstractions.d.ts +59 -0
- package/features/pages/RestorePage/abstractions.js +30 -0
- package/features/pages/RestorePage/abstractions.js.map +1 -0
- package/features/pages/RestorePage/events.d.ts +10 -0
- package/features/pages/RestorePage/events.js +19 -0
- package/features/pages/RestorePage/events.js.map +1 -0
- package/features/pages/RestorePage/feature.d.ts +1 -0
- package/features/pages/RestorePage/feature.js +12 -0
- package/features/pages/RestorePage/feature.js.map +1 -0
- package/features/pages/RestorePage/index.d.ts +1 -0
- package/features/pages/RestorePage/index.js +3 -0
- package/features/pages/RestorePage/index.js.map +1 -0
- package/features/pages/TrashPage/TrashPageRepository.d.ts +13 -0
- package/features/pages/TrashPage/TrashPageRepository.js +30 -0
- package/features/pages/TrashPage/TrashPageRepository.js.map +1 -0
- package/features/pages/TrashPage/TrashPageUseCase.d.ts +16 -0
- package/features/pages/TrashPage/TrashPageUseCase.js +52 -0
- package/features/pages/TrashPage/TrashPageUseCase.js.map +1 -0
- package/features/pages/TrashPage/abstractions.d.ts +58 -0
- package/features/pages/TrashPage/abstractions.js +30 -0
- package/features/pages/TrashPage/abstractions.js.map +1 -0
- package/features/pages/TrashPage/events.d.ts +10 -0
- package/features/pages/TrashPage/events.js +19 -0
- package/features/pages/TrashPage/events.js.map +1 -0
- package/features/pages/TrashPage/feature.d.ts +1 -0
- package/features/pages/TrashPage/feature.js +12 -0
- package/features/pages/TrashPage/feature.js.map +1 -0
- package/features/pages/TrashPage/index.d.ts +1 -0
- package/features/pages/TrashPage/index.js +3 -0
- package/features/pages/TrashPage/index.js.map +1 -0
- package/features/pages/UnpublishPage/abstractions.d.ts +3 -0
- package/features/pages/UnpublishPage/abstractions.js +3 -0
- package/features/pages/UnpublishPage/abstractions.js.map +1 -1
- package/features/pages/UpdatePage/abstractions.d.ts +3 -0
- package/features/pages/UpdatePage/abstractions.js +3 -0
- package/features/pages/UpdatePage/abstractions.js.map +1 -1
- package/features/redirects/CreateRedirect/abstractions.d.ts +3 -0
- package/features/redirects/CreateRedirect/abstractions.js +3 -0
- package/features/redirects/CreateRedirect/abstractions.js.map +1 -1
- package/features/redirects/DeleteRedirect/abstractions.d.ts +3 -0
- package/features/redirects/DeleteRedirect/abstractions.js +3 -0
- package/features/redirects/DeleteRedirect/abstractions.js.map +1 -1
- package/features/redirects/GetActiveRedirects/abstractions.d.ts +1 -0
- package/features/redirects/GetActiveRedirects/abstractions.js +1 -0
- package/features/redirects/GetActiveRedirects/abstractions.js.map +1 -1
- package/features/redirects/GetRedirectById/abstractions.d.ts +1 -0
- package/features/redirects/GetRedirectById/abstractions.js +1 -0
- package/features/redirects/GetRedirectById/abstractions.js.map +1 -1
- package/features/redirects/InvalidateRedirectsCache/abstractions.d.ts +1 -0
- package/features/redirects/InvalidateRedirectsCache/abstractions.js +1 -0
- package/features/redirects/InvalidateRedirectsCache/abstractions.js.map +1 -1
- package/features/redirects/ListRedirects/abstractions.d.ts +1 -0
- package/features/redirects/ListRedirects/abstractions.js +1 -0
- package/features/redirects/ListRedirects/abstractions.js.map +1 -1
- package/features/redirects/MoveRedirect/abstractions.d.ts +3 -0
- package/features/redirects/MoveRedirect/abstractions.js +3 -0
- package/features/redirects/MoveRedirect/abstractions.js.map +1 -1
- package/features/redirects/UpdateRedirect/abstractions.d.ts +3 -0
- package/features/redirects/UpdateRedirect/abstractions.js +3 -0
- package/features/redirects/UpdateRedirect/abstractions.js.map +1 -1
- package/graphql/pages/pages.gql.js +43 -2
- package/graphql/pages/pages.gql.js.map +1 -1
- package/graphql/pages/pages.typeDefs.d.ts +1 -1
- package/graphql/pages/pages.typeDefs.js +9 -1
- package/graphql/pages/pages.typeDefs.js.map +1 -1
- package/index.js +8 -0
- package/index.js.map +1 -1
- package/package.json +19 -19
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./abstractions.js\";\n"],"mappings":"AAAA","ignoreList":[]}
|
|
@@ -46,6 +46,7 @@ export interface IListPagesUseCaseErrors {
|
|
|
46
46
|
persistence: PagePersistenceError;
|
|
47
47
|
}
|
|
48
48
|
type UseCaseError = IListPagesUseCaseErrors[keyof IListPagesUseCaseErrors];
|
|
49
|
+
/** List pages with filtering and pagination. */
|
|
49
50
|
export declare const ListPagesUseCase: import("@webiny/di").Abstraction<IListPagesUseCase>;
|
|
50
51
|
export declare namespace ListPagesUseCase {
|
|
51
52
|
type Interface = IListPagesUseCase;
|
|
@@ -10,6 +10,7 @@ export const ListPagesRepository = createAbstraction("Wb/ListPagesRepository");
|
|
|
10
10
|
* ListPages use case interface
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
+
/** List pages with filtering and pagination. */
|
|
13
14
|
export const ListPagesUseCase = createAbstraction("Wb/ListPagesUseCase");
|
|
14
15
|
|
|
15
16
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","ListPagesRepository","ListPagesUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { WbPage } from \"~/domain/page/abstractions.js\";\nimport type { PagePersistenceError, PageNotAuthorizedError } from \"~/domain/page/errors.js\";\nimport type { CmsEntryListSort, CmsEntryListWhere } from \"@webiny/api-headless-cms/types/index.js\";\n\nexport interface IListPagesParams {\n where: CmsEntryListWhere;\n sort: CmsEntryListSort;\n limit: number;\n after: string | null;\n search?: string;\n}\n\nexport interface IListPagesMeta {\n hasMoreItems: boolean;\n totalCount: number;\n cursor: string | null;\n}\n\nexport type IListPagesResult = { pages: WbPage[]; meta: IListPagesMeta };\n\n/**\n * ListPages repository interface\n */\nexport interface IListPagesRepository {\n execute(params: IListPagesParams): Promise<Result<IListPagesResult, RepositoryError>>;\n}\n\nexport interface IListPagesRepositoryErrors {\n persistence: PagePersistenceError;\n}\n\ntype RepositoryError = IListPagesRepositoryErrors[keyof IListPagesRepositoryErrors];\n\nexport const ListPagesRepository =\n createAbstraction<IListPagesRepository>(\"Wb/ListPagesRepository\");\n\nexport namespace ListPagesRepository {\n export type Interface = IListPagesRepository;\n export type Error = RepositoryError;\n export type Params = IListPagesParams;\n export type Return = Promise<Result<IListPagesResult, RepositoryError>>;\n}\n\n/**\n * ListPages use case interface\n */\nexport interface IListPagesUseCase {\n execute(params: IListPagesParams): Promise<Result<IListPagesResult, UseCaseError>>;\n}\n\nexport interface IListPagesUseCaseErrors {\n notAuthorized: PageNotAuthorizedError;\n persistence: PagePersistenceError;\n}\n\ntype UseCaseError = IListPagesUseCaseErrors[keyof IListPagesUseCaseErrors];\n\nexport const ListPagesUseCase = createAbstraction<IListPagesUseCase>(\"Wb/ListPagesUseCase\");\n\nexport namespace ListPagesUseCase {\n export type Interface = IListPagesUseCase;\n export type Error = UseCaseError;\n export type Params = IListPagesParams;\n export type Return = Promise<Result<IListPagesResult, UseCaseError>>;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAsBvD;AACA;AACA;;AAWA,OAAO,MAAMC,mBAAmB,GAC5BD,iBAAiB,CAAuB,wBAAwB,CAAC;;AASrE;AACA;AACA;;AAYA,OAAO,MAAME,gBAAgB,GAAGF,iBAAiB,CAAoB,qBAAqB,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createAbstraction","ListPagesRepository","ListPagesUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { WbPage } from \"~/domain/page/abstractions.js\";\nimport type { PagePersistenceError, PageNotAuthorizedError } from \"~/domain/page/errors.js\";\nimport type { CmsEntryListSort, CmsEntryListWhere } from \"@webiny/api-headless-cms/types/index.js\";\n\nexport interface IListPagesParams {\n where: CmsEntryListWhere;\n sort: CmsEntryListSort;\n limit: number;\n after: string | null;\n search?: string;\n}\n\nexport interface IListPagesMeta {\n hasMoreItems: boolean;\n totalCount: number;\n cursor: string | null;\n}\n\nexport type IListPagesResult = { pages: WbPage[]; meta: IListPagesMeta };\n\n/**\n * ListPages repository interface\n */\nexport interface IListPagesRepository {\n execute(params: IListPagesParams): Promise<Result<IListPagesResult, RepositoryError>>;\n}\n\nexport interface IListPagesRepositoryErrors {\n persistence: PagePersistenceError;\n}\n\ntype RepositoryError = IListPagesRepositoryErrors[keyof IListPagesRepositoryErrors];\n\nexport const ListPagesRepository =\n createAbstraction<IListPagesRepository>(\"Wb/ListPagesRepository\");\n\nexport namespace ListPagesRepository {\n export type Interface = IListPagesRepository;\n export type Error = RepositoryError;\n export type Params = IListPagesParams;\n export type Return = Promise<Result<IListPagesResult, RepositoryError>>;\n}\n\n/**\n * ListPages use case interface\n */\nexport interface IListPagesUseCase {\n execute(params: IListPagesParams): Promise<Result<IListPagesResult, UseCaseError>>;\n}\n\nexport interface IListPagesUseCaseErrors {\n notAuthorized: PageNotAuthorizedError;\n persistence: PagePersistenceError;\n}\n\ntype UseCaseError = IListPagesUseCaseErrors[keyof IListPagesUseCaseErrors];\n\n/** List pages with filtering and pagination. */\nexport const ListPagesUseCase = createAbstraction<IListPagesUseCase>(\"Wb/ListPagesUseCase\");\n\nexport namespace ListPagesUseCase {\n export type Interface = IListPagesUseCase;\n export type Error = UseCaseError;\n export type Params = IListPagesParams;\n export type Return = Promise<Result<IListPagesResult, UseCaseError>>;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAsBvD;AACA;AACA;;AAWA,OAAO,MAAMC,mBAAmB,GAC5BD,iBAAiB,CAAuB,wBAAwB,CAAC;;AASrE;AACA;AACA;;AAYA;AACA,OAAO,MAAME,gBAAgB,GAAGF,iBAAiB,CAAoB,qBAAqB,CAAC","ignoreList":[]}
|
|
@@ -31,6 +31,7 @@ export interface IMovePageUseCaseErrors {
|
|
|
31
31
|
persistence: PagePersistenceError;
|
|
32
32
|
}
|
|
33
33
|
type UseCaseError = IMovePageUseCaseErrors[keyof IMovePageUseCaseErrors];
|
|
34
|
+
/** Move a page to a different folder. */
|
|
34
35
|
export declare const MovePageUseCase: import("@webiny/di").Abstraction<IMovePageUseCase>;
|
|
35
36
|
export declare namespace MovePageUseCase {
|
|
36
37
|
type Interface = IMovePageUseCase;
|
|
@@ -48,12 +49,14 @@ export interface PageAfterMovePayload {
|
|
|
48
49
|
input: IMoveWbPageParams;
|
|
49
50
|
page: WbPage;
|
|
50
51
|
}
|
|
52
|
+
/** Hook into page lifecycle before a page is moved. */
|
|
51
53
|
export declare const PageBeforeMoveEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<PageBeforeMovePayload>>>;
|
|
52
54
|
export declare namespace PageBeforeMoveEventHandler {
|
|
53
55
|
type Interface = IEventHandler<DomainEvent<PageBeforeMovePayload>>;
|
|
54
56
|
type Event = DomainEvent<PageBeforeMovePayload>;
|
|
55
57
|
type Page = WbPage;
|
|
56
58
|
}
|
|
59
|
+
/** Hook into page lifecycle after a page is moved. */
|
|
57
60
|
export declare const PageAfterMoveEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<PageAfterMovePayload>>>;
|
|
58
61
|
export declare namespace PageAfterMoveEventHandler {
|
|
59
62
|
type Interface = IEventHandler<DomainEvent<PageAfterMovePayload>>;
|
|
@@ -14,6 +14,7 @@ export const MovePageRepository = createAbstraction("Wb/MovePageRepository");
|
|
|
14
14
|
// Use Case Abstraction
|
|
15
15
|
// ============================================================================
|
|
16
16
|
|
|
17
|
+
/** Move a page to a different folder. */
|
|
17
18
|
export const MovePageUseCase = createAbstraction("Wb/MovePageUseCase");
|
|
18
19
|
|
|
19
20
|
// ============================================================================
|
|
@@ -24,7 +25,9 @@ export const MovePageUseCase = createAbstraction("Wb/MovePageUseCase");
|
|
|
24
25
|
// Event Handler Abstractions
|
|
25
26
|
// ============================================================================
|
|
26
27
|
|
|
28
|
+
/** Hook into page lifecycle before a page is moved. */
|
|
27
29
|
export const PageBeforeMoveEventHandler = createAbstraction("Wb/PageBeforeMoveEventHandler");
|
|
30
|
+
/** Hook into page lifecycle after a page is moved. */
|
|
28
31
|
export const PageAfterMoveEventHandler = createAbstraction("Wb/PageAfterMoveEventHandler");
|
|
29
32
|
|
|
30
33
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","MovePageRepository","MovePageUseCase","PageBeforeMoveEventHandler","PageAfterMoveEventHandler"],"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 IMoveWbPageParams {\n id: string;\n folderId: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IMovePageRepository {\n execute(params: IMoveWbPageParams): Promise<Result<WbPage, RepositoryError>>;\n}\n\nexport interface IMovePageRepositoryErrors {\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype RepositoryError = IMovePageRepositoryErrors[keyof IMovePageRepositoryErrors];\n\nexport const MovePageRepository = createAbstraction<IMovePageRepository>(\"Wb/MovePageRepository\");\n\nexport namespace MovePageRepository {\n export type Interface = IMovePageRepository;\n export type Params = IMoveWbPageParams;\n export type Return = Promise<Result<WbPage, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IMovePageUseCase {\n execute(params: IMoveWbPageParams): Promise<Result<WbPage, UseCaseError>>;\n}\n\nexport interface IMovePageUseCaseErrors {\n notAuthorized: PageNotAuthorizedError;\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype UseCaseError = IMovePageUseCaseErrors[keyof IMovePageUseCaseErrors];\n\nexport const MovePageUseCase = createAbstraction<IMovePageUseCase>(\"Wb/MovePageUseCase\");\n\nexport namespace MovePageUseCase {\n export type Interface = IMovePageUseCase;\n export type Params = IMoveWbPageParams;\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 PageBeforeMovePayload {\n original: WbPage;\n input: IMoveWbPageParams;\n}\n\nexport interface PageAfterMovePayload {\n original: WbPage;\n input: IMoveWbPageParams;\n page: WbPage;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\nexport const PageBeforeMoveEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageBeforeMovePayload>>\n>(\"Wb/PageBeforeMoveEventHandler\");\n\nexport namespace PageBeforeMoveEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageBeforeMovePayload>>;\n export type Event = DomainEvent<PageBeforeMovePayload>;\n export type Page = WbPage;\n}\n\nexport const PageAfterMoveEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageAfterMovePayload>>\n>(\"Wb/PageAfterMoveEventHandler\");\n\nexport namespace PageAfterMoveEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageAfterMovePayload>>;\n export type Event = DomainEvent<PageAfterMovePayload>;\n export type Page = WbPage;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAUpE;AACA;AACA;;AAOA;AACA;AACA;;AAaA,OAAO,MAAMC,kBAAkB,GAAGD,iBAAiB,CAAsB,uBAAuB,CAAC;;AASjG;AACA;AACA;;AAcA,OAAO,MAAME,eAAe,GAAGF,iBAAiB,CAAmB,oBAAoB,CAAC;;AAUxF;AACA;AACA;;AAaA;AACA;AACA;;AAEA,OAAO,MAAMG,0BAA0B,GAAGH,iBAAiB,CAEzD,+BAA+B,CAAC;AAQlC,OAAO,MAAMI,yBAAyB,GAAGJ,iBAAiB,CAExD,8BAA8B,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createAbstraction","MovePageRepository","MovePageUseCase","PageBeforeMoveEventHandler","PageAfterMoveEventHandler"],"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 IMoveWbPageParams {\n id: string;\n folderId: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IMovePageRepository {\n execute(params: IMoveWbPageParams): Promise<Result<WbPage, RepositoryError>>;\n}\n\nexport interface IMovePageRepositoryErrors {\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype RepositoryError = IMovePageRepositoryErrors[keyof IMovePageRepositoryErrors];\n\nexport const MovePageRepository = createAbstraction<IMovePageRepository>(\"Wb/MovePageRepository\");\n\nexport namespace MovePageRepository {\n export type Interface = IMovePageRepository;\n export type Params = IMoveWbPageParams;\n export type Return = Promise<Result<WbPage, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IMovePageUseCase {\n execute(params: IMoveWbPageParams): Promise<Result<WbPage, UseCaseError>>;\n}\n\nexport interface IMovePageUseCaseErrors {\n notAuthorized: PageNotAuthorizedError;\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype UseCaseError = IMovePageUseCaseErrors[keyof IMovePageUseCaseErrors];\n\n/** Move a page to a different folder. */\nexport const MovePageUseCase = createAbstraction<IMovePageUseCase>(\"Wb/MovePageUseCase\");\n\nexport namespace MovePageUseCase {\n export type Interface = IMovePageUseCase;\n export type Params = IMoveWbPageParams;\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 PageBeforeMovePayload {\n original: WbPage;\n input: IMoveWbPageParams;\n}\n\nexport interface PageAfterMovePayload {\n original: WbPage;\n input: IMoveWbPageParams;\n page: WbPage;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\n/** Hook into page lifecycle before a page is moved. */\nexport const PageBeforeMoveEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageBeforeMovePayload>>\n>(\"Wb/PageBeforeMoveEventHandler\");\n\nexport namespace PageBeforeMoveEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageBeforeMovePayload>>;\n export type Event = DomainEvent<PageBeforeMovePayload>;\n export type Page = WbPage;\n}\n\n/** Hook into page lifecycle after a page is moved. */\nexport const PageAfterMoveEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageAfterMovePayload>>\n>(\"Wb/PageAfterMoveEventHandler\");\n\nexport namespace PageAfterMoveEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageAfterMovePayload>>;\n export type Event = DomainEvent<PageAfterMovePayload>;\n export type Page = WbPage;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAUpE;AACA;AACA;;AAOA;AACA;AACA;;AAaA,OAAO,MAAMC,kBAAkB,GAAGD,iBAAiB,CAAsB,uBAAuB,CAAC;;AASjG;AACA;AACA;;AAcA;AACA,OAAO,MAAME,eAAe,GAAGF,iBAAiB,CAAmB,oBAAoB,CAAC;;AAUxF;AACA;AACA;;AAaA;AACA;AACA;;AAEA;AACA,OAAO,MAAMG,0BAA0B,GAAGH,iBAAiB,CAEzD,+BAA+B,CAAC;AAQlC;AACA,OAAO,MAAMI,yBAAyB,GAAGJ,iBAAiB,CAExD,8BAA8B,CAAC","ignoreList":[]}
|
|
@@ -30,6 +30,7 @@ export interface IPublishPageUseCaseErrors {
|
|
|
30
30
|
persistence: PagePersistenceError;
|
|
31
31
|
}
|
|
32
32
|
type UseCaseError = IPublishPageUseCaseErrors[keyof IPublishPageUseCaseErrors];
|
|
33
|
+
/** Publish a page. */
|
|
33
34
|
export declare const PublishPageUseCase: import("@webiny/di").Abstraction<IPublishPageUseCase>;
|
|
34
35
|
export declare namespace PublishPageUseCase {
|
|
35
36
|
type Interface = IPublishPageUseCase;
|
|
@@ -44,12 +45,14 @@ export interface PageBeforePublishPayload {
|
|
|
44
45
|
export interface PageAfterPublishPayload {
|
|
45
46
|
page: WbPage;
|
|
46
47
|
}
|
|
48
|
+
/** Hook into page lifecycle before a page is published. */
|
|
47
49
|
export declare const PageBeforePublishEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<PageBeforePublishPayload>>>;
|
|
48
50
|
export declare namespace PageBeforePublishEventHandler {
|
|
49
51
|
type Interface = IEventHandler<DomainEvent<PageBeforePublishPayload>>;
|
|
50
52
|
type Event = DomainEvent<PageBeforePublishPayload>;
|
|
51
53
|
type Page = WbPage;
|
|
52
54
|
}
|
|
55
|
+
/** Hook into page lifecycle after a page is published. */
|
|
53
56
|
export declare const PageAfterPublishEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<PageAfterPublishPayload>>>;
|
|
54
57
|
export declare namespace PageAfterPublishEventHandler {
|
|
55
58
|
type Interface = IEventHandler<DomainEvent<PageAfterPublishPayload>>;
|
|
@@ -14,6 +14,7 @@ export const PublishPageRepository = createAbstraction("Wb/PublishPageRepository
|
|
|
14
14
|
// Use Case Abstraction
|
|
15
15
|
// ============================================================================
|
|
16
16
|
|
|
17
|
+
/** Publish a page. */
|
|
17
18
|
export const PublishPageUseCase = createAbstraction("Wb/PublishPageUseCase");
|
|
18
19
|
|
|
19
20
|
// ============================================================================
|
|
@@ -24,7 +25,9 @@ export const PublishPageUseCase = createAbstraction("Wb/PublishPageUseCase");
|
|
|
24
25
|
// Event Handler Abstractions
|
|
25
26
|
// ============================================================================
|
|
26
27
|
|
|
28
|
+
/** Hook into page lifecycle before a page is published. */
|
|
27
29
|
export const PageBeforePublishEventHandler = createAbstraction("Wb/PageBeforePublishEventHandler");
|
|
30
|
+
/** Hook into page lifecycle after a page is published. */
|
|
28
31
|
export const PageAfterPublishEventHandler = createAbstraction("Wb/PageAfterPublishEventHandler");
|
|
29
32
|
|
|
30
33
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","PublishPageRepository","PublishPageUseCase","PageBeforePublishEventHandler","PageAfterPublishEventHandler"],"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 IPublishWbPageParams {\n id: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IPublishPageRepository {\n execute(params: IPublishWbPageParams): Promise<Result<WbPage, RepositoryError>>;\n}\n\nexport interface IPublishPageRepositoryErrors {\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype RepositoryError = IPublishPageRepositoryErrors[keyof IPublishPageRepositoryErrors];\n\nexport const PublishPageRepository = createAbstraction<IPublishPageRepository>(\n \"Wb/PublishPageRepository\"\n);\n\nexport namespace PublishPageRepository {\n export type Interface = IPublishPageRepository;\n export type Params = IPublishWbPageParams;\n export type Return = Promise<Result<WbPage, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IPublishPageUseCase {\n execute(params: IPublishWbPageParams): Promise<Result<WbPage, UseCaseError>>;\n}\n\nexport interface IPublishPageUseCaseErrors {\n notAuthorized: PageNotAuthorizedError;\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype UseCaseError = IPublishPageUseCaseErrors[keyof IPublishPageUseCaseErrors];\n\nexport const PublishPageUseCase = createAbstraction<IPublishPageUseCase>(\"Wb/PublishPageUseCase\");\n\nexport namespace PublishPageUseCase {\n export type Interface = IPublishPageUseCase;\n export type Params = IPublishWbPageParams;\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 PageBeforePublishPayload {\n page: WbPage;\n}\n\nexport interface PageAfterPublishPayload {\n page: WbPage;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\nexport const PageBeforePublishEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageBeforePublishPayload>>\n>(\"Wb/PageBeforePublishEventHandler\");\n\nexport namespace PageBeforePublishEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageBeforePublishPayload>>;\n export type Event = DomainEvent<PageBeforePublishPayload>;\n export type Page = WbPage;\n}\n\nexport const PageAfterPublishEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageAfterPublishPayload>>\n>(\"Wb/PageAfterPublishEventHandler\");\n\nexport namespace PageAfterPublishEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageAfterPublishPayload>>;\n export type Event = DomainEvent<PageAfterPublishPayload>;\n export type Page = WbPage;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAUpE;AACA;AACA;;AAMA;AACA;AACA;;AAaA,OAAO,MAAMC,qBAAqB,GAAGD,iBAAiB,CAClD,0BACJ,CAAC;;AASD;AACA;AACA;;AAcA,OAAO,MAAME,kBAAkB,GAAGF,iBAAiB,CAAsB,uBAAuB,CAAC;;AAUjG;AACA;AACA;;AAUA;AACA;AACA;;AAEA,OAAO,MAAMG,6BAA6B,GAAGH,iBAAiB,CAE5D,kCAAkC,CAAC;AAQrC,OAAO,MAAMI,4BAA4B,GAAGJ,iBAAiB,CAE3D,iCAAiC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createAbstraction","PublishPageRepository","PublishPageUseCase","PageBeforePublishEventHandler","PageAfterPublishEventHandler"],"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 IPublishWbPageParams {\n id: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IPublishPageRepository {\n execute(params: IPublishWbPageParams): Promise<Result<WbPage, RepositoryError>>;\n}\n\nexport interface IPublishPageRepositoryErrors {\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype RepositoryError = IPublishPageRepositoryErrors[keyof IPublishPageRepositoryErrors];\n\nexport const PublishPageRepository = createAbstraction<IPublishPageRepository>(\n \"Wb/PublishPageRepository\"\n);\n\nexport namespace PublishPageRepository {\n export type Interface = IPublishPageRepository;\n export type Params = IPublishWbPageParams;\n export type Return = Promise<Result<WbPage, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IPublishPageUseCase {\n execute(params: IPublishWbPageParams): Promise<Result<WbPage, UseCaseError>>;\n}\n\nexport interface IPublishPageUseCaseErrors {\n notAuthorized: PageNotAuthorizedError;\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype UseCaseError = IPublishPageUseCaseErrors[keyof IPublishPageUseCaseErrors];\n\n/** Publish a page. */\nexport const PublishPageUseCase = createAbstraction<IPublishPageUseCase>(\"Wb/PublishPageUseCase\");\n\nexport namespace PublishPageUseCase {\n export type Interface = IPublishPageUseCase;\n export type Params = IPublishWbPageParams;\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 PageBeforePublishPayload {\n page: WbPage;\n}\n\nexport interface PageAfterPublishPayload {\n page: WbPage;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\n/** Hook into page lifecycle before a page is published. */\nexport const PageBeforePublishEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageBeforePublishPayload>>\n>(\"Wb/PageBeforePublishEventHandler\");\n\nexport namespace PageBeforePublishEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageBeforePublishPayload>>;\n export type Event = DomainEvent<PageBeforePublishPayload>;\n export type Page = WbPage;\n}\n\n/** Hook into page lifecycle after a page is published. */\nexport const PageAfterPublishEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageAfterPublishPayload>>\n>(\"Wb/PageAfterPublishEventHandler\");\n\nexport namespace PageAfterPublishEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageAfterPublishPayload>>;\n export type Event = DomainEvent<PageAfterPublishPayload>;\n export type Page = WbPage;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAUpE;AACA;AACA;;AAMA;AACA;AACA;;AAaA,OAAO,MAAMC,qBAAqB,GAAGD,iBAAiB,CAClD,0BACJ,CAAC;;AASD;AACA;AACA;;AAcA;AACA,OAAO,MAAME,kBAAkB,GAAGF,iBAAiB,CAAsB,uBAAuB,CAAC;;AAUjG;AACA;AACA;;AAUA;AACA;AACA;;AAEA;AACA,OAAO,MAAMG,6BAA6B,GAAGH,iBAAiB,CAE5D,kCAAkC,CAAC;AAQrC;AACA,OAAO,MAAMI,4BAA4B,GAAGJ,iBAAiB,CAE3D,iCAAiC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { RestoreEntryFromBinUseCase } from "@webiny/api-headless-cms/features/contentEntry/RestoreEntryFromBin";
|
|
2
|
+
import { RestorePageRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
3
|
+
import { PageModel } from "../../../domain/page/abstractions.js";
|
|
4
|
+
declare class RestorePageRepositoryImpl implements RepositoryAbstraction.Interface {
|
|
5
|
+
private restoreEntry;
|
|
6
|
+
private pageModel;
|
|
7
|
+
constructor(restoreEntry: RestoreEntryFromBinUseCase.Interface, pageModel: PageModel.Interface);
|
|
8
|
+
execute(params: RepositoryAbstraction.Params): RepositoryAbstraction.Return;
|
|
9
|
+
}
|
|
10
|
+
export declare const RestorePageRepository: typeof RestorePageRepositoryImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IRestorePageRepository>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { RestoreEntryFromBinUseCase } from "@webiny/api-headless-cms/features/contentEntry/RestoreEntryFromBin";
|
|
3
|
+
import { RestorePageRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
4
|
+
import { PageModel } from "../../../domain/page/abstractions.js";
|
|
5
|
+
import { PageNotFoundError, PagePersistenceError } from "../../../domain/page/errors.js";
|
|
6
|
+
import { EntryToPageMapper } from "../../../domain/page/EntryToPageMapper.js";
|
|
7
|
+
class RestorePageRepositoryImpl {
|
|
8
|
+
constructor(restoreEntry, pageModel) {
|
|
9
|
+
this.restoreEntry = restoreEntry;
|
|
10
|
+
this.pageModel = pageModel;
|
|
11
|
+
}
|
|
12
|
+
async execute(params) {
|
|
13
|
+
// Restore the entry
|
|
14
|
+
const result = await this.restoreEntry.execute(this.pageModel, params.id);
|
|
15
|
+
if (result.isFail()) {
|
|
16
|
+
if (result.error.code === "Cms/Entry/NotFound") {
|
|
17
|
+
return Result.fail(new PageNotFoundError(params.id));
|
|
18
|
+
}
|
|
19
|
+
return Result.fail(new PagePersistenceError(result.error));
|
|
20
|
+
}
|
|
21
|
+
const page = EntryToPageMapper.toPage(result.value);
|
|
22
|
+
return Result.ok(page);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export const RestorePageRepository = RepositoryAbstraction.createImplementation({
|
|
26
|
+
implementation: RestorePageRepositoryImpl,
|
|
27
|
+
dependencies: [RestoreEntryFromBinUseCase, PageModel]
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=RestorePageRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Result","RestoreEntryFromBinUseCase","RestorePageRepository","RepositoryAbstraction","PageModel","PageNotFoundError","PagePersistenceError","EntryToPageMapper","RestorePageRepositoryImpl","constructor","restoreEntry","pageModel","execute","params","result","id","isFail","error","code","fail","page","toPage","value","ok","createImplementation","implementation","dependencies"],"sources":["RestorePageRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { RestoreEntryFromBinUseCase } from \"@webiny/api-headless-cms/features/contentEntry/RestoreEntryFromBin\";\nimport { RestorePageRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { PageModel } from \"~/domain/page/abstractions.js\";\nimport { PageNotFoundError, PagePersistenceError } from \"~/domain/page/errors.js\";\nimport { EntryToPageMapper } from \"~/domain/page/EntryToPageMapper.js\";\n\nclass RestorePageRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private restoreEntry: RestoreEntryFromBinUseCase.Interface,\n private pageModel: PageModel.Interface\n ) {}\n\n async execute(params: RepositoryAbstraction.Params): RepositoryAbstraction.Return {\n // Restore the entry\n const result = await this.restoreEntry.execute(this.pageModel, params.id);\n\n if (result.isFail()) {\n if (result.error.code === \"Cms/Entry/NotFound\") {\n return Result.fail(new PageNotFoundError(params.id));\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 RestorePageRepository = RepositoryAbstraction.createImplementation({\n implementation: RestorePageRepositoryImpl,\n dependencies: [RestoreEntryFromBinUseCase, PageModel]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,0BAA0B,QAAQ,oEAAoE;AAC/G,SAASC,qBAAqB,IAAIC,qBAAqB;AACvD,SAASC,SAAS;AAClB,SAASC,iBAAiB,EAAEC,oBAAoB;AAChD,SAASC,iBAAiB;AAE1B,MAAMC,yBAAyB,CAA4C;EACvEC,WAAWA,CACCC,YAAkD,EAClDC,SAA8B,EACxC;IAAA,KAFUD,YAAkD,GAAlDA,YAAkD;IAAA,KAClDC,SAA8B,GAA9BA,SAA8B;EACvC;EAEH,MAAMC,OAAOA,CAACC,MAAoC,EAAgC;IAC9E;IACA,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACJ,YAAY,CAACE,OAAO,CAAC,IAAI,CAACD,SAAS,EAAEE,MAAM,CAACE,EAAE,CAAC;IAEzE,IAAID,MAAM,CAACE,MAAM,CAAC,CAAC,EAAE;MACjB,IAAIF,MAAM,CAACG,KAAK,CAACC,IAAI,KAAK,oBAAoB,EAAE;QAC5C,OAAOlB,MAAM,CAACmB,IAAI,CAAC,IAAId,iBAAiB,CAACQ,MAAM,CAACE,EAAE,CAAC,CAAC;MACxD;MACA,OAAOf,MAAM,CAACmB,IAAI,CAAC,IAAIb,oBAAoB,CAACQ,MAAM,CAACG,KAAK,CAAC,CAAC;IAC9D;IAEA,MAAMG,IAAI,GAAGb,iBAAiB,CAACc,MAAM,CAACP,MAAM,CAACQ,KAAK,CAAC;IACnD,OAAOtB,MAAM,CAACuB,EAAE,CAACH,IAAI,CAAC;EAC1B;AACJ;AAEA,OAAO,MAAMlB,qBAAqB,GAAGC,qBAAqB,CAACqB,oBAAoB,CAAC;EAC5EC,cAAc,EAAEjB,yBAAyB;EACzCkB,YAAY,EAAE,CAACzB,0BAA0B,EAAEG,SAAS;AACxD,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/EventPublisher";
|
|
2
|
+
import { RestorePageRepository, RestorePageUseCase as UseCaseAbstraction } from "./abstractions.js";
|
|
3
|
+
import { WbPermissions } from "../../../domain/permissions.js";
|
|
4
|
+
import { GetDeletedPageByIdUseCase } from "../../../features/pages/GetDeletedPageById/index.js";
|
|
5
|
+
declare class RestorePageUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
6
|
+
private permissions;
|
|
7
|
+
private eventPublisher;
|
|
8
|
+
private getDeletedPageById;
|
|
9
|
+
private repository;
|
|
10
|
+
constructor(permissions: WbPermissions.Interface, eventPublisher: EventPublisherAbstraction.Interface, getDeletedPageById: GetDeletedPageByIdUseCase.Interface, repository: RestorePageRepository.Interface);
|
|
11
|
+
execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return;
|
|
12
|
+
}
|
|
13
|
+
export declare const RestorePageUseCase: typeof RestorePageUseCaseImpl & {
|
|
14
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IRestorePageUseCase>;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
|
|
3
|
+
import { RestorePageRepository, RestorePageUseCase as UseCaseAbstraction } from "./abstractions.js";
|
|
4
|
+
import { PageAfterRestoreEvent, PageBeforeRestoreEvent } from "./events.js";
|
|
5
|
+
import { WbPermissions } from "../../../domain/permissions.js";
|
|
6
|
+
import { PageNotAuthorizedError } from "../../../domain/page/errors.js";
|
|
7
|
+
import { GetDeletedPageByIdUseCase } from "../GetDeletedPageById/index.js";
|
|
8
|
+
class RestorePageUseCaseImpl {
|
|
9
|
+
constructor(permissions, eventPublisher, getDeletedPageById, repository) {
|
|
10
|
+
this.permissions = permissions;
|
|
11
|
+
this.eventPublisher = eventPublisher;
|
|
12
|
+
this.getDeletedPageById = getDeletedPageById;
|
|
13
|
+
this.repository = repository;
|
|
14
|
+
}
|
|
15
|
+
async execute(params) {
|
|
16
|
+
// Get the page first to include in events and for item-level permission check
|
|
17
|
+
const getResult = await this.getDeletedPageById.execute(params.id);
|
|
18
|
+
if (getResult.isFail()) {
|
|
19
|
+
return Result.fail(getResult.error);
|
|
20
|
+
}
|
|
21
|
+
const page = getResult.value;
|
|
22
|
+
const canDelete = await this.permissions.canDelete("page", page);
|
|
23
|
+
if (!canDelete) {
|
|
24
|
+
return Result.fail(new PageNotAuthorizedError());
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Publish before delete event
|
|
28
|
+
const beforeEvent = new PageBeforeRestoreEvent({
|
|
29
|
+
page
|
|
30
|
+
});
|
|
31
|
+
await this.eventPublisher.publish(beforeEvent);
|
|
32
|
+
|
|
33
|
+
// Execute the delete operation
|
|
34
|
+
const result = await this.repository.execute(params);
|
|
35
|
+
if (result.isFail()) {
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Publish after delete event
|
|
40
|
+
const afterEvent = new PageAfterRestoreEvent({
|
|
41
|
+
page
|
|
42
|
+
});
|
|
43
|
+
await this.eventPublisher.publish(afterEvent);
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export const RestorePageUseCase = UseCaseAbstraction.createImplementation({
|
|
48
|
+
implementation: RestorePageUseCaseImpl,
|
|
49
|
+
dependencies: [WbPermissions.Abstraction, EventPublisher, GetDeletedPageByIdUseCase, RestorePageRepository]
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=RestorePageUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Result","EventPublisher","RestorePageRepository","RestorePageUseCase","UseCaseAbstraction","PageAfterRestoreEvent","PageBeforeRestoreEvent","WbPermissions","PageNotAuthorizedError","GetDeletedPageByIdUseCase","RestorePageUseCaseImpl","constructor","permissions","eventPublisher","getDeletedPageById","repository","execute","params","getResult","id","isFail","fail","error","page","value","canDelete","beforeEvent","publish","result","afterEvent","createImplementation","implementation","dependencies","Abstraction"],"sources":["RestorePageUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport { RestorePageRepository, RestorePageUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { PageAfterRestoreEvent, PageBeforeRestoreEvent } from \"./events.js\";\nimport { WbPermissions } from \"~/domain/permissions.js\";\nimport { PageNotAuthorizedError } from \"~/domain/page/errors.js\";\nimport { GetDeletedPageByIdUseCase } from \"~/features/pages/GetDeletedPageById/index.js\";\n\nclass RestorePageUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getDeletedPageById: GetDeletedPageByIdUseCase.Interface,\n private repository: RestorePageRepository.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.getDeletedPageById.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 PageBeforeRestoreEvent({\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 PageAfterRestoreEvent({\n page\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return result;\n }\n}\n\nexport const RestorePageUseCase = UseCaseAbstraction.createImplementation({\n implementation: RestorePageUseCaseImpl,\n dependencies: [\n WbPermissions.Abstraction,\n EventPublisher,\n GetDeletedPageByIdUseCase,\n RestorePageRepository\n ]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,cAAc,QAEX,0CAA0C;AACjD,SAASC,qBAAqB,EAAEC,kBAAkB,IAAIC,kBAAkB;AACxE,SAASC,qBAAqB,EAAEC,sBAAsB;AACtD,SAASC,aAAa;AACtB,SAASC,sBAAsB;AAC/B,SAASC,yBAAyB;AAElC,MAAMC,sBAAsB,CAAyC;EACjEC,WAAWA,CACCC,WAAoC,EACpCC,cAAmD,EACnDC,kBAAuD,EACvDC,UAA2C,EACrD;IAAA,KAJUH,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,kBAAuD,GAAvDA,kBAAuD;IAAA,KACvDC,UAA2C,GAA3CA,UAA2C;EACpD;EAEH,MAAaC,OAAOA,CAACC,MAAiC,EAA6B;IAC/E;IACA,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACJ,kBAAkB,CAACE,OAAO,CAACC,MAAM,CAACE,EAAE,CAAC;IAElE,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,IAAIb,sBAAsB,CAAC,CAAC,CAAC;IACpD;;IAEA;IACA,MAAMkB,WAAW,GAAG,IAAIpB,sBAAsB,CAAC;MAC3CiB;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,IAAIxB,qBAAqB,CAAC;MACzCkB;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,CAACV,cAAc,CAACc,OAAO,CAACE,UAAU,CAAC;IAE7C,OAAOD,MAAM;EACjB;AACJ;AAEA,OAAO,MAAMzB,kBAAkB,GAAGC,kBAAkB,CAAC0B,oBAAoB,CAAC;EACtEC,cAAc,EAAErB,sBAAsB;EACtCsB,YAAY,EAAE,CACVzB,aAAa,CAAC0B,WAAW,EACzBhC,cAAc,EACdQ,yBAAyB,EACzBP,qBAAqB;AAE7B,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,59 @@
|
|
|
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";
|
|
4
|
+
import type { WbPage } from "../../../domain/page/abstractions.js";
|
|
5
|
+
import type { PageNotFoundError, PageNotFoundTrashedError, PagePersistenceError, PageNotAuthorizedError } from "../../../domain/page/errors.js";
|
|
6
|
+
export interface IRestoreWbPageParams {
|
|
7
|
+
id: string;
|
|
8
|
+
}
|
|
9
|
+
export interface IRestorePageRepository {
|
|
10
|
+
execute(params: IRestoreWbPageParams): Promise<Result<WbPage, RepositoryError>>;
|
|
11
|
+
}
|
|
12
|
+
export interface IRestorePageRepositoryErrors {
|
|
13
|
+
notFound: PageNotFoundError;
|
|
14
|
+
persistence: PagePersistenceError;
|
|
15
|
+
}
|
|
16
|
+
type RepositoryError = IRestorePageRepositoryErrors[keyof IRestorePageRepositoryErrors];
|
|
17
|
+
export declare const RestorePageRepository: import("@webiny/di").Abstraction<IRestorePageRepository>;
|
|
18
|
+
export declare namespace RestorePageRepository {
|
|
19
|
+
type Interface = IRestorePageRepository;
|
|
20
|
+
type Params = IRestoreWbPageParams;
|
|
21
|
+
type Return = Promise<Result<WbPage, RepositoryError>>;
|
|
22
|
+
type Error = RepositoryError;
|
|
23
|
+
}
|
|
24
|
+
export interface IRestorePageUseCase {
|
|
25
|
+
execute(params: IRestoreWbPageParams): Promise<Result<WbPage, UseCaseError>>;
|
|
26
|
+
}
|
|
27
|
+
export interface IRestorePageUseCaseErrors {
|
|
28
|
+
notAuthorized: PageNotAuthorizedError;
|
|
29
|
+
notFound: PageNotFoundError;
|
|
30
|
+
trashedNotFound: PageNotFoundTrashedError;
|
|
31
|
+
persistence: PagePersistenceError;
|
|
32
|
+
}
|
|
33
|
+
type UseCaseError = IRestorePageUseCaseErrors[keyof IRestorePageUseCaseErrors];
|
|
34
|
+
export declare const RestorePageUseCase: import("@webiny/di").Abstraction<IRestorePageUseCase>;
|
|
35
|
+
export declare namespace RestorePageUseCase {
|
|
36
|
+
type Interface = IRestorePageUseCase;
|
|
37
|
+
type Params = IRestoreWbPageParams;
|
|
38
|
+
type Return = Promise<Result<WbPage, UseCaseError>>;
|
|
39
|
+
type Error = UseCaseError;
|
|
40
|
+
}
|
|
41
|
+
export interface PageBeforeRestorePayload {
|
|
42
|
+
page: WbPage;
|
|
43
|
+
}
|
|
44
|
+
export interface PageAfterRestorePayload {
|
|
45
|
+
page: WbPage;
|
|
46
|
+
}
|
|
47
|
+
export declare const PageBeforeRestoreEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<PageBeforeRestorePayload>>>;
|
|
48
|
+
export declare namespace PageBeforeRestoreEventHandler {
|
|
49
|
+
type Interface = IEventHandler<DomainEvent<PageBeforeRestorePayload>>;
|
|
50
|
+
type Event = DomainEvent<PageBeforeRestorePayload>;
|
|
51
|
+
type Page = WbPage;
|
|
52
|
+
}
|
|
53
|
+
export declare const PageAfterRestoreEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<PageAfterRestorePayload>>>;
|
|
54
|
+
export declare namespace PageAfterRestoreEventHandler {
|
|
55
|
+
type Interface = IEventHandler<DomainEvent<PageAfterRestorePayload>>;
|
|
56
|
+
type Event = DomainEvent<PageAfterRestorePayload>;
|
|
57
|
+
type Page = WbPage;
|
|
58
|
+
}
|
|
59
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
+
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Type Definitions
|
|
5
|
+
// ============================================================================
|
|
6
|
+
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Repository Abstraction
|
|
9
|
+
// ============================================================================
|
|
10
|
+
|
|
11
|
+
export const RestorePageRepository = createAbstraction("Wb/RestorePageRepository");
|
|
12
|
+
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// Use Case Abstraction
|
|
15
|
+
// ============================================================================
|
|
16
|
+
|
|
17
|
+
export const RestorePageUseCase = createAbstraction("Wb/RestorePageUseCase");
|
|
18
|
+
|
|
19
|
+
// ============================================================================
|
|
20
|
+
// Event Payload Types
|
|
21
|
+
// ============================================================================
|
|
22
|
+
|
|
23
|
+
// ============================================================================
|
|
24
|
+
// Event Handler Abstractions
|
|
25
|
+
// ============================================================================
|
|
26
|
+
|
|
27
|
+
export const PageBeforeRestoreEventHandler = createAbstraction("Wb/PageBeforeRestoreEventHandler");
|
|
28
|
+
export const PageAfterRestoreEventHandler = createAbstraction("Wb/PageAfterRestoreEventHandler");
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=abstractions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createAbstraction","RestorePageRepository","RestorePageUseCase","PageBeforeRestoreEventHandler","PageAfterRestoreEventHandler"],"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 type {\n PageNotFoundError,\n PageNotFoundTrashedError,\n PagePersistenceError,\n PageNotAuthorizedError\n} from \"~/domain/page/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IRestoreWbPageParams {\n id: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IRestorePageRepository {\n execute(params: IRestoreWbPageParams): Promise<Result<WbPage, RepositoryError>>;\n}\n\nexport interface IRestorePageRepositoryErrors {\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype RepositoryError = IRestorePageRepositoryErrors[keyof IRestorePageRepositoryErrors];\n\nexport const RestorePageRepository = createAbstraction<IRestorePageRepository>(\n \"Wb/RestorePageRepository\"\n);\n\nexport namespace RestorePageRepository {\n export type Interface = IRestorePageRepository;\n export type Params = IRestoreWbPageParams;\n export type Return = Promise<Result<WbPage, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IRestorePageUseCase {\n execute(params: IRestoreWbPageParams): Promise<Result<WbPage, UseCaseError>>;\n}\n\nexport interface IRestorePageUseCaseErrors {\n notAuthorized: PageNotAuthorizedError;\n notFound: PageNotFoundError;\n trashedNotFound: PageNotFoundTrashedError;\n persistence: PagePersistenceError;\n}\n\ntype UseCaseError = IRestorePageUseCaseErrors[keyof IRestorePageUseCaseErrors];\n\nexport const RestorePageUseCase = createAbstraction<IRestorePageUseCase>(\"Wb/RestorePageUseCase\");\n\nexport namespace RestorePageUseCase {\n export type Interface = IRestorePageUseCase;\n export type Params = IRestoreWbPageParams;\n export type Return = Promise<Result<WbPage, UseCaseError>>;\n export type Error = UseCaseError;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface PageBeforeRestorePayload {\n page: WbPage;\n}\n\nexport interface PageAfterRestorePayload {\n page: WbPage;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\nexport const PageBeforeRestoreEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageBeforeRestorePayload>>\n>(\"Wb/PageBeforeRestoreEventHandler\");\n\nexport namespace PageBeforeRestoreEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageBeforeRestorePayload>>;\n export type Event = DomainEvent<PageBeforeRestorePayload>;\n export type Page = WbPage;\n}\n\nexport const PageAfterRestoreEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageAfterRestorePayload>>\n>(\"Wb/PageAfterRestoreEventHandler\");\n\nexport namespace PageAfterRestoreEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageAfterRestorePayload>>;\n export type Event = DomainEvent<PageAfterRestorePayload>;\n export type Page = WbPage;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAWpE;AACA;AACA;;AAMA;AACA;AACA;;AAaA,OAAO,MAAMC,qBAAqB,GAAGD,iBAAiB,CAClD,0BACJ,CAAC;;AASD;AACA;AACA;;AAeA,OAAO,MAAME,kBAAkB,GAAGF,iBAAiB,CAAsB,uBAAuB,CAAC;;AASjG;AACA;AACA;;AAUA;AACA;AACA;;AAEA,OAAO,MAAMG,6BAA6B,GAAGH,iBAAiB,CAE5D,kCAAkC,CAAC;AAQrC,OAAO,MAAMI,4BAA4B,GAAGJ,iBAAiB,CAE3D,iCAAiC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
|
|
2
|
+
import type { PageBeforeRestorePayload, PageAfterRestorePayload } from "./abstractions.js";
|
|
3
|
+
export declare class PageBeforeRestoreEvent extends DomainEvent<PageBeforeRestorePayload> {
|
|
4
|
+
eventType: "page.beforeRestore";
|
|
5
|
+
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<DomainEvent<PageBeforeRestorePayload>>>;
|
|
6
|
+
}
|
|
7
|
+
export declare class PageAfterRestoreEvent extends DomainEvent<PageAfterRestorePayload> {
|
|
8
|
+
eventType: "page.afterRestore";
|
|
9
|
+
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<DomainEvent<PageAfterRestorePayload>>>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
|
|
2
|
+
import { PageBeforeRestoreEventHandler, PageAfterRestoreEventHandler } from "./abstractions.js";
|
|
3
|
+
// PageBeforeRestore Event
|
|
4
|
+
export class PageBeforeRestoreEvent extends DomainEvent {
|
|
5
|
+
eventType = "page.beforeRestore";
|
|
6
|
+
getHandlerAbstraction() {
|
|
7
|
+
return PageBeforeRestoreEventHandler;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// PageAfterRestore Event
|
|
12
|
+
export class PageAfterRestoreEvent extends DomainEvent {
|
|
13
|
+
eventType = "page.afterRestore";
|
|
14
|
+
getHandlerAbstraction() {
|
|
15
|
+
return PageAfterRestoreEventHandler;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DomainEvent","PageBeforeRestoreEventHandler","PageAfterRestoreEventHandler","PageBeforeRestoreEvent","eventType","getHandlerAbstraction","PageAfterRestoreEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport { PageBeforeRestoreEventHandler, PageAfterRestoreEventHandler } from \"./abstractions.js\";\nimport type { PageBeforeRestorePayload, PageAfterRestorePayload } from \"./abstractions.js\";\n\n// PageBeforeRestore Event\nexport class PageBeforeRestoreEvent extends DomainEvent<PageBeforeRestorePayload> {\n eventType = \"page.beforeRestore\" as const;\n\n getHandlerAbstraction() {\n return PageBeforeRestoreEventHandler;\n }\n}\n\n// PageAfterRestore Event\nexport class PageAfterRestoreEvent extends DomainEvent<PageAfterRestorePayload> {\n eventType = \"page.afterRestore\" as const;\n\n getHandlerAbstraction() {\n return PageAfterRestoreEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,0CAA0C;AACtE,SAASC,6BAA6B,EAAEC,4BAA4B;AAGpE;AACA,OAAO,MAAMC,sBAAsB,SAASH,WAAW,CAA2B;EAC9EI,SAAS,GAAG,oBAAoB;EAEhCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,6BAA6B;EACxC;AACJ;;AAEA;AACA,OAAO,MAAMK,qBAAqB,SAASN,WAAW,CAA0B;EAC5EI,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,4BAA4B;EACvC;AACJ","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const RestorePageFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { RestorePageRepository } from "./RestorePageRepository.js";
|
|
3
|
+
import { RestorePageUseCase } from "./RestorePageUseCase.js";
|
|
4
|
+
export const RestorePageFeature = createFeature({
|
|
5
|
+
name: "WebsiteBuilder/RestorePage",
|
|
6
|
+
register(container) {
|
|
7
|
+
container.register(RestorePageRepository).inSingletonScope();
|
|
8
|
+
container.register(RestorePageUseCase);
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createFeature","RestorePageRepository","RestorePageUseCase","RestorePageFeature","name","register","container","inSingletonScope"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { RestorePageRepository } from \"./RestorePageRepository.js\";\nimport { RestorePageUseCase } from \"./RestorePageUseCase.js\";\n\nexport const RestorePageFeature = createFeature({\n name: \"WebsiteBuilder/RestorePage\",\n register(container) {\n container.register(RestorePageRepository).inSingletonScope();\n container.register(RestorePageUseCase);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,qBAAqB;AAC9B,SAASC,kBAAkB;AAE3B,OAAO,MAAMC,kBAAkB,GAAGH,aAAa,CAAC;EAC5CI,IAAI,EAAE,4BAA4B;EAClCC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACJ,qBAAqB,CAAC,CAACM,gBAAgB,CAAC,CAAC;IAC5DD,SAAS,CAACD,QAAQ,CAACH,kBAAkB,CAAC;EAC1C;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { PageAfterRestoreEventHandler, PageBeforeRestoreEventHandler, RestorePageUseCase } from "./abstractions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["PageAfterRestoreEventHandler","PageBeforeRestoreEventHandler","RestorePageUseCase"],"sources":["index.ts"],"sourcesContent":["export {\n PageAfterRestoreEventHandler,\n PageBeforeRestoreEventHandler,\n RestorePageUseCase\n} from \"./abstractions.js\";\n"],"mappings":"AAAA,SACIA,4BAA4B,EAC5BC,6BAA6B,EAC7BC,kBAAkB","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DeleteEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry";
|
|
2
|
+
import { TrashPageRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
3
|
+
import { PageModel } from "../../../domain/page/abstractions.js";
|
|
4
|
+
declare class TrashPageRepositoryImpl implements RepositoryAbstraction.Interface {
|
|
5
|
+
private deleteEntry;
|
|
6
|
+
private pageModel;
|
|
7
|
+
constructor(deleteEntry: DeleteEntryUseCase.Interface, pageModel: PageModel.Interface);
|
|
8
|
+
execute(params: RepositoryAbstraction.Params): RepositoryAbstraction.Return;
|
|
9
|
+
}
|
|
10
|
+
export declare const TrashPageRepository: typeof TrashPageRepositoryImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ITrashPageRepository>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { DeleteEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry";
|
|
3
|
+
import { TrashPageRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
4
|
+
import { PageModel } from "../../../domain/page/abstractions.js";
|
|
5
|
+
import { PageNotFoundError, PagePersistenceError } from "../../../domain/page/errors.js";
|
|
6
|
+
class TrashPageRepositoryImpl {
|
|
7
|
+
constructor(deleteEntry, pageModel) {
|
|
8
|
+
this.deleteEntry = deleteEntry;
|
|
9
|
+
this.pageModel = pageModel;
|
|
10
|
+
}
|
|
11
|
+
async execute(params) {
|
|
12
|
+
// Trash the entry
|
|
13
|
+
const result = await this.deleteEntry.execute(this.pageModel, params.id, {
|
|
14
|
+
permanently: false
|
|
15
|
+
});
|
|
16
|
+
if (result.isFail()) {
|
|
17
|
+
if (result.error.code === "Cms/Entry/NotFound") {
|
|
18
|
+
return Result.fail(new PageNotFoundError(params.id));
|
|
19
|
+
}
|
|
20
|
+
return Result.fail(new PagePersistenceError(result.error));
|
|
21
|
+
}
|
|
22
|
+
return Result.ok();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export const TrashPageRepository = RepositoryAbstraction.createImplementation({
|
|
26
|
+
implementation: TrashPageRepositoryImpl,
|
|
27
|
+
dependencies: [DeleteEntryUseCase, PageModel]
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=TrashPageRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Result","DeleteEntryUseCase","TrashPageRepository","RepositoryAbstraction","PageModel","PageNotFoundError","PagePersistenceError","TrashPageRepositoryImpl","constructor","deleteEntry","pageModel","execute","params","result","id","permanently","isFail","error","code","fail","ok","createImplementation","implementation","dependencies"],"sources":["TrashPageRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { DeleteEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/DeleteEntry\";\nimport { TrashPageRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { PageModel } from \"~/domain/page/abstractions.js\";\nimport { PageNotFoundError, PagePersistenceError } from \"~/domain/page/errors.js\";\n\nclass TrashPageRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private deleteEntry: DeleteEntryUseCase.Interface,\n private pageModel: PageModel.Interface\n ) {}\n\n async execute(params: RepositoryAbstraction.Params): RepositoryAbstraction.Return {\n // Trash the entry\n const result = await this.deleteEntry.execute(this.pageModel, params.id, {\n permanently: false\n });\n\n if (result.isFail()) {\n if (result.error.code === \"Cms/Entry/NotFound\") {\n return Result.fail(new PageNotFoundError(params.id));\n }\n return Result.fail(new PagePersistenceError(result.error));\n }\n\n return Result.ok();\n }\n}\n\nexport const TrashPageRepository = RepositoryAbstraction.createImplementation({\n implementation: TrashPageRepositoryImpl,\n dependencies: [DeleteEntryUseCase, PageModel]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,kBAAkB,QAAQ,4DAA4D;AAC/F,SAASC,mBAAmB,IAAIC,qBAAqB;AACrD,SAASC,SAAS;AAClB,SAASC,iBAAiB,EAAEC,oBAAoB;AAEhD,MAAMC,uBAAuB,CAA4C;EACrEC,WAAWA,CACCC,WAAyC,EACzCC,SAA8B,EACxC;IAAA,KAFUD,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,SAA8B,GAA9BA,SAA8B;EACvC;EAEH,MAAMC,OAAOA,CAACC,MAAoC,EAAgC;IAC9E;IACA,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACJ,WAAW,CAACE,OAAO,CAAC,IAAI,CAACD,SAAS,EAAEE,MAAM,CAACE,EAAE,EAAE;MACrEC,WAAW,EAAE;IACjB,CAAC,CAAC;IAEF,IAAIF,MAAM,CAACG,MAAM,CAAC,CAAC,EAAE;MACjB,IAAIH,MAAM,CAACI,KAAK,CAACC,IAAI,KAAK,oBAAoB,EAAE;QAC5C,OAAOlB,MAAM,CAACmB,IAAI,CAAC,IAAId,iBAAiB,CAACO,MAAM,CAACE,EAAE,CAAC,CAAC;MACxD;MACA,OAAOd,MAAM,CAACmB,IAAI,CAAC,IAAIb,oBAAoB,CAACO,MAAM,CAACI,KAAK,CAAC,CAAC;IAC9D;IAEA,OAAOjB,MAAM,CAACoB,EAAE,CAAC,CAAC;EACtB;AACJ;AAEA,OAAO,MAAMlB,mBAAmB,GAAGC,qBAAqB,CAACkB,oBAAoB,CAAC;EAC1EC,cAAc,EAAEf,uBAAuB;EACvCgB,YAAY,EAAE,CAACtB,kBAAkB,EAAEG,SAAS;AAChD,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/EventPublisher";
|
|
2
|
+
import { TrashPageUseCase as UseCaseAbstraction, TrashPageRepository } from "./abstractions.js";
|
|
3
|
+
import { GetPageByIdUseCase } from "../../../features/pages/GetPageById/index.js";
|
|
4
|
+
import { WbPermissions } from "../../../domain/permissions.js";
|
|
5
|
+
declare class TrashPageUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
6
|
+
private permissions;
|
|
7
|
+
private eventPublisher;
|
|
8
|
+
private getPageById;
|
|
9
|
+
private repository;
|
|
10
|
+
constructor(permissions: WbPermissions.Interface, eventPublisher: EventPublisherAbstraction.Interface, getPageById: GetPageByIdUseCase.Interface, repository: TrashPageRepository.Interface);
|
|
11
|
+
execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return;
|
|
12
|
+
}
|
|
13
|
+
export declare const TrashPageUseCase: typeof TrashPageUseCaseImpl & {
|
|
14
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ITrashPageUseCase>;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
|
|
3
|
+
import { TrashPageUseCase as UseCaseAbstraction, TrashPageRepository } from "./abstractions.js";
|
|
4
|
+
import { PageBeforeTrashEvent, PageAfterTrashEvent } from "./events.js";
|
|
5
|
+
import { GetPageByIdUseCase } from "../GetPageById/index.js";
|
|
6
|
+
import { WbPermissions } from "../../../domain/permissions.js";
|
|
7
|
+
import { PageNotAuthorizedError } from "../../../domain/page/errors.js";
|
|
8
|
+
class TrashPageUseCaseImpl {
|
|
9
|
+
constructor(permissions, eventPublisher, getPageById, repository) {
|
|
10
|
+
this.permissions = permissions;
|
|
11
|
+
this.eventPublisher = eventPublisher;
|
|
12
|
+
this.getPageById = getPageById;
|
|
13
|
+
this.repository = repository;
|
|
14
|
+
}
|
|
15
|
+
async execute(params) {
|
|
16
|
+
// Get the page first to include in events and for item-level permission check
|
|
17
|
+
const getResult = await this.getPageById.execute(params.id);
|
|
18
|
+
if (getResult.isFail()) {
|
|
19
|
+
return Result.fail(getResult.error);
|
|
20
|
+
}
|
|
21
|
+
const page = getResult.value;
|
|
22
|
+
const canDelete = await this.permissions.canDelete("page", page);
|
|
23
|
+
if (!canDelete) {
|
|
24
|
+
return Result.fail(new PageNotAuthorizedError());
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Publish before delete event
|
|
28
|
+
const beforeEvent = new PageBeforeTrashEvent({
|
|
29
|
+
page
|
|
30
|
+
});
|
|
31
|
+
await this.eventPublisher.publish(beforeEvent);
|
|
32
|
+
|
|
33
|
+
// Execute the delete operation
|
|
34
|
+
const result = await this.repository.execute(params);
|
|
35
|
+
if (result.isFail()) {
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Publish after delete event
|
|
40
|
+
const afterEvent = new PageAfterTrashEvent({
|
|
41
|
+
page
|
|
42
|
+
});
|
|
43
|
+
await this.eventPublisher.publish(afterEvent);
|
|
44
|
+
return Result.ok();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export const TrashPageUseCase = UseCaseAbstraction.createImplementation({
|
|
48
|
+
implementation: TrashPageUseCaseImpl,
|
|
49
|
+
dependencies: [WbPermissions.Abstraction, EventPublisher, GetPageByIdUseCase, TrashPageRepository]
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=TrashPageUseCase.js.map
|