@webiny/api-website-builder-scheduler 0.0.0-unstable.9f53ea597d → 0.0.0-unstable.a85ef555b2

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.
Files changed (28) hide show
  1. package/WebsiteBuilderSchedulerFeature.d.ts +5 -0
  2. package/{context.js → WebsiteBuilderSchedulerFeature.js} +21 -16
  3. package/WebsiteBuilderSchedulerFeature.js.map +1 -0
  4. package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageDeleteEventHandler.d.ts +3 -1
  5. package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageDeleteEventHandler.js +8 -2
  6. package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageDeleteEventHandler.js.map +1 -1
  7. package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPagePublishEventHandler.d.ts +3 -1
  8. package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPagePublishEventHandler.js +8 -2
  9. package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPagePublishEventHandler.js.map +1 -1
  10. package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageUnpublishEventHandler.d.ts +3 -1
  11. package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageUnpublishEventHandler.js +8 -2
  12. package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageUnpublishEventHandler.js.map +1 -1
  13. package/features/CancelScheduledActionOnChange/CancelScheduledActionOnRedirectDeleteEventHandler.d.ts +3 -1
  14. package/features/CancelScheduledActionOnChange/CancelScheduledActionOnRedirectDeleteEventHandler.js +8 -2
  15. package/features/CancelScheduledActionOnChange/CancelScheduledActionOnRedirectDeleteEventHandler.js.map +1 -1
  16. package/features/PublishActionHandler/PublishPageActionHandler.js +1 -1
  17. package/features/PublishActionHandler/PublishPageActionHandler.js.map +1 -1
  18. package/features/UnpublishActionHandler/UnpublishPageActionHandler.js +1 -1
  19. package/features/UnpublishActionHandler/UnpublishPageActionHandler.js.map +1 -1
  20. package/features/permissions/WbSchedulerPermissions.d.ts +13 -0
  21. package/features/permissions/WbSchedulerPermissions.js +26 -0
  22. package/features/permissions/WbSchedulerPermissions.js.map +1 -0
  23. package/index.d.ts +1 -2
  24. package/index.js +1 -7
  25. package/package.json +14 -17
  26. package/context.d.ts +0 -2
  27. package/context.js.map +0 -1
  28. package/index.js.map +0 -1
@@ -0,0 +1,5 @@
1
+ import { type Container } from "@webiny/feature/api";
2
+ export declare const WebsiteBuilderSchedulerFeature: {
3
+ name: string;
4
+ register(container: Container): void;
5
+ };
@@ -1,5 +1,6 @@
1
- import { ContextPlugin } from "@webiny/api";
1
+ import { createFeature } from "@webiny/feature/api";
2
2
  import { CancelScheduledActionOnChangeFeature } from "./features/CancelScheduledActionOnChange/feature.js";
3
+ import { WbSchedulerPermissions } from "./features/permissions/WbSchedulerPermissions.js";
3
4
  import { PageNamespaceHandler } from "./features/NamespaceHandler/PageNamespaceHandler.js";
4
5
  import { RedirectNamespaceHandler } from "./features/NamespaceHandler/RedirectNamespaceHandler.js";
5
6
  import { PublishPageActionHandler } from "./features/PublishActionHandler/PublishPageActionHandler.js";
@@ -10,19 +11,23 @@ import { SchedulePublishPageUseCase } from "./features/SchedulePublishPageUseCas
10
11
  import { ScheduleUnpublishPageUseCase } from "./features/ScheduleUnpublishPageUseCase/ScheduleUnpublishPageUseCase.js";
11
12
  import { SchedulePublishRedirectUseCase } from "./features/SchedulePublishRedirectUseCase/SchedulePublishRedirectUseCase.js";
12
13
  import { ScheduleUnpublishRedirectUseCase } from "./features/ScheduleUnpublishRedirectUseCase/ScheduleUnpublishRedirectUseCase.js";
13
- const createWebsiteBuilderScheduleContext = ()=>new ContextPlugin(async (context)=>{
14
- context.container.register(PageNamespaceHandler);
15
- context.container.register(RedirectNamespaceHandler);
16
- context.container.register(PublishPageActionHandler);
17
- context.container.register(PublishRedirectActionHandler);
18
- context.container.register(UnpublishPageActionHandler);
19
- context.container.register(UnpublishRedirectActionHandler);
20
- context.container.register(SchedulePublishPageUseCase);
21
- context.container.register(ScheduleUnpublishPageUseCase);
22
- context.container.register(SchedulePublishRedirectUseCase);
23
- context.container.register(ScheduleUnpublishRedirectUseCase);
24
- CancelScheduledActionOnChangeFeature.register(context.container);
25
- });
26
- export { createWebsiteBuilderScheduleContext };
14
+ const WebsiteBuilderSchedulerFeature = createFeature({
15
+ name: "WebsiteBuilderScheduler",
16
+ register (container) {
17
+ container.register(PageNamespaceHandler);
18
+ container.register(RedirectNamespaceHandler);
19
+ container.register(PublishPageActionHandler);
20
+ container.register(PublishRedirectActionHandler);
21
+ container.register(UnpublishPageActionHandler);
22
+ container.register(UnpublishRedirectActionHandler);
23
+ container.register(SchedulePublishPageUseCase);
24
+ container.register(ScheduleUnpublishPageUseCase);
25
+ container.register(SchedulePublishRedirectUseCase);
26
+ container.register(ScheduleUnpublishRedirectUseCase);
27
+ CancelScheduledActionOnChangeFeature.register(container);
28
+ container.register(WbSchedulerPermissions);
29
+ }
30
+ });
31
+ export { WebsiteBuilderSchedulerFeature };
27
32
 
28
- //# sourceMappingURL=context.js.map
33
+ //# sourceMappingURL=WebsiteBuilderSchedulerFeature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebsiteBuilderSchedulerFeature.js","sources":["../src/WebsiteBuilderSchedulerFeature.ts"],"sourcesContent":["import { type Container, createFeature } from \"@webiny/feature/api\";\nimport { CancelScheduledActionOnChangeFeature } from \"~/features/CancelScheduledActionOnChange/feature.js\";\nimport { WbSchedulerPermissions } from \"~/features/permissions/WbSchedulerPermissions.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 WebsiteBuilderSchedulerFeature = createFeature({\n name: \"WebsiteBuilderScheduler\",\n register(container: Container) {\n // Pure DI registration (was a request-time ContextPlugin — none of it needs ctx/post-auth).\n container.register(PageNamespaceHandler);\n container.register(RedirectNamespaceHandler);\n container.register(PublishPageActionHandler);\n container.register(PublishRedirectActionHandler);\n container.register(UnpublishPageActionHandler);\n container.register(UnpublishRedirectActionHandler);\n container.register(SchedulePublishPageUseCase);\n container.register(ScheduleUnpublishPageUseCase);\n container.register(SchedulePublishRedirectUseCase);\n container.register(ScheduleUnpublishRedirectUseCase);\n\n CancelScheduledActionOnChangeFeature.register(container);\n container.register(WbSchedulerPermissions);\n }\n});\n"],"names":["WebsiteBuilderSchedulerFeature","createFeature","container","PageNamespaceHandler","RedirectNamespaceHandler","PublishPageActionHandler","PublishRedirectActionHandler","UnpublishPageActionHandler","UnpublishRedirectActionHandler","SchedulePublishPageUseCase","ScheduleUnpublishPageUseCase","SchedulePublishRedirectUseCase","ScheduleUnpublishRedirectUseCase","CancelScheduledActionOnChangeFeature","WbSchedulerPermissions"],"mappings":";;;;;;;;;;;;;AAcO,MAAMA,iCAAiCC,cAAc;IACxD,MAAM;IACN,UAASC,SAAoB;QAEzBA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE;QACnBF,UAAU,QAAQ,CAACG;QACnBH,UAAU,QAAQ,CAACI;QACnBJ,UAAU,QAAQ,CAACK;QACnBL,UAAU,QAAQ,CAACM;QACnBN,UAAU,QAAQ,CAACO;QACnBP,UAAU,QAAQ,CAACQ;QACnBR,UAAU,QAAQ,CAACS;QACnBT,UAAU,QAAQ,CAACU;QAEnBC,qCAAqC,QAAQ,CAACX;QAC9CA,UAAU,QAAQ,CAACY;IACvB;AACJ"}
@@ -1,5 +1,6 @@
1
1
  import { PageAfterDeleteEventHandler } from "@webiny/api-website-builder/exports/api/website-builder/page.js";
