@webiny/api-website-builder 0.0.0-unstable.ac6ebf63c6 → 0.0.0-unstable.dbdf5d6258
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 +133 -0
- package/domain/permissions.js +35 -0
- package/domain/permissions.js.map +1 -0
- package/features/installer/ApiKeyInstaller.d.ts +3 -1
- package/features/installer/ApiKeyInstaller.js +12 -5
- 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 +2 -1
- package/features/pages/CreatePage/abstractions.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 +2 -1
- package/features/pages/CreatePageRevisionFrom/abstractions.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 +2 -1
- package/features/pages/DeletePage/abstractions.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 +2 -1
- package/features/pages/DuplicatePage/abstractions.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 +2 -1
- package/features/pages/MovePage/abstractions.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 +2 -1
- package/features/pages/PublishPage/abstractions.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 +2 -1
- package/features/pages/UnpublishPage/abstractions.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 +5 -5
- package/features/pages/UpdatePage/abstractions.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 +2 -1
- package/features/redirects/CreateRedirect/abstractions.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 +2 -1
- package/features/redirects/DeleteRedirect/abstractions.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/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 +2 -1
- package/features/redirects/MoveRedirect/abstractions.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 +2 -1
- package/features/redirects/UpdateRedirect/abstractions.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 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Result","createImplementation","EventPublisher","MoveRedirectUseCase","UseCaseAbstraction","MoveRedirectRepository","RedirectBeforeMoveEvent","RedirectAfterMoveEvent","GetRedirectByIdUseCase","MoveRedirectUseCaseImpl","constructor","eventPublisher","getRedirectById","repository","execute","params","getResult","id","isFail","original","value","beforeEvent","input","publish","result","afterEvent","redirect","ok","abstraction","implementation","dependencies"],"sources":["MoveRedirectUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport {\n MoveRedirectUseCase as UseCaseAbstraction,\n MoveRedirectRepository\n} from \"./abstractions.js\";\nimport { RedirectBeforeMoveEvent, RedirectAfterMoveEvent } from \"./events.js\";\nimport { GetRedirectByIdUseCase } from \"~/features/redirects/GetRedirectById/index.js\";\n\nclass MoveRedirectUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getRedirectById: GetRedirectByIdUseCase.Interface,\n private repository: MoveRedirectRepository.Interface\n ) {}\n\n async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n // Get the original redirect for events\n const getResult = await this.getRedirectById.execute(params.id);\n\n if (getResult.isFail()) {\n return getResult;\n }\n\n const original = getResult.value;\n\n // Publish before move event\n const beforeEvent = new RedirectBeforeMoveEvent({\n original,\n input: params\n });\n\n await this.eventPublisher.publish(beforeEvent);\n\n // Execute the move operation\n const result = await this.repository.execute(params);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after move event\n const afterEvent = new RedirectAfterMoveEvent({\n original,\n input: params,\n redirect: result.value\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok(result.value);\n }\n}\n\nexport const MoveRedirectUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: MoveRedirectUseCaseImpl,\n dependencies: [EventPublisher
|
|
1
|
+
{"version":3,"names":["Result","createImplementation","EventPublisher","MoveRedirectUseCase","UseCaseAbstraction","MoveRedirectRepository","RedirectBeforeMoveEvent","RedirectAfterMoveEvent","GetRedirectByIdUseCase","WbPermissions","RedirectNotAuthorizedError","MoveRedirectUseCaseImpl","constructor","permissions","eventPublisher","getRedirectById","repository","execute","params","hasPermission","canEdit","fail","getResult","id","isFail","original","value","beforeEvent","input","publish","result","afterEvent","redirect","ok","abstraction","implementation","dependencies","Abstraction"],"sources":["MoveRedirectUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport {\n MoveRedirectUseCase as UseCaseAbstraction,\n MoveRedirectRepository\n} from \"./abstractions.js\";\nimport { RedirectBeforeMoveEvent, RedirectAfterMoveEvent } from \"./events.js\";\nimport { GetRedirectByIdUseCase } from \"~/features/redirects/GetRedirectById/index.js\";\nimport { WbPermissions } from \"~/domain/permissions.js\";\nimport { RedirectNotAuthorizedError } from \"~/domain/redirect/errors.js\";\n\nclass MoveRedirectUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getRedirectById: GetRedirectByIdUseCase.Interface,\n private repository: MoveRedirectRepository.Interface\n ) {}\n\n async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canEdit(\"redirect\");\n if (!hasPermission) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n // Get the original redirect for events\n const getResult = await this.getRedirectById.execute(params.id);\n\n if (getResult.isFail()) {\n return getResult;\n }\n\n const original = getResult.value;\n\n const canEdit = await this.permissions.canEdit(\"redirect\", original);\n if (!canEdit) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n // Publish before move event\n const beforeEvent = new RedirectBeforeMoveEvent({\n original,\n input: params\n });\n\n await this.eventPublisher.publish(beforeEvent);\n\n // Execute the move operation\n const result = await this.repository.execute(params);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after move event\n const afterEvent = new RedirectAfterMoveEvent({\n original,\n input: params,\n redirect: result.value\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok(result.value);\n }\n}\n\nexport const MoveRedirectUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: MoveRedirectUseCaseImpl,\n dependencies: [\n WbPermissions.Abstraction,\n EventPublisher,\n GetRedirectByIdUseCase,\n MoveRedirectRepository\n ]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,cAAc,QAEX,0CAA0C;AACjD,SACIC,mBAAmB,IAAIC,kBAAkB,EACzCC,sBAAsB;AAE1B,SAASC,uBAAuB,EAAEC,sBAAsB;AACxD,SAASC,sBAAsB;AAC/B,SAASC,aAAa;AACtB,SAASC,0BAA0B;AAEnC,MAAMC,uBAAuB,CAAyC;EAClEC,WAAWA,CACCC,WAAoC,EACpCC,cAAmD,EACnDC,eAAiD,EACjDC,UAA4C,EACtD;IAAA,KAJUH,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,eAAiD,GAAjDA,eAAiD;IAAA,KACjDC,UAA4C,GAA5CA,UAA4C;EACrD;EAEH,MAAMC,OAAOA,CAACC,MAAiC,EAA6B;IACxE,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACN,WAAW,CAACO,OAAO,CAAC,UAAU,CAAC;IAChE,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOnB,MAAM,CAACqB,IAAI,CAAC,IAAIX,0BAA0B,CAAC,CAAC,CAAC;IACxD;;IAEA;IACA,MAAMY,SAAS,GAAG,MAAM,IAAI,CAACP,eAAe,CAACE,OAAO,CAACC,MAAM,CAACK,EAAE,CAAC;IAE/D,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOF,SAAS;IACpB;IAEA,MAAMG,QAAQ,GAAGH,SAAS,CAACI,KAAK;IAEhC,MAAMN,OAAO,GAAG,MAAM,IAAI,CAACP,WAAW,CAACO,OAAO,CAAC,UAAU,EAAEK,QAAQ,CAAC;IACpE,IAAI,CAACL,OAAO,EAAE;MACV,OAAOpB,MAAM,CAACqB,IAAI,CAAC,IAAIX,0BAA0B,CAAC,CAAC,CAAC;IACxD;;IAEA;IACA,MAAMiB,WAAW,GAAG,IAAIrB,uBAAuB,CAAC;MAC5CmB,QAAQ;MACRG,KAAK,EAAEV;IACX,CAAC,CAAC;IAEF,MAAM,IAAI,CAACJ,cAAc,CAACe,OAAO,CAACF,WAAW,CAAC;;IAE9C;IACA,MAAMG,MAAM,GAAG,MAAM,IAAI,CAACd,UAAU,CAACC,OAAO,CAACC,MAAM,CAAC;IAEpD,IAAIY,MAAM,CAACN,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOM,MAAM;IACjB;;IAEA;IACA,MAAMC,UAAU,GAAG,IAAIxB,sBAAsB,CAAC;MAC1CkB,QAAQ;MACRG,KAAK,EAAEV,MAAM;MACbc,QAAQ,EAAEF,MAAM,CAACJ;IACrB,CAAC,CAAC;IAEF,MAAM,IAAI,CAACZ,cAAc,CAACe,OAAO,CAACE,UAAU,CAAC;IAE7C,OAAO/B,MAAM,CAACiC,EAAE,CAACH,MAAM,CAACJ,KAAK,CAAC;EAClC;AACJ;AAEA,OAAO,MAAMvB,mBAAmB,GAAGF,oBAAoB,CAAC;EACpDiC,WAAW,EAAE9B,kBAAkB;EAC/B+B,cAAc,EAAExB,uBAAuB;EACvCyB,YAAY,EAAE,CACV3B,aAAa,CAAC4B,WAAW,EACzBnC,cAAc,EACdM,sBAAsB,EACtBH,sBAAsB;AAE9B,CAAC,CAAC","ignoreList":[]}
|
|
@@ -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 IMoveWbRedirectParams {
|
|
7
7
|
id: string;
|
|
8
8
|
folderId: string;
|
|
@@ -27,6 +27,7 @@ export interface IMoveRedirectUseCase {
|
|
|
27
27
|
execute(params: IMoveWbRedirectParams): Promise<Result<WbRedirect, UseCaseError>>;
|
|
28
28
|
}
|
|
29
29
|
export interface IMoveRedirectUseCaseErrors {
|
|
30
|
+
notAuthorized: RedirectNotAuthorizedError;
|
|
30
31
|
notFound: RedirectNotFoundError;
|
|
31
32
|
persistence: RedirectPersistenceError;
|
|
32
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","MoveRedirectRepository","MoveRedirectUseCase","RedirectBeforeMoveHandler","RedirectAfterMoveHandler"],"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 {
|
|
1
|
+
{"version":3,"names":["createAbstraction","MoveRedirectRepository","MoveRedirectUseCase","RedirectBeforeMoveHandler","RedirectAfterMoveHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/EventPublisher\";\nimport type { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport type { WbRedirect } from \"~/domain/redirect/abstractions.js\";\nimport {\n RedirectNotFoundError,\n RedirectPersistenceError,\n RedirectNotAuthorizedError\n} from \"~/domain/redirect/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IMoveWbRedirectParams {\n id: string;\n folderId: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IMoveRedirectRepository {\n execute(params: IMoveWbRedirectParams): Promise<Result<WbRedirect, RepositoryError>>;\n}\n\nexport interface IMoveRedirectRepositoryErrors {\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype RepositoryError = IMoveRedirectRepositoryErrors[keyof IMoveRedirectRepositoryErrors];\n\nexport const MoveRedirectRepository = createAbstraction<IMoveRedirectRepository>(\n \"Wb/MoveRedirectRepository\"\n);\n\nexport namespace MoveRedirectRepository {\n export type Interface = IMoveRedirectRepository;\n export type Params = IMoveWbRedirectParams;\n export type Return = Promise<Result<WbRedirect, RepositoryError>>;\n export type Error = RepositoryError;\n export type Redirect = WbRedirect;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IMoveRedirectUseCase {\n execute(params: IMoveWbRedirectParams): Promise<Result<WbRedirect, UseCaseError>>;\n}\n\nexport interface IMoveRedirectUseCaseErrors {\n notAuthorized: RedirectNotAuthorizedError;\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype UseCaseError = IMoveRedirectUseCaseErrors[keyof IMoveRedirectUseCaseErrors];\n\nexport const MoveRedirectUseCase =\n createAbstraction<IMoveRedirectUseCase>(\"Wb/MoveRedirectUseCase\");\n\nexport namespace MoveRedirectUseCase {\n export type Interface = IMoveRedirectUseCase;\n export type Params = IMoveWbRedirectParams;\n export type Return = Promise<Result<WbRedirect, UseCaseError>>;\n export type Error = UseCaseError;\n export type Redirect = WbRedirect;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface RedirectBeforeMovePayload {\n original: WbRedirect;\n input: IMoveWbRedirectParams;\n}\n\nexport interface RedirectAfterMovePayload {\n original: WbRedirect;\n input: IMoveWbRedirectParams;\n redirect: WbRedirect;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\nexport const RedirectBeforeMoveHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectBeforeMovePayload>>\n>(\"Wb/RedirectBeforeMoveHandler\");\n\nexport namespace RedirectBeforeMoveHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectBeforeMovePayload>>;\n export type Event = DomainEvent<RedirectBeforeMovePayload>;\n export type Redirect = WbRedirect;\n}\n\nexport const RedirectAfterMoveHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectAfterMovePayload>>\n>(\"Wb/RedirectAfterMoveHandler\");\n\nexport namespace RedirectAfterMoveHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectAfterMovePayload>>;\n export type Event = DomainEvent<RedirectAfterMovePayload>;\n export type Redirect = WbRedirect;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAUpE;AACA;AACA;;AAOA;AACA;AACA;;AAaA,OAAO,MAAMC,sBAAsB,GAAGD,iBAAiB,CACnD,2BACJ,CAAC;;AAUD;AACA;AACA;;AAcA,OAAO,MAAME,mBAAmB,GAC5BF,iBAAiB,CAAuB,wBAAwB,CAAC;;AAUrE;AACA;AACA;;AAaA;AACA;AACA;;AAEA,OAAO,MAAMG,yBAAyB,GAAGH,iBAAiB,CAExD,8BAA8B,CAAC;AAQjC,OAAO,MAAMI,wBAAwB,GAAGJ,iBAAiB,CAEvD,6BAA6B,CAAC","ignoreList":[]}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/EventPublisher";
|
|
2
2
|
import { UpdateRedirectUseCase as UseCaseAbstraction, UpdateRedirectRepository } from "./abstractions.js";
|
|
3
3
|
import { GetRedirectByIdUseCase } from "../../../features/redirects/GetRedirectById/index.js";
|
|
4
|
+
import { WbPermissions } from "../../../domain/permissions.js";
|
|
4
5
|
declare class UpdateRedirectUseCaseImpl 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: UpdateRedirectRepository.Interface);
|
|
10
|
+
constructor(permissions: WbPermissions.Interface, eventPublisher: EventPublisherAbstraction.Interface, getRedirectById: GetRedirectByIdUseCase.Interface, repository: UpdateRedirectRepository.Interface);
|
|
9
11
|
execute(id: string, data: UseCaseAbstraction.UpdateData): UseCaseAbstraction.Return;
|
|
10
12
|
}
|
|
11
13
|
export declare const UpdateRedirectUseCase: typeof UpdateRedirectUseCaseImpl & {
|
|
@@ -3,19 +3,31 @@ import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
|
|
|
3
3
|
import { UpdateRedirectUseCase as UseCaseAbstraction, UpdateRedirectRepository } from "./abstractions.js";
|
|
4
4
|
import { RedirectBeforeUpdateEvent, RedirectAfterUpdateEvent } 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 UpdateRedirectUseCaseImpl {
|
|
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(id, data) {
|
|
16
|
+
const hasPermission = await this.permissions.canEdit("redirect");
|
|
17
|
+
if (!hasPermission) {
|
|
18
|
+
return Result.fail(new RedirectNotAuthorizedError());
|
|
19
|
+
}
|
|
20
|
+
|
|
13
21
|
// Get the original redirect for events
|
|
14
22
|
const getResult = await this.getRedirectById.execute(id);
|
|
15
23
|
if (getResult.isFail()) {
|
|
16
24
|
return getResult;
|
|
17
25
|
}
|
|
18
26
|
const original = getResult.value;
|
|
27
|
+
const canEdit = await this.permissions.canEdit("redirect", original);
|
|
28
|
+
if (!canEdit) {
|
|
29
|
+
return Result.fail(new RedirectNotAuthorizedError());
|
|
30
|
+
}
|
|
19
31
|
|
|
20
32
|
// Publish before update event
|
|
21
33
|
const beforeEvent = new RedirectBeforeUpdateEvent({
|
|
@@ -48,7 +60,7 @@ class UpdateRedirectUseCaseImpl {
|
|
|
48
60
|
}
|
|
49
61
|
export const UpdateRedirectUseCase = UseCaseAbstraction.createImplementation({
|
|
50
62
|
implementation: UpdateRedirectUseCaseImpl,
|
|
51
|
-
dependencies: [EventPublisher, GetRedirectByIdUseCase, UpdateRedirectRepository]
|
|
63
|
+
dependencies: [WbPermissions.Abstraction, EventPublisher, GetRedirectByIdUseCase, UpdateRedirectRepository]
|
|
52
64
|
});
|
|
53
65
|
|
|
54
66
|
//# sourceMappingURL=UpdateRedirectUseCase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Result","EventPublisher","UpdateRedirectUseCase","UseCaseAbstraction","UpdateRedirectRepository","RedirectBeforeUpdateEvent","RedirectAfterUpdateEvent","GetRedirectByIdUseCase","UpdateRedirectUseCaseImpl","constructor","eventPublisher","getRedirectById","repository","execute","id","data","getResult","isFail","original","value","beforeEvent","input","publish","result","afterEvent","redirect","ok","createImplementation","implementation","dependencies"],"sources":["UpdateRedirectUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport {\n UpdateRedirectUseCase as UseCaseAbstraction,\n UpdateRedirectRepository\n} from \"./abstractions.js\";\nimport { RedirectBeforeUpdateEvent, RedirectAfterUpdateEvent } from \"./events.js\";\nimport { GetRedirectByIdUseCase } from \"~/features/redirects/GetRedirectById/index.js\";\n\nclass UpdateRedirectUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getRedirectById: GetRedirectByIdUseCase.Interface,\n private repository: UpdateRedirectRepository.Interface\n ) {}\n\n async execute(id: string, data: UseCaseAbstraction.UpdateData): UseCaseAbstraction.Return {\n // Get the original redirect for events\n const getResult = await this.getRedirectById.execute(id);\n\n if (getResult.isFail()) {\n return getResult;\n }\n\n const original = getResult.value;\n\n // Publish before update event\n const beforeEvent = new RedirectBeforeUpdateEvent({\n original,\n input: { id, data }\n });\n\n await this.eventPublisher.publish(beforeEvent);\n\n // Execute the update operation\n const result = await this.repository.execute(id, data);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after update event\n const afterEvent = new RedirectAfterUpdateEvent({\n original,\n input: { id, data },\n redirect: result.value\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok(result.value);\n }\n}\n\nexport const UpdateRedirectUseCase = UseCaseAbstraction.createImplementation({\n implementation: UpdateRedirectUseCaseImpl,\n dependencies: [EventPublisher
|
|
1
|
+
{"version":3,"names":["Result","EventPublisher","UpdateRedirectUseCase","UseCaseAbstraction","UpdateRedirectRepository","RedirectBeforeUpdateEvent","RedirectAfterUpdateEvent","GetRedirectByIdUseCase","WbPermissions","RedirectNotAuthorizedError","UpdateRedirectUseCaseImpl","constructor","permissions","eventPublisher","getRedirectById","repository","execute","id","data","hasPermission","canEdit","fail","getResult","isFail","original","value","beforeEvent","input","publish","result","afterEvent","redirect","ok","createImplementation","implementation","dependencies","Abstraction"],"sources":["UpdateRedirectUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport {\n UpdateRedirectUseCase as UseCaseAbstraction,\n UpdateRedirectRepository\n} from \"./abstractions.js\";\nimport { RedirectBeforeUpdateEvent, RedirectAfterUpdateEvent } 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 UpdateRedirectUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getRedirectById: GetRedirectByIdUseCase.Interface,\n private repository: UpdateRedirectRepository.Interface\n ) {}\n\n async execute(id: string, data: UseCaseAbstraction.UpdateData): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canEdit(\"redirect\");\n if (!hasPermission) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n // Get the original redirect for events\n const getResult = await this.getRedirectById.execute(id);\n\n if (getResult.isFail()) {\n return getResult;\n }\n\n const original = getResult.value;\n\n const canEdit = await this.permissions.canEdit(\"redirect\", original);\n if (!canEdit) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n // Publish before update event\n const beforeEvent = new RedirectBeforeUpdateEvent({\n original,\n input: { id, data }\n });\n\n await this.eventPublisher.publish(beforeEvent);\n\n // Execute the update operation\n const result = await this.repository.execute(id, data);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after update event\n const afterEvent = new RedirectAfterUpdateEvent({\n original,\n input: { id, data },\n redirect: result.value\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok(result.value);\n }\n}\n\nexport const UpdateRedirectUseCase = UseCaseAbstraction.createImplementation({\n implementation: UpdateRedirectUseCaseImpl,\n dependencies: [\n WbPermissions.Abstraction,\n EventPublisher,\n GetRedirectByIdUseCase,\n UpdateRedirectRepository\n ]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,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,EAAU,EAAEC,IAAmC,EAA6B;IACtF,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACP,WAAW,CAACQ,OAAO,CAAC,UAAU,CAAC;IAChE,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOnB,MAAM,CAACqB,IAAI,CAAC,IAAIZ,0BAA0B,CAAC,CAAC,CAAC;IACxD;;IAEA;IACA,MAAMa,SAAS,GAAG,MAAM,IAAI,CAACR,eAAe,CAACE,OAAO,CAACC,EAAE,CAAC;IAExD,IAAIK,SAAS,CAACC,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOD,SAAS;IACpB;IAEA,MAAME,QAAQ,GAAGF,SAAS,CAACG,KAAK;IAEhC,MAAML,OAAO,GAAG,MAAM,IAAI,CAACR,WAAW,CAACQ,OAAO,CAAC,UAAU,EAAEI,QAAQ,CAAC;IACpE,IAAI,CAACJ,OAAO,EAAE;MACV,OAAOpB,MAAM,CAACqB,IAAI,CAAC,IAAIZ,0BAA0B,CAAC,CAAC,CAAC;IACxD;;IAEA;IACA,MAAMiB,WAAW,GAAG,IAAIrB,yBAAyB,CAAC;MAC9CmB,QAAQ;MACRG,KAAK,EAAE;QAAEV,EAAE;QAAEC;MAAK;IACtB,CAAC,CAAC;IAEF,MAAM,IAAI,CAACL,cAAc,CAACe,OAAO,CAACF,WAAW,CAAC;;IAE9C;IACA,MAAMG,MAAM,GAAG,MAAM,IAAI,CAACd,UAAU,CAACC,OAAO,CAACC,EAAE,EAAEC,IAAI,CAAC;IAEtD,IAAIW,MAAM,CAACN,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOM,MAAM;IACjB;;IAEA;IACA,MAAMC,UAAU,GAAG,IAAIxB,wBAAwB,CAAC;MAC5CkB,QAAQ;MACRG,KAAK,EAAE;QAAEV,EAAE;QAAEC;MAAK,CAAC;MACnBa,QAAQ,EAAEF,MAAM,CAACJ;IACrB,CAAC,CAAC;IAEF,MAAM,IAAI,CAACZ,cAAc,CAACe,OAAO,CAACE,UAAU,CAAC;IAE7C,OAAO9B,MAAM,CAACgC,EAAE,CAACH,MAAM,CAACJ,KAAK,CAAC;EAClC;AACJ;AAEA,OAAO,MAAMvB,qBAAqB,GAAGC,kBAAkB,CAAC8B,oBAAoB,CAAC;EACzEC,cAAc,EAAExB,yBAAyB;EACzCyB,YAAY,EAAE,CACV3B,aAAa,CAAC4B,WAAW,EACzBnC,cAAc,EACdM,sBAAsB,EACtBH,wBAAwB;AAEhC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@ 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
5
|
import type { WbLocation } from "../../../domain/shared/abstractions.js";
|
|
6
|
-
import { RedirectNotFoundError, RedirectPersistenceError, RedirectValidationError } from "../../../domain/redirect/errors.js";
|
|
6
|
+
import { RedirectNotFoundError, RedirectPersistenceError, RedirectValidationError, RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
|
|
7
7
|
export interface IUpdateWbRedirectData {
|
|
8
8
|
location?: WbLocation;
|
|
9
9
|
redirectFrom?: string;
|
|
@@ -32,6 +32,7 @@ export interface IUpdateRedirectUseCase {
|
|
|
32
32
|
execute(id: string, data: IUpdateWbRedirectData): Promise<Result<WbRedirect, UseCaseError>>;
|
|
33
33
|
}
|
|
34
34
|
export interface IUpdateRedirectUseCaseErrors {
|
|
35
|
+
notAuthorized: RedirectNotAuthorizedError;
|
|
35
36
|
notFound: RedirectNotFoundError;
|
|
36
37
|
validation: RedirectValidationError;
|
|
37
38
|
persistence: RedirectPersistenceError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","UpdateRedirectRepository","UpdateRedirectUseCase","RedirectBeforeUpdateHandler","RedirectAfterUpdateHandler"],"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 type { WbLocation } from \"~/domain/shared/abstractions.js\";\nimport {\n RedirectNotFoundError,\n RedirectPersistenceError,\n RedirectValidationError\n} from \"~/domain/redirect/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IUpdateWbRedirectData {\n location?: WbLocation;\n redirectFrom?: string;\n redirectTo?: string;\n redirectType?: string;\n isEnabled?: boolean;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IUpdateRedirectRepository {\n execute(id: string, data: IUpdateWbRedirectData): Promise<Result<WbRedirect, RepositoryError>>;\n}\n\nexport interface IUpdateRedirectRepositoryErrors {\n notFound: RedirectNotFoundError;\n validation: RedirectValidationError;\n persistence: RedirectPersistenceError;\n}\n\ntype RepositoryError = IUpdateRedirectRepositoryErrors[keyof IUpdateRedirectRepositoryErrors];\n\nexport const UpdateRedirectRepository = createAbstraction<IUpdateRedirectRepository>(\n \"Wb/UpdateRedirectRepository\"\n);\n\nexport namespace UpdateRedirectRepository {\n export type Interface = IUpdateRedirectRepository;\n export type UpdateData = IUpdateWbRedirectData;\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 IUpdateRedirectUseCase {\n execute(id: string, data: IUpdateWbRedirectData): Promise<Result<WbRedirect, UseCaseError>>;\n}\n\nexport interface IUpdateRedirectUseCaseErrors {\n notFound: RedirectNotFoundError;\n validation: RedirectValidationError;\n persistence: RedirectPersistenceError;\n}\n\ntype UseCaseError = IUpdateRedirectUseCaseErrors[keyof IUpdateRedirectUseCaseErrors];\n\nexport const UpdateRedirectUseCase = createAbstraction<IUpdateRedirectUseCase>(\n \"Wb/UpdateRedirectUseCase\"\n);\n\nexport namespace UpdateRedirectUseCase {\n export type Interface = IUpdateRedirectUseCase;\n export type UpdateData = IUpdateWbRedirectData;\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 RedirectBeforeUpdatePayload {\n original: WbRedirect;\n input: {\n id: string;\n data: IUpdateWbRedirectData;\n };\n}\n\nexport interface RedirectAfterUpdatePayload {\n original: WbRedirect;\n input: {\n id: string;\n data: IUpdateWbRedirectData;\n };\n redirect: WbRedirect;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\nexport const RedirectBeforeUpdateHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectBeforeUpdatePayload>>\n>(\"Wb/RedirectBeforeUpdateHandler\");\n\nexport namespace RedirectBeforeUpdateHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectBeforeUpdatePayload>>;\n export type Event = DomainEvent<RedirectBeforeUpdatePayload>;\n export type Redirect = WbRedirect;\n}\n\nexport const RedirectAfterUpdateHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectAfterUpdatePayload>>\n>(\"Wb/RedirectAfterUpdateHandler\");\n\nexport namespace RedirectAfterUpdateHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectAfterUpdatePayload>>;\n export type Event = DomainEvent<RedirectAfterUpdatePayload>;\n export type Redirect = WbRedirect;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;
|
|
1
|
+
{"version":3,"names":["createAbstraction","UpdateRedirectRepository","UpdateRedirectUseCase","RedirectBeforeUpdateHandler","RedirectAfterUpdateHandler"],"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 type { WbLocation } from \"~/domain/shared/abstractions.js\";\nimport {\n RedirectNotFoundError,\n RedirectPersistenceError,\n RedirectValidationError,\n RedirectNotAuthorizedError\n} from \"~/domain/redirect/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IUpdateWbRedirectData {\n location?: WbLocation;\n redirectFrom?: string;\n redirectTo?: string;\n redirectType?: string;\n isEnabled?: boolean;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IUpdateRedirectRepository {\n execute(id: string, data: IUpdateWbRedirectData): Promise<Result<WbRedirect, RepositoryError>>;\n}\n\nexport interface IUpdateRedirectRepositoryErrors {\n notFound: RedirectNotFoundError;\n validation: RedirectValidationError;\n persistence: RedirectPersistenceError;\n}\n\ntype RepositoryError = IUpdateRedirectRepositoryErrors[keyof IUpdateRedirectRepositoryErrors];\n\nexport const UpdateRedirectRepository = createAbstraction<IUpdateRedirectRepository>(\n \"Wb/UpdateRedirectRepository\"\n);\n\nexport namespace UpdateRedirectRepository {\n export type Interface = IUpdateRedirectRepository;\n export type UpdateData = IUpdateWbRedirectData;\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 IUpdateRedirectUseCase {\n execute(id: string, data: IUpdateWbRedirectData): Promise<Result<WbRedirect, UseCaseError>>;\n}\n\nexport interface IUpdateRedirectUseCaseErrors {\n notAuthorized: RedirectNotAuthorizedError;\n notFound: RedirectNotFoundError;\n validation: RedirectValidationError;\n persistence: RedirectPersistenceError;\n}\n\ntype UseCaseError = IUpdateRedirectUseCaseErrors[keyof IUpdateRedirectUseCaseErrors];\n\nexport const UpdateRedirectUseCase = createAbstraction<IUpdateRedirectUseCase>(\n \"Wb/UpdateRedirectUseCase\"\n);\n\nexport namespace UpdateRedirectUseCase {\n export type Interface = IUpdateRedirectUseCase;\n export type UpdateData = IUpdateWbRedirectData;\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 RedirectBeforeUpdatePayload {\n original: WbRedirect;\n input: {\n id: string;\n data: IUpdateWbRedirectData;\n };\n}\n\nexport interface RedirectAfterUpdatePayload {\n original: WbRedirect;\n input: {\n id: string;\n data: IUpdateWbRedirectData;\n };\n redirect: WbRedirect;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\nexport const RedirectBeforeUpdateHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectBeforeUpdatePayload>>\n>(\"Wb/RedirectBeforeUpdateHandler\");\n\nexport namespace RedirectBeforeUpdateHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectBeforeUpdatePayload>>;\n export type Event = DomainEvent<RedirectBeforeUpdatePayload>;\n export type Redirect = WbRedirect;\n}\n\nexport const RedirectAfterUpdateHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectAfterUpdatePayload>>\n>(\"Wb/RedirectAfterUpdateHandler\");\n\nexport namespace RedirectAfterUpdateHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectAfterUpdatePayload>>;\n export type Event = DomainEvent<RedirectAfterUpdatePayload>;\n export type Redirect = WbRedirect;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAYpE;AACA;AACA;;AAUA;AACA;AACA;;AAcA,OAAO,MAAMC,wBAAwB,GAAGD,iBAAiB,CACrD,6BACJ,CAAC;;AAUD;AACA;AACA;;AAeA,OAAO,MAAME,qBAAqB,GAAGF,iBAAiB,CAClD,0BACJ,CAAC;;AAUD;AACA;AACA;;AAmBA;AACA;AACA;;AAEA,OAAO,MAAMG,2BAA2B,GAAGH,iBAAiB,CAE1D,gCAAgC,CAAC;AAQnC,OAAO,MAAMI,0BAA0B,GAAGJ,iBAAiB,CAEzD,+BAA+B,CAAC","ignoreList":[]}
|
|
@@ -2,17 +2,17 @@ import { TenantModelExtension as ModelExtension } from "@webiny/tenant-manager/a
|
|
|
2
2
|
class TenantModelExtension {
|
|
3
3
|
execute(extension) {
|
|
4
4
|
extension.fields(fields => ({
|
|
5
|
-
websiteTheme: fields.object().label("Website Theme").description("Configure a Website Builder theme for this tenant.").renderer("
|
|
5
|
+
websiteTheme: fields.object().label("Website Theme").description("Configure a Website Builder theme for this tenant.").renderer("objectAccordionSingle", {
|
|
6
6
|
open: false
|
|
7
7
|
}).fields(fields => ({
|
|
8
|
-
websiteTitle: fields.text().label("Website Title").description("Enter a website title").renderer("
|
|
9
|
-
primaryColor: fields.text().label("Primary Color").description("Enter a color code (e.g., #000000)").renderer("
|
|
10
|
-
additionalColors: fields.text().list().label("Additional Colors").description("Enter a color code (e.g., #000000)").defaultValue([]).renderer("
|
|
8
|
+
websiteTitle: fields.text().label("Website Title").description("Enter a website title").renderer("textInput"),
|
|
9
|
+
primaryColor: fields.text().label("Primary Color").description("Enter a color code (e.g., #000000)").renderer("textInput").defaultValue(""),
|
|
10
|
+
additionalColors: fields.text().list().label("Additional Colors").description("Enter a color code (e.g., #000000)").defaultValue([]).renderer("textInputs", {
|
|
11
11
|
multiValue: {
|
|
12
12
|
addValueButtonLabel: "Add Color"
|
|
13
13
|
}
|
|
14
14
|
}),
|
|
15
|
-
font: fields.text().label("Font").description("Select a font").renderer("
|
|
15
|
+
font: fields.text().label("Font").description("Select a font").renderer("radioButtons").predefinedValues([{
|
|
16
16
|
value: "InterVariable, sans-serif",
|
|
17
17
|
label: "Inter"
|
|
18
18
|
}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TenantModelExtension","ModelExtension","execute","extension","fields","websiteTheme","object","label","description","renderer","open","websiteTitle","text","primaryColor","defaultValue","additionalColors","list","multiValue","addValueButtonLabel","font","predefinedValues","value","layout","addRow","createImplementation","implementation","dependencies"],"sources":["TenantModelExtension.ts"],"sourcesContent":["import { TenantModelExtension as ModelExtension } from \"@webiny/tenant-manager/api/domain/TenantModelExtension.js\";\n\nclass TenantModelExtension implements ModelExtension.Interface {\n execute(extension: ModelExtension.Extension) {\n extension\n .fields(fields => ({\n websiteTheme: fields\n .object()\n .label(\"Website Theme\")\n .description(\"Configure a Website Builder theme for this tenant.\")\n .renderer(\"
|
|
1
|
+
{"version":3,"names":["TenantModelExtension","ModelExtension","execute","extension","fields","websiteTheme","object","label","description","renderer","open","websiteTitle","text","primaryColor","defaultValue","additionalColors","list","multiValue","addValueButtonLabel","font","predefinedValues","value","layout","addRow","createImplementation","implementation","dependencies"],"sources":["TenantModelExtension.ts"],"sourcesContent":["import { TenantModelExtension as ModelExtension } from \"@webiny/tenant-manager/api/domain/TenantModelExtension.js\";\n\nclass TenantModelExtension implements ModelExtension.Interface {\n execute(extension: ModelExtension.Extension) {\n extension\n .fields(fields => ({\n websiteTheme: fields\n .object()\n .label(\"Website Theme\")\n .description(\"Configure a Website Builder theme for this tenant.\")\n .renderer(\"objectAccordionSingle\", { open: false })\n .fields(fields => ({\n websiteTitle: fields\n .text()\n .label(\"Website Title\")\n .description(\"Enter a website title\")\n .renderer(\"textInput\"),\n primaryColor: fields\n .text()\n .label(\"Primary Color\")\n .description(\"Enter a color code (e.g., #000000)\")\n .renderer(\"textInput\")\n .defaultValue(\"\"),\n additionalColors: fields\n .text()\n .list()\n .label(\"Additional Colors\")\n .description(\"Enter a color code (e.g., #000000)\")\n .defaultValue([])\n .renderer(\"textInputs\", {\n multiValue: {\n addValueButtonLabel: \"Add Color\"\n }\n }),\n font: fields\n .text()\n .label(\"Font\")\n .description(\"Select a font\")\n .renderer(\"radioButtons\")\n .predefinedValues([\n {\n value: \"InterVariable, sans-serif\",\n label: \"Inter\"\n },\n {\n value: \"Menlo, Consolas, Monaco, monospace\",\n label: \"Menlo\"\n },\n {\n value: \"Roboto, sans-serif\",\n label: \"Roboto\"\n }\n ])\n }))\n .layout([[\"websiteTitle\"], [\"primaryColor\"], [\"additionalColors\"], [\"font\"]])\n }))\n .layout(layout => {\n layout.addRow([\"websiteTheme\"]);\n });\n }\n}\n\nexport default ModelExtension.createImplementation({\n implementation: TenantModelExtension,\n dependencies: []\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,IAAIC,cAAc,QAAQ,2DAA2D;AAElH,MAAMD,oBAAoB,CAAqC;EAC3DE,OAAOA,CAACC,SAAmC,EAAE;IACzCA,SAAS,CACJC,MAAM,CAACA,MAAM,KAAK;MACfC,YAAY,EAAED,MAAM,CACfE,MAAM,CAAC,CAAC,CACRC,KAAK,CAAC,eAAe,CAAC,CACtBC,WAAW,CAAC,oDAAoD,CAAC,CACjEC,QAAQ,CAAC,uBAAuB,EAAE;QAAEC,IAAI,EAAE;MAAM,CAAC,CAAC,CAClDN,MAAM,CAACA,MAAM,KAAK;QACfO,YAAY,EAAEP,MAAM,CACfQ,IAAI,CAAC,CAAC,CACNL,KAAK,CAAC,eAAe,CAAC,CACtBC,WAAW,CAAC,uBAAuB,CAAC,CACpCC,QAAQ,CAAC,WAAW,CAAC;QAC1BI,YAAY,EAAET,MAAM,CACfQ,IAAI,CAAC,CAAC,CACNL,KAAK,CAAC,eAAe,CAAC,CACtBC,WAAW,CAAC,oCAAoC,CAAC,CACjDC,QAAQ,CAAC,WAAW,CAAC,CACrBK,YAAY,CAAC,EAAE,CAAC;QACrBC,gBAAgB,EAAEX,MAAM,CACnBQ,IAAI,CAAC,CAAC,CACNI,IAAI,CAAC,CAAC,CACNT,KAAK,CAAC,mBAAmB,CAAC,CAC1BC,WAAW,CAAC,oCAAoC,CAAC,CACjDM,YAAY,CAAC,EAAE,CAAC,CAChBL,QAAQ,CAAC,YAAY,EAAE;UACpBQ,UAAU,EAAE;YACRC,mBAAmB,EAAE;UACzB;QACJ,CAAC,CAAC;QACNC,IAAI,EAAEf,MAAM,CACPQ,IAAI,CAAC,CAAC,CACNL,KAAK,CAAC,MAAM,CAAC,CACbC,WAAW,CAAC,eAAe,CAAC,CAC5BC,QAAQ,CAAC,cAAc,CAAC,CACxBW,gBAAgB,CAAC,CACd;UACIC,KAAK,EAAE,2BAA2B;UAClCd,KAAK,EAAE;QACX,CAAC,EACD;UACIc,KAAK,EAAE,oCAAoC;UAC3Cd,KAAK,EAAE;QACX,CAAC,EACD;UACIc,KAAK,EAAE,oBAAoB;UAC3Bd,KAAK,EAAE;QACX,CAAC,CACJ;MACT,CAAC,CAAC,CAAC,CACFe,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC,CACFA,MAAM,CAACA,MAAM,IAAI;MACdA,MAAM,CAACC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;IACnC,CAAC,CAAC;EACV;AACJ;AAEA,eAAetB,cAAc,CAACuB,oBAAoB,CAAC;EAC/CC,cAAc,EAAEzB,oBAAoB;EACpC0B,YAAY,EAAE;AAClB,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const pagesTypeDefs = "\n type WbPage {\n id: ID!\n entryId: String!\n location: WbLocation\n status: String!\n version: Number!\n locked: Boolean!\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n deletedOn: DateTime\n restoredOn: DateTime\n firstPublishedOn: DateTime\n lastPublishedOn: DateTime\n createdBy: WbIdentity\n modifiedBy: WbIdentity\n savedBy: WbIdentity\n deletedBy: WbIdentity\n restoredBy: WbIdentity\n firstPublishedBy: WbIdentity\n lastPublishedBy: WbIdentity\n properties: JSON\n metadata: JSON\n bindings: JSON\n elements: JSON\n extensions: JSON\n }\n\n input WbPageCreateInput {\n location: WbLocationInput\n properties: JSON\n metadata: JSON\n bindings: JSON\n elements: JSON\n extensions: JSON\n }\n\n input WbPageUpdateInput {\n properties: JSON\n metadata: JSON\n bindings: JSON\n elements: JSON\n extensions: JSON\n }\n\n input WbPagesListWhereInput {\n location: WbLocationWhereInput\n latest: Boolean\n published: Boolean\n id: ID\n id_not: ID\n id_in: [ID!]\n id_not_in: [ID!]\n entryId: String\n entryId_not: String\n entryId_in: [String!]\n entryId_not_in: [String!]\n createdOn: DateTime\n createdOn_gt: DateTime\n createdOn_gte: DateTime\n createdOn_lt: DateTime\n createdOn_lte: DateTime\n createdOn_between: [DateTime!]\n createdOn_not_between: [DateTime!]\n modifiedOn: DateTime\n modifiedOn_gt: DateTime\n modifiedOn_gte: DateTime\n modifiedOn_lt: DateTime\n modifiedOn_lte: DateTime\n modifiedOn_between: [DateTime!]\n modifiedOn_not_between: [DateTime!]\n savedOn: DateTime\n savedOn_gt: DateTime\n savedOn_gte: DateTime\n savedOn_lt: DateTime\n savedOn_lte: DateTime\n savedOn_between: [DateTime!]\n savedOn_not_between: [DateTime!]\n deletedOn: DateTime\n deletedOn_gt: DateTime\n deletedOn_gte: DateTime\n deletedOn_lt: DateTime\n deletedOn_lte: DateTime\n deletedOn_between: [DateTime!]\n deletedOn_not_between: [DateTime!]\n restoredOn: DateTime\n restoredOn_gt: DateTime\n restoredOn_gte: DateTime\n restoredOn_lt: DateTime\n restoredOn_lte: DateTime\n restoredOn_between: [DateTime!]\n restoredOn_not_between: [DateTime!]\n firstPublishedOn: DateTime\n firstPublishedOn_gt: DateTime\n firstPublishedOn_gte: DateTime\n firstPublishedOn_lt: DateTime\n firstPublishedOn_lte: DateTime\n firstPublishedOn_between: [DateTime!]\n firstPublishedOn_not_between: [DateTime!]\n lastPublishedOn: DateTime\n lastPublishedOn_gt: DateTime\n lastPublishedOn_gte: DateTime\n lastPublishedOn_lt: DateTime\n lastPublishedOn_lte: DateTime\n lastPublishedOn_between: [DateTime!]\n lastPublishedOn_not_between: [DateTime!]\n createdBy: ID\n createdBy_not: ID\n createdBy_in: [ID!]\n createdBy_not_in: [ID!]\n modifiedBy: ID\n modifiedBy_not: ID\n modifiedBy_in: [ID!]\n modifiedBy_not_in: [ID!]\n savedBy: ID\n savedBy_not: ID\n savedBy_in: [ID!]\n savedBy_not_in: [ID!]\n deletedBy: ID\n deletedBy_not: ID\n deletedBy_in: [ID!]\n deletedBy_not_in: [ID!]\n restoredBy: ID\n restoredBy_not: ID\n restoredBy_in: [ID!]\n restoredBy_not_in: [ID!]\n firstPublishedBy: ID\n firstPublishedBy_not: ID\n firstPublishedBy_in: [ID!]\n firstPublishedBy_not_in: [ID!]\n lastPublishedBy: ID\n lastPublishedBy_not: ID\n lastPublishedBy_in: [ID!]\n lastPublishedBy_not_in: [ID!]\n status: String\n status_not: String\n status_in: [String!]\n status_not_in: [String!]\n AND: [WbPagesListWhereInput!]\n OR: [WbPagesListWhereInput!]\n }\n\n type WbSettings {\n previewDomain: String!\n }\n\n type WbPageResponse {\n data: WbPage\n error: WbError\n }\n\n type WbSettingsResponse {\n data: WbSettings\n error: WbError\n }\n\n type WbIntegrationsResponse {\n data: JSON!\n error: WbError\n }\n\n input WbSettingsInput {\n previewDomain: String!\n }\n\n type WbPagesListResponse {\n data: [WbPage]\n error: WbError\n meta: WbMeta\n }\n\n type WbPageModelResponse {\n data: JSON\n error: WbError\n }\n\n enum WbPageListSorter {\n id_ASC\n id_DESC\n createdOn_ASC\n createdOn_DESC\n modifiedOn_ASC\n modifiedOn_DESC\n savedOn_ASC\n savedOn_DESC\n deletedOn_ASC\n deletedOn_DESC\n restoredOn_ASC\n restoredOn_DESC\n firstPublishedOn_ASC\n firstPublishedOn_DESC\n lastPublishedOn_ASC\n lastPublishedOn_DESC\n }\n\n type WbPageRevision {\n id: ID!\n entryId: ID!\n version: Int!\n title: String!\n status: String!\n locked: Boolean!\n savedOn: DateTime!\n }\n\n type WbPageRevisionsResponse {\n data: [WbPageRevision!]\n error: WbError\n }\n\n extend type WbQuery {\n getPageModel: WbPageModelResponse\n getPageByPath(path: String!): WbPageResponse\n getPageById(id: ID!): WbPageResponse\n getPageRevisions(entryId: ID!): WbPageRevisionsResponse\n listPages(\n where: WbPagesListWhereInput\n limit: Int\n after: String\n sort: [WbPageListSorter]\n search: String\n ): WbPagesListResponse\n getSettings: WbSettingsResponse\n getIntegrations: WbIntegrationsResponse\n }\n\n extend type WbMutation {\n createPage(data: WbPageCreateInput!): WbPageResponse\n updatePage(id: ID!, data: WbPageUpdateInput!): WbPageResponse\n publishPage(id: ID!): WbPageResponse\n unpublishPage(id: ID!): WbPageResponse\n duplicatePage(id: ID!): WbPageResponse\n movePage(id: ID!, folderId: ID!): WbBooleanResponse\n createPageRevisionFrom(id: ID!): WbPageResponse\n deletePage(id: ID!): WbBooleanResponse\n updateSettings(data: WbSettingsInput!): BooleanResponse\n updateIntegrations(data: JSON!): BooleanResponse\n }\n";
|
|
1
|
+
export declare const pagesTypeDefs = "\n type WbPage {\n id: ID!\n entryId: String!\n location: WbLocation\n status: String!\n version: Number!\n locked: Boolean!\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n deletedOn: DateTime\n restoredOn: DateTime\n firstPublishedOn: DateTime\n lastPublishedOn: DateTime\n createdBy: WbIdentity\n modifiedBy: WbIdentity\n savedBy: WbIdentity\n deletedBy: WbIdentity\n restoredBy: WbIdentity\n firstPublishedBy: WbIdentity\n lastPublishedBy: WbIdentity\n system: CmsEntrySystem\n live: CmsEntryLive\n properties: JSON\n metadata: JSON\n bindings: JSON\n elements: JSON\n extensions: JSON\n }\n\n input WbPageCreateInput {\n location: WbLocationInput\n properties: JSON\n metadata: JSON\n bindings: JSON\n elements: JSON\n extensions: JSON\n }\n\n input WbPageUpdateInput {\n properties: JSON\n metadata: JSON\n bindings: JSON\n elements: JSON\n extensions: JSON\n }\n\n input WbPagesListWhereInput {\n location: WbLocationWhereInput\n latest: Boolean\n published: Boolean\n id: ID\n id_not: ID\n id_in: [ID!]\n id_not_in: [ID!]\n entryId: String\n entryId_not: String\n entryId_in: [String!]\n entryId_not_in: [String!]\n createdOn: DateTime\n createdOn_gt: DateTime\n createdOn_gte: DateTime\n createdOn_lt: DateTime\n createdOn_lte: DateTime\n createdOn_between: [DateTime!]\n createdOn_not_between: [DateTime!]\n modifiedOn: DateTime\n modifiedOn_gt: DateTime\n modifiedOn_gte: DateTime\n modifiedOn_lt: DateTime\n modifiedOn_lte: DateTime\n modifiedOn_between: [DateTime!]\n modifiedOn_not_between: [DateTime!]\n savedOn: DateTime\n savedOn_gt: DateTime\n savedOn_gte: DateTime\n savedOn_lt: DateTime\n savedOn_lte: DateTime\n savedOn_between: [DateTime!]\n savedOn_not_between: [DateTime!]\n deletedOn: DateTime\n deletedOn_gt: DateTime\n deletedOn_gte: DateTime\n deletedOn_lt: DateTime\n deletedOn_lte: DateTime\n deletedOn_between: [DateTime!]\n deletedOn_not_between: [DateTime!]\n restoredOn: DateTime\n restoredOn_gt: DateTime\n restoredOn_gte: DateTime\n restoredOn_lt: DateTime\n restoredOn_lte: DateTime\n restoredOn_between: [DateTime!]\n restoredOn_not_between: [DateTime!]\n firstPublishedOn: DateTime\n firstPublishedOn_gt: DateTime\n firstPublishedOn_gte: DateTime\n firstPublishedOn_lt: DateTime\n firstPublishedOn_lte: DateTime\n firstPublishedOn_between: [DateTime!]\n firstPublishedOn_not_between: [DateTime!]\n lastPublishedOn: DateTime\n lastPublishedOn_gt: DateTime\n lastPublishedOn_gte: DateTime\n lastPublishedOn_lt: DateTime\n lastPublishedOn_lte: DateTime\n lastPublishedOn_between: [DateTime!]\n lastPublishedOn_not_between: [DateTime!]\n createdBy: ID\n createdBy_not: ID\n createdBy_in: [ID!]\n createdBy_not_in: [ID!]\n modifiedBy: ID\n modifiedBy_not: ID\n modifiedBy_in: [ID!]\n modifiedBy_not_in: [ID!]\n savedBy: ID\n savedBy_not: ID\n savedBy_in: [ID!]\n savedBy_not_in: [ID!]\n deletedBy: ID\n deletedBy_not: ID\n deletedBy_in: [ID!]\n deletedBy_not_in: [ID!]\n restoredBy: ID\n restoredBy_not: ID\n restoredBy_in: [ID!]\n restoredBy_not_in: [ID!]\n firstPublishedBy: ID\n firstPublishedBy_not: ID\n firstPublishedBy_in: [ID!]\n firstPublishedBy_not_in: [ID!]\n lastPublishedBy: ID\n lastPublishedBy_not: ID\n lastPublishedBy_in: [ID!]\n lastPublishedBy_not_in: [ID!]\n status: String\n status_not: String\n status_in: [String!]\n status_not_in: [String!]\n\n live: CmsEntryLiveWhereInput\n system: ListWhereInputCmsEntrySystem\n\n AND: [WbPagesListWhereInput!]\n OR: [WbPagesListWhereInput!]\n }\n\n type WbSettings {\n previewDomain: String!\n }\n\n type WbPageResponse {\n data: WbPage\n error: WbError\n }\n\n type WbSettingsResponse {\n data: WbSettings\n error: WbError\n }\n\n type WbIntegrationsResponse {\n data: JSON!\n error: WbError\n }\n\n input WbSettingsInput {\n previewDomain: String!\n }\n\n type WbPagesListResponse {\n data: [WbPage]\n error: WbError\n meta: WbMeta\n }\n\n type WbPageModelResponse {\n data: JSON\n error: WbError\n }\n\n enum WbPageListSorter {\n id_ASC\n id_DESC\n createdOn_ASC\n createdOn_DESC\n modifiedOn_ASC\n modifiedOn_DESC\n savedOn_ASC\n savedOn_DESC\n deletedOn_ASC\n deletedOn_DESC\n restoredOn_ASC\n restoredOn_DESC\n firstPublishedOn_ASC\n firstPublishedOn_DESC\n lastPublishedOn_ASC\n lastPublishedOn_DESC\n }\n\n type WbPageRevision {\n id: ID!\n entryId: ID!\n version: Int!\n title: String!\n status: String!\n locked: Boolean!\n savedOn: DateTime!\n }\n\n type WbPageRevisionsResponse {\n data: [WbPageRevision!]\n error: WbError\n }\n\n extend type WbQuery {\n getPageModel: WbPageModelResponse\n getPageByPath(path: String!): WbPageResponse\n getPageById(id: ID!): WbPageResponse\n getPageRevisions(entryId: ID!): WbPageRevisionsResponse\n listPages(\n where: WbPagesListWhereInput\n limit: Int\n after: String\n sort: [WbPageListSorter]\n search: String\n ): WbPagesListResponse\n getSettings: WbSettingsResponse\n getIntegrations: WbIntegrationsResponse\n }\n\n extend type WbMutation {\n createPage(data: WbPageCreateInput!): WbPageResponse\n updatePage(id: ID!, data: WbPageUpdateInput!): WbPageResponse\n publishPage(id: ID!): WbPageResponse\n unpublishPage(id: ID!): WbPageResponse\n duplicatePage(id: ID!): WbPageResponse\n movePage(id: ID!, folderId: ID!): WbBooleanResponse\n createPageRevisionFrom(id: ID!): WbPageResponse\n deletePage(id: ID!): WbBooleanResponse\n updateSettings(data: WbSettingsInput!): BooleanResponse\n updateIntegrations(data: JSON!): BooleanResponse\n }\n";
|
|
@@ -20,6 +20,8 @@ export const pagesTypeDefs = /* GraphQL */`
|
|
|
20
20
|
restoredBy: WbIdentity
|
|
21
21
|
firstPublishedBy: WbIdentity
|
|
22
22
|
lastPublishedBy: WbIdentity
|
|
23
|
+
system: CmsEntrySystem
|
|
24
|
+
live: CmsEntryLive
|
|
23
25
|
properties: JSON
|
|
24
26
|
metadata: JSON
|
|
25
27
|
bindings: JSON
|
|
@@ -137,6 +139,10 @@ export const pagesTypeDefs = /* GraphQL */`
|
|
|
137
139
|
status_not: String
|
|
138
140
|
status_in: [String!]
|
|
139
141
|
status_not_in: [String!]
|
|
142
|
+
|
|
143
|
+
live: CmsEntryLiveWhereInput
|
|
144
|
+
system: ListWhereInputCmsEntrySystem
|
|
145
|
+
|
|
140
146
|
AND: [WbPagesListWhereInput!]
|
|
141
147
|
OR: [WbPagesListWhereInput!]
|
|
142
148
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["pagesTypeDefs"],"sources":["pages.typeDefs.ts"],"sourcesContent":["export const pagesTypeDefs = /* GraphQL */ `\n type WbPage {\n id: ID!\n entryId: String!\n location: WbLocation\n status: String!\n version: Number!\n locked: Boolean!\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n deletedOn: DateTime\n restoredOn: DateTime\n firstPublishedOn: DateTime\n lastPublishedOn: DateTime\n createdBy: WbIdentity\n modifiedBy: WbIdentity\n savedBy: WbIdentity\n deletedBy: WbIdentity\n restoredBy: WbIdentity\n firstPublishedBy: WbIdentity\n lastPublishedBy: WbIdentity\n properties: JSON\n metadata: JSON\n bindings: JSON\n elements: JSON\n extensions: JSON\n }\n\n input WbPageCreateInput {\n location: WbLocationInput\n properties: JSON\n metadata: JSON\n bindings: JSON\n elements: JSON\n extensions: JSON\n }\n\n input WbPageUpdateInput {\n properties: JSON\n metadata: JSON\n bindings: JSON\n elements: JSON\n extensions: JSON\n }\n\n input WbPagesListWhereInput {\n location: WbLocationWhereInput\n latest: Boolean\n published: Boolean\n id: ID\n id_not: ID\n id_in: [ID!]\n id_not_in: [ID!]\n entryId: String\n entryId_not: String\n entryId_in: [String!]\n entryId_not_in: [String!]\n createdOn: DateTime\n createdOn_gt: DateTime\n createdOn_gte: DateTime\n createdOn_lt: DateTime\n createdOn_lte: DateTime\n createdOn_between: [DateTime!]\n createdOn_not_between: [DateTime!]\n modifiedOn: DateTime\n modifiedOn_gt: DateTime\n modifiedOn_gte: DateTime\n modifiedOn_lt: DateTime\n modifiedOn_lte: DateTime\n modifiedOn_between: [DateTime!]\n modifiedOn_not_between: [DateTime!]\n savedOn: DateTime\n savedOn_gt: DateTime\n savedOn_gte: DateTime\n savedOn_lt: DateTime\n savedOn_lte: DateTime\n savedOn_between: [DateTime!]\n savedOn_not_between: [DateTime!]\n deletedOn: DateTime\n deletedOn_gt: DateTime\n deletedOn_gte: DateTime\n deletedOn_lt: DateTime\n deletedOn_lte: DateTime\n deletedOn_between: [DateTime!]\n deletedOn_not_between: [DateTime!]\n restoredOn: DateTime\n restoredOn_gt: DateTime\n restoredOn_gte: DateTime\n restoredOn_lt: DateTime\n restoredOn_lte: DateTime\n restoredOn_between: [DateTime!]\n restoredOn_not_between: [DateTime!]\n firstPublishedOn: DateTime\n firstPublishedOn_gt: DateTime\n firstPublishedOn_gte: DateTime\n firstPublishedOn_lt: DateTime\n firstPublishedOn_lte: DateTime\n firstPublishedOn_between: [DateTime!]\n firstPublishedOn_not_between: [DateTime!]\n lastPublishedOn: DateTime\n lastPublishedOn_gt: DateTime\n lastPublishedOn_gte: DateTime\n lastPublishedOn_lt: DateTime\n lastPublishedOn_lte: DateTime\n lastPublishedOn_between: [DateTime!]\n lastPublishedOn_not_between: [DateTime!]\n createdBy: ID\n createdBy_not: ID\n createdBy_in: [ID!]\n createdBy_not_in: [ID!]\n modifiedBy: ID\n modifiedBy_not: ID\n modifiedBy_in: [ID!]\n modifiedBy_not_in: [ID!]\n savedBy: ID\n savedBy_not: ID\n savedBy_in: [ID!]\n savedBy_not_in: [ID!]\n deletedBy: ID\n deletedBy_not: ID\n deletedBy_in: [ID!]\n deletedBy_not_in: [ID!]\n restoredBy: ID\n restoredBy_not: ID\n restoredBy_in: [ID!]\n restoredBy_not_in: [ID!]\n firstPublishedBy: ID\n firstPublishedBy_not: ID\n firstPublishedBy_in: [ID!]\n firstPublishedBy_not_in: [ID!]\n lastPublishedBy: ID\n lastPublishedBy_not: ID\n lastPublishedBy_in: [ID!]\n lastPublishedBy_not_in: [ID!]\n status: String\n status_not: String\n status_in: [String!]\n status_not_in: [String!]\n AND: [WbPagesListWhereInput!]\n OR: [WbPagesListWhereInput!]\n }\n\n type WbSettings {\n previewDomain: String!\n }\n\n type WbPageResponse {\n data: WbPage\n error: WbError\n }\n\n type WbSettingsResponse {\n data: WbSettings\n error: WbError\n }\n\n type WbIntegrationsResponse {\n data: JSON!\n error: WbError\n }\n\n input WbSettingsInput {\n previewDomain: String!\n }\n\n type WbPagesListResponse {\n data: [WbPage]\n error: WbError\n meta: WbMeta\n }\n\n type WbPageModelResponse {\n data: JSON\n error: WbError\n }\n\n enum WbPageListSorter {\n id_ASC\n id_DESC\n createdOn_ASC\n createdOn_DESC\n modifiedOn_ASC\n modifiedOn_DESC\n savedOn_ASC\n savedOn_DESC\n deletedOn_ASC\n deletedOn_DESC\n restoredOn_ASC\n restoredOn_DESC\n firstPublishedOn_ASC\n firstPublishedOn_DESC\n lastPublishedOn_ASC\n lastPublishedOn_DESC\n }\n\n type WbPageRevision {\n id: ID!\n entryId: ID!\n version: Int!\n title: String!\n status: String!\n locked: Boolean!\n savedOn: DateTime!\n }\n\n type WbPageRevisionsResponse {\n data: [WbPageRevision!]\n error: WbError\n }\n\n extend type WbQuery {\n getPageModel: WbPageModelResponse\n getPageByPath(path: String!): WbPageResponse\n getPageById(id: ID!): WbPageResponse\n getPageRevisions(entryId: ID!): WbPageRevisionsResponse\n listPages(\n where: WbPagesListWhereInput\n limit: Int\n after: String\n sort: [WbPageListSorter]\n search: String\n ): WbPagesListResponse\n getSettings: WbSettingsResponse\n getIntegrations: WbIntegrationsResponse\n }\n\n extend type WbMutation {\n createPage(data: WbPageCreateInput!): WbPageResponse\n updatePage(id: ID!, data: WbPageUpdateInput!): WbPageResponse\n publishPage(id: ID!): WbPageResponse\n unpublishPage(id: ID!): WbPageResponse\n duplicatePage(id: ID!): WbPageResponse\n movePage(id: ID!, folderId: ID!): WbBooleanResponse\n createPageRevisionFrom(id: ID!): WbPageResponse\n deletePage(id: ID!): WbBooleanResponse\n updateSettings(data: WbSettingsInput!): BooleanResponse\n updateIntegrations(data: JSON!): BooleanResponse\n }\n`;\n"],"mappings":"AAAA,OAAO,MAAMA,aAAa,GAAG,aAAc;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["pagesTypeDefs"],"sources":["pages.typeDefs.ts"],"sourcesContent":["export const pagesTypeDefs = /* GraphQL */ `\n type WbPage {\n id: ID!\n entryId: String!\n location: WbLocation\n status: String!\n version: Number!\n locked: Boolean!\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n deletedOn: DateTime\n restoredOn: DateTime\n firstPublishedOn: DateTime\n lastPublishedOn: DateTime\n createdBy: WbIdentity\n modifiedBy: WbIdentity\n savedBy: WbIdentity\n deletedBy: WbIdentity\n restoredBy: WbIdentity\n firstPublishedBy: WbIdentity\n lastPublishedBy: WbIdentity\n system: CmsEntrySystem\n live: CmsEntryLive\n properties: JSON\n metadata: JSON\n bindings: JSON\n elements: JSON\n extensions: JSON\n }\n\n input WbPageCreateInput {\n location: WbLocationInput\n properties: JSON\n metadata: JSON\n bindings: JSON\n elements: JSON\n extensions: JSON\n }\n\n input WbPageUpdateInput {\n properties: JSON\n metadata: JSON\n bindings: JSON\n elements: JSON\n extensions: JSON\n }\n\n input WbPagesListWhereInput {\n location: WbLocationWhereInput\n latest: Boolean\n published: Boolean\n id: ID\n id_not: ID\n id_in: [ID!]\n id_not_in: [ID!]\n entryId: String\n entryId_not: String\n entryId_in: [String!]\n entryId_not_in: [String!]\n createdOn: DateTime\n createdOn_gt: DateTime\n createdOn_gte: DateTime\n createdOn_lt: DateTime\n createdOn_lte: DateTime\n createdOn_between: [DateTime!]\n createdOn_not_between: [DateTime!]\n modifiedOn: DateTime\n modifiedOn_gt: DateTime\n modifiedOn_gte: DateTime\n modifiedOn_lt: DateTime\n modifiedOn_lte: DateTime\n modifiedOn_between: [DateTime!]\n modifiedOn_not_between: [DateTime!]\n savedOn: DateTime\n savedOn_gt: DateTime\n savedOn_gte: DateTime\n savedOn_lt: DateTime\n savedOn_lte: DateTime\n savedOn_between: [DateTime!]\n savedOn_not_between: [DateTime!]\n deletedOn: DateTime\n deletedOn_gt: DateTime\n deletedOn_gte: DateTime\n deletedOn_lt: DateTime\n deletedOn_lte: DateTime\n deletedOn_between: [DateTime!]\n deletedOn_not_between: [DateTime!]\n restoredOn: DateTime\n restoredOn_gt: DateTime\n restoredOn_gte: DateTime\n restoredOn_lt: DateTime\n restoredOn_lte: DateTime\n restoredOn_between: [DateTime!]\n restoredOn_not_between: [DateTime!]\n firstPublishedOn: DateTime\n firstPublishedOn_gt: DateTime\n firstPublishedOn_gte: DateTime\n firstPublishedOn_lt: DateTime\n firstPublishedOn_lte: DateTime\n firstPublishedOn_between: [DateTime!]\n firstPublishedOn_not_between: [DateTime!]\n lastPublishedOn: DateTime\n lastPublishedOn_gt: DateTime\n lastPublishedOn_gte: DateTime\n lastPublishedOn_lt: DateTime\n lastPublishedOn_lte: DateTime\n lastPublishedOn_between: [DateTime!]\n lastPublishedOn_not_between: [DateTime!]\n createdBy: ID\n createdBy_not: ID\n createdBy_in: [ID!]\n createdBy_not_in: [ID!]\n modifiedBy: ID\n modifiedBy_not: ID\n modifiedBy_in: [ID!]\n modifiedBy_not_in: [ID!]\n savedBy: ID\n savedBy_not: ID\n savedBy_in: [ID!]\n savedBy_not_in: [ID!]\n deletedBy: ID\n deletedBy_not: ID\n deletedBy_in: [ID!]\n deletedBy_not_in: [ID!]\n restoredBy: ID\n restoredBy_not: ID\n restoredBy_in: [ID!]\n restoredBy_not_in: [ID!]\n firstPublishedBy: ID\n firstPublishedBy_not: ID\n firstPublishedBy_in: [ID!]\n firstPublishedBy_not_in: [ID!]\n lastPublishedBy: ID\n lastPublishedBy_not: ID\n lastPublishedBy_in: [ID!]\n lastPublishedBy_not_in: [ID!]\n status: String\n status_not: String\n status_in: [String!]\n status_not_in: [String!]\n\n live: CmsEntryLiveWhereInput\n system: ListWhereInputCmsEntrySystem\n\n AND: [WbPagesListWhereInput!]\n OR: [WbPagesListWhereInput!]\n }\n\n type WbSettings {\n previewDomain: String!\n }\n\n type WbPageResponse {\n data: WbPage\n error: WbError\n }\n\n type WbSettingsResponse {\n data: WbSettings\n error: WbError\n }\n\n type WbIntegrationsResponse {\n data: JSON!\n error: WbError\n }\n\n input WbSettingsInput {\n previewDomain: String!\n }\n\n type WbPagesListResponse {\n data: [WbPage]\n error: WbError\n meta: WbMeta\n }\n\n type WbPageModelResponse {\n data: JSON\n error: WbError\n }\n\n enum WbPageListSorter {\n id_ASC\n id_DESC\n createdOn_ASC\n createdOn_DESC\n modifiedOn_ASC\n modifiedOn_DESC\n savedOn_ASC\n savedOn_DESC\n deletedOn_ASC\n deletedOn_DESC\n restoredOn_ASC\n restoredOn_DESC\n firstPublishedOn_ASC\n firstPublishedOn_DESC\n lastPublishedOn_ASC\n lastPublishedOn_DESC\n }\n\n type WbPageRevision {\n id: ID!\n entryId: ID!\n version: Int!\n title: String!\n status: String!\n locked: Boolean!\n savedOn: DateTime!\n }\n\n type WbPageRevisionsResponse {\n data: [WbPageRevision!]\n error: WbError\n }\n\n extend type WbQuery {\n getPageModel: WbPageModelResponse\n getPageByPath(path: String!): WbPageResponse\n getPageById(id: ID!): WbPageResponse\n getPageRevisions(entryId: ID!): WbPageRevisionsResponse\n listPages(\n where: WbPagesListWhereInput\n limit: Int\n after: String\n sort: [WbPageListSorter]\n search: String\n ): WbPagesListResponse\n getSettings: WbSettingsResponse\n getIntegrations: WbIntegrationsResponse\n }\n\n extend type WbMutation {\n createPage(data: WbPageCreateInput!): WbPageResponse\n updatePage(id: ID!, data: WbPageUpdateInput!): WbPageResponse\n publishPage(id: ID!): WbPageResponse\n unpublishPage(id: ID!): WbPageResponse\n duplicatePage(id: ID!): WbPageResponse\n movePage(id: ID!, folderId: ID!): WbBooleanResponse\n createPageRevisionFrom(id: ID!): WbPageResponse\n deletePage(id: ID!): WbBooleanResponse\n updateSettings(data: WbSettingsInput!): BooleanResponse\n updateIntegrations(data: JSON!): BooleanResponse\n }\n`;\n"],"mappings":"AAAA,OAAO,MAAMA,aAAa,GAAG,aAAc;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
package/index.js
CHANGED
|
@@ -27,8 +27,7 @@ import { createRedirectModel, REDIRECT_MODEL_ID } from "./domain/redirect/redire
|
|
|
27
27
|
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
28
28
|
import { PageModel } from "./domain/page/abstractions.js";
|
|
29
29
|
import { RedirectModel } from "./domain/redirect/abstractions.js";
|
|
30
|
-
import {
|
|
31
|
-
import { RedirectPermissionsFeature } from "./features/redirects/RedirectPermissions/feature.js";
|
|
30
|
+
import { WbPermissions } from "./domain/permissions.js";
|
|
32
31
|
import { ApiKeyInstallerFeature } from "./features/installer/feature.js";
|
|
33
32
|
import { NextjsGraphQLSchema } from "./graphql/nextjs/NextjsGraphQLSchema.js";
|
|
34
33
|
import { NextjsFeature } from "./features/nextjs/feature.js";
|
|
@@ -50,6 +49,9 @@ const createContext = () => {
|
|
|
50
49
|
container.registerInstance(RedirectModel, redirectModel.value);
|
|
51
50
|
});
|
|
52
51
|
|
|
52
|
+
// Register permissions
|
|
53
|
+
container.register(WbPermissions.Implementation);
|
|
54
|
+
|
|
53
55
|
// Register features
|
|
54
56
|
GetRedirectByIdFeature.register(container);
|
|
55
57
|
ListRedirectsFeature.register(container);
|
|
@@ -71,8 +73,6 @@ const createContext = () => {
|
|
|
71
73
|
UnpublishPageFeature.register(container);
|
|
72
74
|
DuplicatePageFeature.register(container);
|
|
73
75
|
MovePageFeature.register(container);
|
|
74
|
-
PagePermissionsFeature.register(container);
|
|
75
|
-
RedirectPermissionsFeature.register(container);
|
|
76
76
|
ApiKeyInstallerFeature.register(container);
|
|
77
77
|
NextjsFeature.register(container);
|
|
78
78
|
// TenantModelExtensionFeature.register(container);
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createContextPlugin","GetModelUseCase","createGraphQL","createRedirectsRoute","GetRedirectByIdFeature","ListRedirectsFeature","GetActiveRedirectsFeature","CreateRedirectFeature","UpdateRedirectFeature","DeleteRedirectFeature","MoveRedirectFeature","InvalidateRedirectsCacheFeature","GetPageByIdFeature","GetPageByPathFeature","GetPageRevisionsFeature","ListPagesFeature","CreatePageFeature","CreatePageRevisionFromFeature","DeletePageFeature","UpdatePageFeature","PublishPageFeature","UnpublishPageFeature","DuplicatePageFeature","MovePageFeature","createPageModel","PAGE_MODEL_ID","createRedirectModel","REDIRECT_MODEL_ID","IdentityContext","PageModel","RedirectModel","
|
|
1
|
+
{"version":3,"names":["createContextPlugin","GetModelUseCase","createGraphQL","createRedirectsRoute","GetRedirectByIdFeature","ListRedirectsFeature","GetActiveRedirectsFeature","CreateRedirectFeature","UpdateRedirectFeature","DeleteRedirectFeature","MoveRedirectFeature","InvalidateRedirectsCacheFeature","GetPageByIdFeature","GetPageByPathFeature","GetPageRevisionsFeature","ListPagesFeature","CreatePageFeature","CreatePageRevisionFromFeature","DeletePageFeature","UpdatePageFeature","PublishPageFeature","UnpublishPageFeature","DuplicatePageFeature","MovePageFeature","createPageModel","PAGE_MODEL_ID","createRedirectModel","REDIRECT_MODEL_ID","IdentityContext","PageModel","RedirectModel","WbPermissions","ApiKeyInstallerFeature","NextjsGraphQLSchema","NextjsFeature","createContext","context","container","pageModel","redirectModel","plugins","register","identityContext","resolve","getModel","withoutAuthorization","Promise","all","execute","registerInstance","value","Implementation","name","createWebsiteBuilder"],"sources":["index.ts"],"sourcesContent":["import { createContextPlugin } from \"@webiny/api\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { createGraphQL } from \"./graphql/createGraphQL.js\";\nimport { createRedirectsRoute } from \"./rest/getRedirects.js\";\nimport { GetRedirectByIdFeature } from \"./features/redirects/GetRedirectById/feature.js\";\nimport { ListRedirectsFeature } from \"./features/redirects/ListRedirects/feature.js\";\nimport { GetActiveRedirectsFeature } from \"./features/redirects/GetActiveRedirects/feature.js\";\nimport { CreateRedirectFeature } from \"./features/redirects/CreateRedirect/feature.js\";\nimport { UpdateRedirectFeature } from \"./features/redirects/UpdateRedirect/feature.js\";\nimport { DeleteRedirectFeature } from \"./features/redirects/DeleteRedirect/feature.js\";\nimport { MoveRedirectFeature } from \"./features/redirects/MoveRedirect/feature.js\";\nimport { InvalidateRedirectsCacheFeature } from \"./features/redirects/InvalidateRedirectsCache/feature.js\";\nimport { GetPageByIdFeature } from \"./features/pages/GetPageById/feature.js\";\nimport { GetPageByPathFeature } from \"./features/pages/GetPageByPath/feature.js\";\nimport { GetPageRevisionsFeature } from \"./features/pages/GetPageRevisions/feature.js\";\nimport { ListPagesFeature } from \"./features/pages/ListPages/feature.js\";\nimport { CreatePageFeature } from \"./features/pages/CreatePage/feature.js\";\nimport { CreatePageRevisionFromFeature } from \"./features/pages/CreatePageRevisionFrom/feature.js\";\nimport { DeletePageFeature } from \"./features/pages/DeletePage/feature.js\";\nimport { UpdatePageFeature } from \"./features/pages/UpdatePage/feature.js\";\nimport { PublishPageFeature } from \"./features/pages/PublishPage/feature.js\";\nimport { UnpublishPageFeature } from \"./features/pages/UnpublishPage/feature.js\";\nimport { DuplicatePageFeature } from \"./features/pages/DuplicatePage/feature.js\";\nimport { MovePageFeature } from \"./features/pages/MovePage/feature.js\";\nimport { createPageModel, PAGE_MODEL_ID } from \"~/domain/page/page.model.js\";\nimport { createRedirectModel, REDIRECT_MODEL_ID } from \"~/domain/redirect/redirect.model.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { PageModel } from \"~/domain/page/abstractions.js\";\nimport { RedirectModel } from \"~/domain/redirect/abstractions.js\";\nimport { WbPermissions } from \"~/domain/permissions.js\";\nimport { ApiKeyInstallerFeature } from \"~/features/installer/feature.js\";\nimport { NextjsGraphQLSchema } from \"~/graphql/nextjs/NextjsGraphQLSchema.js\";\nimport { NextjsFeature } from \"~/features/nextjs/feature.js\";\n// import { TenantModelExtensionFeature } from \"~/features/tenantManager/feature.js\";\n\nconst createContext = () => {\n return createContextPlugin(\n async context => {\n const container = context.container;\n\n // Register models\n const pageModel = createPageModel();\n const redirectModel = createRedirectModel();\n\n context.plugins.register(pageModel, redirectModel);\n\n const identityContext = container.resolve(IdentityContext);\n const getModel = container.resolve(GetModelUseCase);\n\n await identityContext.withoutAuthorization(async () => {\n const [pageModel, redirectModel] = await Promise.all([\n getModel.execute(PAGE_MODEL_ID),\n getModel.execute(REDIRECT_MODEL_ID)\n ]);\n\n container.registerInstance(PageModel, pageModel.value);\n container.registerInstance(RedirectModel, redirectModel.value);\n });\n\n // Register permissions\n container.register(WbPermissions.Implementation);\n\n // Register features\n GetRedirectByIdFeature.register(container);\n ListRedirectsFeature.register(container);\n GetActiveRedirectsFeature.register(container);\n CreateRedirectFeature.register(container);\n UpdateRedirectFeature.register(container);\n DeleteRedirectFeature.register(container);\n MoveRedirectFeature.register(container);\n InvalidateRedirectsCacheFeature.register(container);\n GetPageByIdFeature.register(container);\n GetPageByPathFeature.register(container);\n GetPageRevisionsFeature.register(container);\n ListPagesFeature.register(container);\n CreatePageFeature.register(container);\n CreatePageRevisionFromFeature.register(container);\n DeletePageFeature.register(container);\n UpdatePageFeature.register(container);\n PublishPageFeature.register(container);\n UnpublishPageFeature.register(container);\n DuplicatePageFeature.register(container);\n MovePageFeature.register(container);\n ApiKeyInstallerFeature.register(container);\n NextjsFeature.register(container);\n // TenantModelExtensionFeature.register(container);\n\n // Register GraphQL\n container.register(NextjsGraphQLSchema);\n },\n { name: \"wb.createContext\" }\n );\n};\n\nexport const createWebsiteBuilder = () => {\n return [createContext(), createGraphQL(), createRedirectsRoute()];\n};\n"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,aAAa;AACjD,SAASC,eAAe,QAAQ,kEAAkE;AAClG,SAASC,aAAa;AACtB,SAASC,oBAAoB;AAC7B,SAASC,sBAAsB;AAC/B,SAASC,oBAAoB;AAC7B,SAASC,yBAAyB;AAClC,SAASC,qBAAqB;AAC9B,SAASC,qBAAqB;AAC9B,SAASC,qBAAqB;AAC9B,SAASC,mBAAmB;AAC5B,SAASC,+BAA+B;AACxC,SAASC,kBAAkB;AAC3B,SAASC,oBAAoB;AAC7B,SAASC,uBAAuB;AAChC,SAASC,gBAAgB;AACzB,SAASC,iBAAiB;AAC1B,SAASC,6BAA6B;AACtC,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,kBAAkB;AAC3B,SAASC,oBAAoB;AAC7B,SAASC,oBAAoB;AAC7B,SAASC,eAAe;AACxB,SAASC,eAAe,EAAEC,aAAa;AACvC,SAASC,mBAAmB,EAAEC,iBAAiB;AAC/C,SAASC,eAAe,QAAQ,6DAA6D;AAC7F,SAASC,SAAS;AAClB,SAASC,aAAa;AACtB,SAASC,aAAa;AACtB,SAASC,sBAAsB;AAC/B,SAASC,mBAAmB;AAC5B,SAASC,aAAa;AACtB;;AAEA,MAAMC,aAAa,GAAGA,CAAA,KAAM;EACxB,OAAOnC,mBAAmB,CACtB,MAAMoC,OAAO,IAAI;IACb,MAAMC,SAAS,GAAGD,OAAO,CAACC,SAAS;;IAEnC;IACA,MAAMC,SAAS,GAAGd,eAAe,CAAC,CAAC;IACnC,MAAMe,aAAa,GAAGb,mBAAmB,CAAC,CAAC;IAE3CU,OAAO,CAACI,OAAO,CAACC,QAAQ,CAACH,SAAS,EAAEC,aAAa,CAAC;IAElD,MAAMG,eAAe,GAAGL,SAAS,CAACM,OAAO,CAACf,eAAe,CAAC;IAC1D,MAAMgB,QAAQ,GAAGP,SAAS,CAACM,OAAO,CAAC1C,eAAe,CAAC;IAEnD,MAAMyC,eAAe,CAACG,oBAAoB,CAAC,YAAY;MACnD,MAAM,CAACP,SAAS,EAAEC,aAAa,CAAC,GAAG,MAAMO,OAAO,CAACC,GAAG,CAAC,CACjDH,QAAQ,CAACI,OAAO,CAACvB,aAAa,CAAC,EAC/BmB,QAAQ,CAACI,OAAO,CAACrB,iBAAiB,CAAC,CACtC,CAAC;MAEFU,SAAS,CAACY,gBAAgB,CAACpB,SAAS,EAAES,SAAS,CAACY,KAAK,CAAC;MACtDb,SAAS,CAACY,gBAAgB,CAACnB,aAAa,EAAES,aAAa,CAACW,KAAK,CAAC;IAClE,CAAC,CAAC;;IAEF;IACAb,SAAS,CAACI,QAAQ,CAACV,aAAa,CAACoB,cAAc,CAAC;;IAEhD;IACA/C,sBAAsB,CAACqC,QAAQ,CAACJ,SAAS,CAAC;IAC1ChC,oBAAoB,CAACoC,QAAQ,CAACJ,SAAS,CAAC;IACxC/B,yBAAyB,CAACmC,QAAQ,CAACJ,SAAS,CAAC;IAC7C9B,qBAAqB,CAACkC,QAAQ,CAACJ,SAAS,CAAC;IACzC7B,qBAAqB,CAACiC,QAAQ,CAACJ,SAAS,CAAC;IACzC5B,qBAAqB,CAACgC,QAAQ,CAACJ,SAAS,CAAC;IACzC3B,mBAAmB,CAAC+B,QAAQ,CAACJ,SAAS,CAAC;IACvC1B,+BAA+B,CAAC8B,QAAQ,CAACJ,SAAS,CAAC;IACnDzB,kBAAkB,CAAC6B,QAAQ,CAACJ,SAAS,CAAC;IACtCxB,oBAAoB,CAAC4B,QAAQ,CAACJ,SAAS,CAAC;IACxCvB,uBAAuB,CAAC2B,QAAQ,CAACJ,SAAS,CAAC;IAC3CtB,gBAAgB,CAAC0B,QAAQ,CAACJ,SAAS,CAAC;IACpCrB,iBAAiB,CAACyB,QAAQ,CAACJ,SAAS,CAAC;IACrCpB,6BAA6B,CAACwB,QAAQ,CAACJ,SAAS,CAAC;IACjDnB,iBAAiB,CAACuB,QAAQ,CAACJ,SAAS,CAAC;IACrClB,iBAAiB,CAACsB,QAAQ,CAACJ,SAAS,CAAC;IACrCjB,kBAAkB,CAACqB,QAAQ,CAACJ,SAAS,CAAC;IACtChB,oBAAoB,CAACoB,QAAQ,CAACJ,SAAS,CAAC;IACxCf,oBAAoB,CAACmB,QAAQ,CAACJ,SAAS,CAAC;IACxCd,eAAe,CAACkB,QAAQ,CAACJ,SAAS,CAAC;IACnCL,sBAAsB,CAACS,QAAQ,CAACJ,SAAS,CAAC;IAC1CH,aAAa,CAACO,QAAQ,CAACJ,SAAS,CAAC;IACjC;;IAEA;IACAA,SAAS,CAACI,QAAQ,CAACR,mBAAmB,CAAC;EAC3C,CAAC,EACD;IAAEmB,IAAI,EAAE;EAAmB,CAC/B,CAAC;AACL,CAAC;AAED,OAAO,MAAMC,oBAAoB,GAAGA,CAAA,KAAM;EACtC,OAAO,CAAClB,aAAa,CAAC,CAAC,EAAEjC,aAAa,CAAC,CAAC,EAAEC,oBAAoB,CAAC,CAAC,CAAC;AACrE,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-website-builder",
|
|
3
|
-
"version": "0.0.0-unstable.
|
|
3
|
+
"version": "0.0.0-unstable.dbdf5d6258",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"keywords": [
|
|
@@ -19,30 +19,29 @@
|
|
|
19
19
|
"directory": "dist"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@webiny/api": "0.0.0-unstable.
|
|
23
|
-
"@webiny/api-core": "0.0.0-unstable.
|
|
24
|
-
"@webiny/api-headless-cms": "0.0.0-unstable.
|
|
25
|
-
"@webiny/
|
|
26
|
-
"@webiny/
|
|
27
|
-
"@webiny/handler": "0.0.0-unstable.
|
|
28
|
-
"@webiny/
|
|
29
|
-
"@webiny/tenant-manager": "0.0.0-unstable.ac6ebf63c6",
|
|
22
|
+
"@webiny/api": "0.0.0-unstable.dbdf5d6258",
|
|
23
|
+
"@webiny/api-core": "0.0.0-unstable.dbdf5d6258",
|
|
24
|
+
"@webiny/api-headless-cms": "0.0.0-unstable.dbdf5d6258",
|
|
25
|
+
"@webiny/feature": "0.0.0-unstable.dbdf5d6258",
|
|
26
|
+
"@webiny/handler": "0.0.0-unstable.dbdf5d6258",
|
|
27
|
+
"@webiny/handler-graphql": "0.0.0-unstable.dbdf5d6258",
|
|
28
|
+
"@webiny/tenant-manager": "0.0.0-unstable.dbdf5d6258",
|
|
30
29
|
"lodash": "4.17.23"
|
|
31
30
|
},
|
|
32
31
|
"devDependencies": {
|
|
33
|
-
"@webiny/api-core-ddb": "0.0.0-unstable.
|
|
34
|
-
"@webiny/api-file-manager-s3": "0.0.0-unstable.
|
|
35
|
-
"@webiny/build-tools": "0.0.0-unstable.
|
|
36
|
-
"@webiny/handler-aws": "0.0.0-unstable.
|
|
37
|
-
"@webiny/plugins": "0.0.0-unstable.
|
|
38
|
-
"@webiny/project-utils": "0.0.0-unstable.
|
|
39
|
-
"@webiny/tasks": "0.0.0-unstable.
|
|
40
|
-
"@webiny/wcp": "0.0.0-unstable.
|
|
41
|
-
"graphql": "16.
|
|
32
|
+
"@webiny/api-core-ddb": "0.0.0-unstable.dbdf5d6258",
|
|
33
|
+
"@webiny/api-file-manager-s3": "0.0.0-unstable.dbdf5d6258",
|
|
34
|
+
"@webiny/build-tools": "0.0.0-unstable.dbdf5d6258",
|
|
35
|
+
"@webiny/handler-aws": "0.0.0-unstable.dbdf5d6258",
|
|
36
|
+
"@webiny/plugins": "0.0.0-unstable.dbdf5d6258",
|
|
37
|
+
"@webiny/project-utils": "0.0.0-unstable.dbdf5d6258",
|
|
38
|
+
"@webiny/tasks": "0.0.0-unstable.dbdf5d6258",
|
|
39
|
+
"@webiny/wcp": "0.0.0-unstable.dbdf5d6258",
|
|
40
|
+
"graphql": "16.13.0",
|
|
42
41
|
"prettier": "3.6.2",
|
|
43
42
|
"rimraf": "6.1.3",
|
|
44
43
|
"typescript": "5.9.3",
|
|
45
|
-
"vitest": "
|
|
44
|
+
"vitest": "4.0.18"
|
|
46
45
|
},
|
|
47
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "dbdf5d62587b971d52125a69ad6e69bae9ce8ee7"
|
|
48
47
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const PagePermissionsFeature: import("@webiny/feature/api/createFeature").FeatureDefinition<unknown>;
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { createFeature, Result } from "@webiny/feature/api";
|
|
2
|
-
import { CreatePageUseCase } from "../CreatePage/index.js";
|
|
3
|
-
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
4
|
-
import { PageNotAuthorizedError } from "../../../domain/page/errors.js";
|
|
5
|
-
import { CreatePageRevisionFromUseCase } from "../CreatePageRevisionFrom/index.js";
|
|
6
|
-
import { DeletePageUseCase } from "../DeletePage/index.js";
|
|
7
|
-
import { DuplicatePageUseCase } from "../DuplicatePage/index.js";
|
|
8
|
-
import { GetPageByIdUseCase } from "../GetPageById/index.js";
|
|
9
|
-
import { GetPageByPathUseCase } from "../GetPageByPath/index.js";
|
|
10
|
-
import { GetPageRevisionsUseCase } from "../GetPageRevisions/index.js";
|
|
11
|
-
import { ListPagesUseCase } from "../ListPages/index.js";
|
|
12
|
-
import { MovePageUseCase } from "../MovePage/index.js";
|
|
13
|
-
import { PublishPageUseCase } from "../PublishPage/index.js";
|
|
14
|
-
import { UnpublishPageUseCase } from "../UnpublishPage/index.js";
|
|
15
|
-
import { UpdatePageUseCase } from "../UpdatePage/index.js";
|
|
16
|
-
const createDecorator = abstraction => {
|
|
17
|
-
class PageUseCaseDecorator {
|
|
18
|
-
constructor(identityContext, decoratee) {
|
|
19
|
-
this.identityContext = identityContext;
|
|
20
|
-
this.decoratee = decoratee;
|
|
21
|
-
}
|
|
22
|
-
async execute(...args) {
|
|
23
|
-
const hasPermission = await this.identityContext.getPermission("wb.page");
|
|
24
|
-
if (!hasPermission) {
|
|
25
|
-
return Result.fail(new PageNotAuthorizedError());
|
|
26
|
-
}
|
|
27
|
-
return this.decoratee.execute(...args);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return abstraction.createDecorator({
|
|
31
|
-
decorator: PageUseCaseDecorator,
|
|
32
|
-
dependencies: [IdentityContext]
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
export const PagePermissionsFeature = createFeature({
|
|
36
|
-
name: "WebsiteBuilder/Page/Permissions",
|
|
37
|
-
register(container) {
|
|
38
|
-
container.registerDecorator(createDecorator(CreatePageUseCase));
|
|
39
|
-
container.registerDecorator(createDecorator(CreatePageRevisionFromUseCase));
|
|
40
|
-
container.registerDecorator(createDecorator(UpdatePageUseCase));
|
|
41
|
-
container.registerDecorator(createDecorator(DeletePageUseCase));
|
|
42
|
-
container.registerDecorator(createDecorator(DuplicatePageUseCase));
|
|
43
|
-
container.registerDecorator(createDecorator(GetPageByIdUseCase));
|
|
44
|
-
container.registerDecorator(createDecorator(GetPageByPathUseCase));
|
|
45
|
-
container.registerDecorator(createDecorator(GetPageRevisionsUseCase));
|
|
46
|
-
container.registerDecorator(createDecorator(ListPagesUseCase));
|
|
47
|
-
container.registerDecorator(createDecorator(MovePageUseCase));
|
|
48
|
-
container.registerDecorator(createDecorator(PublishPageUseCase));
|
|
49
|
-
container.registerDecorator(createDecorator(UnpublishPageUseCase));
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["createFeature","Result","CreatePageUseCase","IdentityContext","PageNotAuthorizedError","CreatePageRevisionFromUseCase","DeletePageUseCase","DuplicatePageUseCase","GetPageByIdUseCase","GetPageByPathUseCase","GetPageRevisionsUseCase","ListPagesUseCase","MovePageUseCase","PublishPageUseCase","UnpublishPageUseCase","UpdatePageUseCase","createDecorator","abstraction","PageUseCaseDecorator","constructor","identityContext","decoratee","execute","args","hasPermission","getPermission","fail","decorator","dependencies","PagePermissionsFeature","name","register","container","registerDecorator"],"sources":["feature.ts"],"sourcesContent":["import { Abstraction } from \"@webiny/di\";\nimport { createFeature, Result } from \"@webiny/feature/api\";\nimport { CreatePageUseCase } from \"~/features/pages/CreatePage/index.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { PageNotAuthorizedError } from \"~/domain/page/errors.js\";\nimport { CreatePageRevisionFromUseCase } from \"~/features/pages/CreatePageRevisionFrom/index.js\";\nimport { DeletePageUseCase } from \"~/features/pages/DeletePage/index.js\";\nimport { DuplicatePageUseCase } from \"~/features/pages/DuplicatePage/index.js\";\nimport { GetPageByIdUseCase } from \"~/features/pages/GetPageById/index.js\";\nimport { GetPageByPathUseCase } from \"~/features/pages/GetPageByPath/index.js\";\nimport { GetPageRevisionsUseCase } from \"~/features/pages/GetPageRevisions/index.js\";\nimport { ListPagesUseCase } from \"~/features/pages/ListPages/index.js\";\nimport { MovePageUseCase } from \"~/features/pages/MovePage/index.js\";\nimport { PublishPageUseCase } from \"~/features/pages/PublishPage/index.js\";\nimport { UnpublishPageUseCase } from \"~/features/pages/UnpublishPage/index.js\";\nimport { UpdatePageUseCase } from \"~/features/pages/UpdatePage/index.js\";\n\nconst createDecorator = (abstraction: Abstraction<any>) => {\n class PageUseCaseDecorator {\n constructor(\n private identityContext: IdentityContext.Interface,\n private decoratee: any\n ) {}\n\n async execute(...args: any[]) {\n const hasPermission = await this.identityContext.getPermission(\"wb.page\");\n\n if (!hasPermission) {\n return Result.fail(new PageNotAuthorizedError());\n }\n\n return this.decoratee.execute(...args);\n }\n }\n\n return abstraction.createDecorator({\n decorator: PageUseCaseDecorator,\n dependencies: [IdentityContext]\n });\n};\n\nexport const PagePermissionsFeature = createFeature({\n name: \"WebsiteBuilder/Page/Permissions\",\n register(container) {\n container.registerDecorator(createDecorator(CreatePageUseCase));\n container.registerDecorator(createDecorator(CreatePageRevisionFromUseCase));\n container.registerDecorator(createDecorator(UpdatePageUseCase));\n container.registerDecorator(createDecorator(DeletePageUseCase));\n container.registerDecorator(createDecorator(DuplicatePageUseCase));\n container.registerDecorator(createDecorator(GetPageByIdUseCase));\n container.registerDecorator(createDecorator(GetPageByPathUseCase));\n container.registerDecorator(createDecorator(GetPageRevisionsUseCase));\n container.registerDecorator(createDecorator(ListPagesUseCase));\n container.registerDecorator(createDecorator(MovePageUseCase));\n container.registerDecorator(createDecorator(PublishPageUseCase));\n container.registerDecorator(createDecorator(UnpublishPageUseCase));\n }\n});\n"],"mappings":"AACA,SAASA,aAAa,EAAEC,MAAM,QAAQ,qBAAqB;AAC3D,SAASC,iBAAiB;AAC1B,SAASC,eAAe,QAAQ,6DAA6D;AAC7F,SAASC,sBAAsB;AAC/B,SAASC,6BAA6B;AACtC,SAASC,iBAAiB;AAC1B,SAASC,oBAAoB;AAC7B,SAASC,kBAAkB;AAC3B,SAASC,oBAAoB;AAC7B,SAASC,uBAAuB;AAChC,SAASC,gBAAgB;AACzB,SAASC,eAAe;AACxB,SAASC,kBAAkB;AAC3B,SAASC,oBAAoB;AAC7B,SAASC,iBAAiB;AAE1B,MAAMC,eAAe,GAAIC,WAA6B,IAAK;EACvD,MAAMC,oBAAoB,CAAC;IACvBC,WAAWA,CACCC,eAA0C,EAC1CC,SAAc,EACxB;MAAA,KAFUD,eAA0C,GAA1CA,eAA0C;MAAA,KAC1CC,SAAc,GAAdA,SAAc;IACvB;IAEH,MAAMC,OAAOA,CAAC,GAAGC,IAAW,EAAE;MAC1B,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACJ,eAAe,CAACK,aAAa,CAAC,SAAS,CAAC;MAEzE,IAAI,CAACD,aAAa,EAAE;QAChB,OAAOvB,MAAM,CAACyB,IAAI,CAAC,IAAItB,sBAAsB,CAAC,CAAC,CAAC;MACpD;MAEA,OAAO,IAAI,CAACiB,SAAS,CAACC,OAAO,CAAC,GAAGC,IAAI,CAAC;IAC1C;EACJ;EAEA,OAAON,WAAW,CAACD,eAAe,CAAC;IAC/BW,SAAS,EAAET,oBAAoB;IAC/BU,YAAY,EAAE,CAACzB,eAAe;EAClC,CAAC,CAAC;AACN,CAAC;AAED,OAAO,MAAM0B,sBAAsB,GAAG7B,aAAa,CAAC;EAChD8B,IAAI,EAAE,iCAAiC;EACvCC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACC,iBAAiB,CAACjB,eAAe,CAACd,iBAAiB,CAAC,CAAC;IAC/D8B,SAAS,CAACC,iBAAiB,CAACjB,eAAe,CAACX,6BAA6B,CAAC,CAAC;IAC3E2B,SAAS,CAACC,iBAAiB,CAACjB,eAAe,CAACD,iBAAiB,CAAC,CAAC;IAC/DiB,SAAS,CAACC,iBAAiB,CAACjB,eAAe,CAACV,iBAAiB,CAAC,CAAC;IAC/D0B,SAAS,CAACC,iBAAiB,CAACjB,eAAe,CAACT,oBAAoB,CAAC,CAAC;IAClEyB,SAAS,CAACC,iBAAiB,CAACjB,eAAe,CAACR,kBAAkB,CAAC,CAAC;IAChEwB,SAAS,CAACC,iBAAiB,CAACjB,eAAe,CAACP,oBAAoB,CAAC,CAAC;IAClEuB,SAAS,CAACC,iBAAiB,CAACjB,eAAe,CAACN,uBAAuB,CAAC,CAAC;IACrEsB,SAAS,CAACC,iBAAiB,CAACjB,eAAe,CAACL,gBAAgB,CAAC,CAAC;IAC9DqB,SAAS,CAACC,iBAAiB,CAACjB,eAAe,CAACJ,eAAe,CAAC,CAAC;IAC7DoB,SAAS,CAACC,iBAAiB,CAACjB,eAAe,CAACH,kBAAkB,CAAC,CAAC;IAChEmB,SAAS,CAACC,iBAAiB,CAACjB,eAAe,CAACF,oBAAoB,CAAC,CAAC;EACtE;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const RedirectPermissionsFeature: import("@webiny/feature/api/createFeature").FeatureDefinition<unknown>;
|