@dosgato/api 1.7.11 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +5 -0
- package/dist/internal.js +5 -0
- package/dist/internal.js.map +1 -1
- package/dist/migrations.js +47 -2
- package/dist/migrations.js.map +1 -1
- package/dist/page/page.database.js +2 -1
- package/dist/page/page.database.js.map +1 -1
- package/dist/page/page.indexing.d.ts +1 -0
- package/dist/page/page.indexing.js +19 -6
- package/dist/page/page.indexing.js.map +1 -1
- package/dist/page/page.model.d.ts +6 -0
- package/dist/page/page.model.js +26 -0
- package/dist/page/page.model.js.map +1 -1
- package/dist/page/page.resolver.d.ts +5 -1
- package/dist/page/page.resolver.js +48 -1
- package/dist/page/page.resolver.js.map +1 -1
- package/dist/page/page.routes.js +31 -21
- package/dist/page/page.routes.js.map +1 -1
- package/dist/page/page.service.d.ts +4 -1
- package/dist/page/page.service.js +125 -17
- package/dist/page/page.service.js.map +1 -1
- package/dist/role/role.database.d.ts +1 -0
- package/dist/role/role.database.js +9 -2
- package/dist/role/role.database.js.map +1 -1
- package/dist/role/role.model.d.ts +8 -0
- package/dist/role/role.model.js +42 -0
- package/dist/role/role.model.js.map +1 -1
- package/dist/role/role.service.js +22 -2
- package/dist/role/role.service.js.map +1 -1
- package/dist/scheduledpublish/scheduledpublish.cron.d.ts +1 -0
- package/dist/scheduledpublish/scheduledpublish.cron.js +40 -0
- package/dist/scheduledpublish/scheduledpublish.cron.js.map +1 -0
- package/dist/scheduledpublish/scheduledpublish.database.d.ts +38 -0
- package/dist/scheduledpublish/scheduledpublish.database.js +86 -0
- package/dist/scheduledpublish/scheduledpublish.database.js.map +1 -0
- package/dist/scheduledpublish/scheduledpublish.model.d.ts +76 -0
- package/dist/scheduledpublish/scheduledpublish.model.js +283 -0
- package/dist/scheduledpublish/scheduledpublish.model.js.map +1 -0
- package/dist/scheduledpublish/scheduledpublish.resolver.d.ts +16 -0
- package/dist/scheduledpublish/scheduledpublish.resolver.js +143 -0
- package/dist/scheduledpublish/scheduledpublish.resolver.js.map +1 -0
- package/dist/scheduledpublish/scheduledpublish.service.d.ts +22 -0
- package/dist/scheduledpublish/scheduledpublish.service.js +170 -0
- package/dist/scheduledpublish/scheduledpublish.service.js.map +1 -0
- package/dist/site/site.resolver.d.ts +2 -0
- package/dist/site/site.resolver.js +27 -1
- package/dist/site/site.resolver.js.map +1 -1
- package/dist/site/site.service.d.ts +2 -0
- package/dist/site/site.service.js +16 -0
- package/dist/site/site.service.js.map +1 -1
- package/dist/template/template.model.d.ts +1 -0
- package/dist/template/template.model.js +7 -0
- package/dist/template/template.model.js.map +1 -1
- package/dist/user/user.service.js +10 -1
- package/dist/user/user.service.js.map +1 -1
- package/dist/util/authservice.d.ts +1 -0
- package/dist/util/authservice.js +5 -0
- package/dist/util/authservice.js.map +1 -1
- package/dist/util/context.d.ts +1 -0
- package/dist/util/context.js +11 -3
- package/dist/util/context.js.map +1 -1
- package/dist/util/registry.js +1 -1
- package/dist/util/registry.js.map +1 -1
- package/dist/versionedservice/service.d.ts +7 -1
- package/dist/versionedservice/service.js +67 -17
- package/dist/versionedservice/service.js.map +1 -1
- package/dist/versionedservice/types.d.ts +4 -1
- package/dist/versionedservice/types.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { ValidatedResponse } from '@txstate-mws/graphql-server';
|
|
11
|
+
import { DateTime } from 'luxon';
|
|
12
|
+
import { Field, ID, InputType, Int, ObjectType, registerEnumType } from 'type-graphql';
|
|
13
|
+
export var ScheduledPublishAction;
|
|
14
|
+
(function (ScheduledPublishAction) {
|
|
15
|
+
ScheduledPublishAction["PUBLISH"] = "PUBLISH";
|
|
16
|
+
ScheduledPublishAction["PUBLISH_WITH_SUBPAGES"] = "PUBLISH_WITH_SUBPAGES";
|
|
17
|
+
ScheduledPublishAction["UNPUBLISH"] = "UNPUBLISH";
|
|
18
|
+
})(ScheduledPublishAction || (ScheduledPublishAction = {}));
|
|
19
|
+
registerEnumType(ScheduledPublishAction, {
|
|
20
|
+
name: 'ScheduledPublishAction',
|
|
21
|
+
description: 'The type of scheduled action to perform.',
|
|
22
|
+
valuesConfig: {
|
|
23
|
+
PUBLISH: { description: 'Publish the page only.' },
|
|
24
|
+
PUBLISH_WITH_SUBPAGES: { description: 'Publish the page and all sub-pages.' },
|
|
25
|
+
UNPUBLISH: { description: 'Unpublish the page and all sub-pages.' }
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
export var ScheduledPublishStatus;
|
|
29
|
+
(function (ScheduledPublishStatus) {
|
|
30
|
+
ScheduledPublishStatus["PENDING"] = "PENDING";
|
|
31
|
+
ScheduledPublishStatus["COMPLETED"] = "COMPLETED";
|
|
32
|
+
ScheduledPublishStatus["FAILED"] = "FAILED";
|
|
33
|
+
ScheduledPublishStatus["CANCELLED"] = "CANCELLED";
|
|
34
|
+
})(ScheduledPublishStatus || (ScheduledPublishStatus = {}));
|
|
35
|
+
export var ScheduledPublishRecurrence;
|
|
36
|
+
(function (ScheduledPublishRecurrence) {
|
|
37
|
+
ScheduledPublishRecurrence["DAY"] = "DAY";
|
|
38
|
+
ScheduledPublishRecurrence["WEEK"] = "WEEK";
|
|
39
|
+
ScheduledPublishRecurrence["MONTH"] = "MONTH";
|
|
40
|
+
})(ScheduledPublishRecurrence || (ScheduledPublishRecurrence = {}));
|
|
41
|
+
registerEnumType(ScheduledPublishRecurrence, {
|
|
42
|
+
name: 'ScheduledPublishRecurrence',
|
|
43
|
+
description: 'The recurrence interval unit for a scheduled action.',
|
|
44
|
+
valuesConfig: {
|
|
45
|
+
DAY: { description: 'Recur every N days.' },
|
|
46
|
+
WEEK: { description: 'Recur every N weeks.' },
|
|
47
|
+
MONTH: { description: 'Recur every N months.' }
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
registerEnumType(ScheduledPublishStatus, {
|
|
51
|
+
name: 'ScheduledPublishStatus',
|
|
52
|
+
description: 'The current status of a scheduled publish entry.',
|
|
53
|
+
valuesConfig: {
|
|
54
|
+
PENDING: { description: 'Scheduled and waiting to execute.' },
|
|
55
|
+
COMPLETED: { description: 'Successfully executed.' },
|
|
56
|
+
FAILED: { description: 'Attempted to execute but encountered an error.' },
|
|
57
|
+
CANCELLED: { description: 'Cancelled by a user or by page deletion.' }
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
let ScheduledPublishRecurrenceInfo = class ScheduledPublishRecurrenceInfo {
|
|
61
|
+
type;
|
|
62
|
+
interval;
|
|
63
|
+
timezone;
|
|
64
|
+
constructor(type, interval, timezone) {
|
|
65
|
+
this.type = type;
|
|
66
|
+
this.interval = interval;
|
|
67
|
+
this.timezone = timezone;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
__decorate([
|
|
71
|
+
Field(type => ScheduledPublishRecurrence),
|
|
72
|
+
__metadata("design:type", String)
|
|
73
|
+
], ScheduledPublishRecurrenceInfo.prototype, "type", void 0);
|
|
74
|
+
__decorate([
|
|
75
|
+
Field(type => Int, { description: 'Number of days/weeks/months between recurrences.' }),
|
|
76
|
+
__metadata("design:type", Number)
|
|
77
|
+
], ScheduledPublishRecurrenceInfo.prototype, "interval", void 0);
|
|
78
|
+
__decorate([
|
|
79
|
+
Field({ description: 'IANA timezone for DST-safe recurrence date calculation.' }),
|
|
80
|
+
__metadata("design:type", String)
|
|
81
|
+
], ScheduledPublishRecurrenceInfo.prototype, "timezone", void 0);
|
|
82
|
+
ScheduledPublishRecurrenceInfo = __decorate([
|
|
83
|
+
ObjectType({ description: 'Recurrence configuration for a scheduled action.' }),
|
|
84
|
+
__metadata("design:paramtypes", [String, Number, String])
|
|
85
|
+
], ScheduledPublishRecurrenceInfo);
|
|
86
|
+
export { ScheduledPublishRecurrenceInfo };
|
|
87
|
+
let ScheduledPublish = class ScheduledPublish {
|
|
88
|
+
id;
|
|
89
|
+
internalId;
|
|
90
|
+
pageInternalId;
|
|
91
|
+
pageDataId;
|
|
92
|
+
page;
|
|
93
|
+
action;
|
|
94
|
+
targetDate;
|
|
95
|
+
status;
|
|
96
|
+
recurrence;
|
|
97
|
+
error;
|
|
98
|
+
createdAt;
|
|
99
|
+
createdBy;
|
|
100
|
+
updatedAt;
|
|
101
|
+
updatedBy;
|
|
102
|
+
constructor(row) {
|
|
103
|
+
this.internalId = row.id;
|
|
104
|
+
this.id = String(row.id);
|
|
105
|
+
this.pageInternalId = row.pageInternalId;
|
|
106
|
+
this.pageDataId = String(row.pageDataId ?? row.dataId);
|
|
107
|
+
this.action = row.action;
|
|
108
|
+
this.targetDate = DateTime.fromJSDate(row.targetDate);
|
|
109
|
+
this.status = row.status;
|
|
110
|
+
this.recurrence = row.recur ? new ScheduledPublishRecurrenceInfo(row.recur, row.recurInterval ?? 1, row.timezone ?? 'America/Chicago') : undefined;
|
|
111
|
+
this.error = row.error ?? undefined;
|
|
112
|
+
this.createdAt = DateTime.fromJSDate(row.createdAt);
|
|
113
|
+
this.createdBy = row.createdBy;
|
|
114
|
+
this.updatedAt = DateTime.fromJSDate(row.updatedAt);
|
|
115
|
+
this.updatedBy = row.updatedBy;
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
__decorate([
|
|
119
|
+
Field(type => ID),
|
|
120
|
+
__metadata("design:type", String)
|
|
121
|
+
], ScheduledPublish.prototype, "id", void 0);
|
|
122
|
+
__decorate([
|
|
123
|
+
Field(type => ScheduledPublishAction),
|
|
124
|
+
__metadata("design:type", String)
|
|
125
|
+
], ScheduledPublish.prototype, "action", void 0);
|
|
126
|
+
__decorate([
|
|
127
|
+
Field({ description: 'The date and time at which this action will be executed.' }),
|
|
128
|
+
__metadata("design:type", DateTime)
|
|
129
|
+
], ScheduledPublish.prototype, "targetDate", void 0);
|
|
130
|
+
__decorate([
|
|
131
|
+
Field(type => ScheduledPublishStatus),
|
|
132
|
+
__metadata("design:type", String)
|
|
133
|
+
], ScheduledPublish.prototype, "status", void 0);
|
|
134
|
+
__decorate([
|
|
135
|
+
Field(type => ScheduledPublishRecurrenceInfo, { nullable: true, description: 'Recurrence configuration. When set, a new schedule is automatically created after execution.' }),
|
|
136
|
+
__metadata("design:type", ScheduledPublishRecurrenceInfo)
|
|
137
|
+
], ScheduledPublish.prototype, "recurrence", void 0);
|
|
138
|
+
__decorate([
|
|
139
|
+
Field({ nullable: true, description: 'Error message recorded when the scheduled action failed.' }),
|
|
140
|
+
__metadata("design:type", String)
|
|
141
|
+
], ScheduledPublish.prototype, "error", void 0);
|
|
142
|
+
__decorate([
|
|
143
|
+
Field(),
|
|
144
|
+
__metadata("design:type", DateTime)
|
|
145
|
+
], ScheduledPublish.prototype, "createdAt", void 0);
|
|
146
|
+
__decorate([
|
|
147
|
+
Field(),
|
|
148
|
+
__metadata("design:type", DateTime)
|
|
149
|
+
], ScheduledPublish.prototype, "updatedAt", void 0);
|
|
150
|
+
ScheduledPublish = __decorate([
|
|
151
|
+
ObjectType({ description: 'A scheduled publish or unpublish action for a page.' }),
|
|
152
|
+
__metadata("design:paramtypes", [Object])
|
|
153
|
+
], ScheduledPublish);
|
|
154
|
+
export { ScheduledPublish };
|
|
155
|
+
let ScheduledPublishFilter = class ScheduledPublishFilter {
|
|
156
|
+
ids;
|
|
157
|
+
internalIds;
|
|
158
|
+
pageIds;
|
|
159
|
+
pageInternalIds;
|
|
160
|
+
actions;
|
|
161
|
+
statuses;
|
|
162
|
+
targetDateBefore;
|
|
163
|
+
targetDateAfter;
|
|
164
|
+
};
|
|
165
|
+
__decorate([
|
|
166
|
+
Field(type => [ID], { nullable: true }),
|
|
167
|
+
__metadata("design:type", Array)
|
|
168
|
+
], ScheduledPublishFilter.prototype, "ids", void 0);
|
|
169
|
+
__decorate([
|
|
170
|
+
Field(type => [ID], { nullable: true, description: 'Filter by page data IDs.' }),
|
|
171
|
+
__metadata("design:type", Array)
|
|
172
|
+
], ScheduledPublishFilter.prototype, "pageIds", void 0);
|
|
173
|
+
__decorate([
|
|
174
|
+
Field(type => [ScheduledPublishAction], { nullable: true }),
|
|
175
|
+
__metadata("design:type", Array)
|
|
176
|
+
], ScheduledPublishFilter.prototype, "actions", void 0);
|
|
177
|
+
__decorate([
|
|
178
|
+
Field(type => [ScheduledPublishStatus], { nullable: true, description: 'Filter by status. Defaults to [PENDING] if not specified.' }),
|
|
179
|
+
__metadata("design:type", Array)
|
|
180
|
+
], ScheduledPublishFilter.prototype, "statuses", void 0);
|
|
181
|
+
__decorate([
|
|
182
|
+
Field({ nullable: true, description: 'Return schedules with target date before this date.' }),
|
|
183
|
+
__metadata("design:type", DateTime)
|
|
184
|
+
], ScheduledPublishFilter.prototype, "targetDateBefore", void 0);
|
|
185
|
+
__decorate([
|
|
186
|
+
Field({ nullable: true, description: 'Return schedules with target date after this date.' }),
|
|
187
|
+
__metadata("design:type", DateTime)
|
|
188
|
+
], ScheduledPublishFilter.prototype, "targetDateAfter", void 0);
|
|
189
|
+
ScheduledPublishFilter = __decorate([
|
|
190
|
+
InputType()
|
|
191
|
+
], ScheduledPublishFilter);
|
|
192
|
+
export { ScheduledPublishFilter };
|
|
193
|
+
let ScheduledPublishRecurrenceInput = class ScheduledPublishRecurrenceInput {
|
|
194
|
+
type;
|
|
195
|
+
interval;
|
|
196
|
+
timezone;
|
|
197
|
+
};
|
|
198
|
+
__decorate([
|
|
199
|
+
Field(type => ScheduledPublishRecurrence),
|
|
200
|
+
__metadata("design:type", String)
|
|
201
|
+
], ScheduledPublishRecurrenceInput.prototype, "type", void 0);
|
|
202
|
+
__decorate([
|
|
203
|
+
Field(type => Int, { nullable: true, description: 'Number of days/weeks/months between recurrences. Defaults to 1.' }),
|
|
204
|
+
__metadata("design:type", Number)
|
|
205
|
+
], ScheduledPublishRecurrenceInput.prototype, "interval", void 0);
|
|
206
|
+
__decorate([
|
|
207
|
+
Field({ nullable: true, description: 'IANA timezone for DST-safe recurrence date calculation. Defaults to server timezone.' }),
|
|
208
|
+
__metadata("design:type", String)
|
|
209
|
+
], ScheduledPublishRecurrenceInput.prototype, "timezone", void 0);
|
|
210
|
+
ScheduledPublishRecurrenceInput = __decorate([
|
|
211
|
+
InputType({ description: 'Recurrence configuration input.' })
|
|
212
|
+
], ScheduledPublishRecurrenceInput);
|
|
213
|
+
export { ScheduledPublishRecurrenceInput };
|
|
214
|
+
let CreateScheduledPublishInput = class CreateScheduledPublishInput {
|
|
215
|
+
pageId;
|
|
216
|
+
action;
|
|
217
|
+
targetDate;
|
|
218
|
+
recurrence;
|
|
219
|
+
};
|
|
220
|
+
__decorate([
|
|
221
|
+
Field(type => ID),
|
|
222
|
+
__metadata("design:type", String)
|
|
223
|
+
], CreateScheduledPublishInput.prototype, "pageId", void 0);
|
|
224
|
+
__decorate([
|
|
225
|
+
Field(type => ScheduledPublishAction),
|
|
226
|
+
__metadata("design:type", String)
|
|
227
|
+
], CreateScheduledPublishInput.prototype, "action", void 0);
|
|
228
|
+
__decorate([
|
|
229
|
+
Field({ description: 'The date and time to execute the action. Must be at least 5 minutes in the future.' }),
|
|
230
|
+
__metadata("design:type", DateTime)
|
|
231
|
+
], CreateScheduledPublishInput.prototype, "targetDate", void 0);
|
|
232
|
+
__decorate([
|
|
233
|
+
Field(type => ScheduledPublishRecurrenceInput, { nullable: true, description: 'Recurrence configuration. When set, a new schedule is automatically created after execution.' }),
|
|
234
|
+
__metadata("design:type", ScheduledPublishRecurrenceInput)
|
|
235
|
+
], CreateScheduledPublishInput.prototype, "recurrence", void 0);
|
|
236
|
+
CreateScheduledPublishInput = __decorate([
|
|
237
|
+
InputType()
|
|
238
|
+
], CreateScheduledPublishInput);
|
|
239
|
+
export { CreateScheduledPublishInput };
|
|
240
|
+
let UpdateScheduledPublishInput = class UpdateScheduledPublishInput {
|
|
241
|
+
action;
|
|
242
|
+
targetDate;
|
|
243
|
+
recurrence;
|
|
244
|
+
};
|
|
245
|
+
__decorate([
|
|
246
|
+
Field(type => ScheduledPublishAction),
|
|
247
|
+
__metadata("design:type", String)
|
|
248
|
+
], UpdateScheduledPublishInput.prototype, "action", void 0);
|
|
249
|
+
__decorate([
|
|
250
|
+
Field({ description: 'New target date. Must be at least 5 minutes in the future.' }),
|
|
251
|
+
__metadata("design:type", DateTime)
|
|
252
|
+
], UpdateScheduledPublishInput.prototype, "targetDate", void 0);
|
|
253
|
+
__decorate([
|
|
254
|
+
Field(type => ScheduledPublishRecurrenceInput, { nullable: true, description: 'Recurrence configuration. Set to null to remove recurrence.' }),
|
|
255
|
+
__metadata("design:type", Object)
|
|
256
|
+
], UpdateScheduledPublishInput.prototype, "recurrence", void 0);
|
|
257
|
+
UpdateScheduledPublishInput = __decorate([
|
|
258
|
+
InputType()
|
|
259
|
+
], UpdateScheduledPublishInput);
|
|
260
|
+
export { UpdateScheduledPublishInput };
|
|
261
|
+
let ScheduledPublishResponse = class ScheduledPublishResponse extends ValidatedResponse {
|
|
262
|
+
scheduledPublish;
|
|
263
|
+
constructor(config) {
|
|
264
|
+
super(config ?? {});
|
|
265
|
+
this.scheduledPublish = config?.scheduledPublish;
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
__decorate([
|
|
269
|
+
Field({ nullable: true }),
|
|
270
|
+
__metadata("design:type", ScheduledPublish)
|
|
271
|
+
], ScheduledPublishResponse.prototype, "scheduledPublish", void 0);
|
|
272
|
+
ScheduledPublishResponse = __decorate([
|
|
273
|
+
ObjectType(),
|
|
274
|
+
__metadata("design:paramtypes", [Object])
|
|
275
|
+
], ScheduledPublishResponse);
|
|
276
|
+
export { ScheduledPublishResponse };
|
|
277
|
+
let ScheduledPublishPermissions = class ScheduledPublishPermissions {
|
|
278
|
+
};
|
|
279
|
+
ScheduledPublishPermissions = __decorate([
|
|
280
|
+
ObjectType()
|
|
281
|
+
], ScheduledPublishPermissions);
|
|
282
|
+
export { ScheduledPublishPermissions };
|
|
283
|
+
//# sourceMappingURL=scheduledpublish.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduledpublish.model.js","sourceRoot":"","sources":["../../src/scheduledpublish/scheduledpublish.model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Context } from '@txstate-mws/graphql-server';
|
|
2
|
+
import { ScheduledPublish, ScheduledPublishFilter, ScheduledPublishResponse, CreateScheduledPublishInput, UpdateScheduledPublishInput, Page, User } from '../internal.js';
|
|
3
|
+
export declare class ScheduledPublishResolver {
|
|
4
|
+
scheduledPublishes(ctx: Context, filter?: ScheduledPublishFilter): Promise<ScheduledPublish[]>;
|
|
5
|
+
createScheduledPublish(ctx: Context, args: CreateScheduledPublishInput, validateOnly?: boolean): Promise<ScheduledPublishResponse>;
|
|
6
|
+
updateScheduledPublish(ctx: Context, scheduledPublishId: string, args: UpdateScheduledPublishInput, validateOnly?: boolean): Promise<ScheduledPublishResponse>;
|
|
7
|
+
cancelScheduledPublish(ctx: Context, scheduledPublishId: string): Promise<ScheduledPublishResponse>;
|
|
8
|
+
page(ctx: Context, schedule: ScheduledPublish): Promise<Page | undefined>;
|
|
9
|
+
createdByUser(ctx: Context, schedule: ScheduledPublish): Promise<User | undefined>;
|
|
10
|
+
updatedByUser(ctx: Context, schedule: ScheduledPublish): Promise<User | undefined>;
|
|
11
|
+
permissions(schedule: ScheduledPublish): ScheduledPublish;
|
|
12
|
+
}
|
|
13
|
+
export declare class ScheduledPublishPermissionsResolver {
|
|
14
|
+
edit(ctx: Context, schedule: ScheduledPublish): Promise<boolean>;
|
|
15
|
+
cancel(ctx: Context, schedule: ScheduledPublish): Promise<boolean>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
import { Context } from '@txstate-mws/graphql-server';
|
|
14
|
+
import { Resolver, Query, Arg, Ctx, FieldResolver, Root, Mutation, ID } from 'type-graphql';
|
|
15
|
+
import { ScheduledPublish, ScheduledPublishFilter, ScheduledPublishResponse, ScheduledPublishPermissions, ScheduledPublishService, CreateScheduledPublishInput, UpdateScheduledPublishInput, Page, PageServiceInternal, User, UserService } from '../internal.js';
|
|
16
|
+
let ScheduledPublishResolver = class ScheduledPublishResolver {
|
|
17
|
+
async scheduledPublishes(ctx, filter) {
|
|
18
|
+
return await ctx.svc(ScheduledPublishService).find(filter);
|
|
19
|
+
}
|
|
20
|
+
async createScheduledPublish(ctx, args, validateOnly) {
|
|
21
|
+
return await ctx.svc(ScheduledPublishService).create(args, validateOnly);
|
|
22
|
+
}
|
|
23
|
+
async updateScheduledPublish(ctx, scheduledPublishId, args, validateOnly) {
|
|
24
|
+
return await ctx.svc(ScheduledPublishService).update(scheduledPublishId, args, validateOnly);
|
|
25
|
+
}
|
|
26
|
+
async cancelScheduledPublish(ctx, scheduledPublishId) {
|
|
27
|
+
return await ctx.svc(ScheduledPublishService).cancel(scheduledPublishId);
|
|
28
|
+
}
|
|
29
|
+
async page(ctx, schedule) {
|
|
30
|
+
return await ctx.svc(PageServiceInternal).findByInternalId(schedule.pageInternalId);
|
|
31
|
+
}
|
|
32
|
+
async createdByUser(ctx, schedule) {
|
|
33
|
+
return await ctx.svc(UserService).findById(schedule.createdBy);
|
|
34
|
+
}
|
|
35
|
+
async updatedByUser(ctx, schedule) {
|
|
36
|
+
return await ctx.svc(UserService).findById(schedule.updatedBy);
|
|
37
|
+
}
|
|
38
|
+
permissions(schedule) {
|
|
39
|
+
return schedule;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
__decorate([
|
|
43
|
+
Query(returns => [ScheduledPublish], { description: 'Retrieve scheduled publish entries. Defaults to showing only active schedules.' }),
|
|
44
|
+
__param(0, Ctx()),
|
|
45
|
+
__param(1, Arg('filter', { nullable: true })),
|
|
46
|
+
__metadata("design:type", Function),
|
|
47
|
+
__metadata("design:paramtypes", [Context, ScheduledPublishFilter]),
|
|
48
|
+
__metadata("design:returntype", Promise)
|
|
49
|
+
], ScheduledPublishResolver.prototype, "scheduledPublishes", null);
|
|
50
|
+
__decorate([
|
|
51
|
+
Mutation(returns => ScheduledPublishResponse, { description: 'Schedule a future publish or unpublish action for a page.' }),
|
|
52
|
+
__param(0, Ctx()),
|
|
53
|
+
__param(1, Arg('args')),
|
|
54
|
+
__param(2, Arg('validateOnly', { nullable: true, description: 'When true, the mutation will not save but will return the validation response as normal.' })),
|
|
55
|
+
__metadata("design:type", Function),
|
|
56
|
+
__metadata("design:paramtypes", [Context,
|
|
57
|
+
CreateScheduledPublishInput, Boolean]),
|
|
58
|
+
__metadata("design:returntype", Promise)
|
|
59
|
+
], ScheduledPublishResolver.prototype, "createScheduledPublish", null);
|
|
60
|
+
__decorate([
|
|
61
|
+
Mutation(returns => ScheduledPublishResponse, { description: 'Update a scheduled publish entry.' }),
|
|
62
|
+
__param(0, Ctx()),
|
|
63
|
+
__param(1, Arg('scheduledPublishId', type => ID)),
|
|
64
|
+
__param(2, Arg('args')),
|
|
65
|
+
__param(3, Arg('validateOnly', { nullable: true, description: 'When true, the mutation will not save but will return the validation response as normal.' })),
|
|
66
|
+
__metadata("design:type", Function),
|
|
67
|
+
__metadata("design:paramtypes", [Context, String, UpdateScheduledPublishInput, Boolean]),
|
|
68
|
+
__metadata("design:returntype", Promise)
|
|
69
|
+
], ScheduledPublishResolver.prototype, "updateScheduledPublish", null);
|
|
70
|
+
__decorate([
|
|
71
|
+
Mutation(returns => ScheduledPublishResponse, { description: 'Cancel a scheduled publish entry.' }),
|
|
72
|
+
__param(0, Ctx()),
|
|
73
|
+
__param(1, Arg('scheduledPublishId', type => ID)),
|
|
74
|
+
__metadata("design:type", Function),
|
|
75
|
+
__metadata("design:paramtypes", [Context, String]),
|
|
76
|
+
__metadata("design:returntype", Promise)
|
|
77
|
+
], ScheduledPublishResolver.prototype, "cancelScheduledPublish", null);
|
|
78
|
+
__decorate([
|
|
79
|
+
FieldResolver(returns => Page, { nullable: true, description: 'The page this schedule applies to.' }),
|
|
80
|
+
__param(0, Ctx()),
|
|
81
|
+
__param(1, Root()),
|
|
82
|
+
__metadata("design:type", Function),
|
|
83
|
+
__metadata("design:paramtypes", [Context, ScheduledPublish]),
|
|
84
|
+
__metadata("design:returntype", Promise)
|
|
85
|
+
], ScheduledPublishResolver.prototype, "page", null);
|
|
86
|
+
__decorate([
|
|
87
|
+
FieldResolver(returns => User, { nullable: true, description: 'The user who created this schedule entry.' }),
|
|
88
|
+
__param(0, Ctx()),
|
|
89
|
+
__param(1, Root()),
|
|
90
|
+
__metadata("design:type", Function),
|
|
91
|
+
__metadata("design:paramtypes", [Context, ScheduledPublish]),
|
|
92
|
+
__metadata("design:returntype", Promise)
|
|
93
|
+
], ScheduledPublishResolver.prototype, "createdByUser", null);
|
|
94
|
+
__decorate([
|
|
95
|
+
FieldResolver(returns => User, { nullable: true, description: 'The user who last updated this schedule entry. This is the user whose permissions will be used when executing.' }),
|
|
96
|
+
__param(0, Ctx()),
|
|
97
|
+
__param(1, Root()),
|
|
98
|
+
__metadata("design:type", Function),
|
|
99
|
+
__metadata("design:paramtypes", [Context, ScheduledPublish]),
|
|
100
|
+
__metadata("design:returntype", Promise)
|
|
101
|
+
], ScheduledPublishResolver.prototype, "updatedByUser", null);
|
|
102
|
+
__decorate([
|
|
103
|
+
FieldResolver(returns => ScheduledPublishPermissions, {
|
|
104
|
+
description: 'Reveal the simplified results after all authorization rules are taken into account for the current user.'
|
|
105
|
+
}),
|
|
106
|
+
__param(0, Root()),
|
|
107
|
+
__metadata("design:type", Function),
|
|
108
|
+
__metadata("design:paramtypes", [ScheduledPublish]),
|
|
109
|
+
__metadata("design:returntype", void 0)
|
|
110
|
+
], ScheduledPublishResolver.prototype, "permissions", null);
|
|
111
|
+
ScheduledPublishResolver = __decorate([
|
|
112
|
+
Resolver(of => ScheduledPublish)
|
|
113
|
+
], ScheduledPublishResolver);
|
|
114
|
+
export { ScheduledPublishResolver };
|
|
115
|
+
let ScheduledPublishPermissionsResolver = class ScheduledPublishPermissionsResolver {
|
|
116
|
+
async edit(ctx, schedule) {
|
|
117
|
+
return await ctx.svc(ScheduledPublishService).mayEdit(schedule);
|
|
118
|
+
}
|
|
119
|
+
async cancel(ctx, schedule) {
|
|
120
|
+
return await ctx.svc(ScheduledPublishService).mayCancel(schedule);
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
__decorate([
|
|
124
|
+
FieldResolver(returns => Boolean, { description: 'User may edit this schedule entry.' }),
|
|
125
|
+
__param(0, Ctx()),
|
|
126
|
+
__param(1, Root()),
|
|
127
|
+
__metadata("design:type", Function),
|
|
128
|
+
__metadata("design:paramtypes", [Context, ScheduledPublish]),
|
|
129
|
+
__metadata("design:returntype", Promise)
|
|
130
|
+
], ScheduledPublishPermissionsResolver.prototype, "edit", null);
|
|
131
|
+
__decorate([
|
|
132
|
+
FieldResolver(returns => Boolean, { description: 'User may cancel this schedule entry.' }),
|
|
133
|
+
__param(0, Ctx()),
|
|
134
|
+
__param(1, Root()),
|
|
135
|
+
__metadata("design:type", Function),
|
|
136
|
+
__metadata("design:paramtypes", [Context, ScheduledPublish]),
|
|
137
|
+
__metadata("design:returntype", Promise)
|
|
138
|
+
], ScheduledPublishPermissionsResolver.prototype, "cancel", null);
|
|
139
|
+
ScheduledPublishPermissionsResolver = __decorate([
|
|
140
|
+
Resolver(of => ScheduledPublishPermissions)
|
|
141
|
+
], ScheduledPublishPermissionsResolver);
|
|
142
|
+
export { ScheduledPublishPermissionsResolver };
|
|
143
|
+
//# sourceMappingURL=scheduledpublish.resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduledpublish.resolver.js","sourceRoot":"","sources":["../../src/scheduledpublish/scheduledpublish.resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BaseService } from '@txstate-mws/graphql-server';
|
|
2
|
+
import { DosGatoService, type ScheduledPublishFilter, type ScheduledPublish, ScheduledPublishResponse, type CreateScheduledPublishInput, type UpdateScheduledPublishInput } from '../internal.js';
|
|
3
|
+
export declare class ScheduledPublishServiceInternal extends BaseService {
|
|
4
|
+
find(filter?: ScheduledPublishFilter): Promise<ScheduledPublish[]>;
|
|
5
|
+
findById(id: number): Promise<ScheduledPublish | undefined>;
|
|
6
|
+
findByPageInternalId(pageInternalId: number, filter?: ScheduledPublishFilter): Promise<ScheduledPublish[]>;
|
|
7
|
+
count(filter?: ScheduledPublishFilter): Promise<number>;
|
|
8
|
+
}
|
|
9
|
+
export declare class ScheduledPublishService extends DosGatoService<ScheduledPublish> {
|
|
10
|
+
raw: ScheduledPublishServiceInternal;
|
|
11
|
+
find(filter?: ScheduledPublishFilter): Promise<ScheduledPublish[]>;
|
|
12
|
+
findById(id: number): Promise<ScheduledPublish | undefined>;
|
|
13
|
+
findByPageInternalId(pageInternalId: number, filter?: ScheduledPublishFilter): Promise<ScheduledPublish[]>;
|
|
14
|
+
count(filter?: ScheduledPublishFilter): Promise<number>;
|
|
15
|
+
mayView(sp: ScheduledPublish): boolean;
|
|
16
|
+
private loadPages;
|
|
17
|
+
create(args: CreateScheduledPublishInput, validateOnly?: boolean): Promise<ScheduledPublishResponse>;
|
|
18
|
+
update(scheduledPublishId: string, args: UpdateScheduledPublishInput, validateOnly?: boolean): Promise<ScheduledPublishResponse>;
|
|
19
|
+
cancel(scheduledPublishId: string): Promise<ScheduledPublishResponse>;
|
|
20
|
+
mayEdit(schedule: ScheduledPublish): Promise<boolean>;
|
|
21
|
+
mayCancel(schedule: ScheduledPublish): Promise<boolean>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { BaseService, MutationMessageType } from '@txstate-mws/graphql-server';
|
|
2
|
+
import { OneToManyLoader, PrimaryKeyLoader } from 'dataloader-factory';
|
|
3
|
+
import { DateTime } from 'luxon';
|
|
4
|
+
import { DosGatoService, ScheduledPublishStatus, ScheduledPublishAction, ScheduledPublishRecurrence, ScheduledPublishResponse, PageServiceInternal, PageService, getScheduledPublishes, countScheduledPublishes, createScheduledPublish, updateScheduledPublish, updateScheduledPublishStatus } from '../internal.js';
|
|
5
|
+
const scheduledPublishByIdLoader = new PrimaryKeyLoader({
|
|
6
|
+
fetch: async (ids) => {
|
|
7
|
+
return await getScheduledPublishes({ internalIds: ids, statuses: [ScheduledPublishStatus.PENDING, ScheduledPublishStatus.COMPLETED, ScheduledPublishStatus.FAILED, ScheduledPublishStatus.CANCELLED] });
|
|
8
|
+
},
|
|
9
|
+
extractId: (item) => item.internalId
|
|
10
|
+
});
|
|
11
|
+
const scheduledPublishByPageInternalIdLoader = new OneToManyLoader({
|
|
12
|
+
fetch: async (pageInternalIds, filter) => {
|
|
13
|
+
return await getScheduledPublishes({ ...filter, pageInternalIds });
|
|
14
|
+
},
|
|
15
|
+
extractKey: (sp) => sp.pageInternalId,
|
|
16
|
+
idLoader: scheduledPublishByIdLoader
|
|
17
|
+
});
|
|
18
|
+
export class ScheduledPublishServiceInternal extends BaseService {
|
|
19
|
+
async find(filter) {
|
|
20
|
+
const schedules = await getScheduledPublishes(filter);
|
|
21
|
+
for (const sp of schedules) {
|
|
22
|
+
this.loaders.get(scheduledPublishByIdLoader).prime(sp.internalId, sp);
|
|
23
|
+
}
|
|
24
|
+
return schedules;
|
|
25
|
+
}
|
|
26
|
+
async findById(id) {
|
|
27
|
+
return await this.loaders.get(scheduledPublishByIdLoader).load(id);
|
|
28
|
+
}
|
|
29
|
+
async findByPageInternalId(pageInternalId, filter) {
|
|
30
|
+
return await this.loaders.get(scheduledPublishByPageInternalIdLoader, filter).load(pageInternalId);
|
|
31
|
+
}
|
|
32
|
+
async count(filter) {
|
|
33
|
+
return await countScheduledPublishes(filter);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export class ScheduledPublishService extends DosGatoService {
|
|
37
|
+
raw = this.svc(ScheduledPublishServiceInternal);
|
|
38
|
+
async find(filter) {
|
|
39
|
+
const schedules = await this.raw.find(filter);
|
|
40
|
+
await this.loadPages(schedules);
|
|
41
|
+
return this.removeUnauthorized(schedules);
|
|
42
|
+
}
|
|
43
|
+
async findById(id) {
|
|
44
|
+
const sp = await this.raw.findById(id);
|
|
45
|
+
if (sp)
|
|
46
|
+
await this.loadPages([sp]);
|
|
47
|
+
return this.removeUnauthorized(sp);
|
|
48
|
+
}
|
|
49
|
+
async findByPageInternalId(pageInternalId, filter) {
|
|
50
|
+
const schedules = await this.raw.findByPageInternalId(pageInternalId, filter);
|
|
51
|
+
await this.loadPages(schedules);
|
|
52
|
+
return this.removeUnauthorized(schedules);
|
|
53
|
+
}
|
|
54
|
+
async count(filter) {
|
|
55
|
+
return await this.raw.count(filter);
|
|
56
|
+
}
|
|
57
|
+
mayView(sp) {
|
|
58
|
+
if (!sp.page)
|
|
59
|
+
return false;
|
|
60
|
+
return this.svc(PageService).mayViewForEdit(sp.page);
|
|
61
|
+
}
|
|
62
|
+
async loadPages(schedules) {
|
|
63
|
+
const pageSvc = this.svc(PageServiceInternal);
|
|
64
|
+
await Promise.all(schedules.map(async (sp) => {
|
|
65
|
+
sp.page ??= await pageSvc.findByInternalId(sp.pageInternalId);
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
async create(args, validateOnly) {
|
|
69
|
+
const page = await this.svc(PageServiceInternal).findById(args.pageId);
|
|
70
|
+
if (!page)
|
|
71
|
+
throw new Error('Page not found.');
|
|
72
|
+
const parent = page.parentInternalId ? await this.svc(PageServiceInternal).findByInternalId(page.parentInternalId) : null;
|
|
73
|
+
const pageSvc = this.svc(PageService);
|
|
74
|
+
const response = new ScheduledPublishResponse({ success: true });
|
|
75
|
+
if (args.action === ScheduledPublishAction.UNPUBLISH) {
|
|
76
|
+
if (!await pageSvc.mayScheduleUnpublish(page))
|
|
77
|
+
throw new Error('You are not permitted to schedule an unpublish for this page, or an active unpublish schedule already exists.');
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
if (!await pageSvc.maySchedulePublish(page))
|
|
81
|
+
throw new Error('You are not permitted to schedule a publish for this page, or an active publish schedule already exists.');
|
|
82
|
+
if (parent && !parent.published)
|
|
83
|
+
response.addMessage('This page\'s parent is not published. If the parent page is still not published at the targeted time, this scheduled publish will fail.', 'targetDate', MutationMessageType.warning);
|
|
84
|
+
}
|
|
85
|
+
validate(response, args);
|
|
86
|
+
if (response.hasErrors() || validateOnly)
|
|
87
|
+
return response;
|
|
88
|
+
const recurrence = args.recurrence
|
|
89
|
+
? { recur: args.recurrence.type, recurInterval: args.recurrence.interval ?? 1, timezone: args.recurrence.timezone ?? process.env.TZ ?? 'America/Chicago' }
|
|
90
|
+
: undefined;
|
|
91
|
+
const id = await createScheduledPublish(page.internalId, args.action, args.targetDate.toJSDate(), this.login, recurrence);
|
|
92
|
+
this.loaders.clear();
|
|
93
|
+
const created = await this.raw.findById(id);
|
|
94
|
+
response.scheduledPublish = created;
|
|
95
|
+
return response;
|
|
96
|
+
}
|
|
97
|
+
async update(scheduledPublishId, args, validateOnly) {
|
|
98
|
+
const schedule = await this.raw.findById(Number(scheduledPublishId));
|
|
99
|
+
if (!schedule || !await this.mayEdit(schedule))
|
|
100
|
+
throw new Error('You are not permitted to edit this schedule.');
|
|
101
|
+
if ((schedule.action === ScheduledPublishAction.UNPUBLISH && args.action !== ScheduledPublishAction.UNPUBLISH) ||
|
|
102
|
+
(schedule.action !== ScheduledPublishAction.UNPUBLISH && args.action === ScheduledPublishAction.UNPUBLISH)) {
|
|
103
|
+
throw new Error('An unpublish schedule cannot be changed to a publish schedule, and vice versa.');
|
|
104
|
+
}
|
|
105
|
+
const response = new ScheduledPublishResponse({ success: true });
|
|
106
|
+
validate(response, args);
|
|
107
|
+
if (response.hasErrors() || validateOnly)
|
|
108
|
+
return response;
|
|
109
|
+
await updateScheduledPublish(schedule.internalId, {
|
|
110
|
+
action: args.action,
|
|
111
|
+
targetDate: args.targetDate.toJSDate(),
|
|
112
|
+
recur: args.recurrence?.type ?? null,
|
|
113
|
+
recurInterval: args.recurrence ? (args.recurrence.interval ?? 1) : null,
|
|
114
|
+
timezone: args.recurrence ? (args.recurrence.timezone ?? process.env.TZ ?? 'America/Chicago') : null,
|
|
115
|
+
updatedBy: this.login
|
|
116
|
+
});
|
|
117
|
+
this.loaders.clear();
|
|
118
|
+
const updated = await this.raw.findById(schedule.internalId);
|
|
119
|
+
response.scheduledPublish = updated;
|
|
120
|
+
return response;
|
|
121
|
+
}
|
|
122
|
+
async cancel(scheduledPublishId) {
|
|
123
|
+
const schedule = await this.raw.findById(Number(scheduledPublishId));
|
|
124
|
+
if (!schedule || !await this.mayCancel(schedule))
|
|
125
|
+
throw new Error('You are not permitted to cancel this schedule.');
|
|
126
|
+
await updateScheduledPublishStatus(schedule.internalId, ScheduledPublishStatus.CANCELLED);
|
|
127
|
+
this.loaders.clear();
|
|
128
|
+
const cancelled = await this.raw.findById(schedule.internalId);
|
|
129
|
+
return new ScheduledPublishResponse({ success: true, scheduledPublish: cancelled });
|
|
130
|
+
}
|
|
131
|
+
async mayEdit(schedule) {
|
|
132
|
+
if (schedule.status !== ScheduledPublishStatus.PENDING)
|
|
133
|
+
return false;
|
|
134
|
+
const page = schedule.page ?? await this.svc(PageServiceInternal).findByInternalId(schedule.pageInternalId);
|
|
135
|
+
if (!page)
|
|
136
|
+
return false;
|
|
137
|
+
if (schedule.action === ScheduledPublishAction.UNPUBLISH) {
|
|
138
|
+
return await this.svc(PageService).mayScheduleUnpublish(page, schedule.internalId);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
return await this.svc(PageService).maySchedulePublish(page, schedule.internalId);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
async mayCancel(schedule) {
|
|
145
|
+
return await this.mayEdit(schedule);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const maxRecurInterval = {
|
|
149
|
+
[ScheduledPublishRecurrence.DAY]: 365,
|
|
150
|
+
[ScheduledPublishRecurrence.WEEK]: 52,
|
|
151
|
+
[ScheduledPublishRecurrence.MONTH]: 12
|
|
152
|
+
};
|
|
153
|
+
function validate(response, args) {
|
|
154
|
+
if (args.targetDate <= DateTime.now().plus({ minutes: 5 })) {
|
|
155
|
+
response.addMessage('Target date must be at least 5 minutes in the future.', 'args.targetDate', MutationMessageType.error);
|
|
156
|
+
}
|
|
157
|
+
if (args.targetDate > DateTime.now().plus({ years: 1 })) {
|
|
158
|
+
response.addMessage('Target date may not be more than a year in the future.', 'args.targetDate', MutationMessageType.error);
|
|
159
|
+
}
|
|
160
|
+
if (args.recurrence) {
|
|
161
|
+
const interval = args.recurrence.interval ?? 1;
|
|
162
|
+
if (interval < 1) {
|
|
163
|
+
response.addMessage('Recurrence interval must be at least 1.', 'args.recurrence.interval', MutationMessageType.error);
|
|
164
|
+
}
|
|
165
|
+
else if (interval > maxRecurInterval[args.recurrence.type]) {
|
|
166
|
+
response.addMessage(`Recurrence interval may not exceed ${maxRecurInterval[args.recurrence.type]} for ${args.recurrence.type} recurrence.`, 'args.recurrence.interval', MutationMessageType.error);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=scheduledpublish.service.js.map
|