@webiny/api-headless-cms-scheduler 6.0.0-alpha.5 → 6.0.0-rc.1

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 (133) hide show
  1. package/README.md +11 -15
  2. package/context.d.ts +2 -7
  3. package/context.js +9 -64
  4. package/context.js.map +1 -1
  5. package/features/CancelScheduledActionOnEntryChange/CancelScheduledActionOnEntryDeleteEventHandler.d.ts +20 -0
  6. package/features/CancelScheduledActionOnEntryChange/CancelScheduledActionOnEntryDeleteEventHandler.js +51 -0
  7. package/features/CancelScheduledActionOnEntryChange/CancelScheduledActionOnEntryDeleteEventHandler.js.map +1 -0
  8. package/features/CancelScheduledActionOnEntryChange/CancelScheduledActionOnPublishEventHandler.d.ts +19 -0
  9. package/features/CancelScheduledActionOnEntryChange/CancelScheduledActionOnPublishEventHandler.js +48 -0
  10. package/features/CancelScheduledActionOnEntryChange/CancelScheduledActionOnPublishEventHandler.js.map +1 -0
  11. package/features/CancelScheduledActionOnEntryChange/CancelScheduledActionOnRevisionDeleteEventHandler.d.ts +19 -0
  12. package/features/CancelScheduledActionOnEntryChange/CancelScheduledActionOnRevisionDeleteEventHandler.js +47 -0
  13. package/features/CancelScheduledActionOnEntryChange/CancelScheduledActionOnRevisionDeleteEventHandler.js.map +1 -0
  14. package/features/CancelScheduledActionOnEntryChange/CancelScheduledActionOnUnpublishEventHandler.d.ts +19 -0
  15. package/features/CancelScheduledActionOnEntryChange/CancelScheduledActionOnUnpublishEventHandler.js +48 -0
  16. package/features/CancelScheduledActionOnEntryChange/CancelScheduledActionOnUnpublishEventHandler.js.map +1 -0
  17. package/features/CancelScheduledActionOnEntryChange/feature.d.ts +8 -0
  18. package/features/CancelScheduledActionOnEntryChange/feature.js +24 -0
  19. package/features/CancelScheduledActionOnEntryChange/feature.js.map +1 -0
  20. package/features/CancelScheduledEntryAction/CancelScheduledEntryActionUseCase.d.ts +15 -0
  21. package/features/CancelScheduledEntryAction/CancelScheduledEntryActionUseCase.js +25 -0
  22. package/features/CancelScheduledEntryAction/CancelScheduledEntryActionUseCase.js.map +1 -0
  23. package/features/CancelScheduledEntryAction/abstractions.d.ts +22 -0
  24. package/features/CancelScheduledEntryAction/abstractions.js +11 -0
  25. package/features/CancelScheduledEntryAction/abstractions.js.map +1 -0
  26. package/features/CancelScheduledEntryAction/feature.d.ts +6 -0
  27. package/features/CancelScheduledEntryAction/feature.js +16 -0
  28. package/features/CancelScheduledEntryAction/feature.js.map +1 -0
  29. package/features/CancelScheduledEntryAction/index.d.ts +1 -0
  30. package/features/CancelScheduledEntryAction/index.js +3 -0
  31. package/features/CancelScheduledEntryAction/index.js.map +1 -0
  32. package/features/ScheduleEntryAction/ScheduleEntryActionUseCase.d.ts +27 -0
  33. package/features/ScheduleEntryAction/ScheduleEntryActionUseCase.js +83 -0
  34. package/features/ScheduleEntryAction/ScheduleEntryActionUseCase.js.map +1 -0
  35. package/features/ScheduleEntryAction/abstractions.d.ts +45 -0
  36. package/features/ScheduleEntryAction/abstractions.js +15 -0
  37. package/features/ScheduleEntryAction/abstractions.js.map +1 -0
  38. package/features/ScheduleEntryAction/actionHandlers/PublishEntryActionHandler.d.ts +35 -0
  39. package/features/ScheduleEntryAction/actionHandlers/PublishEntryActionHandler.js +109 -0
  40. package/features/ScheduleEntryAction/actionHandlers/PublishEntryActionHandler.js.map +1 -0
  41. package/features/ScheduleEntryAction/actionHandlers/UnpublishEntryActionHandler.d.ts +29 -0
  42. package/features/ScheduleEntryAction/actionHandlers/UnpublishEntryActionHandler.js +92 -0
  43. package/features/ScheduleEntryAction/actionHandlers/UnpublishEntryActionHandler.js.map +1 -0
  44. package/features/ScheduleEntryAction/feature.d.ts +7 -0
  45. package/features/ScheduleEntryAction/feature.js +21 -0
  46. package/features/ScheduleEntryAction/feature.js.map +1 -0
  47. package/features/ScheduleEntryAction/index.d.ts +1 -0
  48. package/features/ScheduleEntryAction/index.js +3 -0
  49. package/features/ScheduleEntryAction/index.js.map +1 -0
  50. package/graphql/ActionMapper.d.ts +15 -0
  51. package/graphql/ActionMapper.js +18 -0
  52. package/graphql/ActionMapper.js.map +1 -0
  53. package/{scheduler → graphql}/dates.d.ts +1 -2
  54. package/graphql/dates.js +9 -0
  55. package/graphql/dates.js.map +1 -0
  56. package/graphql/index.d.ts +2 -2
  57. package/graphql/index.js +113 -71
  58. package/graphql/index.js.map +1 -1
  59. package/graphql/schema.d.ts +93 -148
  60. package/graphql/schema.js +51 -55
  61. package/graphql/schema.js.map +1 -1
  62. package/index.d.ts +3 -7
  63. package/index.js +5 -22
  64. package/index.js.map +1 -1
  65. package/package.json +20 -22
  66. package/constants.d.ts +0 -11
  67. package/constants.js +0 -19
  68. package/constants.js.map +0 -1
  69. package/handler/Handler.d.ts +0 -23
  70. package/handler/Handler.js +0 -74
  71. package/handler/Handler.js.map +0 -1
  72. package/handler/actions/PublishHandlerAction.d.ts +0 -13
  73. package/handler/actions/PublishHandlerAction.js +0 -64
  74. package/handler/actions/PublishHandlerAction.js.map +0 -1
  75. package/handler/actions/UnpublishHandlerAction.d.ts +0 -13
  76. package/handler/actions/UnpublishHandlerAction.js +0 -53
  77. package/handler/actions/UnpublishHandlerAction.js.map +0 -1
  78. package/handler/index.d.ts +0 -7
  79. package/handler/index.js +0 -64
  80. package/handler/index.js.map +0 -1
  81. package/handler/types.d.ts +0 -5
  82. package/handler/types.js +0 -7
  83. package/handler/types.js.map +0 -1
  84. package/hooks/index.d.ts +0 -7
  85. package/hooks/index.js +0 -58
  86. package/hooks/index.js.map +0 -1
  87. package/manifest.d.ts +0 -17
  88. package/manifest.js +0 -47
  89. package/manifest.js.map +0 -1
  90. package/scheduler/ScheduleExecutor.d.ts +0 -16
  91. package/scheduler/ScheduleExecutor.js +0 -55
  92. package/scheduler/ScheduleExecutor.js.map +0 -1
  93. package/scheduler/ScheduleFetcher.d.ts +0 -16
  94. package/scheduler/ScheduleFetcher.js +0 -51
  95. package/scheduler/ScheduleFetcher.js.map +0 -1
  96. package/scheduler/ScheduleRecord.d.ts +0 -31
  97. package/scheduler/ScheduleRecord.js +0 -57
  98. package/scheduler/ScheduleRecord.js.map +0 -1
  99. package/scheduler/Scheduler.d.ts +0 -14
  100. package/scheduler/Scheduler.js +0 -27
  101. package/scheduler/Scheduler.js.map +0 -1
  102. package/scheduler/actions/PublishScheduleAction.d.ts +0 -26
  103. package/scheduler/actions/PublishScheduleAction.js +0 -196
  104. package/scheduler/actions/PublishScheduleAction.js.map +0 -1
  105. package/scheduler/actions/UnpublishScheduleAction.d.ts +0 -26
  106. package/scheduler/actions/UnpublishScheduleAction.js +0 -194
  107. package/scheduler/actions/UnpublishScheduleAction.js.map +0 -1
  108. package/scheduler/createScheduleRecordId.d.ts +0 -2
  109. package/scheduler/createScheduleRecordId.js +0 -33
  110. package/scheduler/createScheduleRecordId.js.map +0 -1
  111. package/scheduler/createScheduler.d.ts +0 -12
  112. package/scheduler/createScheduler.js +0 -65
  113. package/scheduler/createScheduler.js.map +0 -1
  114. package/scheduler/dates.js +0 -27
  115. package/scheduler/dates.js.map +0 -1
  116. package/scheduler/model.d.ts +0 -1
  117. package/scheduler/model.js +0 -88
  118. package/scheduler/model.js.map +0 -1
  119. package/scheduler/types.d.ts +0 -88
  120. package/scheduler/types.js +0 -19
  121. package/scheduler/types.js.map +0 -1
  122. package/service/SchedulerService.d.ts +0 -23
  123. package/service/SchedulerService.js +0 -151
  124. package/service/SchedulerService.js.map +0 -1
  125. package/service/types.d.ts +0 -19
  126. package/service/types.js +0 -7
  127. package/service/types.js.map +0 -1
  128. package/types.d.ts +0 -11
  129. package/types.js +0 -7
  130. package/types.js.map +0 -1
  131. package/utils/dateInTheFuture.d.ts +0 -6
  132. package/utils/dateInTheFuture.js +0 -19
  133. package/utils/dateInTheFuture.js.map +0 -1
