@webiny/api-website-builder-scheduler 0.0.0-unstable.e6f0dc8ca7 → 0.0.0-unstable.eb81deee7e
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/WebsiteBuilderSchedulerFeature.d.ts +5 -0
- package/{context.js → WebsiteBuilderSchedulerFeature.js} +21 -17
- package/WebsiteBuilderSchedulerFeature.js.map +1 -0
- package/constants.js +8 -4
- package/constants.js.map +1 -1
- package/exports/api/website-builder/scheduler.js +0 -2
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageDeleteEventHandler.js +25 -33
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageDeleteEventHandler.js.map +1 -1
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPagePublishEventHandler.js +25 -34
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPagePublishEventHandler.js.map +1 -1
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageUnpublishEventHandler.js +25 -34
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageUnpublishEventHandler.js.map +1 -1
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnRedirectDeleteEventHandler.js +24 -33
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnRedirectDeleteEventHandler.js.map +1 -1
- package/features/CancelScheduledActionOnChange/feature.js +9 -16
- package/features/CancelScheduledActionOnChange/feature.js.map +1 -1
- package/features/NamespaceHandler/PageNamespaceHandler.js +29 -28
- package/features/NamespaceHandler/PageNamespaceHandler.js.map +1 -1
- package/features/NamespaceHandler/RedirectNamespaceHandler.js +29 -28
- package/features/NamespaceHandler/RedirectNamespaceHandler.js.map +1 -1
- package/features/PublishActionHandler/PublishPageActionHandler.js +20 -21
- package/features/PublishActionHandler/PublishPageActionHandler.js.map +1 -1
- package/features/PublishActionHandler/PublishRedirectActionHandler.js +20 -22
- package/features/PublishActionHandler/PublishRedirectActionHandler.js.map +1 -1
- package/features/SchedulePublishPageUseCase/SchedulePublishPageUseCase.js +22 -20
- package/features/SchedulePublishPageUseCase/SchedulePublishPageUseCase.js.map +1 -1
- package/features/SchedulePublishPageUseCase/abstractions.d.ts +1 -0
- package/features/SchedulePublishPageUseCase/abstractions.js +3 -3
- package/features/SchedulePublishPageUseCase/abstractions.js.map +1 -1
- package/features/SchedulePublishRedirectUseCase/SchedulePublishRedirectUseCase.js +22 -20
- package/features/SchedulePublishRedirectUseCase/SchedulePublishRedirectUseCase.js.map +1 -1
- package/features/SchedulePublishRedirectUseCase/abstractions.d.ts +1 -0
- package/features/SchedulePublishRedirectUseCase/abstractions.js +3 -3
- package/features/SchedulePublishRedirectUseCase/abstractions.js.map +1 -1
- package/features/ScheduleUnpublishPageUseCase/ScheduleUnpublishPageUseCase.js +22 -20
- package/features/ScheduleUnpublishPageUseCase/ScheduleUnpublishPageUseCase.js.map +1 -1
- package/features/ScheduleUnpublishPageUseCase/abstractions.d.ts +1 -0
- package/features/ScheduleUnpublishPageUseCase/abstractions.js +3 -3
- package/features/ScheduleUnpublishPageUseCase/abstractions.js.map +1 -1
- package/features/ScheduleUnpublishRedirectUseCase/ScheduleUnpublishRedirectUseCase.js +22 -20
- package/features/ScheduleUnpublishRedirectUseCase/ScheduleUnpublishRedirectUseCase.js.map +1 -1
- package/features/ScheduleUnpublishRedirectUseCase/abstractions.d.ts +1 -0
- package/features/ScheduleUnpublishRedirectUseCase/abstractions.js +3 -3
- package/features/ScheduleUnpublishRedirectUseCase/abstractions.js.map +1 -1
- package/features/UnpublishActionHandler/UnpublishPageActionHandler.js +20 -20
- package/features/UnpublishActionHandler/UnpublishPageActionHandler.js.map +1 -1
- package/features/UnpublishActionHandler/UnpublishRedirectActionHandler.js +20 -21
- package/features/UnpublishActionHandler/UnpublishRedirectActionHandler.js.map +1 -1
- package/features/permissions/WbSchedulerPermissions.d.ts +13 -0
- package/features/permissions/WbSchedulerPermissions.js +26 -0
- package/features/permissions/WbSchedulerPermissions.js.map +1 -0
- package/index.d.ts +1 -2
- package/index.js +1 -6
- package/package.json +19 -22
- package/types.js +0 -3
- package/utils/namespace.js +7 -12
- package/utils/namespace.js.map +1 -1
- package/context.d.ts +0 -2
- package/context.js.map +0 -1
- package/exports/api/website-builder/scheduler.js.map +0 -1
- package/index.js.map +0 -1
- package/types.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/ScheduleUnpublishRedirectUseCase/ScheduleUnpublishRedirectUseCase.js","sources":["../../../src/features/ScheduleUnpublishRedirectUseCase/ScheduleUnpublishRedirectUseCase.ts"],"sourcesContent":["import { ScheduleUnpublishRedirectUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport {\n ScheduleActionUseCase,\n ScheduledActionTypeUnpublish\n} from \"@webiny/api-scheduler/exports/api/scheduler.js\";\nimport { createNamespace } from \"~/utils/namespace.js\";\nimport { Result } from \"@webiny/feature/exports/api.js\";\nimport { SCHEDULED_ACTION_TYPE_REDIRECT } from \"~/constants.js\";\n\nclass ScheduleUnpublishRedirectUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(private scheduleAction: ScheduleActionUseCase.Interface) {}\n\n public async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Result {\n const scheduleResult = await this.scheduleAction.execute({\n namespace: createNamespace(SCHEDULED_ACTION_TYPE_REDIRECT),\n actionType: ScheduledActionTypeUnpublish,\n scheduleFor: params.scheduleFor,\n tenant: params.tenant,\n targetId: params.id\n });\n if (scheduleResult.isFail()) {\n return Result.fail(scheduleResult.error);\n }\n return Result.ok({ scheduledAction: scheduleResult.value });\n }\n}\n\nexport const ScheduleUnpublishRedirectUseCase = UseCaseAbstraction.createImplementation({\n implementation: ScheduleUnpublishRedirectUseCaseImpl,\n dependencies: [ScheduleActionUseCase]\n});\n"],"names":["ScheduleUnpublishRedirectUseCaseImpl","scheduleAction","params","scheduleResult","createNamespace","SCHEDULED_ACTION_TYPE_REDIRECT","ScheduledActionTypeUnpublish","Result","ScheduleUnpublishRedirectUseCase","UseCaseAbstraction","ScheduleActionUseCase"],"mappings":";;;;;AASA,MAAMA;IACF,YAA2BC,cAA+C,CAAE;aAAjDA,cAAc,GAAdA;IAAkD;IAE7E,MAAa,QAAQC,MAAiC,EAA6B;QAC/E,MAAMC,iBAAiB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YACrD,WAAWC,gBAAgBC;YAC3B,YAAYC;YACZ,aAAaJ,OAAO,WAAW;YAC/B,QAAQA,OAAO,MAAM;YACrB,UAAUA,OAAO,EAAE;QACvB;QACA,IAAIC,eAAe,MAAM,IACrB,OAAOI,OAAO,IAAI,CAACJ,eAAe,KAAK;QAE3C,OAAOI,OAAO,EAAE,CAAC;YAAE,iBAAiBJ,eAAe,KAAK;QAAC;IAC7D;AACJ;AAEO,MAAMK,oEAAmCC,iCAAAA,oBAAuC,CAAC;IACpF,gBAAgBT;IAChB,cAAc;QAACU;KAAsB;AACzC"}
|
|
@@ -2,6 +2,7 @@ import { Result } from "@webiny/feature/api";
|
|
|
2
2
|
import type { IScheduledAction, ScheduleActionError } from "@webiny/api-scheduler/exports/api/scheduler.js";
|
|
3
3
|
export interface IScheduleUnpublishRedirectUseCaseParams {
|
|
4
4
|
id: string;
|
|
5
|
+
tenant: string;
|
|
5
6
|
scheduleFor: Date;
|
|
6
7
|
}
|
|
7
8
|
export interface IScheduleUnpublishRedirectUseCaseResult {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { createAbstraction
|
|
2
|
-
|
|
3
|
-
export
|
|
1
|
+
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
+
const ScheduleUnpublishRedirectUseCase = createAbstraction("WbScheduler/ScheduleUnpublishRedirectUseCase");
|
|
3
|
+
export { ScheduleUnpublishRedirectUseCase };
|
|
4
4
|
|
|
5
5
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/ScheduleUnpublishRedirectUseCase/abstractions.js","sources":["../../../src/features/ScheduleUnpublishRedirectUseCase/abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type {\n IScheduledAction,\n ScheduleActionError\n} from \"@webiny/api-scheduler/exports/api/scheduler.js\";\n\nexport interface IScheduleUnpublishRedirectUseCaseParams {\n id: string;\n tenant: string;\n scheduleFor: Date;\n}\n\nexport interface IScheduleUnpublishRedirectUseCaseResult {\n scheduledAction: IScheduledAction;\n}\n\nexport type IScheduleUnpublishRedirectUseCaseResponse = Promise<\n Result<IScheduleUnpublishRedirectUseCaseResult, ScheduleActionError>\n>;\n\nexport interface IScheduleUnpublishRedirectUseCase {\n execute(\n params: IScheduleUnpublishRedirectUseCaseParams\n ): IScheduleUnpublishRedirectUseCaseResponse;\n}\n\n/** Schedule a redirect for future unpublishing. */\nexport const ScheduleUnpublishRedirectUseCase =\n createAbstraction<IScheduleUnpublishRedirectUseCase>(\n \"WbScheduler/ScheduleUnpublishRedirectUseCase\"\n );\n\nexport namespace ScheduleUnpublishRedirectUseCase {\n export type Interface = IScheduleUnpublishRedirectUseCase;\n export type Error = ScheduleActionError;\n export type Params = IScheduleUnpublishRedirectUseCaseParams;\n export type Result = IScheduleUnpublishRedirectUseCaseResponse;\n}\n"],"names":["ScheduleUnpublishRedirectUseCase","createAbstraction"],"mappings":";AA2BO,MAAMA,mCACTC,kBACI"}
|
|
@@ -2,29 +2,29 @@ import { ScheduledActionHandler, ScheduledActionTypeUnpublish } from "@webiny/ap
|
|
|
2
2
|
import { UnpublishPageUseCase } from "@webiny/api-website-builder/exports/api/website-builder/page.js";
|
|
3
3
|
import { extractModelIdFromNamespace } from "../../utils/namespace.js";
|
|
4
4
|
import { SCHEDULED_ACTION_TYPE_PAGE } from "../../constants.js";
|
|
5
|
-
/**
|
|
6
|
-
* Handles the scheduled "unpublish" action for Website Builder pages.
|
|
7
|
-
*/
|
|
8
5
|
class UnpublishPageActionHandlerImpl {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
6
|
+
constructor(unpublishPageUseCase){
|
|
7
|
+
this.unpublishPageUseCase = unpublishPageUseCase;
|
|
8
|
+
}
|
|
9
|
+
canHandle(namespace, actionType) {
|
|
10
|
+
return extractModelIdFromNamespace(namespace) === SCHEDULED_ACTION_TYPE_PAGE && actionType === ScheduledActionTypeUnpublish;
|
|
11
|
+
}
|
|
12
|
+
async handle(action) {
|
|
13
|
+
const result = await this.unpublishPageUseCase.execute({
|
|
14
|
+
id: action.targetId
|
|
15
|
+
});
|
|
16
|
+
if (result.isFail()) {
|
|
17
|
+
console.error(`Failed to unpublish page "${action.targetId}":`, result.error);
|
|
18
|
+
throw new Error(`Failed to unpublish page: ${action.targetId}`);
|
|
19
|
+
}
|
|
22
20
|
}
|
|
23
|
-
}
|
|
24
21
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
const UnpublishPageActionHandler = ScheduledActionHandler.createImplementation({
|
|
23
|
+
implementation: UnpublishPageActionHandlerImpl,
|
|
24
|
+
dependencies: [
|
|
25
|
+
UnpublishPageUseCase
|
|
26
|
+
]
|
|
28
27
|
});
|
|
28
|
+
export { UnpublishPageActionHandler };
|
|
29
29
|
|
|
30
30
|
//# sourceMappingURL=UnpublishPageActionHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/UnpublishActionHandler/UnpublishPageActionHandler.js","sources":["../../../src/features/UnpublishActionHandler/UnpublishPageActionHandler.ts"],"sourcesContent":["import {\n type IScheduledAction,\n ScheduledActionHandler,\n ScheduledActionTypeUnpublish\n} from \"@webiny/api-scheduler/exports/api/scheduler.js\";\nimport { UnpublishPageUseCase } from \"@webiny/api-website-builder/exports/api/website-builder/page.js\";\nimport type { IScheduledActionPayload } from \"~/types.js\";\nimport { extractModelIdFromNamespace } from \"~/utils/namespace.js\";\nimport { SCHEDULED_ACTION_TYPE_PAGE } from \"~/constants.js\";\nimport type { ScheduledActionType } from \"@webiny/api-scheduler/shared/abstractions.js\";\n\n/**\n * Handles the scheduled \"unpublish\" action for Website Builder pages.\n */\nclass UnpublishPageActionHandlerImpl implements ScheduledActionHandler.Interface {\n constructor(private unpublishPageUseCase: UnpublishPageUseCase.Interface) {}\n\n canHandle(namespace: string, actionType: ScheduledActionType): boolean {\n return (\n extractModelIdFromNamespace(namespace) === SCHEDULED_ACTION_TYPE_PAGE &&\n actionType === ScheduledActionTypeUnpublish\n );\n }\n\n async handle(action: IScheduledAction<IScheduledActionPayload>): Promise<void> {\n const result = await this.unpublishPageUseCase.execute({ id: action.targetId });\n if (result.isFail()) {\n console.error(`Failed to unpublish page \"${action.targetId}\":`, result.error);\n throw new Error(`Failed to unpublish page: ${action.targetId}`);\n }\n }\n}\n\nexport const UnpublishPageActionHandler = ScheduledActionHandler.createImplementation({\n implementation: UnpublishPageActionHandlerImpl,\n dependencies: [UnpublishPageUseCase]\n});\n"],"names":["UnpublishPageActionHandlerImpl","unpublishPageUseCase","namespace","actionType","extractModelIdFromNamespace","SCHEDULED_ACTION_TYPE_PAGE","ScheduledActionTypeUnpublish","action","result","console","Error","UnpublishPageActionHandler","ScheduledActionHandler","UnpublishPageUseCase"],"mappings":";;;;AAcA,MAAMA;IACF,YAAoBC,oBAAoD,CAAE;aAAtDA,oBAAoB,GAApBA;IAAuD;IAE3E,UAAUC,SAAiB,EAAEC,UAA+B,EAAW;QACnE,OACIC,4BAA4BF,eAAeG,8BAC3CF,eAAeG;IAEvB;IAEA,MAAM,OAAOC,MAAiD,EAAiB;QAC3E,MAAMC,SAAS,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;YAAE,IAAID,OAAO,QAAQ;QAAC;QAC7E,IAAIC,OAAO,MAAM,IAAI;YACjBC,QAAQ,KAAK,CAAC,CAAC,0BAA0B,EAAEF,OAAO,QAAQ,CAAC,EAAE,CAAC,EAAEC,OAAO,KAAK;YAC5E,MAAM,IAAIE,MAAM,CAAC,0BAA0B,EAAEH,OAAO,QAAQ,EAAE;QAClE;IACJ;AACJ;AAEO,MAAMI,6BAA6BC,uBAAuB,oBAAoB,CAAC;IAClF,gBAAgBZ;IAChB,cAAc;QAACa;KAAqB;AACxC"}
|
|
@@ -2,30 +2,29 @@ import { ScheduledActionHandler, ScheduledActionTypeUnpublish } from "@webiny/ap
|
|
|
2
2
|
import { UpdateRedirectUseCase } from "@webiny/api-website-builder/exports/api/website-builder/redirect.js";
|
|
3
3
|
import { extractModelIdFromNamespace } from "../../utils/namespace.js";
|
|
4
4
|
import { SCHEDULED_ACTION_TYPE_REDIRECT } from "../../constants.js";
|
|
5
|
-
/**
|
|
6
|
-
* Handles the scheduled "unpublish" action for Website Builder redirects.
|
|
7
|
-
* Unpublishing a redirect means disabling it (isEnabled: false).
|
|
8
|
-
*/
|
|
9
5
|
class UnpublishRedirectActionHandlerImpl {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
6
|
+
constructor(updateRedirectUseCase){
|
|
7
|
+
this.updateRedirectUseCase = updateRedirectUseCase;
|
|
8
|
+
}
|
|
9
|
+
canHandle(namespace, actionType) {
|
|
10
|
+
return extractModelIdFromNamespace(namespace) === SCHEDULED_ACTION_TYPE_REDIRECT && actionType === ScheduledActionTypeUnpublish;
|
|
11
|
+
}
|
|
12
|
+
async handle(action) {
|
|
13
|
+
const result = await this.updateRedirectUseCase.execute(action.targetId, {
|
|
14
|
+
isEnabled: false
|
|
15
|
+
});
|
|
16
|
+
if (result.isFail()) {
|
|
17
|
+
console.error(`Failed to disable redirect "${action.targetId}":`, result.error);
|
|
18
|
+
throw new Error(`Failed to disable redirect: ${action.targetId}`);
|
|
19
|
+
}
|
|
23
20
|
}
|
|
24
|
-
}
|
|
25
21
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
const UnpublishRedirectActionHandler = ScheduledActionHandler.createImplementation({
|
|
23
|
+
implementation: UnpublishRedirectActionHandlerImpl,
|
|
24
|
+
dependencies: [
|
|
25
|
+
UpdateRedirectUseCase
|
|
26
|
+
]
|
|
29
27
|
});
|
|
28
|
+
export { UnpublishRedirectActionHandler };
|
|
30
29
|
|
|
31
30
|
//# sourceMappingURL=UnpublishRedirectActionHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/UnpublishActionHandler/UnpublishRedirectActionHandler.js","sources":["../../../src/features/UnpublishActionHandler/UnpublishRedirectActionHandler.ts"],"sourcesContent":["import {\n type IScheduledAction,\n ScheduledActionHandler,\n ScheduledActionTypeUnpublish\n} from \"@webiny/api-scheduler/exports/api/scheduler.js\";\nimport { UpdateRedirectUseCase } from \"@webiny/api-website-builder/exports/api/website-builder/redirect.js\";\nimport type { IScheduledActionPayload } from \"~/types.js\";\nimport { extractModelIdFromNamespace } from \"~/utils/namespace.js\";\nimport { SCHEDULED_ACTION_TYPE_REDIRECT } from \"~/constants.js\";\nimport type { ScheduledActionType } from \"@webiny/api-scheduler/shared/abstractions.js\";\n\n/**\n * Handles the scheduled \"unpublish\" action for Website Builder redirects.\n * Unpublishing a redirect means disabling it (isEnabled: false).\n */\nclass UnpublishRedirectActionHandlerImpl implements ScheduledActionHandler.Interface {\n constructor(private updateRedirectUseCase: UpdateRedirectUseCase.Interface) {}\n\n canHandle(namespace: string, actionType: ScheduledActionType): boolean {\n return (\n extractModelIdFromNamespace(namespace) === SCHEDULED_ACTION_TYPE_REDIRECT &&\n actionType === ScheduledActionTypeUnpublish\n );\n }\n\n async handle(action: IScheduledAction<IScheduledActionPayload>): Promise<void> {\n const result = await this.updateRedirectUseCase.execute(action.targetId, {\n isEnabled: false\n });\n if (result.isFail()) {\n console.error(`Failed to disable redirect \"${action.targetId}\":`, result.error);\n throw new Error(`Failed to disable redirect: ${action.targetId}`);\n }\n }\n}\n\nexport const UnpublishRedirectActionHandler = ScheduledActionHandler.createImplementation({\n implementation: UnpublishRedirectActionHandlerImpl,\n dependencies: [UpdateRedirectUseCase]\n});\n"],"names":["UnpublishRedirectActionHandlerImpl","updateRedirectUseCase","namespace","actionType","extractModelIdFromNamespace","SCHEDULED_ACTION_TYPE_REDIRECT","ScheduledActionTypeUnpublish","action","result","console","Error","UnpublishRedirectActionHandler","ScheduledActionHandler","UpdateRedirectUseCase"],"mappings":";;;;AAeA,MAAMA;IACF,YAAoBC,qBAAsD,CAAE;aAAxDA,qBAAqB,GAArBA;IAAyD;IAE7E,UAAUC,SAAiB,EAAEC,UAA+B,EAAW;QACnE,OACIC,4BAA4BF,eAAeG,kCAC3CF,eAAeG;IAEvB;IAEA,MAAM,OAAOC,MAAiD,EAAiB;QAC3E,MAAMC,SAAS,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAACD,OAAO,QAAQ,EAAE;YACrE,WAAW;QACf;QACA,IAAIC,OAAO,MAAM,IAAI;YACjBC,QAAQ,KAAK,CAAC,CAAC,4BAA4B,EAAEF,OAAO,QAAQ,CAAC,EAAE,CAAC,EAAEC,OAAO,KAAK;YAC9E,MAAM,IAAIE,MAAM,CAAC,4BAA4B,EAAEH,OAAO,QAAQ,EAAE;QACpE;IACJ;AACJ;AAEO,MAAMI,iCAAiCC,uBAAuB,oBAAoB,CAAC;IACtF,gBAAgBZ;IAChB,cAAc;QAACa;KAAsB;AACzC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SchedulerPermissions } from "@webiny/api-scheduler/features/permissions/abstractions.js";
|
|
2
|
+
import { WbPermissions } from "@webiny/api-website-builder/features/permissions/abstractions.js";
|
|
3
|
+
declare class WbSchedulerPermissionsImpl implements SchedulerPermissions.Interface {
|
|
4
|
+
private permissions;
|
|
5
|
+
constructor(permissions: WbPermissions.Interface);
|
|
6
|
+
canHandle(namespace: string): boolean;
|
|
7
|
+
canRead(): Promise<boolean>;
|
|
8
|
+
onlyOwnRecords(): Promise<boolean>;
|
|
9
|
+
}
|
|
10
|
+
export declare const WbSchedulerPermissions: typeof WbSchedulerPermissionsImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-scheduler/features/permissions/abstractions.js").ISchedulerPermissions>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { SchedulerPermissions } from "@webiny/api-scheduler/features/permissions/abstractions.js";
|
|
2
|
+
import { WbPermissions } from "@webiny/api-website-builder/features/permissions/abstractions.js";
|
|
3
|
+
import { WEBSITE_BUILDER_NAMESPACE } from "../../constants.js";
|
|
4
|
+
class WbSchedulerPermissionsImpl {
|
|
5
|
+
constructor(permissions){
|
|
6
|
+
this.permissions = permissions;
|
|
7
|
+
}
|
|
8
|
+
canHandle(namespace) {
|
|
9
|
+
return namespace.startsWith(WEBSITE_BUILDER_NAMESPACE);
|
|
10
|
+
}
|
|
11
|
+
async canRead() {
|
|
12
|
+
return this.permissions.canPublish("page");
|
|
13
|
+
}
|
|
14
|
+
async onlyOwnRecords() {
|
|
15
|
+
return this.permissions.onlyOwnRecords("page");
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
const WbSchedulerPermissions = SchedulerPermissions.createImplementation({
|
|
19
|
+
implementation: WbSchedulerPermissionsImpl,
|
|
20
|
+
dependencies: [
|
|
21
|
+
WbPermissions
|
|
22
|
+
]
|
|
23
|
+
});
|
|
24
|
+
export { WbSchedulerPermissions };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=WbSchedulerPermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/permissions/WbSchedulerPermissions.js","sources":["../../../src/features/permissions/WbSchedulerPermissions.ts"],"sourcesContent":["import { SchedulerPermissions } from \"@webiny/api-scheduler/features/permissions/abstractions.js\";\nimport { WbPermissions } from \"@webiny/api-website-builder/features/permissions/abstractions.js\";\nimport { WEBSITE_BUILDER_NAMESPACE } from \"~/constants.js\";\n\nclass WbSchedulerPermissionsImpl implements SchedulerPermissions.Interface {\n constructor(private permissions: WbPermissions.Interface) {}\n\n canHandle(namespace: string): boolean {\n return namespace.startsWith(WEBSITE_BUILDER_NAMESPACE);\n }\n\n async canRead(): Promise<boolean> {\n return this.permissions.canPublish(\"page\");\n }\n\n async onlyOwnRecords(): Promise<boolean> {\n return this.permissions.onlyOwnRecords(\"page\");\n }\n}\n\nexport const WbSchedulerPermissions = SchedulerPermissions.createImplementation({\n implementation: WbSchedulerPermissionsImpl,\n dependencies: [WbPermissions]\n});\n"],"names":["WbSchedulerPermissionsImpl","permissions","namespace","WEBSITE_BUILDER_NAMESPACE","WbSchedulerPermissions","SchedulerPermissions","WbPermissions"],"mappings":";;;AAIA,MAAMA;IACF,YAAoBC,WAAoC,CAAE;aAAtCA,WAAW,GAAXA;IAAuC;IAE3D,UAAUC,SAAiB,EAAW;QAClC,OAAOA,UAAU,UAAU,CAACC;IAChC;IAEA,MAAM,UAA4B;QAC9B,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;IACvC;IAEA,MAAM,iBAAmC;QACrC,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;IAC3C;AACJ;AAEO,MAAMC,yBAAyBC,qBAAqB,oBAAoB,CAAC;IAC5E,gBAAgBL;IAChB,cAAc;QAACM;KAAc;AACjC"}
|
package/index.d.ts
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const createWebsiteBuilderScheduler: () => ContextPlugin[];
|
|
1
|
+
export { WebsiteBuilderSchedulerFeature } from "./WebsiteBuilderSchedulerFeature.js";
|
package/index.js
CHANGED
|
@@ -1,6 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export const createWebsiteBuilderScheduler = () => {
|
|
3
|
-
return [createWebsiteBuilderScheduleContext()];
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
export { WebsiteBuilderSchedulerFeature } from "./WebsiteBuilderSchedulerFeature.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-website-builder-scheduler",
|
|
3
|
-
"version": "0.0.0-unstable.
|
|
3
|
+
"version": "0.0.0-unstable.eb81deee7e",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./index.js",
|
|
@@ -17,30 +17,27 @@
|
|
|
17
17
|
},
|
|
18
18
|
"license": "MIT",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@webiny/api": "0.0.0-unstable.
|
|
21
|
-
"@webiny/api-scheduler": "0.0.0-unstable.
|
|
22
|
-
"@webiny/api-website-builder": "0.0.0-unstable.
|
|
23
|
-
"@webiny/feature": "0.0.0-unstable.
|
|
24
|
-
"@webiny/handler-graphql": "0.0.0-unstable.e6f0dc8ca7"
|
|
20
|
+
"@webiny/api": "0.0.0-unstable.eb81deee7e",
|
|
21
|
+
"@webiny/api-scheduler": "0.0.0-unstable.eb81deee7e",
|
|
22
|
+
"@webiny/api-website-builder": "0.0.0-unstable.eb81deee7e",
|
|
23
|
+
"@webiny/feature": "0.0.0-unstable.eb81deee7e"
|
|
25
24
|
},
|
|
26
25
|
"devDependencies": {
|
|
27
|
-
"@webiny/api-core": "0.0.0-unstable.
|
|
28
|
-
"@webiny/api-headless-cms": "0.0.0-unstable.
|
|
29
|
-
"@webiny/
|
|
30
|
-
"@webiny/
|
|
31
|
-
"@webiny/
|
|
32
|
-
"@webiny/
|
|
33
|
-
"@webiny/
|
|
34
|
-
"@webiny/
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"aws-sdk-client-mock": "4.1.0",
|
|
38
|
-
"typescript": "6.0.3",
|
|
39
|
-
"vitest": "4.1.5"
|
|
26
|
+
"@webiny/api-core": "0.0.0-unstable.eb81deee7e",
|
|
27
|
+
"@webiny/api-headless-cms": "0.0.0-unstable.eb81deee7e",
|
|
28
|
+
"@webiny/api-headless-cms-testing": "0.0.0-unstable.eb81deee7e",
|
|
29
|
+
"@webiny/api-opensearch": "0.0.0-unstable.eb81deee7e",
|
|
30
|
+
"@webiny/background-tasks": "0.0.0-unstable.eb81deee7e",
|
|
31
|
+
"@webiny/build-tools": "0.0.0-unstable.eb81deee7e",
|
|
32
|
+
"@webiny/di": "1.1.0",
|
|
33
|
+
"@webiny/wcp": "0.0.0-unstable.eb81deee7e",
|
|
34
|
+
"typescript": "7.0.2",
|
|
35
|
+
"vitest": "4.1.11"
|
|
40
36
|
},
|
|
41
37
|
"publishConfig": {
|
|
42
|
-
"access": "public"
|
|
43
|
-
"directory": "dist"
|
|
38
|
+
"access": "public"
|
|
44
39
|
},
|
|
45
|
-
"
|
|
40
|
+
"webiny": {
|
|
41
|
+
"publishFrom": "dist"
|
|
42
|
+
}
|
|
46
43
|
}
|
package/types.js
CHANGED
package/utils/namespace.js
CHANGED
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
import { SCHEDULED_ACTION_TYPES, WEBSITE_BUILDER_NAMESPACE } from "../constants.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
return null;
|
|
8
|
-
}
|
|
9
|
-
const value = namespace.substring(WEBSITE_BUILDER_NAMESPACE.length) || null;
|
|
10
|
-
if (!value) {
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
return SCHEDULED_ACTION_TYPES.includes(value) ? value : null;
|
|
2
|
+
const createNamespace = (type)=>`${WEBSITE_BUILDER_NAMESPACE}${type}`;
|
|
3
|
+
const extractModelIdFromNamespace = (namespace)=>{
|
|
4
|
+
if (!namespace.startsWith(WEBSITE_BUILDER_NAMESPACE)) return null;
|
|
5
|
+
const value = namespace.substring(WEBSITE_BUILDER_NAMESPACE.length) || null;
|
|
6
|
+
if (!value) return null;
|
|
7
|
+
return SCHEDULED_ACTION_TYPES.includes(value) ? value : null;
|
|
14
8
|
};
|
|
9
|
+
export { createNamespace, extractModelIdFromNamespace };
|
|
15
10
|
|
|
16
11
|
//# sourceMappingURL=namespace.js.map
|
package/utils/namespace.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"utils/namespace.js","sources":["../../src/utils/namespace.ts"],"sourcesContent":["import type { IScheduledActionPayloadType } from \"~/types.js\";\nimport { SCHEDULED_ACTION_TYPES, WEBSITE_BUILDER_NAMESPACE } from \"~/constants.js\";\n\nexport const createNamespace = (type: IScheduledActionPayloadType) => {\n return `${WEBSITE_BUILDER_NAMESPACE}${type}`;\n};\n\nexport const extractModelIdFromNamespace = (\n namespace: string\n): IScheduledActionPayloadType | null => {\n if (!namespace.startsWith(WEBSITE_BUILDER_NAMESPACE)) {\n return null;\n }\n const value = namespace.substring(WEBSITE_BUILDER_NAMESPACE.length) || null;\n if (!value) {\n return null;\n }\n return SCHEDULED_ACTION_TYPES.includes(value as IScheduledActionPayloadType)\n ? (value as IScheduledActionPayloadType)\n : null;\n};\n"],"names":["createNamespace","type","WEBSITE_BUILDER_NAMESPACE","extractModelIdFromNamespace","namespace","value","SCHEDULED_ACTION_TYPES"],"mappings":";AAGO,MAAMA,kBAAkB,CAACC,OACrB,GAAGC,4BAA4BD,MAAM;AAGzC,MAAME,8BAA8B,CACvCC;IAEA,IAAI,CAACA,UAAU,UAAU,CAACF,4BACtB,OAAO;IAEX,MAAMG,QAAQD,UAAU,SAAS,CAACF,0BAA0B,MAAM,KAAK;IACvE,IAAI,CAACG,OACD,OAAO;IAEX,OAAOC,uBAAuB,QAAQ,CAACD,SAChCA,QACD;AACV"}
|
package/context.d.ts
DELETED
package/context.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["ContextPlugin","CancelScheduledActionOnChangeFeature","PageNamespaceHandler","RedirectNamespaceHandler","PublishPageActionHandler","PublishRedirectActionHandler","UnpublishPageActionHandler","UnpublishRedirectActionHandler","SchedulePublishPageUseCase","ScheduleUnpublishPageUseCase","SchedulePublishRedirectUseCase","ScheduleUnpublishRedirectUseCase","createWebsiteBuilderScheduleContext","context","container","register"],"sources":["context.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/api\";\nimport { CancelScheduledActionOnChangeFeature } from \"~/features/CancelScheduledActionOnChange/feature.js\";\nimport { PageNamespaceHandler } from \"~/features/NamespaceHandler/PageNamespaceHandler.js\";\nimport { RedirectNamespaceHandler } from \"~/features/NamespaceHandler/RedirectNamespaceHandler.js\";\nimport { PublishPageActionHandler } from \"~/features/PublishActionHandler/PublishPageActionHandler.js\";\nimport { PublishRedirectActionHandler } from \"~/features/PublishActionHandler/PublishRedirectActionHandler.js\";\nimport { UnpublishPageActionHandler } from \"~/features/UnpublishActionHandler/UnpublishPageActionHandler.js\";\nimport { UnpublishRedirectActionHandler } from \"~/features/UnpublishActionHandler/UnpublishRedirectActionHandler.js\";\nimport { SchedulePublishPageUseCase } from \"~/features/SchedulePublishPageUseCase/SchedulePublishPageUseCase.js\";\nimport { ScheduleUnpublishPageUseCase } from \"~/features/ScheduleUnpublishPageUseCase/ScheduleUnpublishPageUseCase.js\";\nimport { SchedulePublishRedirectUseCase } from \"~/features/SchedulePublishRedirectUseCase/SchedulePublishRedirectUseCase.js\";\nimport { ScheduleUnpublishRedirectUseCase } from \"~/features/ScheduleUnpublishRedirectUseCase/ScheduleUnpublishRedirectUseCase.js\";\n\nexport const createWebsiteBuilderScheduleContext = () => {\n return new ContextPlugin(async context => {\n context.container.register(PageNamespaceHandler);\n context.container.register(RedirectNamespaceHandler);\n context.container.register(PublishPageActionHandler);\n context.container.register(PublishRedirectActionHandler);\n context.container.register(UnpublishPageActionHandler);\n context.container.register(UnpublishRedirectActionHandler);\n context.container.register(SchedulePublishPageUseCase);\n context.container.register(ScheduleUnpublishPageUseCase);\n context.container.register(SchedulePublishRedirectUseCase);\n context.container.register(ScheduleUnpublishRedirectUseCase);\n\n CancelScheduledActionOnChangeFeature.register(context.container);\n });\n};\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,aAAa;AAC3C,SAASC,oCAAoC;AAC7C,SAASC,oBAAoB;AAC7B,SAASC,wBAAwB;AACjC,SAASC,wBAAwB;AACjC,SAASC,4BAA4B;AACrC,SAASC,0BAA0B;AACnC,SAASC,8BAA8B;AACvC,SAASC,0BAA0B;AACnC,SAASC,4BAA4B;AACrC,SAASC,8BAA8B;AACvC,SAASC,gCAAgC;AAEzC,OAAO,MAAMC,mCAAmC,GAAGA,CAAA,KAAM;EACrD,OAAO,IAAIZ,aAAa,CAAC,MAAMa,OAAO,IAAI;IACtCA,OAAO,CAACC,SAAS,CAACC,QAAQ,CAACb,oBAAoB,CAAC;IAChDW,OAAO,CAACC,SAAS,CAACC,QAAQ,CAACZ,wBAAwB,CAAC;IACpDU,OAAO,CAACC,SAAS,CAACC,QAAQ,CAACX,wBAAwB,CAAC;IACpDS,OAAO,CAACC,SAAS,CAACC,QAAQ,CAACV,4BAA4B,CAAC;IACxDQ,OAAO,CAACC,SAAS,CAACC,QAAQ,CAACT,0BAA0B,CAAC;IACtDO,OAAO,CAACC,SAAS,CAACC,QAAQ,CAACR,8BAA8B,CAAC;IAC1DM,OAAO,CAACC,SAAS,CAACC,QAAQ,CAACP,0BAA0B,CAAC;IACtDK,OAAO,CAACC,SAAS,CAACC,QAAQ,CAACN,4BAA4B,CAAC;IACxDI,OAAO,CAACC,SAAS,CAACC,QAAQ,CAACL,8BAA8B,CAAC;IAC1DG,OAAO,CAACC,SAAS,CAACC,QAAQ,CAACJ,gCAAgC,CAAC;IAE5DV,oCAAoC,CAACc,QAAQ,CAACF,OAAO,CAACC,SAAS,CAAC;EACpE,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["SchedulePublishPageUseCase","ScheduleUnpublishPageUseCase","SchedulePublishRedirectUseCase","ScheduleUnpublishRedirectUseCase"],"sources":["scheduler.ts"],"sourcesContent":["export { SchedulePublishPageUseCase } from \"~/features/SchedulePublishPageUseCase/abstractions.js\";\nexport { ScheduleUnpublishPageUseCase } from \"~/features/ScheduleUnpublishPageUseCase/abstractions.js\";\nexport { SchedulePublishRedirectUseCase } from \"~/features/SchedulePublishRedirectUseCase/abstractions.js\";\nexport { ScheduleUnpublishRedirectUseCase } from \"~/features/ScheduleUnpublishRedirectUseCase/abstractions.js\";\n"],"mappings":"AAAA,SAASA,0BAA0B;AACnC,SAASC,4BAA4B;AACrC,SAASC,8BAA8B;AACvC,SAASC,gCAAgC","ignoreList":[]}
|
package/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["createWebsiteBuilderScheduleContext","createWebsiteBuilderScheduler"],"sources":["index.ts"],"sourcesContent":["import { createWebsiteBuilderScheduleContext } from \"~/context.js\";\nimport { ContextPlugin } from \"@webiny/api\";\n\nexport const createWebsiteBuilderScheduler = (): ContextPlugin[] => {\n return [createWebsiteBuilderScheduleContext()];\n};\n"],"mappings":"AAAA,SAASA,mCAAmC;AAG5C,OAAO,MAAMC,6BAA6B,GAAGA,CAAA,KAAuB;EAChE,OAAO,CAACD,mCAAmC,CAAC,CAAC,CAAC;AAClD,CAAC","ignoreList":[]}
|
package/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { INamespaceHandlerResult } from \"@webiny/api-scheduler/features/NamespaceHandler/abstractions.js\";\nimport { SCHEDULED_ACTION_TYPE_PAGE, SCHEDULED_ACTION_TYPE_REDIRECT } from \"~/constants.js\";\n\nexport type IScheduledActionPayloadType =\n | typeof SCHEDULED_ACTION_TYPE_PAGE\n | typeof SCHEDULED_ACTION_TYPE_REDIRECT;\n\nexport interface IScheduledActionPayload extends INamespaceHandlerResult {\n type: IScheduledActionPayloadType;\n}\n"],"mappings":"","ignoreList":[]}
|