@webiny/api-website-builder 0.0.0-unstable.ac6ebf63c6 → 0.0.0-unstable.c27f4d8a31
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 +2 -1
- package/domain/page/EntryToPageMapper.js.map +1 -1
- package/domain/page/abstractions.d.ts +3 -2
- package/domain/page/abstractions.js.map +1 -1
- package/domain/permissions.d.ts +125 -0
- package/domain/permissions.js +33 -0
- package/domain/permissions.js.map +1 -0
- package/exports/api/website-builder/page.d.ts +8 -8
- package/exports/api/website-builder/page.js +8 -8
- package/exports/api/website-builder/page.js.map +1 -1
- package/exports/api/website-builder/redirect.d.ts +4 -4
- package/exports/api/website-builder/redirect.js +4 -4
- package/exports/api/website-builder/redirect.js.map +1 -1
- package/features/installer/ApiKeyInstaller.js +4 -1
- package/features/installer/ApiKeyInstaller.js.map +1 -1
- package/features/pages/CreatePage/CreatePageUseCase.d.ts +3 -1
- package/features/pages/CreatePage/CreatePageUseCase.js +10 -2
- package/features/pages/CreatePage/CreatePageUseCase.js.map +1 -1
- package/features/pages/CreatePage/abstractions.d.ts +6 -5
- package/features/pages/CreatePage/abstractions.js +2 -2
- package/features/pages/CreatePage/abstractions.js.map +1 -1
- package/features/pages/CreatePage/events.js +3 -3
- package/features/pages/CreatePage/events.js.map +1 -1
- package/features/pages/CreatePage/index.d.ts +1 -1
- package/features/pages/CreatePage/index.js +1 -1
- package/features/pages/CreatePage/index.js.map +1 -1
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.d.ts +5 -1
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.js +18 -2
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.js.map +1 -1
- package/features/pages/CreatePageRevisionFrom/abstractions.d.ts +6 -5
- package/features/pages/CreatePageRevisionFrom/abstractions.js +2 -2
- package/features/pages/CreatePageRevisionFrom/abstractions.js.map +1 -1
- package/features/pages/CreatePageRevisionFrom/events.js +3 -3
- package/features/pages/CreatePageRevisionFrom/events.js.map +1 -1
- package/features/pages/CreatePageRevisionFrom/index.d.ts +1 -1
- package/features/pages/CreatePageRevisionFrom/index.js +1 -1
- package/features/pages/CreatePageRevisionFrom/index.js.map +1 -1
- package/features/pages/DeletePage/DeletePageUseCase.d.ts +3 -1
- package/features/pages/DeletePage/DeletePageUseCase.js +10 -3
- package/features/pages/DeletePage/DeletePageUseCase.js.map +1 -1
- package/features/pages/DeletePage/abstractions.d.ts +6 -5
- package/features/pages/DeletePage/abstractions.js +2 -2
- package/features/pages/DeletePage/abstractions.js.map +1 -1
- package/features/pages/DeletePage/events.js +3 -3
- package/features/pages/DeletePage/events.js.map +1 -1
- package/features/pages/DeletePage/index.d.ts +1 -1
- package/features/pages/DeletePage/index.js +1 -1
- package/features/pages/DeletePage/index.js.map +1 -1
- package/features/pages/DuplicatePage/DuplicatePageUseCase.d.ts +3 -1
- package/features/pages/DuplicatePage/DuplicatePageUseCase.js +10 -2
- package/features/pages/DuplicatePage/DuplicatePageUseCase.js.map +1 -1
- package/features/pages/DuplicatePage/abstractions.d.ts +6 -5
- package/features/pages/DuplicatePage/abstractions.js +2 -2
- package/features/pages/DuplicatePage/abstractions.js.map +1 -1
- package/features/pages/DuplicatePage/events.js +3 -3
- package/features/pages/DuplicatePage/events.js.map +1 -1
- package/features/pages/DuplicatePage/index.d.ts +1 -1
- package/features/pages/DuplicatePage/index.js +1 -1
- package/features/pages/DuplicatePage/index.js.map +1 -1
- package/features/pages/GetPageById/GetPageByIdUseCase.d.ts +3 -1
- package/features/pages/GetPageById/GetPageByIdUseCase.js +19 -3
- package/features/pages/GetPageById/GetPageByIdUseCase.js.map +1 -1
- package/features/pages/GetPageById/abstractions.d.ts +2 -1
- package/features/pages/GetPageById/abstractions.js.map +1 -1
- package/features/pages/GetPageByPath/GetPageByPathUseCase.d.ts +3 -1
- package/features/pages/GetPageByPath/GetPageByPathUseCase.js +19 -3
- package/features/pages/GetPageByPath/GetPageByPathUseCase.js.map +1 -1
- package/features/pages/GetPageByPath/abstractions.d.ts +2 -1
- package/features/pages/GetPageByPath/abstractions.js.map +1 -1
- package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.d.ts +3 -1
- package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.js +22 -3
- package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.js.map +1 -1
- package/features/pages/GetPageRevisions/abstractions.d.ts +2 -1
- package/features/pages/GetPageRevisions/abstractions.js.map +1 -1
- package/features/pages/ListPages/ListPagesRepository.d.ts +5 -1
- package/features/pages/ListPages/ListPagesRepository.js +14 -4
- package/features/pages/ListPages/ListPagesRepository.js.map +1 -1
- package/features/pages/ListPages/ListPagesUseCase.d.ts +5 -1
- package/features/pages/ListPages/ListPagesUseCase.js +24 -4
- package/features/pages/ListPages/ListPagesUseCase.js.map +1 -1
- package/features/pages/ListPages/abstractions.d.ts +2 -1
- package/features/pages/ListPages/abstractions.js.map +1 -1
- package/features/pages/MovePage/MovePageUseCase.d.ts +3 -1
- package/features/pages/MovePage/MovePageUseCase.js +14 -2
- package/features/pages/MovePage/MovePageUseCase.js.map +1 -1
- package/features/pages/MovePage/abstractions.d.ts +6 -5
- package/features/pages/MovePage/abstractions.js +2 -2
- package/features/pages/MovePage/abstractions.js.map +1 -1
- package/features/pages/MovePage/events.js +3 -3
- package/features/pages/MovePage/events.js.map +1 -1
- package/features/pages/MovePage/index.d.ts +1 -1
- package/features/pages/MovePage/index.js +1 -1
- package/features/pages/MovePage/index.js.map +1 -1
- package/features/pages/PublishPage/PublishPageUseCase.d.ts +3 -1
- package/features/pages/PublishPage/PublishPageUseCase.js +14 -2
- package/features/pages/PublishPage/PublishPageUseCase.js.map +1 -1
- package/features/pages/PublishPage/abstractions.d.ts +6 -5
- package/features/pages/PublishPage/abstractions.js +2 -2
- package/features/pages/PublishPage/abstractions.js.map +1 -1
- package/features/pages/PublishPage/events.js +3 -3
- package/features/pages/PublishPage/events.js.map +1 -1
- package/features/pages/PublishPage/index.d.ts +1 -1
- package/features/pages/PublishPage/index.js +1 -1
- package/features/pages/PublishPage/index.js.map +1 -1
- package/features/pages/UnpublishPage/UnpublishPageUseCase.d.ts +3 -1
- package/features/pages/UnpublishPage/UnpublishPageUseCase.js +14 -2
- package/features/pages/UnpublishPage/UnpublishPageUseCase.js.map +1 -1
- package/features/pages/UnpublishPage/abstractions.d.ts +6 -5
- package/features/pages/UnpublishPage/abstractions.js +2 -2
- package/features/pages/UnpublishPage/abstractions.js.map +1 -1
- package/features/pages/UnpublishPage/events.js +3 -3
- package/features/pages/UnpublishPage/events.js.map +1 -1
- package/features/pages/UnpublishPage/index.d.ts +1 -1
- package/features/pages/UnpublishPage/index.js +1 -1
- package/features/pages/UnpublishPage/index.js.map +1 -1
- package/features/pages/UpdatePage/UpdatePageUseCase.d.ts +3 -1
- package/features/pages/UpdatePage/UpdatePageUseCase.js +14 -2
- package/features/pages/UpdatePage/UpdatePageUseCase.js.map +1 -1
- package/features/pages/UpdatePage/abstractions.d.ts +9 -9
- package/features/pages/UpdatePage/abstractions.js +2 -2
- package/features/pages/UpdatePage/abstractions.js.map +1 -1
- package/features/pages/UpdatePage/events.js +3 -3
- package/features/pages/UpdatePage/events.js.map +1 -1
- package/features/pages/UpdatePage/index.d.ts +1 -1
- package/features/pages/UpdatePage/index.js +1 -1
- package/features/pages/UpdatePage/index.js.map +1 -1
- package/features/redirects/CreateRedirect/CreateRedirectUseCase.d.ts +3 -1
- package/features/redirects/CreateRedirect/CreateRedirectUseCase.js +10 -2
- package/features/redirects/CreateRedirect/CreateRedirectUseCase.js.map +1 -1
- package/features/redirects/CreateRedirect/abstractions.d.ts +6 -5
- package/features/redirects/CreateRedirect/abstractions.js +2 -2
- package/features/redirects/CreateRedirect/abstractions.js.map +1 -1
- package/features/redirects/CreateRedirect/events.js +3 -3
- package/features/redirects/CreateRedirect/events.js.map +1 -1
- package/features/redirects/CreateRedirect/index.d.ts +1 -1
- package/features/redirects/CreateRedirect/index.js +1 -1
- package/features/redirects/CreateRedirect/index.js.map +1 -1
- package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.d.ts +3 -1
- package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.js +10 -3
- package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.js.map +1 -1
- package/features/redirects/DeleteRedirect/abstractions.d.ts +6 -5
- package/features/redirects/DeleteRedirect/abstractions.js +2 -2
- package/features/redirects/DeleteRedirect/abstractions.js.map +1 -1
- package/features/redirects/DeleteRedirect/events.js +3 -3
- package/features/redirects/DeleteRedirect/events.js.map +1 -1
- package/features/redirects/DeleteRedirect/index.d.ts +1 -1
- package/features/redirects/DeleteRedirect/index.js +1 -1
- package/features/redirects/DeleteRedirect/index.js.map +1 -1
- package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.d.ts +3 -1
- package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.js +10 -3
- package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.js.map +1 -1
- package/features/redirects/GetActiveRedirects/abstractions.d.ts +2 -1
- package/features/redirects/GetActiveRedirects/abstractions.js.map +1 -1
- package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.d.ts +3 -1
- package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.js +19 -4
- package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.js.map +1 -1
- package/features/redirects/GetRedirectById/abstractions.d.ts +2 -1
- package/features/redirects/GetRedirectById/abstractions.js.map +1 -1
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterCreateHandler.d.ts +3 -3
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterCreateHandler.js +2 -2
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterCreateHandler.js.map +1 -1
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterDeleteHandler.d.ts +3 -3
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterDeleteHandler.js +2 -2
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterDeleteHandler.js.map +1 -1
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterUpdateHandler.d.ts +3 -3
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterUpdateHandler.js +2 -2
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterUpdateHandler.js.map +1 -1
- package/features/redirects/ListRedirects/ListRedirectsUseCase.d.ts +5 -1
- package/features/redirects/ListRedirects/ListRedirectsUseCase.js +23 -4
- package/features/redirects/ListRedirects/ListRedirectsUseCase.js.map +1 -1
- package/features/redirects/ListRedirects/abstractions.d.ts +3 -1
- package/features/redirects/ListRedirects/abstractions.js.map +1 -1
- package/features/redirects/MoveRedirect/MoveRedirectUseCase.d.ts +3 -1
- package/features/redirects/MoveRedirect/MoveRedirectUseCase.js +14 -2
- package/features/redirects/MoveRedirect/MoveRedirectUseCase.js.map +1 -1
- package/features/redirects/MoveRedirect/abstractions.d.ts +6 -5
- package/features/redirects/MoveRedirect/abstractions.js +2 -2
- package/features/redirects/MoveRedirect/abstractions.js.map +1 -1
- package/features/redirects/MoveRedirect/events.js +3 -3
- package/features/redirects/MoveRedirect/events.js.map +1 -1
- package/features/redirects/MoveRedirect/index.d.ts +1 -1
- package/features/redirects/MoveRedirect/index.js +1 -1
- package/features/redirects/MoveRedirect/index.js.map +1 -1
- package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.d.ts +3 -1
- package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.js +14 -2
- package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.js.map +1 -1
- package/features/redirects/UpdateRedirect/abstractions.d.ts +6 -5
- package/features/redirects/UpdateRedirect/abstractions.js +2 -2
- package/features/redirects/UpdateRedirect/abstractions.js.map +1 -1
- package/features/redirects/UpdateRedirect/events.js +3 -3
- package/features/redirects/UpdateRedirect/events.js.map +1 -1
- package/features/redirects/UpdateRedirect/index.d.ts +1 -1
- package/features/redirects/UpdateRedirect/index.js +1 -1
- package/features/redirects/UpdateRedirect/index.js.map +1 -1
- package/features/tenantManager/TenantModelExtension.js +5 -5
- package/features/tenantManager/TenantModelExtension.js.map +1 -1
- package/graphql/pages/pages.typeDefs.d.ts +1 -1
- package/graphql/pages/pages.typeDefs.js +6 -0
- package/graphql/pages/pages.typeDefs.js.map +1 -1
- package/index.js +4 -4
- package/index.js.map +1 -1
- package/package.json +19 -20
- package/features/pages/PagePermissions/feature.d.ts +0 -1
- package/features/pages/PagePermissions/feature.js +0 -53
- package/features/pages/PagePermissions/feature.js.map +0 -1
- package/features/redirects/RedirectPermissions/feature.d.ts +0 -1
- package/features/redirects/RedirectPermissions/feature.js +0 -45
- package/features/redirects/RedirectPermissions/feature.js.map +0 -1
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import { type Result } from "@webiny/feature/api";
|
|
2
|
-
import type { IEventHandler } from "@webiny/api-core/features/EventPublisher";
|
|
3
|
-
import type { DomainEvent } from "@webiny/api-core/features/EventPublisher";
|
|
2
|
+
import type { DomainEvent, IEventHandler } from "@webiny/api-core/features/EventPublisher";
|
|
4
3
|
import type { WbPage } from "../../../domain/page/abstractions.js";
|
|
5
4
|
import type { WbLocation } from "../../../domain/shared/abstractions.js";
|
|
6
|
-
import type {
|
|
7
|
-
import {
|
|
5
|
+
import type { ICmsEntrySystem } from "@webiny/api-headless-cms/types/index.js";
|
|
6
|
+
import { PageNotAuthorizedError, PageNotFoundError, PagePersistenceError, PageValidationError } from "../../../domain/page/errors.js";
|
|
8
7
|
export interface IUpdateWbPageData {
|
|
9
8
|
location?: WbLocation;
|
|
10
9
|
properties?: Record<string, any>;
|
|
11
10
|
metadata?: Record<string, any>;
|
|
12
11
|
bindings?: Record<string, any>;
|
|
13
12
|
elements?: Record<string, any>;
|
|
14
|
-
|
|
13
|
+
system?: ICmsEntrySystem;
|
|
15
14
|
}
|
|
16
15
|
export interface IUpdatePageRepository {
|
|
17
16
|
execute(id: string, data: IUpdateWbPageData): Promise<Result<WbPage, RepositoryError>>;
|
|
@@ -33,6 +32,7 @@ export interface IUpdatePageUseCase {
|
|
|
33
32
|
execute(id: string, data: IUpdateWbPageData): Promise<Result<WbPage, UseCaseError>>;
|
|
34
33
|
}
|
|
35
34
|
export interface IUpdatePageUseCaseErrors {
|
|
35
|
+
notAuthorized: PageNotAuthorizedError;
|
|
36
36
|
validation: PageValidationError;
|
|
37
37
|
notFound: PageNotFoundError;
|
|
38
38
|
persistence: PagePersistenceError;
|
|
@@ -61,14 +61,14 @@ export interface PageAfterUpdatePayload {
|
|
|
61
61
|
};
|
|
62
62
|
page: WbPage;
|
|
63
63
|
}
|
|
64
|
-
export declare const
|
|
65
|
-
export declare namespace
|
|
64
|
+
export declare const PageBeforeUpdateEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<PageBeforeUpdatePayload>>>;
|
|
65
|
+
export declare namespace PageBeforeUpdateEventHandler {
|
|
66
66
|
type Interface = IEventHandler<DomainEvent<PageBeforeUpdatePayload>>;
|
|
67
67
|
type Event = DomainEvent<PageBeforeUpdatePayload>;
|
|
68
68
|
type Page = WbPage;
|
|
69
69
|
}
|
|
70
|
-
export declare const
|
|
71
|
-
export declare namespace
|
|
70
|
+
export declare const PageAfterUpdateEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<PageAfterUpdatePayload>>>;
|
|
71
|
+
export declare namespace PageAfterUpdateEventHandler {
|
|
72
72
|
type Interface = IEventHandler<DomainEvent<PageAfterUpdatePayload>>;
|
|
73
73
|
type Event = DomainEvent<PageAfterUpdatePayload>;
|
|
74
74
|
type Page = WbPage;
|
|
@@ -24,7 +24,7 @@ export const UpdatePageUseCase = createAbstraction("Wb/UpdatePageUseCase");
|
|
|
24
24
|
// Event Handler Abstractions
|
|
25
25
|
// ============================================================================
|
|
26
26
|
|
|
27
|
-
export const
|
|
28
|
-
export const
|
|
27
|
+
export const PageBeforeUpdateEventHandler = createAbstraction("Wb/PageBeforeUpdateEventHandler");
|
|
28
|
+
export const PageAfterUpdateEventHandler = createAbstraction("Wb/PageAfterUpdateEventHandler");
|
|
29
29
|
|
|
30
30
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","UpdatePageRepository","UpdatePageUseCase","
|
|
1
|
+
{"version":3,"names":["createAbstraction","UpdatePageRepository","UpdatePageUseCase","PageBeforeUpdateEventHandler","PageAfterUpdateEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { DomainEvent, IEventHandler } from \"@webiny/api-core/features/EventPublisher\";\nimport type { WbPage } from \"~/domain/page/abstractions.js\";\nimport type { WbLocation } from \"~/domain/shared/abstractions.js\";\nimport type { ICmsEntrySystem } from \"@webiny/api-headless-cms/types/index.js\";\nimport {\n PageNotAuthorizedError,\n PageNotFoundError,\n PagePersistenceError,\n PageValidationError\n} from \"~/domain/page/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IUpdateWbPageData {\n location?: WbLocation;\n properties?: Record<string, any>;\n metadata?: Record<string, any>;\n bindings?: Record<string, any>;\n elements?: Record<string, any>;\n system?: ICmsEntrySystem;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IUpdatePageRepository {\n execute(id: string, data: IUpdateWbPageData): Promise<Result<WbPage, RepositoryError>>;\n}\n\nexport interface IUpdatePageRepositoryErrors {\n validation: PageValidationError;\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype RepositoryError = IUpdatePageRepositoryErrors[keyof IUpdatePageRepositoryErrors];\n\nexport const UpdatePageRepository =\n createAbstraction<IUpdatePageRepository>(\"Wb/UpdatePageRepository\");\n\nexport namespace UpdatePageRepository {\n export type Interface = IUpdatePageRepository;\n export type UpdateData = IUpdateWbPageData;\n export type Return = Promise<Result<WbPage, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IUpdatePageUseCase {\n execute(id: string, data: IUpdateWbPageData): Promise<Result<WbPage, UseCaseError>>;\n}\n\nexport interface IUpdatePageUseCaseErrors {\n notAuthorized: PageNotAuthorizedError;\n validation: PageValidationError;\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype UseCaseError = IUpdatePageUseCaseErrors[keyof IUpdatePageUseCaseErrors];\n\nexport const UpdatePageUseCase = createAbstraction<IUpdatePageUseCase>(\"Wb/UpdatePageUseCase\");\n\nexport namespace UpdatePageUseCase {\n export type Interface = IUpdatePageUseCase;\n export type UpdateData = IUpdateWbPageData;\n export type Return = Promise<Result<WbPage, UseCaseError>>;\n export type Error = UseCaseError;\n export type Page = WbPage;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface PageBeforeUpdatePayload {\n original: WbPage;\n input: {\n id: string;\n data: IUpdateWbPageData;\n };\n}\n\nexport interface PageAfterUpdatePayload {\n original: WbPage;\n input: {\n id: string;\n data: IUpdateWbPageData;\n };\n page: WbPage;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\nexport const PageBeforeUpdateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageBeforeUpdatePayload>>\n>(\"Wb/PageBeforeUpdateEventHandler\");\n\nexport namespace PageBeforeUpdateEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageBeforeUpdatePayload>>;\n export type Event = DomainEvent<PageBeforeUpdatePayload>;\n export type Page = WbPage;\n}\n\nexport const PageAfterUpdateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageAfterUpdatePayload>>\n>(\"Wb/PageAfterUpdateEventHandler\");\n\nexport namespace PageAfterUpdateEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageAfterUpdatePayload>>;\n export type Event = DomainEvent<PageAfterUpdatePayload>;\n export type Page = WbPage;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAYpE;AACA;AACA;;AAWA;AACA;AACA;;AAcA,OAAO,MAAMC,oBAAoB,GAC7BD,iBAAiB,CAAwB,yBAAyB,CAAC;;AASvE;AACA;AACA;;AAeA,OAAO,MAAME,iBAAiB,GAAGF,iBAAiB,CAAqB,sBAAsB,CAAC;;AAU9F;AACA;AACA;;AAmBA;AACA;AACA;;AAEA,OAAO,MAAMG,4BAA4B,GAAGH,iBAAiB,CAE3D,iCAAiC,CAAC;AAQpC,OAAO,MAAMI,2BAA2B,GAAGJ,iBAAiB,CAE1D,gCAAgC,CAAC","ignoreList":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
|
|
2
|
-
import {
|
|
2
|
+
import { PageBeforeUpdateEventHandler, PageAfterUpdateEventHandler } from "./abstractions.js";
|
|
3
3
|
// PageBeforeUpdate Event
|
|
4
4
|
export class PageBeforeUpdateEvent extends DomainEvent {
|
|
5
5
|
eventType = "page.beforeUpdate";
|
|
6
6
|
getHandlerAbstraction() {
|
|
7
|
-
return
|
|
7
|
+
return PageBeforeUpdateEventHandler;
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ export class PageBeforeUpdateEvent extends DomainEvent {
|
|
|
12
12
|
export class PageAfterUpdateEvent extends DomainEvent {
|
|
13
13
|
eventType = "page.afterUpdate";
|
|
14
14
|
getHandlerAbstraction() {
|
|
15
|
-
return
|
|
15
|
+
return PageAfterUpdateEventHandler;
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DomainEvent","
|
|
1
|
+
{"version":3,"names":["DomainEvent","PageBeforeUpdateEventHandler","PageAfterUpdateEventHandler","PageBeforeUpdateEvent","eventType","getHandlerAbstraction","PageAfterUpdateEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport { PageBeforeUpdateEventHandler, PageAfterUpdateEventHandler } from \"./abstractions.js\";\nimport type { PageBeforeUpdatePayload, PageAfterUpdatePayload } from \"./abstractions.js\";\n\n// PageBeforeUpdate Event\nexport class PageBeforeUpdateEvent extends DomainEvent<PageBeforeUpdatePayload> {\n eventType = \"page.beforeUpdate\" as const;\n\n getHandlerAbstraction() {\n return PageBeforeUpdateEventHandler;\n }\n}\n\n// PageAfterUpdate Event\nexport class PageAfterUpdateEvent extends DomainEvent<PageAfterUpdatePayload> {\n eventType = \"page.afterUpdate\" as const;\n\n getHandlerAbstraction() {\n return PageAfterUpdateEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,0CAA0C;AACtE,SAASC,4BAA4B,EAAEC,2BAA2B;AAGlE;AACA,OAAO,MAAMC,qBAAqB,SAASH,WAAW,CAA0B;EAC5EI,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMK,oBAAoB,SAASN,WAAW,CAAyB;EAC1EI,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,2BAA2B;EACtC;AACJ","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { PageAfterUpdateEventHandler, PageBeforeUpdateEventHandler, UpdatePageUseCase } from "./abstractions.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["PageAfterUpdateEventHandler","PageBeforeUpdateEventHandler","UpdatePageUseCase"],"sources":["index.ts"],"sourcesContent":["export {\n PageAfterUpdateEventHandler,\n PageBeforeUpdateEventHandler,\n UpdatePageUseCase\n} from \"./abstractions.js\";\n"],"mappings":"AAAA,SACIA,2BAA2B,EAC3BC,4BAA4B,EAC5BC,iBAAiB","ignoreList":[]}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/EventPublisher";
|
|
2
2
|
import { CreateRedirectUseCase as UseCaseAbstraction, CreateRedirectRepository } from "./abstractions.js";
|
|
3
|
+
import { WbPermissions } from "../../../domain/permissions.js";
|
|
3
4
|
declare class CreateRedirectUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
5
|
+
private permissions;
|
|
4
6
|
private eventPublisher;
|
|
5
7
|
private repository;
|
|
6
|
-
constructor(eventPublisher: EventPublisherAbstraction.Interface, repository: CreateRedirectRepository.Interface);
|
|
8
|
+
constructor(permissions: WbPermissions.Interface, eventPublisher: EventPublisherAbstraction.Interface, repository: CreateRedirectRepository.Interface);
|
|
7
9
|
execute(data: UseCaseAbstraction.Params): UseCaseAbstraction.Return;
|
|
8
10
|
}
|
|
9
11
|
export declare const CreateRedirectUseCase: import("@webiny/di").Implementation<typeof CreateRedirectUseCaseImpl>;
|
|
@@ -2,12 +2,20 @@ import { Result, createImplementation } from "@webiny/feature/api";
|
|
|
2
2
|
import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
|
|
3
3
|
import { CreateRedirectUseCase as UseCaseAbstraction, CreateRedirectRepository } from "./abstractions.js";
|
|
4
4
|
import { RedirectBeforeCreateEvent, RedirectAfterCreateEvent } from "./events.js";
|
|
5
|
+
import { WbPermissions } from "../../../domain/permissions.js";
|
|
6
|
+
import { RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
|
|
5
7
|
class CreateRedirectUseCaseImpl {
|
|
6
|
-
constructor(eventPublisher, repository) {
|
|
8
|
+
constructor(permissions, eventPublisher, repository) {
|
|
9
|
+
this.permissions = permissions;
|
|
7
10
|
this.eventPublisher = eventPublisher;
|
|
8
11
|
this.repository = repository;
|
|
9
12
|
}
|
|
10
13
|
async execute(data) {
|
|
14
|
+
const hasPermission = await this.permissions.canCreate("redirect");
|
|
15
|
+
if (!hasPermission) {
|
|
16
|
+
return Result.fail(new RedirectNotAuthorizedError());
|
|
17
|
+
}
|
|
18
|
+
|
|
11
19
|
// Publish before create event
|
|
12
20
|
const beforeCreateEvent = new RedirectBeforeCreateEvent({
|
|
13
21
|
input: data
|
|
@@ -31,7 +39,7 @@ class CreateRedirectUseCaseImpl {
|
|
|
31
39
|
export const CreateRedirectUseCase = createImplementation({
|
|
32
40
|
abstraction: UseCaseAbstraction,
|
|
33
41
|
implementation: CreateRedirectUseCaseImpl,
|
|
34
|
-
dependencies: [EventPublisher, CreateRedirectRepository]
|
|
42
|
+
dependencies: [WbPermissions.Abstraction, EventPublisher, CreateRedirectRepository]
|
|
35
43
|
});
|
|
36
44
|
|
|
37
45
|
//# sourceMappingURL=CreateRedirectUseCase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Result","createImplementation","EventPublisher","CreateRedirectUseCase","UseCaseAbstraction","CreateRedirectRepository","RedirectBeforeCreateEvent","RedirectAfterCreateEvent","CreateRedirectUseCaseImpl","constructor","eventPublisher","repository","execute","data","beforeCreateEvent","input","publish","result","isFail","afterCreateEvent","redirect","value","ok","abstraction","implementation","dependencies"],"sources":["CreateRedirectUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport {\n CreateRedirectUseCase as UseCaseAbstraction,\n CreateRedirectRepository\n} from \"./abstractions.js\";\nimport { RedirectBeforeCreateEvent, RedirectAfterCreateEvent } from \"./events.js\";\n\nclass CreateRedirectUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private eventPublisher: EventPublisherAbstraction.Interface,\n private repository: CreateRedirectRepository.Interface\n ) {}\n\n async execute(data: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n // Publish before create event\n const beforeCreateEvent = new RedirectBeforeCreateEvent({ input: data });\n await this.eventPublisher.publish(beforeCreateEvent);\n\n // Execute the create operation\n const result = await this.repository.execute(data);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after create event\n const afterCreateEvent = new RedirectAfterCreateEvent({ redirect: result.value });\n await this.eventPublisher.publish(afterCreateEvent);\n\n return Result.ok(result.value);\n }\n}\n\nexport const CreateRedirectUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: CreateRedirectUseCaseImpl,\n dependencies: [EventPublisher, CreateRedirectRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,cAAc,QAEX,0CAA0C;AACjD,SACIC,qBAAqB,IAAIC,kBAAkB,EAC3CC,wBAAwB;AAE5B,SAASC,yBAAyB,EAAEC,wBAAwB;
|
|
1
|
+
{"version":3,"names":["Result","createImplementation","EventPublisher","CreateRedirectUseCase","UseCaseAbstraction","CreateRedirectRepository","RedirectBeforeCreateEvent","RedirectAfterCreateEvent","WbPermissions","RedirectNotAuthorizedError","CreateRedirectUseCaseImpl","constructor","permissions","eventPublisher","repository","execute","data","hasPermission","canCreate","fail","beforeCreateEvent","input","publish","result","isFail","afterCreateEvent","redirect","value","ok","abstraction","implementation","dependencies","Abstraction"],"sources":["CreateRedirectUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport {\n CreateRedirectUseCase as UseCaseAbstraction,\n CreateRedirectRepository\n} from \"./abstractions.js\";\nimport { RedirectBeforeCreateEvent, RedirectAfterCreateEvent } from \"./events.js\";\nimport { WbPermissions } from \"~/domain/permissions.js\";\nimport { RedirectNotAuthorizedError } from \"~/domain/redirect/errors.js\";\n\nclass CreateRedirectUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private repository: CreateRedirectRepository.Interface\n ) {}\n\n async execute(data: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canCreate(\"redirect\");\n if (!hasPermission) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n // Publish before create event\n const beforeCreateEvent = new RedirectBeforeCreateEvent({ input: data });\n await this.eventPublisher.publish(beforeCreateEvent);\n\n // Execute the create operation\n const result = await this.repository.execute(data);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after create event\n const afterCreateEvent = new RedirectAfterCreateEvent({ redirect: result.value });\n await this.eventPublisher.publish(afterCreateEvent);\n\n return Result.ok(result.value);\n }\n}\n\nexport const CreateRedirectUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: CreateRedirectUseCaseImpl,\n dependencies: [WbPermissions.Abstraction, EventPublisher, CreateRedirectRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,cAAc,QAEX,0CAA0C;AACjD,SACIC,qBAAqB,IAAIC,kBAAkB,EAC3CC,wBAAwB;AAE5B,SAASC,yBAAyB,EAAEC,wBAAwB;AAC5D,SAASC,aAAa;AACtB,SAASC,0BAA0B;AAEnC,MAAMC,yBAAyB,CAAyC;EACpEC,WAAWA,CACCC,WAAoC,EACpCC,cAAmD,EACnDC,UAA8C,EACxD;IAAA,KAHUF,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,UAA8C,GAA9CA,UAA8C;EACvD;EAEH,MAAMC,OAAOA,CAACC,IAA+B,EAA6B;IACtE,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACL,WAAW,CAACM,SAAS,CAAC,UAAU,CAAC;IAClE,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOjB,MAAM,CAACmB,IAAI,CAAC,IAAIV,0BAA0B,CAAC,CAAC,CAAC;IACxD;;IAEA;IACA,MAAMW,iBAAiB,GAAG,IAAId,yBAAyB,CAAC;MAAEe,KAAK,EAAEL;IAAK,CAAC,CAAC;IACxE,MAAM,IAAI,CAACH,cAAc,CAACS,OAAO,CAACF,iBAAiB,CAAC;;IAEpD;IACA,MAAMG,MAAM,GAAG,MAAM,IAAI,CAACT,UAAU,CAACC,OAAO,CAACC,IAAI,CAAC;IAElD,IAAIO,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOD,MAAM;IACjB;;IAEA;IACA,MAAME,gBAAgB,GAAG,IAAIlB,wBAAwB,CAAC;MAAEmB,QAAQ,EAAEH,MAAM,CAACI;IAAM,CAAC,CAAC;IACjF,MAAM,IAAI,CAACd,cAAc,CAACS,OAAO,CAACG,gBAAgB,CAAC;IAEnD,OAAOzB,MAAM,CAAC4B,EAAE,CAACL,MAAM,CAACI,KAAK,CAAC;EAClC;AACJ;AAEA,OAAO,MAAMxB,qBAAqB,GAAGF,oBAAoB,CAAC;EACtD4B,WAAW,EAAEzB,kBAAkB;EAC/B0B,cAAc,EAAEpB,yBAAyB;EACzCqB,YAAY,EAAE,CAACvB,aAAa,CAACwB,WAAW,EAAE9B,cAAc,EAAEG,wBAAwB;AACtF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@ import { type Result } from "@webiny/feature/api";
|
|
|
2
2
|
import type { IEventHandler } from "@webiny/api-core/features/EventPublisher";
|
|
3
3
|
import type { DomainEvent } from "@webiny/api-core/features/EventPublisher";
|
|
4
4
|
import type { WbRedirect } from "../../../domain/redirect/abstractions.js";
|
|
5
|
-
import { RedirectPersistenceError, RedirectValidationError } from "../../../domain/redirect/errors.js";
|
|
5
|
+
import { RedirectPersistenceError, RedirectValidationError, RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
|
|
6
6
|
export type ICreateWbRedirectData = Pick<WbRedirect, "redirectFrom" | "redirectTo" | "redirectType" | "isEnabled" | "location">;
|
|
7
7
|
export interface ICreateRedirectRepository {
|
|
8
8
|
execute(data: ICreateWbRedirectData): Promise<Result<WbRedirect, RepositoryError>>;
|
|
@@ -24,6 +24,7 @@ export interface ICreateRedirectUseCase {
|
|
|
24
24
|
execute(data: ICreateWbRedirectData): Promise<Result<WbRedirect, UseCaseError>>;
|
|
25
25
|
}
|
|
26
26
|
export interface ICreateRedirectUseCaseErrors {
|
|
27
|
+
notAuthorized: RedirectNotAuthorizedError;
|
|
27
28
|
validation: RedirectValidationError;
|
|
28
29
|
persistence: RedirectPersistenceError;
|
|
29
30
|
}
|
|
@@ -42,14 +43,14 @@ export interface RedirectBeforeCreatePayload {
|
|
|
42
43
|
export interface RedirectAfterCreatePayload {
|
|
43
44
|
redirect: WbRedirect;
|
|
44
45
|
}
|
|
45
|
-
export declare const
|
|
46
|
-
export declare namespace
|
|
46
|
+
export declare const RedirectBeforeCreateEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<RedirectBeforeCreatePayload>>>;
|
|
47
|
+
export declare namespace RedirectBeforeCreateEventHandler {
|
|
47
48
|
type Interface = IEventHandler<DomainEvent<RedirectBeforeCreatePayload>>;
|
|
48
49
|
type Event = DomainEvent<RedirectBeforeCreatePayload>;
|
|
49
50
|
type Redirect = WbRedirect;
|
|
50
51
|
}
|
|
51
|
-
export declare const
|
|
52
|
-
export declare namespace
|
|
52
|
+
export declare const RedirectAfterCreateEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<RedirectAfterCreatePayload>>>;
|
|
53
|
+
export declare namespace RedirectAfterCreateEventHandler {
|
|
53
54
|
type Interface = IEventHandler<DomainEvent<RedirectAfterCreatePayload>>;
|
|
54
55
|
type Event = DomainEvent<RedirectAfterCreatePayload>;
|
|
55
56
|
type Redirect = WbRedirect;
|
|
@@ -24,7 +24,7 @@ export const CreateRedirectUseCase = createAbstraction("Wb/CreateRedirectUseCase
|
|
|
24
24
|
// Event Handler Abstractions
|
|
25
25
|
// ============================================================================
|
|
26
26
|
|
|
27
|
-
export const
|
|
28
|
-
export const
|
|
27
|
+
export const RedirectBeforeCreateEventHandler = createAbstraction("Wb/RedirectBeforeCreateEventHandler");
|
|
28
|
+
export const RedirectAfterCreateEventHandler = createAbstraction("Wb/RedirectAfterCreateEventHandler");
|
|
29
29
|
|
|
30
30
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","CreateRedirectRepository","CreateRedirectUseCase","
|
|
1
|
+
{"version":3,"names":["createAbstraction","CreateRedirectRepository","CreateRedirectUseCase","RedirectBeforeCreateEventHandler","RedirectAfterCreateEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/EventPublisher\";\nimport type { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport type { WbRedirect } from \"~/domain/redirect/abstractions.js\";\nimport {\n RedirectPersistenceError,\n RedirectValidationError,\n RedirectNotAuthorizedError\n} from \"~/domain/redirect/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport type ICreateWbRedirectData = Pick<\n WbRedirect,\n \"redirectFrom\" | \"redirectTo\" | \"redirectType\" | \"isEnabled\" | \"location\"\n>;\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface ICreateRedirectRepository {\n execute(data: ICreateWbRedirectData): Promise<Result<WbRedirect, RepositoryError>>;\n}\n\nexport interface ICreateRedirectRepositoryErrors {\n validation: RedirectValidationError;\n persistence: RedirectPersistenceError;\n}\n\ntype RepositoryError = ICreateRedirectRepositoryErrors[keyof ICreateRedirectRepositoryErrors];\n\nexport const CreateRedirectRepository = createAbstraction<ICreateRedirectRepository>(\n \"Wb/CreateRedirectRepository\"\n);\n\nexport namespace CreateRedirectRepository {\n export type Interface = ICreateRedirectRepository;\n export type Params = ICreateWbRedirectData;\n export type Return = Promise<Result<WbRedirect, RepositoryError>>;\n export type Error = RepositoryError;\n export type Redirect = WbRedirect;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface ICreateRedirectUseCase {\n execute(data: ICreateWbRedirectData): Promise<Result<WbRedirect, UseCaseError>>;\n}\n\nexport interface ICreateRedirectUseCaseErrors {\n notAuthorized: RedirectNotAuthorizedError;\n validation: RedirectValidationError;\n persistence: RedirectPersistenceError;\n}\n\ntype UseCaseError = ICreateRedirectUseCaseErrors[keyof ICreateRedirectUseCaseErrors];\n\nexport const CreateRedirectUseCase = createAbstraction<ICreateRedirectUseCase>(\n \"Wb/CreateRedirectUseCase\"\n);\n\nexport namespace CreateRedirectUseCase {\n export type Interface = ICreateRedirectUseCase;\n export type Params = ICreateWbRedirectData;\n export type Return = Promise<Result<WbRedirect, UseCaseError>>;\n export type Error = UseCaseError;\n export type Redirect = WbRedirect;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface RedirectBeforeCreatePayload {\n input: ICreateWbRedirectData;\n}\n\nexport interface RedirectAfterCreatePayload {\n redirect: WbRedirect;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\nexport const RedirectBeforeCreateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectBeforeCreatePayload>>\n>(\"Wb/RedirectBeforeCreateEventHandler\");\n\nexport namespace RedirectBeforeCreateEventHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectBeforeCreatePayload>>;\n export type Event = DomainEvent<RedirectBeforeCreatePayload>;\n export type Redirect = WbRedirect;\n}\n\nexport const RedirectAfterCreateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectAfterCreatePayload>>\n>(\"Wb/RedirectAfterCreateEventHandler\");\n\nexport namespace RedirectAfterCreateEventHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectAfterCreatePayload>>;\n export type Event = DomainEvent<RedirectAfterCreatePayload>;\n export type Redirect = WbRedirect;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAUpE;AACA;AACA;;AAOA;AACA;AACA;;AAaA,OAAO,MAAMC,wBAAwB,GAAGD,iBAAiB,CACrD,6BACJ,CAAC;;AAUD;AACA;AACA;;AAcA,OAAO,MAAME,qBAAqB,GAAGF,iBAAiB,CAClD,0BACJ,CAAC;;AAUD;AACA;AACA;;AAUA;AACA;AACA;;AAEA,OAAO,MAAMG,gCAAgC,GAAGH,iBAAiB,CAE/D,qCAAqC,CAAC;AAQxC,OAAO,MAAMI,+BAA+B,GAAGJ,iBAAiB,CAE9D,oCAAoC,CAAC","ignoreList":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
|
|
2
|
-
import {
|
|
2
|
+
import { RedirectBeforeCreateEventHandler, RedirectAfterCreateEventHandler } from "./abstractions.js";
|
|
3
3
|
// RedirectBeforeCreate Event
|
|
4
4
|
export class RedirectBeforeCreateEvent extends DomainEvent {
|
|
5
5
|
eventType = "redirect.beforeCreate";
|
|
6
6
|
getHandlerAbstraction() {
|
|
7
|
-
return
|
|
7
|
+
return RedirectBeforeCreateEventHandler;
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ export class RedirectBeforeCreateEvent extends DomainEvent {
|
|
|
12
12
|
export class RedirectAfterCreateEvent extends DomainEvent {
|
|
13
13
|
eventType = "redirect.afterCreate";
|
|
14
14
|
getHandlerAbstraction() {
|
|
15
|
-
return
|
|
15
|
+
return RedirectAfterCreateEventHandler;
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DomainEvent","
|
|
1
|
+
{"version":3,"names":["DomainEvent","RedirectBeforeCreateEventHandler","RedirectAfterCreateEventHandler","RedirectBeforeCreateEvent","eventType","getHandlerAbstraction","RedirectAfterCreateEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport {\n RedirectBeforeCreateEventHandler,\n RedirectAfterCreateEventHandler\n} from \"./abstractions.js\";\nimport type { RedirectBeforeCreatePayload, RedirectAfterCreatePayload } from \"./abstractions.js\";\n\n// RedirectBeforeCreate Event\nexport class RedirectBeforeCreateEvent extends DomainEvent<RedirectBeforeCreatePayload> {\n eventType = \"redirect.beforeCreate\" as const;\n\n getHandlerAbstraction() {\n return RedirectBeforeCreateEventHandler;\n }\n}\n\n// RedirectAfterCreate Event\nexport class RedirectAfterCreateEvent extends DomainEvent<RedirectAfterCreatePayload> {\n eventType = \"redirect.afterCreate\" as const;\n\n getHandlerAbstraction() {\n return RedirectAfterCreateEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,0CAA0C;AACtE,SACIC,gCAAgC,EAChCC,+BAA+B;AAInC;AACA,OAAO,MAAMC,yBAAyB,SAASH,WAAW,CAA8B;EACpFI,SAAS,GAAG,uBAAuB;EAEnCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,gCAAgC;EAC3C;AACJ;;AAEA;AACA,OAAO,MAAMK,wBAAwB,SAASN,WAAW,CAA6B;EAClFI,SAAS,GAAG,sBAAsB;EAElCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,+BAA+B;EAC1C;AACJ","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { RedirectAfterCreateEventHandler, RedirectBeforeCreateEventHandler, CreateRedirectUseCase } from "./abstractions.js";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { RedirectAfterCreateEventHandler, RedirectBeforeCreateEventHandler, CreateRedirectUseCase } from "./abstractions.js";
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["RedirectAfterCreateEventHandler","RedirectBeforeCreateEventHandler","CreateRedirectUseCase"],"sources":["index.ts"],"sourcesContent":["export {\n RedirectAfterCreateEventHandler,\n RedirectBeforeCreateEventHandler,\n CreateRedirectUseCase\n} from \"./abstractions.js\";\n"],"mappings":"AAAA,SACIA,+BAA+B,EAC/BC,gCAAgC,EAChCC,qBAAqB","ignoreList":[]}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/EventPublisher";
|
|
2
2
|
import { DeleteRedirectUseCase as UseCaseAbstraction, DeleteRedirectRepository } from "./abstractions.js";
|
|
3
3
|
import { GetRedirectByIdUseCase } from "../../../features/redirects/GetRedirectById/index.js";
|
|
4
|
+
import { WbPermissions } from "../../../domain/permissions.js";
|
|
4
5
|
declare class DeleteRedirectUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
6
|
+
private permissions;
|
|
5
7
|
private eventPublisher;
|
|
6
8
|
private getRedirectById;
|
|
7
9
|
private repository;
|
|
8
|
-
constructor(eventPublisher: EventPublisherAbstraction.Interface, getRedirectById: GetRedirectByIdUseCase.Interface, repository: DeleteRedirectRepository.Interface);
|
|
10
|
+
constructor(permissions: WbPermissions.Interface, eventPublisher: EventPublisherAbstraction.Interface, getRedirectById: GetRedirectByIdUseCase.Interface, repository: DeleteRedirectRepository.Interface);
|
|
9
11
|
execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return;
|
|
10
12
|
}
|
|
11
13
|
export declare const DeleteRedirectUseCase: import("@webiny/di").Implementation<typeof DeleteRedirectUseCaseImpl>;
|
|
@@ -3,19 +3,26 @@ import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
|
|
|
3
3
|
import { DeleteRedirectUseCase as UseCaseAbstraction, DeleteRedirectRepository } from "./abstractions.js";
|
|
4
4
|
import { RedirectBeforeDeleteEvent, RedirectAfterDeleteEvent } from "./events.js";
|
|
5
5
|
import { GetRedirectByIdUseCase } from "../GetRedirectById/index.js";
|
|
6
|
+
import { WbPermissions } from "../../../domain/permissions.js";
|
|
7
|
+
import { RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
|
|
6
8
|
class DeleteRedirectUseCaseImpl {
|
|
7
|
-
constructor(eventPublisher, getRedirectById, repository) {
|
|
9
|
+
constructor(permissions, eventPublisher, getRedirectById, repository) {
|
|
10
|
+
this.permissions = permissions;
|
|
8
11
|
this.eventPublisher = eventPublisher;
|
|
9
12
|
this.getRedirectById = getRedirectById;
|
|
10
13
|
this.repository = repository;
|
|
11
14
|
}
|
|
12
15
|
async execute(params) {
|
|
13
|
-
// Get the redirect first to include in events
|
|
16
|
+
// Get the redirect first to include in events and for item-level permission check
|
|
14
17
|
const getResult = await this.getRedirectById.execute(params.id);
|
|
15
18
|
if (getResult.isFail()) {
|
|
16
19
|
return Result.fail(getResult.error);
|
|
17
20
|
}
|
|
18
21
|
const redirect = getResult.value;
|
|
22
|
+
const canDelete = await this.permissions.canDelete("redirect", redirect);
|
|
23
|
+
if (!canDelete) {
|
|
24
|
+
return Result.fail(new RedirectNotAuthorizedError());
|
|
25
|
+
}
|
|
19
26
|
|
|
20
27
|
// Publish before delete event
|
|
21
28
|
const beforeEvent = new RedirectBeforeDeleteEvent({
|
|
@@ -40,7 +47,7 @@ class DeleteRedirectUseCaseImpl {
|
|
|
40
47
|
export const DeleteRedirectUseCase = createImplementation({
|
|
41
48
|
abstraction: UseCaseAbstraction,
|
|
42
49
|
implementation: DeleteRedirectUseCaseImpl,
|
|
43
|
-
dependencies: [EventPublisher, GetRedirectByIdUseCase, DeleteRedirectRepository]
|
|
50
|
+
dependencies: [WbPermissions.Abstraction, EventPublisher, GetRedirectByIdUseCase, DeleteRedirectRepository]
|
|
44
51
|
});
|
|
45
52
|
|
|
46
53
|
//# sourceMappingURL=DeleteRedirectUseCase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Result","createImplementation","EventPublisher","DeleteRedirectUseCase","UseCaseAbstraction","DeleteRedirectRepository","RedirectBeforeDeleteEvent","RedirectAfterDeleteEvent","GetRedirectByIdUseCase","DeleteRedirectUseCaseImpl","constructor","eventPublisher","getRedirectById","repository","execute","params","getResult","id","isFail","fail","error","redirect","value","beforeEvent","publish","result","afterEvent","ok","abstraction","implementation","dependencies"],"sources":["DeleteRedirectUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport {\n DeleteRedirectUseCase as UseCaseAbstraction,\n DeleteRedirectRepository\n} from \"./abstractions.js\";\nimport { RedirectBeforeDeleteEvent, RedirectAfterDeleteEvent } from \"./events.js\";\nimport { GetRedirectByIdUseCase } from \"~/features/redirects/GetRedirectById/index.js\";\n\nclass DeleteRedirectUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getRedirectById: GetRedirectByIdUseCase.Interface,\n private repository: DeleteRedirectRepository.Interface\n ) {}\n\n async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n // Get the redirect first to include in events\n const getResult = await this.getRedirectById.execute(params.id);\n\n if (getResult.isFail()) {\n return Result.fail(getResult.error);\n }\n\n const redirect = getResult.value;\n\n // Publish before delete event\n const beforeEvent = new RedirectBeforeDeleteEvent({\n redirect\n });\n\n await this.eventPublisher.publish(beforeEvent);\n\n // Execute the delete operation\n const result = await this.repository.execute(params);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after delete event\n const afterEvent = new RedirectAfterDeleteEvent({\n redirect\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok();\n }\n}\n\nexport const DeleteRedirectUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: DeleteRedirectUseCaseImpl,\n dependencies: [EventPublisher
|
|
1
|
+
{"version":3,"names":["Result","createImplementation","EventPublisher","DeleteRedirectUseCase","UseCaseAbstraction","DeleteRedirectRepository","RedirectBeforeDeleteEvent","RedirectAfterDeleteEvent","GetRedirectByIdUseCase","WbPermissions","RedirectNotAuthorizedError","DeleteRedirectUseCaseImpl","constructor","permissions","eventPublisher","getRedirectById","repository","execute","params","getResult","id","isFail","fail","error","redirect","value","canDelete","beforeEvent","publish","result","afterEvent","ok","abstraction","implementation","dependencies","Abstraction"],"sources":["DeleteRedirectUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport {\n DeleteRedirectUseCase as UseCaseAbstraction,\n DeleteRedirectRepository\n} from \"./abstractions.js\";\nimport { RedirectBeforeDeleteEvent, RedirectAfterDeleteEvent } from \"./events.js\";\nimport { GetRedirectByIdUseCase } from \"~/features/redirects/GetRedirectById/index.js\";\nimport { WbPermissions } from \"~/domain/permissions.js\";\nimport { RedirectNotAuthorizedError } from \"~/domain/redirect/errors.js\";\n\nclass DeleteRedirectUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getRedirectById: GetRedirectByIdUseCase.Interface,\n private repository: DeleteRedirectRepository.Interface\n ) {}\n\n async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n // Get the redirect first to include in events and for item-level permission check\n const getResult = await this.getRedirectById.execute(params.id);\n\n if (getResult.isFail()) {\n return Result.fail(getResult.error);\n }\n\n const redirect = getResult.value;\n\n const canDelete = await this.permissions.canDelete(\"redirect\", redirect);\n if (!canDelete) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n // Publish before delete event\n const beforeEvent = new RedirectBeforeDeleteEvent({\n redirect\n });\n\n await this.eventPublisher.publish(beforeEvent);\n\n // Execute the delete operation\n const result = await this.repository.execute(params);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after delete event\n const afterEvent = new RedirectAfterDeleteEvent({\n redirect\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok();\n }\n}\n\nexport const DeleteRedirectUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: DeleteRedirectUseCaseImpl,\n dependencies: [\n WbPermissions.Abstraction,\n EventPublisher,\n GetRedirectByIdUseCase,\n DeleteRedirectRepository\n ]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,cAAc,QAEX,0CAA0C;AACjD,SACIC,qBAAqB,IAAIC,kBAAkB,EAC3CC,wBAAwB;AAE5B,SAASC,yBAAyB,EAAEC,wBAAwB;AAC5D,SAASC,sBAAsB;AAC/B,SAASC,aAAa;AACtB,SAASC,0BAA0B;AAEnC,MAAMC,yBAAyB,CAAyC;EACpEC,WAAWA,CACCC,WAAoC,EACpCC,cAAmD,EACnDC,eAAiD,EACjDC,UAA8C,EACxD;IAAA,KAJUH,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,eAAiD,GAAjDA,eAAiD;IAAA,KACjDC,UAA8C,GAA9CA,UAA8C;EACvD;EAEH,MAAMC,OAAOA,CAACC,MAAiC,EAA6B;IACxE;IACA,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACJ,eAAe,CAACE,OAAO,CAACC,MAAM,CAACE,EAAE,CAAC;IAE/D,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOrB,MAAM,CAACsB,IAAI,CAACH,SAAS,CAACI,KAAK,CAAC;IACvC;IAEA,MAAMC,QAAQ,GAAGL,SAAS,CAACM,KAAK;IAEhC,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACb,WAAW,CAACa,SAAS,CAAC,UAAU,EAAEF,QAAQ,CAAC;IACxE,IAAI,CAACE,SAAS,EAAE;MACZ,OAAO1B,MAAM,CAACsB,IAAI,CAAC,IAAIZ,0BAA0B,CAAC,CAAC,CAAC;IACxD;;IAEA;IACA,MAAMiB,WAAW,GAAG,IAAIrB,yBAAyB,CAAC;MAC9CkB;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,CAACV,cAAc,CAACc,OAAO,CAACD,WAAW,CAAC;;IAE9C;IACA,MAAME,MAAM,GAAG,MAAM,IAAI,CAACb,UAAU,CAACC,OAAO,CAACC,MAAM,CAAC;IAEpD,IAAIW,MAAM,CAACR,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOQ,MAAM;IACjB;;IAEA;IACA,MAAMC,UAAU,GAAG,IAAIvB,wBAAwB,CAAC;MAC5CiB;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,CAACV,cAAc,CAACc,OAAO,CAACE,UAAU,CAAC;IAE7C,OAAO9B,MAAM,CAAC+B,EAAE,CAAC,CAAC;EACtB;AACJ;AAEA,OAAO,MAAM5B,qBAAqB,GAAGF,oBAAoB,CAAC;EACtD+B,WAAW,EAAE5B,kBAAkB;EAC/B6B,cAAc,EAAEtB,yBAAyB;EACzCuB,YAAY,EAAE,CACVzB,aAAa,CAAC0B,WAAW,EACzBjC,cAAc,EACdM,sBAAsB,EACtBH,wBAAwB;AAEhC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@ import { type Result } from "@webiny/feature/api";
|
|
|
2
2
|
import type { IEventHandler } from "@webiny/api-core/features/EventPublisher";
|
|
3
3
|
import type { DomainEvent } from "@webiny/api-core/features/EventPublisher";
|
|
4
4
|
import type { WbRedirect } from "../../../domain/redirect/abstractions.js";
|
|
5
|
-
import { RedirectNotFoundError, RedirectPersistenceError } from "../../../domain/redirect/errors.js";
|
|
5
|
+
import { RedirectNotFoundError, RedirectPersistenceError, RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
|
|
6
6
|
export interface IDeleteWbRedirectParams {
|
|
7
7
|
id: string;
|
|
8
8
|
}
|
|
@@ -25,6 +25,7 @@ export interface IDeleteRedirectUseCase {
|
|
|
25
25
|
execute(params: IDeleteWbRedirectParams): Promise<Result<void, UseCaseError>>;
|
|
26
26
|
}
|
|
27
27
|
export interface IDeleteRedirectUseCaseErrors {
|
|
28
|
+
notAuthorized: RedirectNotAuthorizedError;
|
|
28
29
|
notFound: RedirectNotFoundError;
|
|
29
30
|
persistence: RedirectPersistenceError;
|
|
30
31
|
}
|
|
@@ -42,14 +43,14 @@ export interface RedirectBeforeDeletePayload {
|
|
|
42
43
|
export interface RedirectAfterDeletePayload {
|
|
43
44
|
redirect: WbRedirect;
|
|
44
45
|
}
|
|
45
|
-
export declare const
|
|
46
|
-
export declare namespace
|
|
46
|
+
export declare const RedirectBeforeDeleteEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<RedirectBeforeDeletePayload>>>;
|
|
47
|
+
export declare namespace RedirectBeforeDeleteEventHandler {
|
|
47
48
|
type Interface = IEventHandler<DomainEvent<RedirectBeforeDeletePayload>>;
|
|
48
49
|
type Event = DomainEvent<RedirectBeforeDeletePayload>;
|
|
49
50
|
type Redirect = WbRedirect;
|
|
50
51
|
}
|
|
51
|
-
export declare const
|
|
52
|
-
export declare namespace
|
|
52
|
+
export declare const RedirectAfterDeleteEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<RedirectAfterDeletePayload>>>;
|
|
53
|
+
export declare namespace RedirectAfterDeleteEventHandler {
|
|
53
54
|
type Interface = IEventHandler<DomainEvent<RedirectAfterDeletePayload>>;
|
|
54
55
|
type Event = DomainEvent<RedirectAfterDeletePayload>;
|
|
55
56
|
type Redirect = WbRedirect;
|
|
@@ -24,7 +24,7 @@ export const DeleteRedirectUseCase = createAbstraction("Wb/DeleteRedirectUseCase
|
|
|
24
24
|
// Event Handler Abstractions
|
|
25
25
|
// ============================================================================
|
|
26
26
|
|
|
27
|
-
export const
|
|
28
|
-
export const
|
|
27
|
+
export const RedirectBeforeDeleteEventHandler = createAbstraction("Wb/RedirectBeforeDeleteEventHandler");
|
|
28
|
+
export const RedirectAfterDeleteEventHandler = createAbstraction("Wb/RedirectAfterDeleteEventHandler");
|
|
29
29
|
|
|
30
30
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","DeleteRedirectRepository","DeleteRedirectUseCase","
|
|
1
|
+
{"version":3,"names":["createAbstraction","DeleteRedirectRepository","DeleteRedirectUseCase","RedirectBeforeDeleteEventHandler","RedirectAfterDeleteEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/EventPublisher\";\nimport type { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport type { WbRedirect } from \"~/domain/redirect/abstractions.js\";\nimport {\n RedirectNotFoundError,\n RedirectPersistenceError,\n RedirectNotAuthorizedError\n} from \"~/domain/redirect/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IDeleteWbRedirectParams {\n id: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IDeleteRedirectRepository {\n execute(params: IDeleteWbRedirectParams): Promise<Result<void, RepositoryError>>;\n}\n\nexport interface IDeleteRedirectRepositoryErrors {\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype RepositoryError = IDeleteRedirectRepositoryErrors[keyof IDeleteRedirectRepositoryErrors];\n\nexport const DeleteRedirectRepository = createAbstraction<IDeleteRedirectRepository>(\n \"Wb/DeleteRedirectRepository\"\n);\n\nexport namespace DeleteRedirectRepository {\n export type Interface = IDeleteRedirectRepository;\n export type Params = IDeleteWbRedirectParams;\n export type Return = Promise<Result<void, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IDeleteRedirectUseCase {\n execute(params: IDeleteWbRedirectParams): Promise<Result<void, UseCaseError>>;\n}\n\nexport interface IDeleteRedirectUseCaseErrors {\n notAuthorized: RedirectNotAuthorizedError;\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype UseCaseError = IDeleteRedirectUseCaseErrors[keyof IDeleteRedirectUseCaseErrors];\n\nexport const DeleteRedirectUseCase = createAbstraction<IDeleteRedirectUseCase>(\n \"Wb/DeleteRedirectUseCase\"\n);\n\nexport namespace DeleteRedirectUseCase {\n export type Interface = IDeleteRedirectUseCase;\n export type Params = IDeleteWbRedirectParams;\n export type Return = Promise<Result<void, UseCaseError>>;\n export type Error = UseCaseError;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface RedirectBeforeDeletePayload {\n redirect: WbRedirect;\n}\n\nexport interface RedirectAfterDeletePayload {\n redirect: WbRedirect;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\nexport const RedirectBeforeDeleteEventHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectBeforeDeletePayload>>\n>(\"Wb/RedirectBeforeDeleteEventHandler\");\n\nexport namespace RedirectBeforeDeleteEventHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectBeforeDeletePayload>>;\n export type Event = DomainEvent<RedirectBeforeDeletePayload>;\n export type Redirect = WbRedirect;\n}\n\nexport const RedirectAfterDeleteEventHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectAfterDeletePayload>>\n>(\"Wb/RedirectAfterDeleteEventHandler\");\n\nexport namespace RedirectAfterDeleteEventHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectAfterDeletePayload>>;\n export type Event = DomainEvent<RedirectAfterDeletePayload>;\n export type Redirect = WbRedirect;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAUpE;AACA;AACA;;AAMA;AACA;AACA;;AAaA,OAAO,MAAMC,wBAAwB,GAAGD,iBAAiB,CACrD,6BACJ,CAAC;;AASD;AACA;AACA;;AAcA,OAAO,MAAME,qBAAqB,GAAGF,iBAAiB,CAClD,0BACJ,CAAC;;AASD;AACA;AACA;;AAUA;AACA;AACA;;AAEA,OAAO,MAAMG,gCAAgC,GAAGH,iBAAiB,CAE/D,qCAAqC,CAAC;AAQxC,OAAO,MAAMI,+BAA+B,GAAGJ,iBAAiB,CAE9D,oCAAoC,CAAC","ignoreList":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
|
|
2
|
-
import {
|
|
2
|
+
import { RedirectBeforeDeleteEventHandler, RedirectAfterDeleteEventHandler } from "./abstractions.js";
|
|
3
3
|
// RedirectBeforeDelete Event
|
|
4
4
|
export class RedirectBeforeDeleteEvent extends DomainEvent {
|
|
5
5
|
eventType = "redirect.beforeDelete";
|
|
6
6
|
getHandlerAbstraction() {
|
|
7
|
-
return
|
|
7
|
+
return RedirectBeforeDeleteEventHandler;
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ export class RedirectBeforeDeleteEvent extends DomainEvent {
|
|
|
12
12
|
export class RedirectAfterDeleteEvent extends DomainEvent {
|
|
13
13
|
eventType = "redirect.afterDelete";
|
|
14
14
|
getHandlerAbstraction() {
|
|
15
|
-
return
|
|
15
|
+
return RedirectAfterDeleteEventHandler;
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DomainEvent","
|
|
1
|
+
{"version":3,"names":["DomainEvent","RedirectBeforeDeleteEventHandler","RedirectAfterDeleteEventHandler","RedirectBeforeDeleteEvent","eventType","getHandlerAbstraction","RedirectAfterDeleteEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport {\n RedirectBeforeDeleteEventHandler,\n RedirectAfterDeleteEventHandler\n} from \"./abstractions.js\";\nimport type { RedirectBeforeDeletePayload, RedirectAfterDeletePayload } from \"./abstractions.js\";\n\n// RedirectBeforeDelete Event\nexport class RedirectBeforeDeleteEvent extends DomainEvent<RedirectBeforeDeletePayload> {\n eventType = \"redirect.beforeDelete\" as const;\n\n getHandlerAbstraction() {\n return RedirectBeforeDeleteEventHandler;\n }\n}\n\n// RedirectAfterDelete Event\nexport class RedirectAfterDeleteEvent extends DomainEvent<RedirectAfterDeletePayload> {\n eventType = \"redirect.afterDelete\" as const;\n\n getHandlerAbstraction() {\n return RedirectAfterDeleteEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,0CAA0C;AACtE,SACIC,gCAAgC,EAChCC,+BAA+B;AAInC;AACA,OAAO,MAAMC,yBAAyB,SAASH,WAAW,CAA8B;EACpFI,SAAS,GAAG,uBAAuB;EAEnCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,gCAAgC;EAC3C;AACJ;;AAEA;AACA,OAAO,MAAMK,wBAAwB,SAASN,WAAW,CAA6B;EAClFI,SAAS,GAAG,sBAAsB;EAElCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,+BAA+B;EAC1C;AACJ","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { RedirectAfterDeleteEventHandler, RedirectBeforeDeleteEventHandler, DeleteRedirectUseCase } from "./abstractions.js";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { RedirectAfterDeleteEventHandler, RedirectBeforeDeleteEventHandler, DeleteRedirectUseCase } from "./abstractions.js";
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["RedirectAfterDeleteEventHandler","RedirectBeforeDeleteEventHandler","DeleteRedirectUseCase"],"sources":["index.ts"],"sourcesContent":["export {\n RedirectAfterDeleteEventHandler,\n RedirectBeforeDeleteEventHandler,\n DeleteRedirectUseCase\n} from \"./abstractions.js\";\n"],"mappings":"AAAA,SACIA,+BAA+B,EAC/BC,gCAAgC,EAChCC,qBAAqB","ignoreList":[]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { GetActiveRedirectsUseCase as UseCaseAbstraction, GetActiveRedirectsRepository } from "./abstractions.js";
|
|
2
|
+
import { WbPermissions } from "../../../domain/permissions.js";
|
|
2
3
|
declare class GetActiveRedirectsUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
4
|
+
private permissions;
|
|
3
5
|
private repository;
|
|
4
|
-
constructor(repository: GetActiveRedirectsRepository.Interface);
|
|
6
|
+
constructor(permissions: WbPermissions.Interface, repository: GetActiveRedirectsRepository.Interface);
|
|
5
7
|
execute(): UseCaseAbstraction.Return;
|
|
6
8
|
}
|
|
7
9
|
export declare const GetActiveRedirectsUseCase: import("@webiny/di").Implementation<typeof GetActiveRedirectsUseCaseImpl>;
|
|
@@ -1,17 +1,24 @@
|
|
|
1
|
-
import { createImplementation } from "@webiny/feature/api";
|
|
1
|
+
import { Result, createImplementation } from "@webiny/feature/api";
|
|
2
2
|
import { GetActiveRedirectsUseCase as UseCaseAbstraction, GetActiveRedirectsRepository } from "./abstractions.js";
|
|
3
|
+
import { WbPermissions } from "../../../domain/permissions.js";
|
|
4
|
+
import { RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
|
|
3
5
|
class GetActiveRedirectsUseCaseImpl {
|
|
4
|
-
constructor(repository) {
|
|
6
|
+
constructor(permissions, repository) {
|
|
7
|
+
this.permissions = permissions;
|
|
5
8
|
this.repository = repository;
|
|
6
9
|
}
|
|
7
10
|
async execute() {
|
|
11
|
+
const hasPermission = await this.permissions.canRead("redirect");
|
|
12
|
+
if (!hasPermission) {
|
|
13
|
+
return Result.fail(new RedirectNotAuthorizedError());
|
|
14
|
+
}
|
|
8
15
|
return await this.repository.execute();
|
|
9
16
|
}
|
|
10
17
|
}
|
|
11
18
|
export const GetActiveRedirectsUseCase = createImplementation({
|
|
12
19
|
abstraction: UseCaseAbstraction,
|
|
13
20
|
implementation: GetActiveRedirectsUseCaseImpl,
|
|
14
|
-
dependencies: [GetActiveRedirectsRepository]
|
|
21
|
+
dependencies: [WbPermissions.Abstraction, GetActiveRedirectsRepository]
|
|
15
22
|
});
|
|
16
23
|
|
|
17
24
|
//# sourceMappingURL=GetActiveRedirectsUseCase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createImplementation","GetActiveRedirectsUseCase","UseCaseAbstraction","GetActiveRedirectsRepository","GetActiveRedirectsUseCaseImpl","constructor","repository","execute","abstraction","implementation","dependencies"],"sources":["GetActiveRedirectsUseCase.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport {\n GetActiveRedirectsUseCase as UseCaseAbstraction,\n GetActiveRedirectsRepository\n} from \"./abstractions.js\";\n\nclass GetActiveRedirectsUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(private repository: GetActiveRedirectsRepository.Interface) {}\n\n async execute(): UseCaseAbstraction.Return {\n return await this.repository.execute();\n }\n}\n\nexport const GetActiveRedirectsUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: GetActiveRedirectsUseCaseImpl,\n dependencies: [GetActiveRedirectsRepository]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,qBAAqB;
|
|
1
|
+
{"version":3,"names":["Result","createImplementation","GetActiveRedirectsUseCase","UseCaseAbstraction","GetActiveRedirectsRepository","WbPermissions","RedirectNotAuthorizedError","GetActiveRedirectsUseCaseImpl","constructor","permissions","repository","execute","hasPermission","canRead","fail","abstraction","implementation","dependencies","Abstraction"],"sources":["GetActiveRedirectsUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n GetActiveRedirectsUseCase as UseCaseAbstraction,\n GetActiveRedirectsRepository\n} from \"./abstractions.js\";\nimport { WbPermissions } from \"~/domain/permissions.js\";\nimport { RedirectNotAuthorizedError } from \"~/domain/redirect/errors.js\";\n\nclass GetActiveRedirectsUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private repository: GetActiveRedirectsRepository.Interface\n ) {}\n\n async execute(): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canRead(\"redirect\");\n if (!hasPermission) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n return await this.repository.execute();\n }\n}\n\nexport const GetActiveRedirectsUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: GetActiveRedirectsUseCaseImpl,\n dependencies: [WbPermissions.Abstraction, GetActiveRedirectsRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,yBAAyB,IAAIC,kBAAkB,EAC/CC,4BAA4B;AAEhC,SAASC,aAAa;AACtB,SAASC,0BAA0B;AAEnC,MAAMC,6BAA6B,CAAyC;EACxEC,WAAWA,CACCC,WAAoC,EACpCC,UAAkD,EAC5D;IAAA,KAFUD,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,UAAkD,GAAlDA,UAAkD;EAC3D;EAEH,MAAMC,OAAOA,CAAA,EAA8B;IACvC,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACH,WAAW,CAACI,OAAO,CAAC,UAAU,CAAC;IAChE,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOZ,MAAM,CAACc,IAAI,CAAC,IAAIR,0BAA0B,CAAC,CAAC,CAAC;IACxD;IAEA,OAAO,MAAM,IAAI,CAACI,UAAU,CAACC,OAAO,CAAC,CAAC;EAC1C;AACJ;AAEA,OAAO,MAAMT,yBAAyB,GAAGD,oBAAoB,CAAC;EAC1Dc,WAAW,EAAEZ,kBAAkB;EAC/Ba,cAAc,EAAET,6BAA6B;EAC7CU,YAAY,EAAE,CAACZ,aAAa,CAACa,WAAW,EAAEd,4BAA4B;AAC1E,CAAC,CAAC","ignoreList":[]}
|