@@ -1,7 +1,6 @@
1
- import type { DateISOString } from "./types.js";
1
+ export type DateISOString = `${number}-${number}-${number}T${number}:${number}:${number}.${number}Z`;
2
2
  /**
3
3
  * We can safely cast the result of `toISOString()` to `DateISOString` type,
4
4
  * We need this to ensure that no malformed date strings are used in the scheduler.
5
5
  */
6
6
  export declare const dateToISOString: (value: Date) => DateISOString;
7
- export declare const isoStringToDate: (value: DateISOString | undefined) => Date | undefined;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * We can safely cast the result of `toISOString()` to `DateISOString` type,
3
+ * We need this to ensure that no malformed date strings are used in the scheduler.
4
+ */
5
+ export const dateToISOString = value => {
6
+ return value.toISOString();
7
+ };
8
+
9
+ //# sourceMappingURL=dates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["dateToISOString","value","toISOString"],"sources":["dates.ts"],"sourcesContent":["export type DateISOString =\n `${number}-${number}-${number}T${number}:${number}:${number}.${number}Z`;\n\n/**\n * We can safely cast the result of `toISOString()` to `DateISOString` type,\n * We need this to ensure that no malformed date strings are used in the scheduler.\n */\nexport const dateToISOString = (value: Date): DateISOString => {\n return value.toISOString() as DateISOString;\n};\n"],"mappings":"AAGA;AACA;AACA;AACA;AACA,OAAO,MAAMA,eAAe,GAAIC,KAAW,IAAoB;EAC3D,OAAOA,KAAK,CAACC,WAAW,CAAC,CAAC;AAC9B,CAAC","ignoreList":[]}
@@ -1,3 +1,3 @@
1
1
  import { CmsGraphQLSchemaPlugin } from "@webiny/api-headless-cms/plugins/index.js";