2
2
  import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webiny/api-scheduler/exports/api/scheduler.js";
3
+ import { Logger } from "@webiny/api-core/features/logger/index.js";
3
4
  /**
4
5
  * Cancels scheduled actions when a page is deleted.
5
6
  *
@@ -9,7 +10,8 @@ import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webi
9
10
  declare class CancelScheduledActionOnPageDeleteHandlerImpl implements PageAfterDeleteEventHandler.Interface {
10
11
  private listScheduledActions;
11
12
  private cancelScheduledAction;
12
- constructor(listScheduledActions: ListScheduledActionsUseCase.Interface, cancelScheduledAction: CancelScheduledActionUseCase.Interface);
13
+ private logger;
14
+ constructor(listScheduledActions: ListScheduledActionsUseCase.Interface, cancelScheduledAction: CancelScheduledActionUseCase.Interface, logger: Logger.Interface);
13
15
  handle(event: PageAfterDeleteEventHandler.Event): Promise<void>;
14
16
  }
15
17
  export declare const CancelScheduledActionOnPageDeleteEventHandler: typeof CancelScheduledActionOnPageDeleteHandlerImpl & {
@@ -1,11 +1,13 @@
1
1
  import { PageAfterDeleteEventHandler } from "@webiny/api-website-builder/exports/api/website-builder/page.js";
2
2
  import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webiny/api-scheduler/exports/api/scheduler.js";
3
+ import { Logger } from "@webiny/api-core/features/logger/index.js";
3
4
  import { createNamespace } from "../../utils/namespace.js";
4
5
  import { SCHEDULED_ACTION_TYPE_PAGE } from "../../constants.js";
5
6
  class CancelScheduledActionOnPageDeleteHandlerImpl {
6
- constructor(listScheduledActions, cancelScheduledAction){
7
+ constructor(listScheduledActions, cancelScheduledAction, logger){
7
8
  this.listScheduledActions = listScheduledActions;
8
9
  this.cancelScheduledAction = cancelScheduledAction;
10
+ this.logger = logger;
9
11
  }
10
12
  async handle(event) {
11
13
  const { page } = event.payload;
@@ -16,6 +18,9 @@ class CancelScheduledActionOnPageDeleteHandlerImpl {
16
18
  targetId: page.id
17
19
  }
18
20
  });
21
+ if (actionsResult.isFail()) return void this.logger.error({
22
+ error: actionsResult.error
23
+ }, "Could not list scheduled actions to cancel.");
19
24
  const actions = actionsResult.value.items;
20
25
  for (const action of actions){
21
26
  const cancelRes = await this.cancelScheduledAction.execute(action);
@@ -27,7 +32,8 @@ const CancelScheduledActionOnPageDeleteEventHandler = PageAfterDeleteEventHandle
27
32
  implementation: CancelScheduledActionOnPageDeleteHandlerImpl,
28
33
  dependencies: [
29
34
  ListScheduledActionsUseCase,
30
- CancelScheduledActionUseCase
35
+ CancelScheduledActionUseCase,
36
+ Logger
31
37
  ]
32
38
  });
33
39
  export { CancelScheduledActionOnPageDeleteEventHandler };
@@ -1 +1 @@
1
- {"version":3,"file":"features/CancelScheduledActionOnChange/CancelScheduledActionOnPageDeleteEventHandler.js","sources":["../../../src/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageDeleteEventHandler.ts"],"sourcesContent":["import { PageAfterDeleteEventHandler } from \"@webiny/api-website-builder/exports/api/website-builder/page.js\";\nimport {\n CancelScheduledActionUseCase,\n ListScheduledActionsUseCase\n} from \"@webiny/api-scheduler/exports/api/scheduler.js\";\nimport { createNamespace } from \"~/utils/namespace.js\";\nimport { SCHEDULED_ACTION_TYPE_PAGE } from \"~/constants.js\";\n\n/**\n * Cancels scheduled actions when a page is deleted.\n *\n * When a user deletes a page revision, any scheduled publish/unpublish\n * actions for that revision should be canceled since the page no longer exists.\n */\nclass CancelScheduledActionOnPageDeleteHandlerImpl\n implements PageAfterDeleteEventHandler.Interface\n{\n constructor(\n private listScheduledActions: ListScheduledActionsUseCase.Interface,\n private cancelScheduledAction: CancelScheduledActionUseCase.Interface\n ) {}\n\n async handle(event: PageAfterDeleteEventHandler.Event): Promise<void> {\n const { page } = event.payload;\n\n const actionsResult = await this.listScheduledActions.execute({\n limit: 10000,\n where: {\n namespace: createNamespace(SCHEDULED_ACTION_TYPE_PAGE),\n targetId: page.id\n }\n });\n\n const actions = actionsResult.value.items;\n\n for (const action of actions) {\n const cancelRes = await this.cancelScheduledAction.execute(action);\n if (cancelRes.isFail()) {\n // Silently ignore errors - this is non-critical cleanup.\n // The page was deleted successfully, cancelling scheduled actions is best-effort.\n }\n }\n }\n}\n\nexport const CancelScheduledActionOnPageDeleteEventHandler =\n PageAfterDeleteEventHandler.createImplementation({\n implementation: CancelScheduledActionOnPageDeleteHandlerImpl,\n dependencies: [ListScheduledActionsUseCase, CancelScheduledActionUseCase]\n });\n"],"names":["CancelScheduledActionOnPageDeleteHandlerImpl","listScheduledActions","cancelScheduledAction","event","page","actionsResult","createNamespace","SCHEDULED_ACTION_TYPE_PAGE","actions","action","cancelRes","CancelScheduledActionOnPageDeleteEventHandler","PageAfterDeleteEventHandler","ListScheduledActionsUseCase","CancelScheduledActionUseCase"],"mappings":";;;;AAcA,MAAMA;IAGF,YACYC,oBAA2D,EAC3DC,qBAA6D,CACvE;aAFUD,oBAAoB,GAApBA;aACAC,qBAAqB,GAArBA;IACT;IAEH,MAAM,OAAOC,KAAwC,EAAiB;QAClE,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAE9B,MAAME,gBAAgB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;YAC1D,OAAO;YACP,OAAO;gBACH,WAAWC,gBAAgBC;gBAC3B,UAAUH,KAAK,EAAE;YACrB;QACJ;QAEA,MAAMI,UAAUH,cAAc,KAAK,CAAC,KAAK;QAEzC,KAAK,MAAMI,UAAUD,QAAS;YAC1B,MAAME,YAAY,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAACD;YACvDC,UAAU,MAAM;QAIxB;IACJ;AACJ;AAEO,MAAMC,gDACTC,4BAA4B,oBAAoB,CAAC;IAC7C,gBAAgBZ;IAChB,cAAc;QAACa;QAA6BC;KAA6B;AAC7E"}
1
+ {"version":3,"file":"features/CancelScheduledActionOnChange/CancelScheduledActionOnPageDeleteEventHandler.js","sources":["../../../src/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageDeleteEventHandler.ts"],"sourcesContent":["import { PageAfterDeleteEventHandler } from \"@webiny/api-website-builder/exports/api/website-builder/page.js\";\nimport {\n CancelScheduledActionUseCase,\n ListScheduledActionsUseCase\n} from \"@webiny/api-scheduler/exports/api/scheduler.js\";\nimport { Logger } from \"@webiny/api-core/features/logger/index.js\";\nimport { createNamespace } from \"~/utils/namespace.js\";\nimport { SCHEDULED_ACTION_TYPE_PAGE } from \"~/constants.js\";\n\n/**\n * Cancels scheduled actions when a page is deleted.\n *\n * When a user deletes a page revision, any scheduled publish/unpublish\n * actions for that revision should be canceled since the page no longer exists.\n */\nclass CancelScheduledActionOnPageDeleteHandlerImpl\n implements PageAfterDeleteEventHandler.Interface\n{\n constructor(\n private listScheduledActions: ListScheduledActionsUseCase.Interface,\n private cancelScheduledAction: CancelScheduledActionUseCase.Interface,\n private logger: Logger.Interface\n ) {}\n\n async handle(event: PageAfterDeleteEventHandler.Event): Promise<void> {\n const { page } = event.payload;\n\n const actionsResult = await this.listScheduledActions.execute({\n limit: 10000,\n where: {\n namespace: createNamespace(SCHEDULED_ACTION_TYPE_PAGE),\n targetId: page.id\n }\n });\n\n if (actionsResult.isFail()) {\n this.logger.error(\n { error: actionsResult.error },\n \"Could not list scheduled actions to cancel.\"\n );\n return;\n }\n\n const actions = actionsResult.value.items;\n\n for (const action of actions) {\n const cancelRes = await this.cancelScheduledAction.execute(action);\n if (cancelRes.isFail()) {\n // Silently ignore errors - this is non-critical cleanup.\n // The page was deleted successfully, cancelling scheduled actions is best-effort.\n }\n }\n }\n}\n\nexport const CancelScheduledActionOnPageDeleteEventHandler =\n PageAfterDeleteEventHandler.createImplementation({\n implementation: CancelScheduledActionOnPageDeleteHandlerImpl,\n dependencies: [ListScheduledActionsUseCase, CancelScheduledActionUseCase, Logger]\n });\n"],"names":["CancelScheduledActionOnPageDeleteHandlerImpl","listScheduledActions","cancelScheduledAction","logger","event","page","actionsResult","createNamespace","SCHEDULED_ACTION_TYPE_PAGE","actions","action","cancelRes","CancelScheduledActionOnPageDeleteEventHandler","PageAfterDeleteEventHandler","ListScheduledActionsUseCase","CancelScheduledActionUseCase","Logger"],"mappings":";;;;;AAeA,MAAMA;IAGF,YACYC,oBAA2D,EAC3DC,qBAA6D,EAC7DC,MAAwB,CAClC;aAHUF,oBAAoB,GAApBA;aACAC,qBAAqB,GAArBA;aACAC,MAAM,GAANA;IACT;IAEH,MAAM,OAAOC,KAAwC,EAAiB;QAClE,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAE9B,MAAME,gBAAgB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;YAC1D,OAAO;YACP,OAAO;gBACH,WAAWC,gBAAgBC;gBAC3B,UAAUH,KAAK,EAAE;YACrB;QACJ;QAEA,IAAIC,cAAc,MAAM,IAAI,YACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CACb;YAAE,OAAOA,cAAc,KAAK;QAAC,GAC7B;QAKR,MAAMG,UAAUH,cAAc,KAAK,CAAC,KAAK;QAEzC,KAAK,MAAMI,UAAUD,QAAS;YAC1B,MAAME,YAAY,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAACD;YACvDC,UAAU,MAAM;QAIxB;IACJ;AACJ;AAEO,MAAMC,gDACTC,4BAA4B,oBAAoB,CAAC;IAC7C,gBAAgBb;IAChB,cAAc;QAACc;QAA6BC;QAA8BC;KAAO;AACrF"}
@@ -1,5 +1,6 @@
1
1
  import { PageAfterPublishEventHandler } from "@webiny/api-website-builder/exports/api/website-builder/page.js";
2
2
  import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webiny/api-scheduler/exports/api/scheduler.js";
3
+ import { Logger } from "@webiny/api-core/features/logger/index.js";
3
4
  /**
4
5
  * Cancels scheduled "publish" when a page is manually published.
5
6
  *
@@ -10,7 +11,8 @@ import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webi
10
11
  declare class CancelScheduledActionOnPublishEventHandlerImpl implements PageAfterPublishEventHandler.Interface {
11
12
  private listScheduledActions;
12
13
  private cancelScheduledAction;
13
- constructor(listScheduledActions: ListScheduledActionsUseCase.Interface, cancelScheduledAction: CancelScheduledActionUseCase.Interface);
14
+ private logger;
15
+ constructor(listScheduledActions: ListScheduledActionsUseCase.Interface, cancelScheduledAction: CancelScheduledActionUseCase.Interface, logger: Logger.Interface);
14
16
  handle(event: PageAfterPublishEventHandler.Event): Promise<void>;
15
17
  }
16
18
  export declare const CancelScheduledActionOnPagePublishEventHandler: typeof CancelScheduledActionOnPublishEventHandlerImpl & {
@@ -1,11 +1,13 @@
1
1
  import { PageAfterPublishEventHandler } from "@webiny/api-website-builder/exports/api/website-builder/page.js";
2
2
  import { CancelScheduledActionUseCase, ListScheduledActionsUseCase, ScheduledActionTypePublish } from "@webiny/api-scheduler/exports/api/scheduler.js";
3
+ import { Logger } from "@webiny/api-core/features/logger/index.js";
3
4
  import { createNamespace } from "../../utils/namespace.js";
4
5
  import { SCHEDULED_ACTION_TYPE_PAGE } from "../../constants.js";
5
6
  class CancelScheduledActionOnPublishEventHandlerImpl {
6
- constructor(listScheduledActions, cancelScheduledAction){
7
+ constructor(listScheduledActions, cancelScheduledAction, logger){
7
8
  this.listScheduledActions = listScheduledActions;
8
9
  this.cancelScheduledAction = cancelScheduledAction;
10
+ this.logger = logger;
9
11
  }
10
12
  async handle(event) {
11
13
  const { page } = event.payload;
@@ -16,6 +18,9 @@ class CancelScheduledActionOnPublishEventHandlerImpl {
16
18
  targetId: page.id
17
19
  }
18
20
  });
21
+ if (actionsResult.isFail()) return void this.logger.error({
22
+ error: actionsResult.error
23
+ }, "Could not list scheduled actions to cancel.");
19
24
  const actions = actionsResult.value.items;
20
25
  for (const action of actions){
21
26
  const cancelRes = await this.cancelScheduledAction.execute(action);
@@ -27,7 +32,8 @@ const CancelScheduledActionOnPagePublishEventHandler = PageAfterPublishEventHand
27
32
  implementation: CancelScheduledActionOnPublishEventHandlerImpl,
28
33
  dependencies: [
29
34
  ListScheduledActionsUseCase,
30
- CancelScheduledActionUseCase
35
+ CancelScheduledActionUseCase,
36
+ Logger
31
37
  ]
32
38
  });
33
39
  export { CancelScheduledActionOnPagePublishEventHandler };
@@ -1 +1 @@
1
- {"version":3,"file":"features/CancelScheduledActionOnChange/CancelScheduledActionOnPagePublishEventHandler.js","sources":["../../../src/features/CancelScheduledActionOnChange/CancelScheduledActionOnPagePublishEventHandler.ts"],"sourcesContent":["import { PageAfterPublishEventHandler } from \"@webiny/api-website-builder/exports/api/website-builder/page.js\";\nimport {\n CancelScheduledActionUseCase,\n ListScheduledActionsUseCase,\n ScheduledActionTypePublish\n} from \"@webiny/api-scheduler/exports/api/scheduler.js\";\nimport { createNamespace } from \"~/utils/namespace.js\";\nimport { SCHEDULED_ACTION_TYPE_PAGE } from \"~/constants.js\";\n\n/**\n * Cancels scheduled \"publish\" when a page is manually published.\n *\n * When a user manually publishes a page, any scheduled publish\n * action for that page should be canceled since the manual action\n * takes precedence.\n */\nclass CancelScheduledActionOnPublishEventHandlerImpl\n implements PageAfterPublishEventHandler.Interface\n{\n constructor(\n private listScheduledActions: ListScheduledActionsUseCase.Interface,\n private cancelScheduledAction: CancelScheduledActionUseCase.Interface\n ) {}\n\n async handle(event: PageAfterPublishEventHandler.Event): Promise<void> {\n const { page } = event.payload;\n\n const actionsResult = await this.listScheduledActions.execute({\n where: {\n namespace: createNamespace(SCHEDULED_ACTION_TYPE_PAGE),\n actionType: ScheduledActionTypePublish,\n targetId: page.id\n }\n });\n\n const actions = actionsResult.value.items;\n\n for (const action of actions) {\n const cancelRes = await this.cancelScheduledAction.execute(action);\n if (cancelRes.isFail()) {\n // Silently ignore errors - this is non-critical cleanup.\n // Even if a schedule runs on an already published page, nothing bad will happen.\n }\n }\n }\n}\n\nexport const CancelScheduledActionOnPagePublishEventHandler =\n PageAfterPublishEventHandler.createImplementation({\n implementation: CancelScheduledActionOnPublishEventHandlerImpl,\n dependencies: [ListScheduledActionsUseCase, CancelScheduledActionUseCase]\n });\n"],"names":["CancelScheduledActionOnPublishEventHandlerImpl","listScheduledActions","cancelScheduledAction","event","page","actionsResult","createNamespace","SCHEDULED_ACTION_TYPE_PAGE","ScheduledActionTypePublish","actions","action","cancelRes","CancelScheduledActionOnPagePublishEventHandler","PageAfterPublishEventHandler","ListScheduledActionsUseCase","CancelScheduledActionUseCase"],"mappings":";;;;AAgBA,MAAMA;IAGF,YACYC,oBAA2D,EAC3DC,qBAA6D,CACvE;aAFUD,oBAAoB,GAApBA;aACAC,qBAAqB,GAArBA;IACT;IAEH,MAAM,OAAOC,KAAyC,EAAiB;QACnE,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAE9B,MAAME,gBAAgB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;YAC1D,OAAO;gBACH,WAAWC,gBAAgBC;gBAC3B,YAAYC;gBACZ,UAAUJ,KAAK,EAAE;YACrB;QACJ;QAEA,MAAMK,UAAUJ,cAAc,KAAK,CAAC,KAAK;QAEzC,KAAK,MAAMK,UAAUD,QAAS;YAC1B,MAAME,YAAY,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAACD;YACvDC,UAAU,MAAM;QAIxB;IACJ;AACJ;AAEO,MAAMC,iDACTC,6BAA6B,oBAAoB,CAAC;IAC9C,gBAAgBb;IAChB,cAAc;QAACc;QAA6BC;KAA6B;AAC7E"}
1
+ {"version":3,"file":"features/CancelScheduledActionOnChange/CancelScheduledActionOnPagePublishEventHandler.js","sources":["../../../src/features/CancelScheduledActionOnChange/CancelScheduledActionOnPagePublishEventHandler.ts"],"sourcesContent":["import { PageAfterPublishEventHandler } from \"@webiny/api-website-builder/exports/api/website-builder/page.js\";\nimport {\n CancelScheduledActionUseCase,\n ListScheduledActionsUseCase,\n ScheduledActionTypePublish\n} from \"@webiny/api-scheduler/exports/api/scheduler.js\";\nimport { Logger } from \"@webiny/api-core/features/logger/index.js\";\nimport { createNamespace } from \"~/utils/namespace.js\";\nimport { SCHEDULED_ACTION_TYPE_PAGE } from \"~/constants.js\";\n\n/**\n * Cancels scheduled \"publish\" when a page is manually published.\n *\n * When a user manually publishes a page, any scheduled publish\n * action for that page should be canceled since the manual action\n * takes precedence.\n */\nclass CancelScheduledActionOnPublishEventHandlerImpl\n implements PageAfterPublishEventHandler.Interface\n{\n constructor(\n private listScheduledActions: ListScheduledActionsUseCase.Interface,\n private cancelScheduledAction: CancelScheduledActionUseCase.Interface,\n private logger: Logger.Interface\n ) {}\n\n async handle(event: PageAfterPublishEventHandler.Event): Promise<void> {\n const { page } = event.payload;\n\n const actionsResult = await this.listScheduledActions.execute({\n where: {\n namespace: createNamespace(SCHEDULED_ACTION_TYPE_PAGE),\n actionType: ScheduledActionTypePublish,\n targetId: page.id\n }\n });\n\n if (actionsResult.isFail()) {\n this.logger.error(\n { error: actionsResult.error },\n \"Could not list scheduled actions to cancel.\"\n );\n return;\n }\n\n const actions = actionsResult.value.items;\n\n for (const action of actions) {\n const cancelRes = await this.cancelScheduledAction.execute(action);\n if (cancelRes.isFail()) {\n // Silently ignore errors - this is non-critical cleanup.\n // Even if a schedule runs on an already published page, nothing bad will happen.\n }\n }\n }\n}\n\nexport const CancelScheduledActionOnPagePublishEventHandler =\n PageAfterPublishEventHandler.createImplementation({\n implementation: CancelScheduledActionOnPublishEventHandlerImpl,\n dependencies: [ListScheduledActionsUseCase, CancelScheduledActionUseCase, Logger]\n });\n"],"names":["CancelScheduledActionOnPublishEventHandlerImpl","listScheduledActions","cancelScheduledAction","logger","event","page","actionsResult","createNamespace","SCHEDULED_ACTION_TYPE_PAGE","ScheduledActionTypePublish","actions","action","cancelRes","CancelScheduledActionOnPagePublishEventHandler","PageAfterPublishEventHandler","ListScheduledActionsUseCase","CancelScheduledActionUseCase","Logger"],"mappings":";;;;;AAiBA,MAAMA;IAGF,YACYC,oBAA2D,EAC3DC,qBAA6D,EAC7DC,MAAwB,CAClC;aAHUF,oBAAoB,GAApBA;aACAC,qBAAqB,GAArBA;aACAC,MAAM,GAANA;IACT;IAEH,MAAM,OAAOC,KAAyC,EAAiB;QACnE,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAE9B,MAAME,gBAAgB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;YAC1D,OAAO;gBACH,WAAWC,gBAAgBC;gBAC3B,YAAYC;gBACZ,UAAUJ,KAAK,EAAE;YACrB;QACJ;QAEA,IAAIC,cAAc,MAAM,IAAI,YACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CACb;YAAE,OAAOA,cAAc,KAAK;QAAC,GAC7B;QAKR,MAAMI,UAAUJ,cAAc,KAAK,CAAC,KAAK;QAEzC,KAAK,MAAMK,UAAUD,QAAS;YAC1B,MAAME,YAAY,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAACD;YACvDC,UAAU,MAAM;QAIxB;IACJ;AACJ;AAEO,MAAMC,iDACTC,6BAA6B,oBAAoB,CAAC;IAC9C,gBAAgBd;IAChB,cAAc;QAACe;QAA6BC;QAA8BC;KAAO;AACrF"}
@@ -1,5 +1,6 @@
1
1
  import { PageAfterUnpublishEventHandler } from "@webiny/api-website-builder/exports/api/website-builder/page.js";
2
2
  import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webiny/api-scheduler/exports/api/scheduler.js";
3
+ import { Logger } from "@webiny/api-core/features/logger/index.js";
3
4
  /**
4
5
  * Cancels scheduled "unpublish" when a page is manually unpublished.
5
6
  *
@@ -10,7 +11,8 @@ import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webi
10
11
  declare class CancelScheduledActionOnUnpublishHandlerImpl implements PageAfterUnpublishEventHandler.Interface {
11
12
  private listScheduledActions;
12
13
  private cancelScheduledAction;
13
- constructor(listScheduledActions: ListScheduledActionsUseCase.Interface, cancelScheduledAction: CancelScheduledActionUseCase.Interface);
14
+ private logger;
15
+ constructor(listScheduledActions: ListScheduledActionsUseCase.Interface, cancelScheduledAction: CancelScheduledActionUseCase.Interface, logger: Logger.Interface);
14
16
  handle(event: PageAfterUnpublishEventHandler.Event): Promise<void>;
15
17
  }
16
18
  export declare const CancelScheduledActionOnPageUnpublishEventHandler: typeof CancelScheduledActionOnUnpublishHandlerImpl & {
@@ -1,11 +1,13 @@
1
1
  import { PageAfterUnpublishEventHandler } from "@webiny/api-website-builder/exports/api/website-builder/page.js";
2
2
  import { CancelScheduledActionUseCase, ListScheduledActionsUseCase, ScheduledActionTypeUnpublish } from "@webiny/api-scheduler/exports/api/scheduler.js";
3
+ import { Logger } from "@webiny/api-core/features/logger/index.js";
3
4
  import { createNamespace } from "../../utils/namespace.js";
4
5
  import { SCHEDULED_ACTION_TYPE_PAGE } from "../../constants.js";
5
6
  class CancelScheduledActionOnUnpublishHandlerImpl {
6
- constructor(listScheduledActions, cancelScheduledAction){
7
+ constructor(listScheduledActions, cancelScheduledAction, logger){
7
8
  this.listScheduledActions = listScheduledActions;
8
9
  this.cancelScheduledAction = cancelScheduledAction;
10
+ this.logger = logger;
9
11
  }
10
12
  async handle(event) {
11
13
  const { page } = event.payload;
@@ -16,6 +18,9 @@ class CancelScheduledActionOnUnpublishHandlerImpl {
16
18
  targetId: page.id
17
19
  }
18
20
  });
21
+ if (actionsResult.isFail()) return void this.logger.error({
22
+ error: actionsResult.error
23
+ }, "Could not list scheduled actions to cancel.");
19
24
  const actions = actionsResult.value.items;
20
25
  for (const action of actions){
21
26
  const cancelRes = await this.cancelScheduledAction.execute(action);
@@ -27,7 +32,8 @@ const CancelScheduledActionOnPageUnpublishEventHandler = PageAfterUnpublishEvent
27
32
  implementation: CancelScheduledActionOnUnpublishHandlerImpl,
28
33
  dependencies: [
29
34
  ListScheduledActionsUseCase,
30
- CancelScheduledActionUseCase
35
+ CancelScheduledActionUseCase,
36
+ Logger
31
37
  ]
32
38
  });
33
39
  export { CancelScheduledActionOnPageUnpublishEventHandler };
@@ -1 +1 @@
1
- {"version":3,"file":"features/CancelScheduledActionOnChange/CancelScheduledActionOnPageUnpublishEventHandler.js","sources":["../../../src/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageUnpublishEventHandler.ts"],"sourcesContent":["import { PageAfterUnpublishEventHandler } from \"@webiny/api-website-builder/exports/api/website-builder/page.js\";\nimport {\n CancelScheduledActionUseCase,\n ListScheduledActionsUseCase,\n ScheduledActionTypeUnpublish\n} from \"@webiny/api-scheduler/exports/api/scheduler.js\";\nimport { createNamespace } from \"~/utils/namespace.js\";\nimport { SCHEDULED_ACTION_TYPE_PAGE } from \"~/constants.js\";\n\n/**\n * Cancels scheduled \"unpublish\" when a page is manually unpublished.\n *\n * When a user manually unpublishes a page, any scheduled unpublish\n * action for that page should be canceled since the manual action\n * takes precedence.\n */\nclass CancelScheduledActionOnUnpublishHandlerImpl\n implements PageAfterUnpublishEventHandler.Interface\n{\n constructor(\n private listScheduledActions: ListScheduledActionsUseCase.Interface,\n private cancelScheduledAction: CancelScheduledActionUseCase.Interface\n ) {}\n\n async handle(event: PageAfterUnpublishEventHandler.Event): Promise<void> {\n const { page } = event.payload;\n\n const actionsResult = await this.listScheduledActions.execute({\n where: {\n namespace: createNamespace(SCHEDULED_ACTION_TYPE_PAGE),\n actionType: ScheduledActionTypeUnpublish,\n targetId: page.id\n }\n });\n\n const actions = actionsResult.value.items;\n\n for (const action of actions) {\n const cancelRes = await this.cancelScheduledAction.execute(action);\n if (cancelRes.isFail()) {\n // Silently ignore errors - this is non-critical cleanup.\n // Page was unpublished successfully, cancelling scheduled actions is best-effort.\n }\n }\n }\n}\n\nexport const CancelScheduledActionOnPageUnpublishEventHandler =\n PageAfterUnpublishEventHandler.createImplementation({\n implementation: CancelScheduledActionOnUnpublishHandlerImpl,\n dependencies: [ListScheduledActionsUseCase, CancelScheduledActionUseCase]\n });\n"],"names":["CancelScheduledActionOnUnpublishHandlerImpl","listScheduledActions","cancelScheduledAction","event","page","actionsResult","createNamespace","SCHEDULED_ACTION_TYPE_PAGE","ScheduledActionTypeUnpublish","actions","action","cancelRes","CancelScheduledActionOnPageUnpublishEventHandler","PageAfterUnpublishEventHandler","ListScheduledActionsUseCase","CancelScheduledActionUseCase"],"mappings":";;;;AAgBA,MAAMA;IAGF,YACYC,oBAA2D,EAC3DC,qBAA6D,CACvE;aAFUD,oBAAoB,GAApBA;aACAC,qBAAqB,GAArBA;IACT;IAEH,MAAM,OAAOC,KAA2C,EAAiB;QACrE,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAE9B,MAAME,gBAAgB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;YAC1D,OAAO;gBACH,WAAWC,gBAAgBC;gBAC3B,YAAYC;gBACZ,UAAUJ,KAAK,EAAE;YACrB;QACJ;QAEA,MAAMK,UAAUJ,cAAc,KAAK,CAAC,KAAK;QAEzC,KAAK,MAAMK,UAAUD,QAAS;YAC1B,MAAME,YAAY,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAACD;YACvDC,UAAU,MAAM;QAIxB;IACJ;AACJ;AAEO,MAAMC,mDACTC,+BAA+B,oBAAoB,CAAC;IAChD,gBAAgBb;IAChB,cAAc;QAACc;QAA6BC;KAA6B;AAC7E"}
1
+ {"version":3,"file":"features/CancelScheduledActionOnChange/CancelScheduledActionOnPageUnpublishEventHandler.js","sources":["../../../src/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageUnpublishEventHandler.ts"],"sourcesContent":["import { PageAfterUnpublishEventHandler } from \"@webiny/api-website-builder/exports/api/website-builder/page.js\";\nimport {\n CancelScheduledActionUseCase,\n ListScheduledActionsUseCase,\n ScheduledActionTypeUnpublish\n} from \"@webiny/api-scheduler/exports/api/scheduler.js\";\nimport { Logger } from \"@webiny/api-core/features/logger/index.js\";\nimport { createNamespace } from \"~/utils/namespace.js\";\nimport { SCHEDULED_ACTION_TYPE_PAGE } from \"~/constants.js\";\n\n/**\n * Cancels scheduled \"unpublish\" when a page is manually unpublished.\n *\n * When a user manually unpublishes a page, any scheduled unpublish\n * action for that page should be canceled since the manual action\n * takes precedence.\n */\nclass CancelScheduledActionOnUnpublishHandlerImpl\n implements PageAfterUnpublishEventHandler.Interface\n{\n constructor(\n private listScheduledActions: ListScheduledActionsUseCase.Interface,\n private cancelScheduledAction: CancelScheduledActionUseCase.Interface,\n private logger: Logger.Interface\n ) {}\n\n async handle(event: PageAfterUnpublishEventHandler.Event): Promise<void> {\n const { page } = event.payload;\n\n const actionsResult = await this.listScheduledActions.execute({\n where: {\n namespace: createNamespace(SCHEDULED_ACTION_TYPE_PAGE),\n actionType: ScheduledActionTypeUnpublish,\n targetId: page.id\n }\n });\n\n if (actionsResult.isFail()) {\n this.logger.error(\n { error: actionsResult.error },\n \"Could not list scheduled actions to cancel.\"\n );\n return;\n }\n\n const actions = actionsResult.value.items;\n\n for (const action of actions) {\n const cancelRes = await this.cancelScheduledAction.execute(action);\n if (cancelRes.isFail()) {\n // Silently ignore errors - this is non-critical cleanup.\n // Page was unpublished successfully, cancelling scheduled actions is best-effort.\n }\n }\n }\n}\n\nexport const CancelScheduledActionOnPageUnpublishEventHandler =\n PageAfterUnpublishEventHandler.createImplementation({\n implementation: CancelScheduledActionOnUnpublishHandlerImpl,\n dependencies: [ListScheduledActionsUseCase, CancelScheduledActionUseCase, Logger]\n });\n"],"names":["CancelScheduledActionOnUnpublishHandlerImpl","listScheduledActions","cancelScheduledAction","logger","event","page","actionsResult","createNamespace","SCHEDULED_ACTION_TYPE_PAGE","ScheduledActionTypeUnpublish","actions","action","cancelRes","CancelScheduledActionOnPageUnpublishEventHandler","PageAfterUnpublishEventHandler","ListScheduledActionsUseCase","CancelScheduledActionUseCase","Logger"],"mappings":";;;;;AAiBA,MAAMA;IAGF,YACYC,oBAA2D,EAC3DC,qBAA6D,EAC7DC,MAAwB,CAClC;aAHUF,oBAAoB,GAApBA;aACAC,qBAAqB,GAArBA;aACAC,MAAM,GAANA;IACT;IAEH,MAAM,OAAOC,KAA2C,EAAiB;QACrE,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAE9B,MAAME,gBAAgB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;YAC1D,OAAO;gBACH,WAAWC,gBAAgBC;gBAC3B,YAAYC;gBACZ,UAAUJ,KAAK,EAAE;YACrB;QACJ;QAEA,IAAIC,cAAc,MAAM,IAAI,YACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CACb;YAAE,OAAOA,cAAc,KAAK;QAAC,GAC7B;QAKR,MAAMI,UAAUJ,cAAc,KAAK,CAAC,KAAK;QAEzC,KAAK,MAAMK,UAAUD,QAAS;YAC1B,MAAME,YAAY,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAACD;YACvDC,UAAU,MAAM;QAIxB;IACJ;AACJ;AAEO,MAAMC,mDACTC,+BAA+B,oBAAoB,CAAC;IAChD,gBAAgBd;IAChB,cAAc;QAACe;QAA6BC;QAA8BC;KAAO;AACrF"}
@@ -1,5 +1,6 @@
1
1
  import { RedirectAfterDeleteEventHandler } from "@webiny/api-website-builder/exports/api/website-builder/redirect.js";
2
2
  import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webiny/api-scheduler/exports/api/scheduler.js";
3
+ import { Logger } from "@webiny/api-core/features/logger/index.js";
3
4
  /**
4
5
  * Cancels scheduled actions when a redirect is deleted.
5
6
  *
@@ -10,7 +11,8 @@ import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webi
10
11
  declare class CancelScheduledActionOnRedirectDeleteHandlerImpl implements RedirectAfterDeleteEventHandler.Interface {
11
12
  private listScheduledActions;
12
13
  private cancelScheduledAction;
13
- constructor(listScheduledActions: ListScheduledActionsUseCase.Interface, cancelScheduledAction: CancelScheduledActionUseCase.Interface);
14
+ private logger;
15
+ constructor(listScheduledActions: ListScheduledActionsUseCase.Interface, cancelScheduledAction: CancelScheduledActionUseCase.Interface, logger: Logger.Interface);
14
16
  handle(event: RedirectAfterDeleteEventHandler.Event): Promise<void>;
15
17
  }
16
18
  export declare const CancelScheduledActionOnRedirectDeleteEventHandler: typeof CancelScheduledActionOnRedirectDeleteHandlerImpl & {
@@ -1,11 +1,13 @@
1
1
  import { RedirectAfterDeleteEventHandler } from "@webiny/api-website-builder/exports/api/website-builder/redirect.js";
2
2
  import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webiny/api-scheduler/exports/api/scheduler.js";
3
+ import { Logger } from "@webiny/api-core/features/logger/index.js";
3
4
  import { createNamespace } from "../../utils/namespace.js";
4
5
  import { SCHEDULED_ACTION_TYPE_REDIRECT } from "../../constants.js";
5
6
  class CancelScheduledActionOnRedirectDeleteHandlerImpl {
6
- constructor(listScheduledActions, cancelScheduledAction){
7
+ constructor(listScheduledActions, cancelScheduledAction, logger){
7
8
  this.listScheduledActions = listScheduledActions;
8
9
  this.cancelScheduledAction = cancelScheduledAction;
10
+ this.logger = logger;
9
11
  }
10
12
  async handle(event) {
11
13
  const { redirect } = event.payload;
@@ -15,6 +17,9 @@ class CancelScheduledActionOnRedirectDeleteHandlerImpl {
15
17
  targetId: redirect.id
16
18
  }
17
19
  });
20
+ if (actionsResult.isFail()) return void this.logger.error({
21
+ error: actionsResult.error
22
+ }, "Could not list scheduled actions to cancel.");
18
23
  const actions = actionsResult.value.items;
19
24
  for (const action of actions){
20
25
  const cancelRes = await this.cancelScheduledAction.execute(action);
@@ -26,7 +31,8 @@ const CancelScheduledActionOnRedirectDeleteEventHandler = RedirectAfterDeleteEve
26
31
  implementation: CancelScheduledActionOnRedirectDeleteHandlerImpl,
27
32
  dependencies: [
28
33
  ListScheduledActionsUseCase,
29
- CancelScheduledActionUseCase
34
+ CancelScheduledActionUseCase,
35
+ Logger
30
36
  ]
31
37
  });
32
38
  export { CancelScheduledActionOnRedirectDeleteEventHandler };
@@ -1 +1 @@
1
- {"version":3,"file":"features/CancelScheduledActionOnChange/CancelScheduledActionOnRedirectDeleteEventHandler.js","sources":["../../../src/features/CancelScheduledActionOnChange/CancelScheduledActionOnRedirectDeleteEventHandler.ts"],"sourcesContent":["import { RedirectAfterDeleteEventHandler } from \"@webiny/api-website-builder/exports/api/website-builder/redirect.js\";\nimport {\n CancelScheduledActionUseCase,\n ListScheduledActionsUseCase\n} from \"@webiny/api-scheduler/exports/api/scheduler.js\";\nimport { createNamespace } from \"~/utils/namespace.js\";\nimport { SCHEDULED_ACTION_TYPE_REDIRECT } from \"~/constants.js\";\n\n/**\n * Cancels scheduled actions when a redirect is deleted.\n *\n * When a user deletes a redirect, any scheduled publish/unpublish\n * actions for that redirect should be canceled since the redirect\n * no longer exists.\n */\nclass CancelScheduledActionOnRedirectDeleteHandlerImpl\n implements RedirectAfterDeleteEventHandler.Interface\n{\n constructor(\n private listScheduledActions: ListScheduledActionsUseCase.Interface,\n private cancelScheduledAction: CancelScheduledActionUseCase.Interface\n ) {}\n\n async handle(event: RedirectAfterDeleteEventHandler.Event): Promise<void> {\n const { redirect } = event.payload;\n\n const actionsResult = await this.listScheduledActions.execute({\n where: {\n namespace: createNamespace(SCHEDULED_ACTION_TYPE_REDIRECT),\n targetId: redirect.id\n }\n });\n\n const actions = actionsResult.value.items;\n\n for (const action of actions) {\n const cancelRes = await this.cancelScheduledAction.execute(action);\n if (cancelRes.isFail()) {\n // Silently ignore errors - this is non-critical cleanup.\n // The redirect was deleted successfully, cancelling scheduled actions is best-effort.\n }\n }\n }\n}\n\nexport const CancelScheduledActionOnRedirectDeleteEventHandler =\n RedirectAfterDeleteEventHandler.createImplementation({\n implementation: CancelScheduledActionOnRedirectDeleteHandlerImpl,\n dependencies: [ListScheduledActionsUseCase, CancelScheduledActionUseCase]\n });\n"],"names":["CancelScheduledActionOnRedirectDeleteHandlerImpl","listScheduledActions","cancelScheduledAction","event","redirect","actionsResult","createNamespace","SCHEDULED_ACTION_TYPE_REDIRECT","actions","action","cancelRes","CancelScheduledActionOnRedirectDeleteEventHandler","RedirectAfterDeleteEventHandler","ListScheduledActionsUseCase","CancelScheduledActionUseCase"],"mappings":";;;;AAeA,MAAMA;IAGF,YACYC,oBAA2D,EAC3DC,qBAA6D,CACvE;aAFUD,oBAAoB,GAApBA;aACAC,qBAAqB,GAArBA;IACT;IAEH,MAAM,OAAOC,KAA4C,EAAiB;QACtE,MAAM,EAAEC,QAAQ,EAAE,GAAGD,MAAM,OAAO;QAElC,MAAME,gBAAgB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;YAC1D,OAAO;gBACH,WAAWC,gBAAgBC;gBAC3B,UAAUH,SAAS,EAAE;YACzB;QACJ;QAEA,MAAMI,UAAUH,cAAc,KAAK,CAAC,KAAK;QAEzC,KAAK,MAAMI,UAAUD,QAAS;YAC1B,MAAME,YAAY,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAACD;YACvDC,UAAU,MAAM;QAIxB;IACJ;AACJ;AAEO,MAAMC,oDACTC,gCAAgC,oBAAoB,CAAC;IACjD,gBAAgBZ;IAChB,cAAc;QAACa;QAA6BC;KAA6B;AAC7E"}
1
+ {"version":3,"file":"features/CancelScheduledActionOnChange/CancelScheduledActionOnRedirectDeleteEventHandler.js","sources":["../../../src/features/CancelScheduledActionOnChange/CancelScheduledActionOnRedirectDeleteEventHandler.ts"],"sourcesContent":["import { RedirectAfterDeleteEventHandler } from \"@webiny/api-website-builder/exports/api/website-builder/redirect.js\";\nimport {\n CancelScheduledActionUseCase,\n ListScheduledActionsUseCase\n} from \"@webiny/api-scheduler/exports/api/scheduler.js\";\nimport { Logger } from \"@webiny/api-core/features/logger/index.js\";\nimport { createNamespace } from \"~/utils/namespace.js\";\nimport { SCHEDULED_ACTION_TYPE_REDIRECT } from \"~/constants.js\";\n\n/**\n * Cancels scheduled actions when a redirect is deleted.\n *\n * When a user deletes a redirect, any scheduled publish/unpublish\n * actions for that redirect should be canceled since the redirect\n * no longer exists.\n */\nclass CancelScheduledActionOnRedirectDeleteHandlerImpl\n implements RedirectAfterDeleteEventHandler.Interface\n{\n constructor(\n private listScheduledActions: ListScheduledActionsUseCase.Interface,\n private cancelScheduledAction: CancelScheduledActionUseCase.Interface,\n private logger: Logger.Interface\n ) {}\n\n async handle(event: RedirectAfterDeleteEventHandler.Event): Promise<void> {\n const { redirect } = event.payload;\n\n const actionsResult = await this.listScheduledActions.execute({\n where: {\n namespace: createNamespace(SCHEDULED_ACTION_TYPE_REDIRECT),\n targetId: redirect.id\n }\n });\n\n if (actionsResult.isFail()) {\n this.logger.error(\n { error: actionsResult.error },\n \"Could not list scheduled actions to cancel.\"\n );\n return;\n }\n\n const actions = actionsResult.value.items;\n\n for (const action of actions) {\n const cancelRes = await this.cancelScheduledAction.execute(action);\n if (cancelRes.isFail()) {\n // Silently ignore errors - this is non-critical cleanup.\n // The redirect was deleted successfully, cancelling scheduled actions is best-effort.\n }\n }\n }\n}\n\nexport const CancelScheduledActionOnRedirectDeleteEventHandler =\n RedirectAfterDeleteEventHandler.createImplementation({\n implementation: CancelScheduledActionOnRedirectDeleteHandlerImpl,\n dependencies: [ListScheduledActionsUseCase, CancelScheduledActionUseCase, Logger]\n });\n"],"names":["CancelScheduledActionOnRedirectDeleteHandlerImpl","listScheduledActions","cancelScheduledAction","logger","event","redirect","actionsResult","createNamespace","SCHEDULED_ACTION_TYPE_REDIRECT","actions","action","cancelRes","CancelScheduledActionOnRedirectDeleteEventHandler","RedirectAfterDeleteEventHandler","ListScheduledActionsUseCase","CancelScheduledActionUseCase","Logger"],"mappings":";;;;;AAgBA,MAAMA;IAGF,YACYC,oBAA2D,EAC3DC,qBAA6D,EAC7DC,MAAwB,CAClC;aAHUF,oBAAoB,GAApBA;aACAC,qBAAqB,GAArBA;aACAC,MAAM,GAANA;IACT;IAEH,MAAM,OAAOC,KAA4C,EAAiB;QACtE,MAAM,EAAEC,QAAQ,EAAE,GAAGD,MAAM,OAAO;QAElC,MAAME,gBAAgB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;YAC1D,OAAO;gBACH,WAAWC,gBAAgBC;gBAC3B,UAAUH,SAAS,EAAE;YACzB;QACJ;QAEA,IAAIC,cAAc,MAAM,IAAI,YACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CACb;YAAE,OAAOA,cAAc,KAAK;QAAC,GAC7B;QAKR,MAAMG,UAAUH,cAAc,KAAK,CAAC,KAAK;QAEzC,KAAK,MAAMI,UAAUD,QAAS;YAC1B,MAAME,YAAY,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAACD;YACvDC,UAAU,MAAM;QAIxB;IACJ;AACJ;AAEO,MAAMC,oDACTC,gCAAgC,oBAAoB,CAAC;IACjD,gBAAgBb;IAChB,cAAc;QAACc;QAA6BC;QAA8BC;KAAO;AACrF"}
@@ -15,7 +15,7 @@ class PublishPageActionHandlerImpl {
15
15
  });
16
16
  if (result.isFail()) {
17
17
  console.error(`Failed to publish page "${action.targetId}":`, result.error);
18
- throw new Error(`Failed to publish page: ${action.targetId}`);
18
+ throw result.error;
19
19
  }
20
20
  }
21
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"features/PublishActionHandler/PublishPageActionHandler.js","sources":["../../../src/features/PublishActionHandler/PublishPageActionHandler.ts"],"sourcesContent":["import {\n ScheduledActionHandler,\n ScheduledActionType,\n type IScheduledAction,\n ScheduledActionTypePublish\n} from \"@webiny/api-scheduler/exports/api/scheduler.js\";\nimport { PublishPageUseCase } 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\";\n\n/**\n * Handles the scheduled \"publish\" action for Website Builder pages.\n */\nclass PublishPageActionHandlerImpl implements ScheduledActionHandler.Interface {\n constructor(private publishPageUseCase: PublishPageUseCase.Interface) {}\n\n public canHandle(namespace: string, actionType: ScheduledActionType): boolean {\n return (\n extractModelIdFromNamespace(namespace) === SCHEDULED_ACTION_TYPE_PAGE &&\n actionType === ScheduledActionTypePublish\n );\n }\n\n public async handle(action: IScheduledAction<IScheduledActionPayload>): Promise<void> {\n const result = await this.publishPageUseCase.execute({ id: action.targetId });\n if (result.isFail()) {\n console.error(`Failed to publish page \"${action.targetId}\":`, result.error);\n throw new Error(`Failed to publish page: ${action.targetId}`);\n }\n }\n}\n\nexport const PublishPageActionHandler = ScheduledActionHandler.createImplementation({\n implementation: PublishPageActionHandlerImpl,\n dependencies: [PublishPageUseCase]\n});\n"],"names":["PublishPageActionHandlerImpl","publishPageUseCase","namespace","actionType","extractModelIdFromNamespace","SCHEDULED_ACTION_TYPE_PAGE","ScheduledActionTypePublish","action","result","console","Error","PublishPageActionHandler","ScheduledActionHandler","PublishPageUseCase"],"mappings":";;;;AAcA,MAAMA;IACF,YAAoBC,kBAAgD,CAAE;aAAlDA,kBAAkB,GAAlBA;IAAmD;IAEhE,UAAUC,SAAiB,EAAEC,UAA+B,EAAW;QAC1E,OACIC,4BAA4BF,eAAeG,8BAC3CF,eAAeG;IAEvB;IAEA,MAAa,OAAOC,MAAiD,EAAiB;QAClF,MAAMC,SAAS,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;YAAE,IAAID,OAAO,QAAQ;QAAC;QAC3E,IAAIC,OAAO,MAAM,IAAI;YACjBC,QAAQ,KAAK,CAAC,CAAC,wBAAwB,EAAEF,OAAO,QAAQ,CAAC,EAAE,CAAC,EAAEC,OAAO,KAAK;YAC1E,MAAM,IAAIE,MAAM,CAAC,wBAAwB,EAAEH,OAAO,QAAQ,EAAE;QAChE;IACJ;AACJ;AAEO,MAAMI,2BAA2BC,uBAAuB,oBAAoB,CAAC;IAChF,gBAAgBZ;IAChB,cAAc;QAACa;KAAmB;AACtC"}
1
+ {"version":3,"file":"features/PublishActionHandler/PublishPageActionHandler.js","sources":["../../../src/features/PublishActionHandler/PublishPageActionHandler.ts"],"sourcesContent":["import {\n ScheduledActionHandler,\n ScheduledActionType,\n type IScheduledAction,\n ScheduledActionTypePublish\n} from \"@webiny/api-scheduler/exports/api/scheduler.js\";\nimport { PublishPageUseCase } 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\";\n\n/**\n * Handles the scheduled \"publish\" action for Website Builder pages.\n */\nclass PublishPageActionHandlerImpl implements ScheduledActionHandler.Interface {\n constructor(private publishPageUseCase: PublishPageUseCase.Interface) {}\n\n public canHandle(namespace: string, actionType: ScheduledActionType): boolean {\n return (\n extractModelIdFromNamespace(namespace) === SCHEDULED_ACTION_TYPE_PAGE &&\n actionType === ScheduledActionTypePublish\n );\n }\n\n public async handle(action: IScheduledAction<IScheduledActionPayload>): Promise<void> {\n const result = await this.publishPageUseCase.execute({ id: action.targetId });\n if (result.isFail()) {\n console.error(`Failed to publish page \"${action.targetId}\":`, result.error);\n // The use case's own error (code and data kept), so the scheduler records it as\n // `ExecutionFailedError.originalError` (R103).\n throw result.error;\n }\n }\n}\n\nexport const PublishPageActionHandler = ScheduledActionHandler.createImplementation({\n implementation: PublishPageActionHandlerImpl,\n dependencies: [PublishPageUseCase]\n});\n"],"names":["PublishPageActionHandlerImpl","publishPageUseCase","namespace","actionType","extractModelIdFromNamespace","SCHEDULED_ACTION_TYPE_PAGE","ScheduledActionTypePublish","action","result","console","PublishPageActionHandler","ScheduledActionHandler","PublishPageUseCase"],"mappings":";;;;AAcA,MAAMA;IACF,YAAoBC,kBAAgD,CAAE;aAAlDA,kBAAkB,GAAlBA;IAAmD;IAEhE,UAAUC,SAAiB,EAAEC,UAA+B,EAAW;QAC1E,OACIC,4BAA4BF,eAAeG,8BAC3CF,eAAeG;IAEvB;IAEA,MAAa,OAAOC,MAAiD,EAAiB;QAClF,MAAMC,SAAS,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;YAAE,IAAID,OAAO,QAAQ;QAAC;QAC3E,IAAIC,OAAO,MAAM,IAAI;YACjBC,QAAQ,KAAK,CAAC,CAAC,wBAAwB,EAAEF,OAAO,QAAQ,CAAC,EAAE,CAAC,EAAEC,OAAO,KAAK;YAG1E,MAAMA,OAAO,KAAK;QACtB;IACJ;AACJ;AAEO,MAAME,2BAA2BC,uBAAuB,oBAAoB,CAAC;IAChF,gBAAgBX;IAChB,cAAc;QAACY;KAAmB;AACtC"}
@@ -15,7 +15,7 @@ class UnpublishPageActionHandlerImpl {
15
15
  });
16
16
  if (result.isFail()) {
17
17
  console.error(`Failed to unpublish page "${action.targetId}":`, result.error);
18
- throw new Error(`Failed to unpublish page: ${action.targetId}`);
18
+ throw result.error;
19
19
  }
20
20
  }
21
21
  }
@@ -1 +1 @@
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"}
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 // The use case's own error (code and data kept), so the scheduler records it as\n // `ExecutionFailedError.originalError` (R103).\n throw result.error;\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","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;YAG5E,MAAMA,OAAO,KAAK;QACtB;IACJ;AACJ;AAEO,MAAME,6BAA6BC,uBAAuB,oBAAoB,CAAC;IAClF,gBAAgBX;IAChB,cAAc;QAACY;KAAqB;AACxC"}
@@ -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
- import { ContextPlugin } from "@webiny/api";
2
- export declare const createWebsiteBuilderScheduler: () => ContextPlugin[];
1
+ export { WebsiteBuilderSchedulerFeature } from "./WebsiteBuilderSchedulerFeature.js";
package/index.js CHANGED
@@ -1,7 +1 @@
1
- import { createWebsiteBuilderScheduleContext } from "./context.js";
2
- const createWebsiteBuilderScheduler = ()=>[
3
- createWebsiteBuilderScheduleContext()
4
- ];
5
- export { createWebsiteBuilderScheduler };
6
-
7
- //# 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.9f53ea597d",
3
+ "version": "0.0.0-unstable.a85ef555b2",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -17,25 +17,22 @@
17
17
  },
18
18
  "license": "MIT",
19
19
  "dependencies": {
20
- "@webiny/api": "0.0.0-unstable.9f53ea597d",
21
- "@webiny/api-scheduler": "0.0.0-unstable.9f53ea597d",
22
- "@webiny/api-website-builder": "0.0.0-unstable.9f53ea597d",
23
- "@webiny/feature": "0.0.0-unstable.9f53ea597d",
24
- "@webiny/handler-graphql": "0.0.0-unstable.9f53ea597d"
20
+ "@webiny/api": "0.0.0-unstable.a85ef555b2",
21
+ "@webiny/api-scheduler": "0.0.0-unstable.a85ef555b2",
22
+ "@webiny/api-website-builder": "0.0.0-unstable.a85ef555b2",
23
+ "@webiny/feature": "0.0.0-unstable.a85ef555b2"
25
24
  },
26
25
  "devDependencies": {
27
- "@webiny/api-core": "0.0.0-unstable.9f53ea597d",
28
- "@webiny/api-headless-cms": "0.0.0-unstable.9f53ea597d",
29
- "@webiny/api-opensearch": "0.0.0-unstable.9f53ea597d",
30
- "@webiny/background-tasks": "0.0.0-unstable.9f53ea597d",
31
- "@webiny/build-tools": "0.0.0-unstable.9f53ea597d",
32
- "@webiny/handler": "0.0.0-unstable.9f53ea597d",
33
- "@webiny/handler-aws": "0.0.0-unstable.9f53ea597d",
34
- "@webiny/plugins": "0.0.0-unstable.9f53ea597d",
35
- "@webiny/project-utils": "0.0.0-unstable.9f53ea597d",
36
- "@webiny/wcp": "0.0.0-unstable.9f53ea597d",
26
+ "@webiny/api-core": "0.0.0-unstable.a85ef555b2",
27
+ "@webiny/api-headless-cms": "0.0.0-unstable.a85ef555b2",
28
+ "@webiny/api-headless-cms-testing": "0.0.0-unstable.a85ef555b2",
29
+ "@webiny/api-opensearch": "0.0.0-unstable.a85ef555b2",
30
+ "@webiny/background-tasks": "0.0.0-unstable.a85ef555b2",
31
+ "@webiny/build-tools": "0.0.0-unstable.a85ef555b2",
32
+ "@webiny/di": "2.0.0",
33
+ "@webiny/wcp": "0.0.0-unstable.a85ef555b2",
37
34
  "typescript": "7.0.2",
38
- "vitest": "4.1.10"
35
+ "vitest": "4.1.11"
39
36
  },
40
37
  "publishConfig": {
41
38
  "access": "public"
package/context.d.ts DELETED
@@ -1,2 +0,0 @@
1
- import { ContextPlugin } from "@webiny/api";
2
- export declare const createWebsiteBuilderScheduleContext: () => ContextPlugin<import("@webiny/api/types").Context>;
package/context.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sources":["../src/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"],"names":["createWebsiteBuilderScheduleContext","ContextPlugin","context","PageNamespaceHandler","RedirectNamespaceHandler","PublishPageActionHandler","PublishRedirectActionHandler","UnpublishPageActionHandler","UnpublishRedirectActionHandler","SchedulePublishPageUseCase","ScheduleUnpublishPageUseCase","SchedulePublishRedirectUseCase","ScheduleUnpublishRedirectUseCase","CancelScheduledActionOnChangeFeature"],"mappings":";;;;;;;;;;;;AAaO,MAAMA,sCAAsC,IACxC,IAAIC,cAAc,OAAMC;QAC3BA,QAAQ,SAAS,CAAC,QAAQ,CAACC;QAC3BD,QAAQ,SAAS,CAAC,QAAQ,CAACE;QAC3BF,QAAQ,SAAS,CAAC,QAAQ,CAACG;QAC3BH,QAAQ,SAAS,CAAC,QAAQ,CAACI;QAC3BJ,QAAQ,SAAS,CAAC,QAAQ,CAACK;QAC3BL,QAAQ,SAAS,CAAC,QAAQ,CAACM;QAC3BN,QAAQ,SAAS,CAAC,QAAQ,CAACO;QAC3BP,QAAQ,SAAS,CAAC,QAAQ,CAACQ;QAC3BR,QAAQ,SAAS,CAAC,QAAQ,CAACS;QAC3BT,QAAQ,SAAS,CAAC,QAAQ,CAACU;QAE3BC,qCAAqC,QAAQ,CAACX,QAAQ,SAAS;IACnE"}
package/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { createWebsiteBuilderScheduleContext } from \"~/context.js\";\nimport { ContextPlugin } from \"@webiny/api\";\n\nexport const createWebsiteBuilderScheduler = (): ContextPlugin[] => {\n return [createWebsiteBuilderScheduleContext()];\n};\n"],"names":["createWebsiteBuilderScheduler","createWebsiteBuilderScheduleContext"],"mappings":";AAGO,MAAMA,gCAAgC,IAClC;QAACC;KAAsC"}