2
- import type { ScheduleContext } from "../types.js";
3
- export declare const createSchedulerGraphQL: () => CmsGraphQLSchemaPlugin<ScheduleContext>;
2
+ import type { CmsContext } from "@webiny/api-headless-cms/types/index.js";
3
+ export declare const createSchedulerGraphQL: () => CmsGraphQLSchemaPlugin<CmsContext>;
package/graphql/index.js CHANGED
@@ -1,37 +1,33 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createSchedulerGraphQL = void 0;
7
- var _index = require("@webiny/api-headless-cms/plugins/index.js");
8
- var _handlerGraphql = require("@webiny/handler-graphql");
9
- var _schema = require("./schema.js");
10
- var _utils = require("@webiny/utils");
1
+ import { CmsGraphQLSchemaPlugin } from "@webiny/api-headless-cms/plugins/index.js";
2
+ import { ErrorResponse, ListErrorResponse, ListResponse, Response } from "@webiny/handler-graphql";
3
+ import { cancelScheduleSchema, createScheduleSchema, getScheduleSchema, listScheduleSchema, updateScheduleSchema } from "./schema.js";
4
+ import { createZodError } from "@webiny/utils";
5
+ import { ListScheduledActionsUseCase } from "@webiny/api-scheduler/features/ListScheduledActions";
6
+ import { ScheduleEntryActionUseCase } from "../features/ScheduleEntryAction/index.js";
7
+ import { CancelScheduledEntryActionUseCase } from "../features/CancelScheduledEntryAction/index.js";
8
+ import { ActionMapper } from "./ActionMapper.js";
9
+ const typeMap = {
10
+ publish: "Publish",
11
+ unpublish: "Unpublish"
12
+ };
11
13
  const resolve = async cb => {
12
14
  try {
13
15
  const result = await cb();
14
- return new _handlerGraphql.Response(result);
16
+ return new Response(result);
15
17
  } catch (ex) {
16
- return new _handlerGraphql.ErrorResponse(ex);
18
+ return new ErrorResponse(ex);
17
19
  }
18
20
  };
19
21
  const resolveList = async cb => {
20
22
  try {
21
23
  const result = await cb();
22
- return new _handlerGraphql.ListResponse(result.data, result.meta);
24
+ return new ListResponse(result.data, result.meta);
23
25
  } catch (ex) {
24
- return new _handlerGraphql.ListErrorResponse(ex);
26
+ return new ListErrorResponse(ex);
25
27
  }
26
28
  };
27
- const createSchedulerGraphQL = () => {
28
- return new _index.CmsGraphQLSchemaPlugin({
29
- /**
30
- * Make sure scheduler is available. No point in adding GraphQL if scheduler is unavailable for any reason.
31
- */
32
- isApplicable: context => {
33
- return !!context.cms?.scheduler;
34
- },
29
+ export const createSchedulerGraphQL = () => {
30
+ return new CmsGraphQLSchemaPlugin({
35
31
  typeDefs: /* GraphQL */`
36
32
  enum CmsScheduleRecordType {
37
33
  publish
@@ -59,23 +55,11 @@ const createSchedulerGraphQL = () => {
59
55
  meta: CmsListMeta
60
56
  }
61
57
 
62
- input CmsCreateScheduleInput {
63
- immediately: Boolean
64
- scheduleOn: DateTime
65
- type: CmsScheduleRecordType!
66
- }
67
-
68
58
  type CmsCreateScheduleResponse {
69
59
  data: CmsScheduleRecord
70
60
  error: CmsError
71
61
  }
72
62
 
73
- input CmsUpdateScheduleInput {
74
- immediately: Boolean
75
- scheduleOn: DateTime
76
- type: CmsScheduleRecordType!
77
- }
78
-
79
63
  type CmsUpdateScheduleResponse {
80
64
  data: CmsScheduleRecord
81
65
  error: CmsError
@@ -90,19 +74,18 @@ const createSchedulerGraphQL = () => {
90
74
  targetId: ID
91
75
  title_contains: String
92
76
  title_not_contains: String
93
- targetEntryId: ID
94
77
  type: CmsScheduleRecordType
95
78
  scheduledBy: ID
96
- scheduledOn: DateTime
97
- scheduledOn_gte: DateTime
98
- scheduledOn_lte: DateTime
79
+ scheduledFor: DateTime
80
+ scheduledFor_gte: DateTime
81
+ scheduledFor_lte: DateTime
99
82
  }
100
83
 
101
84
  enum CmsListSchedulesSorter {
102
85
  title_ASC
103
86
  title_DESC
104
- scheduledOn_ASC
105
- scheduledOn_DESC
87
+ scheduledFor_ASC
88
+ scheduledFor_DESC
106
89
  }
107
90
 
108
91
  extend type Query {
@@ -120,12 +103,16 @@ const createSchedulerGraphQL = () => {
120
103
  createCmsSchedule(
121
104
  modelId: String!
122
105
  id: ID!
123
- input: CmsCreateScheduleInput!
106
+ immediately: Boolean
107
+ scheduleFor: DateTime
108
+ type: CmsScheduleRecordType!
124
109
  ): CmsCreateScheduleResponse!
125
110
  updateCmsSchedule(
126
111
  modelId: String!
127
112
  id: ID!
128
- input: CmsUpdateScheduleInput!
113
+ immediately: Boolean
114
+ scheduleFor: DateTime
115
+ type: CmsScheduleRecordType!
129
116
  ): CmsUpdateScheduleResponse!
130
117
  cancelCmsSchedule(modelId: String!, id: ID!): CmsCancelScheduleResponse!
131
118
  }
@@ -134,64 +121,120 @@ const createSchedulerGraphQL = () => {
134
121
  Query: {
135
122
  async getCmsSchedule(_, args, context) {
136
123
  return resolve(async () => {
137
- const validated = await _schema.getScheduleSchema.safeParseAsync(args);
124
+ const validated = await getScheduleSchema.safeParseAsync(args);
138
125
  if (validated.error) {
139
- throw (0, _utils.createZodError)(validated.error);
140
- }
141
- const model = await context.cms.getModel(validated.data.modelId);
142
- const scheduler = context.cms.scheduler(model);
143
- return scheduler.getScheduled(validated.data.id);
126
+ throw createZodError(validated.error);
127
+ }
128
+ const listActions = context.container.resolve(ListScheduledActionsUseCase);
129
+ const actions = await listActions.execute({
130
+ where: {
131
+ namespace: `Cms/Entry/${args.modelId}`,
132
+ targetId: args.id
133
+ }
134
+ });
135
+ if (actions.isFail()) {
136
+ return new ErrorResponse({
137
+ code: actions.error.code,
138
+ message: actions.error.message
139
+ });
140
+ }
141
+ const {
142
+ items
143
+ } = actions.value;
144
+ if (!items.length) {
145
+ return null;
146
+ }
147
+ return ActionMapper.fromScheduledAction(items[0]);
144
148
  });
145
149
  },
146
150
  async listCmsSchedules(_, args, context) {
147
151
  return resolveList(async () => {
148
- const validated = await _schema.listScheduleSchema.safeParseAsync(args);
152
+ const validated = await listScheduleSchema.safeParseAsync(args);
149
153
  if (validated.error) {
150
- throw (0, _utils.createZodError)(validated.error);
151
- }
152
- const model = await context.cms.getModel(validated.data.modelId);
153
- const scheduler = context.cms.scheduler(model);
154
- return scheduler.listScheduled({
155
- where: validated.data.where || {},
154
+ throw createZodError(validated.error);
155
+ }
156
+ const listActions = context.container.resolve(ListScheduledActionsUseCase);
157
+ const {
158
+ type,
159
+ ...where
160
+ } = validated.data.where ?? {};
161
+ if (type) {
162
+ // @ts-expect-error
163
+ where["actionType"] = typeMap[type];
164
+ }
165
+ const actions = await listActions.execute({
166
+ where: {
167
+ ...where,
168
+ namespace: `Cms/Entry/${args.modelId}`
169
+ },
156
170
  sort: validated.data.sort,
157
171
  limit: validated.data.limit,
158
172
  after: validated.data.after
159
173
  });
174
+ if (actions.isFail()) {
175
+ throw actions.error;
176
+ }
177
+ return {
178
+ data: actions.value.items.map(item => ActionMapper.fromScheduledAction(item)),
179
+ meta: actions.value.meta
180
+ };
160
181
  });
161
182
  }
162
183
  },
163
184
  Mutation: {
164
185
  async createCmsSchedule(_, args, context) {
165
186
  return resolve(async () => {
166
- const validated = await _schema.createScheduleSchema.safeParseAsync(args);
187
+ const validated = await createScheduleSchema.safeParseAsync(args);
167
188
  if (validated.error) {
168
- throw (0, _utils.createZodError)(validated.error);
189
+ throw createZodError(validated.error);
190
+ }
191
+ const data = validated.data;
192
+ const scheduleEntry = context.container.resolve(ScheduleEntryActionUseCase);
193
+ const result = await scheduleEntry.execute({
194
+ modelId: data.modelId,
195
+ targetId: data.id,
196
+ scheduleFor: data.scheduleFor?.toISOString(),
197
+ immediately: data.immediately,
198
+ actionType: typeMap[data.type]
199
+ });
200
+ if (result.isFail()) {
201
+ throw result.error;
169
202
  }
170
- const model = await context.cms.getModel(validated.data.modelId);
171
- const scheduler = context.cms.scheduler(model);
172
- return await scheduler.schedule(validated.data.id, validated.data.input);
203
+ return ActionMapper.fromScheduledAction(result.value);
173
204
  });
174
205
  },
175
206
  async updateCmsSchedule(_, args, context) {
176
207
  return resolve(async () => {
177
- const validated = await _schema.updateScheduleSchema.safeParseAsync(args);
208
+ const validated = await updateScheduleSchema.safeParseAsync(args);
178
209
  if (validated.error) {
179
- throw (0, _utils.createZodError)(validated.error);
210
+ throw createZodError(validated.error);
211
+ }
212
+ const data = validated.data;
213
+ const scheduleEntry = context.container.resolve(ScheduleEntryActionUseCase);
214
+ const result = await scheduleEntry.execute({
215
+ modelId: data.modelId,
216
+ targetId: data.id,
217
+ scheduleFor: data.scheduleFor?.toISOString(),
218
+ immediately: data.immediately,
219
+ actionType: typeMap[data.type]
220
+ });
221
+ if (result.isFail()) {
222
+ throw result.error;
180
223
  }
181
- const model = await context.cms.getModel(validated.data.modelId);
182
- const scheduler = context.cms.scheduler(model);
183
- return scheduler.schedule(validated.data.id, validated.data.input);
224
+ return ActionMapper.fromScheduledAction(result.value);
184
225
  });
185
226
  },
186
227
  async cancelCmsSchedule(_, args, context) {
187
228
  return resolve(async () => {
188
- const validated = await _schema.cancelScheduleSchema.safeParseAsync(args);
229
+ const validated = await cancelScheduleSchema.safeParseAsync(args);
189
230
  if (validated.error) {
190
- throw (0, _utils.createZodError)(validated.error);
231
+ throw createZodError(validated.error);
232
+ }
233
+ const cancelEntryAction = context.container.resolve(CancelScheduledEntryActionUseCase);
234
+ const res = await cancelEntryAction.execute(validated.data.id);
235
+ if (res.isFail()) {
236
+ throw res.error;
191
237
  }
192
- const model = await context.cms.getModel(validated.data.modelId);
193
- const scheduler = context.cms.scheduler(model);
194
- await scheduler.cancel(validated.data.id);
195
238
  return true;
196
239
  });
197
240
  }
@@ -199,6 +242,5 @@ const createSchedulerGraphQL = () => {
199
242
  }
200
243
  });
201
244
  };
202
- exports.createSchedulerGraphQL = createSchedulerGraphQL;
203
245
 
204
246
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_index","require","_handlerGraphql","_schema","_utils","resolve","cb","result","Response","ex","ErrorResponse","resolveList","ListResponse","data","meta","ListErrorResponse","createSchedulerGraphQL","CmsGraphQLSchemaPlugin","isApplicable","context","cms","scheduler","typeDefs","resolvers","Query","getCmsSchedule","_","args","validated","getScheduleSchema","safeParseAsync","error","createZodError","model","getModel","modelId","getScheduled","id","listCmsSchedules","listScheduleSchema","listScheduled","where","sort","limit","after","Mutation","createCmsSchedule","createScheduleSchema","schedule","input","updateCmsSchedule","updateScheduleSchema","cancelCmsSchedule","cancelScheduleSchema","cancel","exports"],"sources":["index.ts"],"sourcesContent":["import { CmsGraphQLSchemaPlugin } from \"@webiny/api-headless-cms/plugins/index.js\";\nimport type { ScheduleContext } from \"~/types.js\";\nimport { ErrorResponse, ListErrorResponse, ListResponse, Response } from \"@webiny/handler-graphql\";\nimport type { CmsEntryMeta } from \"@webiny/api-headless-cms/types/index.js\";\nimport {\n cancelScheduleSchema,\n createScheduleSchema,\n getScheduleSchema,\n listScheduleSchema,\n updateScheduleSchema\n} from \"~/graphql/schema.js\";\nimport { createZodError } from \"@webiny/utils\";\n\nconst resolve = async (cb: () => Promise<unknown>) => {\n try {\n const result = await cb();\n\n return new Response(result);\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n};\n\ninterface IResolveListCallableResponse {\n data: unknown[];\n meta: CmsEntryMeta;\n}\n\nconst resolveList = async (cb: () => Promise<IResolveListCallableResponse>) => {\n try {\n const result = await cb();\n\n return new ListResponse(result.data, result.meta);\n } catch (ex) {\n return new ListErrorResponse(ex);\n }\n};\n\nexport const createSchedulerGraphQL = () => {\n return new CmsGraphQLSchemaPlugin<ScheduleContext>({\n /**\n * Make sure scheduler is available. No point in adding GraphQL if scheduler is unavailable for any reason.\n */\n isApplicable: context => {\n return !!context.cms?.scheduler;\n },\n typeDefs: /* GraphQL */ `\n enum CmsScheduleRecordType {\n publish\n unpublish\n }\n type CmsScheduleRecord {\n id: String!\n targetId: String!\n model: CmsContentModel!\n scheduledBy: CmsIdentity!\n publishOn: DateTime\n unpublishOn: DateTime\n type: CmsScheduleRecordType!\n title: String!\n }\n\n type CmsGetScheduleResponse {\n data: CmsScheduleRecord\n error: CmsError\n }\n\n type CmsListSchedulesResponse {\n data: [CmsScheduleRecord!]\n error: CmsError\n meta: CmsListMeta\n }\n\n input CmsCreateScheduleInput {\n immediately: Boolean\n scheduleOn: DateTime\n type: CmsScheduleRecordType!\n }\n\n type CmsCreateScheduleResponse {\n data: CmsScheduleRecord\n error: CmsError\n }\n\n input CmsUpdateScheduleInput {\n immediately: Boolean\n scheduleOn: DateTime\n type: CmsScheduleRecordType!\n }\n\n type CmsUpdateScheduleResponse {\n data: CmsScheduleRecord\n error: CmsError\n }\n\n type CmsCancelScheduleResponse {\n data: Boolean\n error: CmsError\n }\n\n input CmsListSchedulesWhereInput {\n targetId: ID\n title_contains: String\n title_not_contains: String\n targetEntryId: ID\n type: CmsScheduleRecordType\n scheduledBy: ID\n scheduledOn: DateTime\n scheduledOn_gte: DateTime\n scheduledOn_lte: DateTime\n }\n\n enum CmsListSchedulesSorter {\n title_ASC\n title_DESC\n scheduledOn_ASC\n scheduledOn_DESC\n }\n\n extend type Query {\n getCmsSchedule(modelId: String!, id: ID!): CmsGetScheduleResponse!\n listCmsSchedules(\n modelId: String!\n where: CmsListSchedulesWhereInput\n sort: [CmsListSchedulesSorter!]\n limit: Int\n after: String\n ): CmsListSchedulesResponse!\n }\n\n extend type Mutation {\n createCmsSchedule(\n modelId: String!\n id: ID!\n input: CmsCreateScheduleInput!\n ): CmsCreateScheduleResponse!\n updateCmsSchedule(\n modelId: String!\n id: ID!\n input: CmsUpdateScheduleInput!\n ): CmsUpdateScheduleResponse!\n cancelCmsSchedule(modelId: String!, id: ID!): CmsCancelScheduleResponse!\n }\n `,\n resolvers: {\n Query: {\n async getCmsSchedule(_, args, context) {\n return resolve(async () => {\n const validated = await getScheduleSchema.safeParseAsync(args);\n if (validated.error) {\n throw createZodError(validated.error);\n }\n const model = await context.cms.getModel(validated.data.modelId);\n const scheduler = context.cms.scheduler(model);\n\n return scheduler.getScheduled(validated.data.id);\n });\n },\n async listCmsSchedules(_, args, context) {\n return resolveList(async () => {\n const validated = await listScheduleSchema.safeParseAsync(args);\n if (validated.error) {\n throw createZodError(validated.error);\n }\n const model = await context.cms.getModel(validated.data.modelId);\n const scheduler = context.cms.scheduler(model);\n\n return scheduler.listScheduled({\n where: validated.data.where || {},\n sort: validated.data.sort,\n limit: validated.data.limit,\n after: validated.data.after\n });\n });\n }\n },\n Mutation: {\n async createCmsSchedule(_, args, context) {\n return resolve(async () => {\n const validated = await createScheduleSchema.safeParseAsync(args);\n if (validated.error) {\n throw createZodError(validated.error);\n }\n\n const model = await context.cms.getModel(validated.data.modelId);\n const scheduler = context.cms.scheduler(model);\n\n return await scheduler.schedule(validated.data.id, validated.data.input);\n });\n },\n async updateCmsSchedule(_, args, context) {\n return resolve(async () => {\n const validated = await updateScheduleSchema.safeParseAsync(args);\n if (validated.error) {\n throw createZodError(validated.error);\n }\n const model = await context.cms.getModel(validated.data.modelId);\n const scheduler = context.cms.scheduler(model);\n\n return scheduler.schedule(validated.data.id, validated.data.input);\n });\n },\n async cancelCmsSchedule(_, args, context) {\n return resolve(async () => {\n const validated = await cancelScheduleSchema.safeParseAsync(args);\n if (validated.error) {\n throw createZodError(validated.error);\n }\n const model = await context.cms.getModel(validated.data.modelId);\n const scheduler = context.cms.scheduler(model);\n\n await scheduler.cancel(validated.data.id);\n return true;\n });\n }\n }\n }\n });\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["CmsGraphQLSchemaPlugin","ErrorResponse","ListErrorResponse","ListResponse","Response","cancelScheduleSchema","createScheduleSchema","getScheduleSchema","listScheduleSchema","updateScheduleSchema","createZodError","ListScheduledActionsUseCase","ScheduleEntryActionUseCase","CancelScheduledEntryActionUseCase","ActionMapper","typeMap","publish","unpublish","resolve","cb","result","ex","resolveList","data","meta","createSchedulerGraphQL","typeDefs","resolvers","Query","getCmsSchedule","_","args","context","validated","safeParseAsync","error","listActions","container","actions","execute","where","namespace","modelId","targetId","id","isFail","code","message","items","value","length","fromScheduledAction","listCmsSchedules","type","sort","limit","after","map","item","Mutation","createCmsSchedule","scheduleEntry","scheduleFor","toISOString","immediately","actionType","updateCmsSchedule","cancelCmsSchedule","cancelEntryAction","res"],"sources":["index.ts"],"sourcesContent":["import { CmsGraphQLSchemaPlugin } from \"@webiny/api-headless-cms/plugins/index.js\";\nimport { ErrorResponse, ListErrorResponse, ListResponse, Response } from \"@webiny/handler-graphql\";\nimport type { CmsContext, CmsEntryMeta } from \"@webiny/api-headless-cms/types/index.js\";\nimport {\n cancelScheduleSchema,\n createScheduleSchema,\n getScheduleSchema,\n listScheduleSchema,\n updateScheduleSchema\n} from \"~/graphql/schema.js\";\nimport { createZodError } from \"@webiny/utils\";\nimport { ListScheduledActionsUseCase } from \"@webiny/api-scheduler/features/ListScheduledActions\";\nimport {\n type IScheduleActionPayload,\n ScheduleEntryActionUseCase\n} from \"~/features/ScheduleEntryAction/index.js\";\nimport { CancelScheduledEntryActionUseCase } from \"~/features/CancelScheduledEntryAction/index.js\";\nimport { ActionMapper } from \"~/graphql/ActionMapper.js\";\n\nconst typeMap = {\n publish: \"Publish\",\n unpublish: \"Unpublish\"\n} as const;\n\nconst resolve = async (cb: () => Promise<unknown>) => {\n try {\n const result = await cb();\n\n return new Response(result);\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n};\n\ninterface IResolveListCallableResponse {\n data: unknown[];\n meta: CmsEntryMeta;\n}\n\nconst resolveList = async (cb: () => Promise<IResolveListCallableResponse>) => {\n try {\n const result = await cb();\n\n return new ListResponse(result.data, result.meta);\n } catch (ex) {\n return new ListErrorResponse(ex);\n }\n};\n\nexport const createSchedulerGraphQL = () => {\n return new CmsGraphQLSchemaPlugin<CmsContext>({\n typeDefs: /* GraphQL */ `\n enum CmsScheduleRecordType {\n publish\n unpublish\n }\n type CmsScheduleRecord {\n id: String!\n targetId: String!\n model: CmsContentModel!\n scheduledBy: CmsIdentity!\n publishOn: DateTime\n unpublishOn: DateTime\n type: CmsScheduleRecordType!\n title: String!\n }\n\n type CmsGetScheduleResponse {\n data: CmsScheduleRecord\n error: CmsError\n }\n\n type CmsListSchedulesResponse {\n data: [CmsScheduleRecord!]\n error: CmsError\n meta: CmsListMeta\n }\n\n type CmsCreateScheduleResponse {\n data: CmsScheduleRecord\n error: CmsError\n }\n\n type CmsUpdateScheduleResponse {\n data: CmsScheduleRecord\n error: CmsError\n }\n\n type CmsCancelScheduleResponse {\n data: Boolean\n error: CmsError\n }\n\n input CmsListSchedulesWhereInput {\n targetId: ID\n title_contains: String\n title_not_contains: String\n type: CmsScheduleRecordType\n scheduledBy: ID\n scheduledFor: DateTime\n scheduledFor_gte: DateTime\n scheduledFor_lte: DateTime\n }\n\n enum CmsListSchedulesSorter {\n title_ASC\n title_DESC\n scheduledFor_ASC\n scheduledFor_DESC\n }\n\n extend type Query {\n getCmsSchedule(modelId: String!, id: ID!): CmsGetScheduleResponse!\n listCmsSchedules(\n modelId: String!\n where: CmsListSchedulesWhereInput\n sort: [CmsListSchedulesSorter!]\n limit: Int\n after: String\n ): CmsListSchedulesResponse!\n }\n\n extend type Mutation {\n createCmsSchedule(\n modelId: String!\n id: ID!\n immediately: Boolean\n scheduleFor: DateTime\n type: CmsScheduleRecordType!\n ): CmsCreateScheduleResponse!\n updateCmsSchedule(\n modelId: String!\n id: ID!\n immediately: Boolean\n scheduleFor: DateTime\n type: CmsScheduleRecordType!\n ): CmsUpdateScheduleResponse!\n cancelCmsSchedule(modelId: String!, id: ID!): CmsCancelScheduleResponse!\n }\n `,\n resolvers: {\n Query: {\n async getCmsSchedule(_, args, context) {\n return resolve(async () => {\n const validated = await getScheduleSchema.safeParseAsync(args);\n if (validated.error) {\n throw createZodError(validated.error);\n }\n\n const listActions = context.container.resolve(ListScheduledActionsUseCase);\n\n const actions = await listActions.execute<IScheduleActionPayload>({\n where: { namespace: `Cms/Entry/${args.modelId}`, targetId: args.id }\n });\n\n if (actions.isFail()) {\n return new ErrorResponse({\n code: actions.error.code,\n message: actions.error.message\n });\n }\n\n const { items } = actions.value;\n\n if (!items.length) {\n return null;\n }\n\n return ActionMapper.fromScheduledAction(items[0]);\n });\n },\n async listCmsSchedules(_, args, context) {\n return resolveList(async () => {\n const validated = await listScheduleSchema.safeParseAsync(args);\n if (validated.error) {\n throw createZodError(validated.error);\n }\n\n const listActions = context.container.resolve(ListScheduledActionsUseCase);\n\n const { type, ...where } = validated.data.where ?? {};\n\n if (type) {\n // @ts-expect-error\n where[\"actionType\"] = typeMap[type];\n }\n\n const actions = await listActions.execute<IScheduleActionPayload>({\n where: { ...where, namespace: `Cms/Entry/${args.modelId}` },\n sort: validated.data.sort,\n limit: validated.data.limit,\n after: validated.data.after\n });\n\n if (actions.isFail()) {\n throw actions.error;\n }\n\n return {\n data: actions.value.items.map(item =>\n ActionMapper.fromScheduledAction(item)\n ),\n meta: actions.value.meta\n };\n });\n }\n },\n Mutation: {\n async createCmsSchedule(_, args, context) {\n return resolve(async () => {\n const validated = await createScheduleSchema.safeParseAsync(args);\n if (validated.error) {\n throw createZodError(validated.error);\n }\n\n const data = validated.data;\n\n const scheduleEntry = context.container.resolve(ScheduleEntryActionUseCase);\n const result = await scheduleEntry.execute({\n modelId: data.modelId,\n targetId: data.id,\n scheduleFor: data.scheduleFor?.toISOString(),\n immediately: data.immediately,\n actionType: typeMap[data.type]\n });\n\n if (result.isFail()) {\n throw result.error;\n }\n\n return ActionMapper.fromScheduledAction(result.value);\n });\n },\n async updateCmsSchedule(_, args, context) {\n return resolve(async () => {\n const validated = await updateScheduleSchema.safeParseAsync(args);\n if (validated.error) {\n throw createZodError(validated.error);\n }\n\n const data = validated.data;\n\n const scheduleEntry = context.container.resolve(ScheduleEntryActionUseCase);\n const result = await scheduleEntry.execute({\n modelId: data.modelId,\n targetId: data.id,\n scheduleFor: data.scheduleFor?.toISOString(),\n immediately: data.immediately,\n actionType: typeMap[data.type]\n });\n\n if (result.isFail()) {\n throw result.error;\n }\n\n return ActionMapper.fromScheduledAction(result.value);\n });\n },\n async cancelCmsSchedule(_, args, context) {\n return resolve(async () => {\n const validated = await cancelScheduleSchema.safeParseAsync(args);\n if (validated.error) {\n throw createZodError(validated.error);\n }\n\n const cancelEntryAction = context.container.resolve(\n CancelScheduledEntryActionUseCase\n );\n\n const res = await cancelEntryAction.execute(validated.data.id);\n\n if (res.isFail()) {\n throw res.error;\n }\n\n return true;\n });\n }\n }\n }\n });\n};\n"],"mappings":"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","ignoreList":[]}