@desaubv/quik 0.0.21 → 0.0.81
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/README.md +804 -0
- package/dist/cron/index.cjs +330 -0
- package/dist/cron/index.cjs.map +1 -0
- package/dist/cron/index.d.cts +38 -0
- package/dist/cron/index.d.ts +38 -0
- package/dist/cron/index.js +291 -0
- package/dist/cron/index.js.map +1 -0
- package/dist/cron-BLi976po.d.cts +38 -0
- package/dist/cron-BLi976po.d.ts +38 -0
- package/dist/http/index.cjs +318 -0
- package/dist/http/index.cjs.map +1 -0
- package/dist/http/index.d.cts +121 -0
- package/dist/http/index.d.ts +121 -0
- package/dist/http/index.js +288 -0
- package/dist/http/index.js.map +1 -0
- package/dist/index.cjs +523 -18
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +92 -3
- package/dist/index.d.ts +92 -3
- package/dist/index.js +516 -15
- package/dist/index.js.map +1 -1
- package/package.json +67 -34
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/cron/index.ts
|
|
31
|
+
var cron_exports = {};
|
|
32
|
+
__export(cron_exports, {
|
|
33
|
+
Cron: () => Cron,
|
|
34
|
+
QuikCron: () => QuikCron,
|
|
35
|
+
Schedule: () => Schedule
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(cron_exports);
|
|
38
|
+
|
|
39
|
+
// src/cron/cron.ts
|
|
40
|
+
var import_node_cron = __toESM(require("node-cron"), 1);
|
|
41
|
+
var import_node_cron2 = require("node-cron");
|
|
42
|
+
|
|
43
|
+
// src/cron/exceptions.ts
|
|
44
|
+
var CronError = class extends Error {
|
|
45
|
+
constructor(message) {
|
|
46
|
+
super(message);
|
|
47
|
+
this.name = new.target.name;
|
|
48
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
var CronTaskAlreadyExistsError = class extends CronError {
|
|
52
|
+
constructor(name) {
|
|
53
|
+
super(`Cron task "${name}" already exists.`);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
var CronInvalidScheduleError = class extends CronError {
|
|
57
|
+
constructor(schedule) {
|
|
58
|
+
super(`Invalid cron schedule: "${schedule}".`);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
var CronInvalidTimeZoneError = class extends CronError {
|
|
62
|
+
constructor(timeZone) {
|
|
63
|
+
super(`Invalid time zone: "${timeZone}".`);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
var CronTaskExecutionError = class extends CronError {
|
|
67
|
+
constructor(name, cause) {
|
|
68
|
+
super(`Cron task "${name}" failed to execute.`);
|
|
69
|
+
if (cause !== void 0) {
|
|
70
|
+
this.cause = cause;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
// src/core/time.ts
|
|
76
|
+
function isValidTimeZone(timeZone) {
|
|
77
|
+
try {
|
|
78
|
+
new Intl.DateTimeFormat("en-US", {
|
|
79
|
+
timeZone
|
|
80
|
+
});
|
|
81
|
+
return true;
|
|
82
|
+
} catch {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// src/cron/cron.ts
|
|
88
|
+
var defaultConfig = {
|
|
89
|
+
language: "en"
|
|
90
|
+
};
|
|
91
|
+
var QuikCron = class {
|
|
92
|
+
tasks = /* @__PURE__ */ new Map();
|
|
93
|
+
jobs = /* @__PURE__ */ new Map();
|
|
94
|
+
#config = structuredClone(defaultConfig);
|
|
95
|
+
constructor() {
|
|
96
|
+
}
|
|
97
|
+
add(task) {
|
|
98
|
+
if (this.tasks.has(task.name)) {
|
|
99
|
+
throw new CronTaskAlreadyExistsError(
|
|
100
|
+
task.name
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
if (!import_node_cron.default.validate(task.schedule)) {
|
|
104
|
+
throw new CronInvalidScheduleError(
|
|
105
|
+
task.schedule
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
if (task.timezone && !isValidTimeZone(task.timezone)) {
|
|
109
|
+
throw new CronInvalidTimeZoneError(
|
|
110
|
+
task.timezone
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
this.tasks.set(task.name, {
|
|
114
|
+
...task
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
remove(name) {
|
|
118
|
+
this.jobs.get(name)?.stop();
|
|
119
|
+
this.jobs.delete(name);
|
|
120
|
+
return this.tasks.delete(name);
|
|
121
|
+
}
|
|
122
|
+
has(name) {
|
|
123
|
+
return this.tasks.has(name);
|
|
124
|
+
}
|
|
125
|
+
get(name) {
|
|
126
|
+
return this.tasks.get(name);
|
|
127
|
+
}
|
|
128
|
+
getTasks() {
|
|
129
|
+
return [...this.tasks.values()];
|
|
130
|
+
}
|
|
131
|
+
start() {
|
|
132
|
+
for (const task of this.tasks.values()) {
|
|
133
|
+
if (this.jobs.has(task.name)) {
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
const timezone = task.timezone ?? this.#config.timeZone;
|
|
137
|
+
const options = timezone ? { timezone } : {};
|
|
138
|
+
const job = import_node_cron.default.schedule(
|
|
139
|
+
task.schedule,
|
|
140
|
+
async () => {
|
|
141
|
+
try {
|
|
142
|
+
await task.task();
|
|
143
|
+
} catch (error) {
|
|
144
|
+
const exception = new CronTaskExecutionError(
|
|
145
|
+
task.name,
|
|
146
|
+
error
|
|
147
|
+
);
|
|
148
|
+
this.#config.onError?.(exception);
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
options
|
|
152
|
+
);
|
|
153
|
+
this.jobs.set(task.name, job);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
stop() {
|
|
157
|
+
for (const job of this.jobs.values()) {
|
|
158
|
+
job.stop();
|
|
159
|
+
}
|
|
160
|
+
this.jobs.clear();
|
|
161
|
+
}
|
|
162
|
+
config() {
|
|
163
|
+
return Object.freeze(
|
|
164
|
+
structuredClone(this.#config)
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
setConfig(config) {
|
|
168
|
+
if (config.timeZone && !isValidTimeZone(config.timeZone)) {
|
|
169
|
+
throw new CronInvalidTimeZoneError(
|
|
170
|
+
config.timeZone
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
this.#config = {
|
|
174
|
+
...this.#config,
|
|
175
|
+
...config
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
function Cron() {
|
|
180
|
+
return new QuikCron();
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// src/cron/schedule.ts
|
|
184
|
+
var weekdays = {
|
|
185
|
+
sunday: 0,
|
|
186
|
+
monday: 1,
|
|
187
|
+
tuesday: 2,
|
|
188
|
+
wednesday: 3,
|
|
189
|
+
thursday: 4,
|
|
190
|
+
friday: 5,
|
|
191
|
+
saturday: 6
|
|
192
|
+
};
|
|
193
|
+
var ScheduleBuilder = class {
|
|
194
|
+
#value;
|
|
195
|
+
constructor(value = 1) {
|
|
196
|
+
if (!Number.isInteger(value) || value < 1) {
|
|
197
|
+
throw new RangeError(
|
|
198
|
+
"Schedule value must be a positive integer."
|
|
199
|
+
);
|
|
200
|
+
}
|
|
201
|
+
this.#value = value;
|
|
202
|
+
}
|
|
203
|
+
seconds() {
|
|
204
|
+
return this.#interval("second");
|
|
205
|
+
}
|
|
206
|
+
second() {
|
|
207
|
+
return this.seconds();
|
|
208
|
+
}
|
|
209
|
+
minutes() {
|
|
210
|
+
return this.#interval("minute");
|
|
211
|
+
}
|
|
212
|
+
minute() {
|
|
213
|
+
return this.minutes();
|
|
214
|
+
}
|
|
215
|
+
hours() {
|
|
216
|
+
return this.#interval("hour");
|
|
217
|
+
}
|
|
218
|
+
hour() {
|
|
219
|
+
return this.hours();
|
|
220
|
+
}
|
|
221
|
+
days() {
|
|
222
|
+
return this.#interval("day");
|
|
223
|
+
}
|
|
224
|
+
day() {
|
|
225
|
+
return this.days();
|
|
226
|
+
}
|
|
227
|
+
months() {
|
|
228
|
+
return this.#interval("month");
|
|
229
|
+
}
|
|
230
|
+
month() {
|
|
231
|
+
return this.months();
|
|
232
|
+
}
|
|
233
|
+
dayAt(time) {
|
|
234
|
+
const [hour, minute] = this.#parseTime(time);
|
|
235
|
+
return `${minute} ${hour} * * *`;
|
|
236
|
+
}
|
|
237
|
+
at(time) {
|
|
238
|
+
return this.dayAt(time);
|
|
239
|
+
}
|
|
240
|
+
weekdayAt(weekday, time) {
|
|
241
|
+
const [hour, minute] = this.#parseTime(time);
|
|
242
|
+
return `${minute} ${hour} * * ${weekdays[weekday]}`;
|
|
243
|
+
}
|
|
244
|
+
sundayAt(time) {
|
|
245
|
+
return this.weekdayAt("sunday", time);
|
|
246
|
+
}
|
|
247
|
+
mondayAt(time) {
|
|
248
|
+
return this.weekdayAt("monday", time);
|
|
249
|
+
}
|
|
250
|
+
tuesdayAt(time) {
|
|
251
|
+
return this.weekdayAt("tuesday", time);
|
|
252
|
+
}
|
|
253
|
+
wednesdayAt(time) {
|
|
254
|
+
return this.weekdayAt("wednesday", time);
|
|
255
|
+
}
|
|
256
|
+
thursdayAt(time) {
|
|
257
|
+
return this.weekdayAt("thursday", time);
|
|
258
|
+
}
|
|
259
|
+
fridayAt(time) {
|
|
260
|
+
return this.weekdayAt("friday", time);
|
|
261
|
+
}
|
|
262
|
+
saturdayAt(time) {
|
|
263
|
+
return this.weekdayAt("saturday", time);
|
|
264
|
+
}
|
|
265
|
+
weekdaysAt(time) {
|
|
266
|
+
const [hour, minute] = this.#parseTime(time);
|
|
267
|
+
return `${minute} ${hour} * * 1-5`;
|
|
268
|
+
}
|
|
269
|
+
weekendsAt(time) {
|
|
270
|
+
const [hour, minute] = this.#parseTime(time);
|
|
271
|
+
return `${minute} ${hour} * * 0,6`;
|
|
272
|
+
}
|
|
273
|
+
#interval(unit) {
|
|
274
|
+
switch (unit) {
|
|
275
|
+
case "second":
|
|
276
|
+
return `*/${this.#value} * * * * *`;
|
|
277
|
+
case "minute":
|
|
278
|
+
return `*/${this.#value} * * * *`;
|
|
279
|
+
case "hour":
|
|
280
|
+
return `0 */${this.#value} * * *`;
|
|
281
|
+
case "day":
|
|
282
|
+
return `0 0 */${this.#value} * *`;
|
|
283
|
+
case "month":
|
|
284
|
+
return `0 0 1 */${this.#value} *`;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
#parseTime(time) {
|
|
288
|
+
if (!/^\d{2}:\d{2}$/.test(time)) {
|
|
289
|
+
throw new TypeError(
|
|
290
|
+
`Invalid time "${time}". Expected HH:mm.`
|
|
291
|
+
);
|
|
292
|
+
}
|
|
293
|
+
const parts = time.split(":");
|
|
294
|
+
const hour = Number(parts[0]);
|
|
295
|
+
const minute = Number(parts[1]);
|
|
296
|
+
if (hour < 0 || hour > 23 || minute < 0 || minute > 59) {
|
|
297
|
+
throw new RangeError(
|
|
298
|
+
`Invalid time "${time}".`
|
|
299
|
+
);
|
|
300
|
+
}
|
|
301
|
+
return [hour, minute];
|
|
302
|
+
}
|
|
303
|
+
};
|
|
304
|
+
var Schedule = class {
|
|
305
|
+
static every(value = 1) {
|
|
306
|
+
return new ScheduleBuilder(value);
|
|
307
|
+
}
|
|
308
|
+
static at(time) {
|
|
309
|
+
return new ScheduleBuilder().at(time);
|
|
310
|
+
}
|
|
311
|
+
static weekday(weekday, time) {
|
|
312
|
+
return new ScheduleBuilder().weekdayAt(
|
|
313
|
+
weekday,
|
|
314
|
+
time
|
|
315
|
+
);
|
|
316
|
+
}
|
|
317
|
+
static weekdaysAt(time) {
|
|
318
|
+
return new ScheduleBuilder().weekdaysAt(time);
|
|
319
|
+
}
|
|
320
|
+
static weekendsAt(time) {
|
|
321
|
+
return new ScheduleBuilder().weekendsAt(time);
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
325
|
+
0 && (module.exports = {
|
|
326
|
+
Cron,
|
|
327
|
+
QuikCron,
|
|
328
|
+
Schedule
|
|
329
|
+
});
|
|
330
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cron/index.ts","../../src/cron/cron.ts","../../src/cron/exceptions.ts","../../src/core/time.ts","../../src/cron/schedule.ts"],"sourcesContent":["export { Cron, QuikCron } from \"./cron.js\";\r\nexport { Schedule } from \"./schedule.js\";","import cron from \"node-cron\";\r\nimport { type ScheduledTask } from \"node-cron\";\r\n\r\nimport {\r\n CronTaskAlreadyExistsError,\r\n CronInvalidScheduleError,\r\n CronInvalidTimeZoneError,\r\n CronTaskExecutionError,\r\n} from \"./exceptions.js\";\r\n\r\nimport { isValidTimeZone } from \"../core/time.js\";\r\nimport type { CronConfig, CronTask, PartialCronConfig } from \"./types.js\";\r\n\r\n// Default configuration \r\nconst defaultConfig: CronConfig = {\r\n language: \"en\",\r\n};\r\n\r\n// Cron Class\r\nclass QuikCron {\r\n private tasks = new Map<string, CronTask>();\r\n private jobs = new Map<string, ScheduledTask>();\r\n\r\n #config: CronConfig = structuredClone(defaultConfig);\r\n\r\n constructor() {\r\n \r\n }\r\n\r\n add(task: CronTask): void {\r\n if (this.tasks.has(task.name)) {\r\n throw new CronTaskAlreadyExistsError(\r\n task.name\r\n );\r\n }\r\n\r\n if (!cron.validate(task.schedule)) {\r\n throw new CronInvalidScheduleError(\r\n task.schedule\r\n );\r\n }\r\n\r\n if (\r\n task.timezone &&\r\n !isValidTimeZone(task.timezone)\r\n ) {\r\n throw new CronInvalidTimeZoneError(\r\n task.timezone\r\n );\r\n }\r\n\r\n this.tasks.set(task.name, {\r\n ...task,\r\n });\r\n }\r\n\r\n remove(name: string): boolean {\r\n this.jobs.get(name)?.stop();\r\n this.jobs.delete(name);\r\n\r\n return this.tasks.delete(name);\r\n }\r\n\r\n has(name: string): boolean {\r\n return this.tasks.has(name);\r\n }\r\n\r\n get(name: string): CronTask | undefined {\r\n return this.tasks.get(name);\r\n }\r\n\r\n getTasks(): CronTask[] {\r\n return [...this.tasks.values()];\r\n }\r\n\r\n start(): void {\r\n for (const task of this.tasks.values()) {\r\n if (this.jobs.has(task.name)) {\r\n continue;\r\n }\r\n\r\n const timezone =\r\n task.timezone ?? this.#config.timeZone;\r\n\r\n const options = timezone\r\n ? { timezone }\r\n : {};\r\n\r\n const job = cron.schedule(\r\n task.schedule,\r\n async () => {\r\n try {\r\n await task.task();\r\n } catch (error) {\r\n const exception =\r\n new CronTaskExecutionError(\r\n task.name,\r\n error\r\n );\r\n\r\n this.#config.onError?.(exception);\r\n }\r\n },\r\n options\r\n );\r\n\r\n this.jobs.set(task.name, job);\r\n }\r\n }\r\n\r\n stop(): void {\r\n for (const job of this.jobs.values()) {\r\n job.stop();\r\n }\r\n\r\n this.jobs.clear();\r\n }\r\n\r\n config(): Readonly<CronConfig> {\r\n return Object.freeze(\r\n structuredClone(this.#config)\r\n );\r\n }\r\n\r\n setConfig(config: PartialCronConfig): void {\r\n if (\r\n config.timeZone &&\r\n !isValidTimeZone(config.timeZone)\r\n ) {\r\n throw new CronInvalidTimeZoneError(\r\n config.timeZone\r\n );\r\n }\r\n\r\n this.#config = {\r\n ...this.#config,\r\n ...config,\r\n };\r\n }\r\n}\r\n\r\nfunction Cron(): QuikCron {\r\n return new QuikCron();\r\n}\r\n\r\nexport { QuikCron, Cron };\r\n","class CronError extends Error {\r\n constructor(message: string) {\r\n super(message);\r\n\r\n this.name = new.target.name;\r\n\r\n Object.setPrototypeOf(this, new.target.prototype);\r\n }\r\n}\r\n\r\nclass CronTaskAlreadyExistsError extends CronError {\r\n constructor(name: string) {\r\n super(`Cron task \"${name}\" already exists.`);\r\n }\r\n}\r\n\r\nclass CronTaskNotFoundError extends CronError {\r\n constructor(name: string) {\r\n super(`Cron task \"${name}\" was not found.`);\r\n }\r\n}\r\n\r\nclass CronInvalidScheduleError extends CronError {\r\n constructor(schedule: string) {\r\n super(`Invalid cron schedule: \"${schedule}\".`);\r\n }\r\n}\r\n\r\nclass CronInvalidTimeZoneError extends CronError {\r\n constructor(timeZone: string) {\r\n super(`Invalid time zone: \"${timeZone}\".`);\r\n }\r\n}\r\n\r\nclass CronTaskExecutionError extends CronError {\r\n constructor(\r\n name: string,\r\n cause?: unknown\r\n ) {\r\n super(`Cron task \"${name}\" failed to execute.`);\r\n\r\n if (cause !== undefined) {\r\n this.cause = cause;\r\n }\r\n }\r\n}\r\n\r\nexport {\r\n CronError,\r\n CronTaskAlreadyExistsError,\r\n CronTaskNotFoundError,\r\n CronInvalidScheduleError,\r\n CronInvalidTimeZoneError,\r\n CronTaskExecutionError,\r\n};\r\n","function dateToString(date: Date, format: string, timeZone?: string): string {\r\n const formatter = new Intl.DateTimeFormat(\"en-US\", {\r\n timeZone,\r\n year: \"numeric\",\r\n month: \"2-digit\",\r\n day: \"2-digit\",\r\n hour: \"2-digit\",\r\n minute: \"2-digit\",\r\n second: \"2-digit\",\r\n hourCycle: \"h23\",\r\n });\r\n\r\n const parts = formatter.formatToParts(date);\r\n const values = Object.fromEntries(\r\n parts\r\n .filter(({ type }) => type !== \"literal\")\r\n .map(({ type, value }) => [type, value])\r\n );\r\n\r\n return format.replace(/(YYYY|MM|DD|hh|mm|ss)/g, (match): string => {\r\n switch (match) {\r\n case \"YYYY\":\r\n return values.year || \"\";\r\n case \"MM\":\r\n return values.month || \"\";\r\n case \"DD\":\r\n return values.day || \"\";\r\n case \"hh\":\r\n return values.hour || \"\";\r\n case \"mm\":\r\n return values.minute || \"\";\r\n case \"ss\":\r\n return values.second || \"\";\r\n default:\r\n return match;\r\n }\r\n });\r\n}\r\n\r\nfunction isValidTimeZone(timeZone: string): boolean {\r\n try {\r\n new Intl.DateTimeFormat(\"en-US\", {\r\n timeZone,\r\n });\r\n\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nexport { dateToString, isValidTimeZone };\r\n","type Weekday =\r\n | \"sunday\"\r\n | \"monday\"\r\n | \"tuesday\"\r\n | \"wednesday\"\r\n | \"thursday\"\r\n | \"friday\"\r\n | \"saturday\";\r\n\r\ntype ScheduleUnit =\r\n | \"second\"\r\n | \"minute\"\r\n | \"hour\"\r\n | \"day\"\r\n | \"month\";\r\n\r\nconst weekdays: Record<Weekday, number> = {\r\n sunday: 0,\r\n monday: 1,\r\n tuesday: 2,\r\n wednesday: 3,\r\n thursday: 4,\r\n friday: 5,\r\n saturday: 6,\r\n};\r\n\r\nexport class ScheduleBuilder {\r\n #value: number;\r\n\r\n constructor(value = 1) {\r\n if (!Number.isInteger(value) || value < 1) {\r\n throw new RangeError(\r\n \"Schedule value must be a positive integer.\"\r\n );\r\n }\r\n\r\n this.#value = value;\r\n }\r\n\r\n seconds(): string {\r\n return this.#interval(\"second\");\r\n }\r\n\r\n second(): string {\r\n return this.seconds();\r\n }\r\n\r\n minutes(): string {\r\n return this.#interval(\"minute\");\r\n }\r\n\r\n minute(): string {\r\n return this.minutes();\r\n }\r\n\r\n hours(): string {\r\n return this.#interval(\"hour\");\r\n }\r\n\r\n hour(): string {\r\n return this.hours();\r\n }\r\n\r\n days(): string {\r\n return this.#interval(\"day\");\r\n }\r\n\r\n day(): string {\r\n return this.days();\r\n }\r\n\r\n months(): string {\r\n return this.#interval(\"month\");\r\n }\r\n\r\n month(): string {\r\n return this.months();\r\n }\r\n\r\n dayAt(time: string): string {\r\n const [hour, minute] = this.#parseTime(time);\r\n\r\n return `${minute} ${hour} * * *`;\r\n }\r\n\r\n at(time: string): string {\r\n return this.dayAt(time);\r\n }\r\n\r\n weekdayAt(\r\n weekday: Weekday,\r\n time: string\r\n ): string {\r\n const [hour, minute] = this.#parseTime(time);\r\n\r\n return `${minute} ${hour} * * ${weekdays[weekday]}`;\r\n }\r\n\r\n sundayAt(time: string): string {\r\n return this.weekdayAt(\"sunday\", time);\r\n }\r\n\r\n mondayAt(time: string): string {\r\n return this.weekdayAt(\"monday\", time);\r\n }\r\n\r\n tuesdayAt(time: string): string {\r\n return this.weekdayAt(\"tuesday\", time);\r\n }\r\n\r\n wednesdayAt(time: string): string {\r\n return this.weekdayAt(\"wednesday\", time);\r\n }\r\n\r\n thursdayAt(time: string): string {\r\n return this.weekdayAt(\"thursday\", time);\r\n }\r\n\r\n fridayAt(time: string): string {\r\n return this.weekdayAt(\"friday\", time);\r\n }\r\n\r\n saturdayAt(time: string): string {\r\n return this.weekdayAt(\"saturday\", time);\r\n }\r\n\r\n weekdaysAt(time: string): string {\r\n const [hour, minute] = this.#parseTime(time);\r\n\r\n return `${minute} ${hour} * * 1-5`;\r\n }\r\n\r\n weekendsAt(time: string): string {\r\n const [hour, minute] = this.#parseTime(time);\r\n\r\n return `${minute} ${hour} * * 0,6`;\r\n }\r\n\r\n #interval(unit: ScheduleUnit): string {\r\n switch (unit) {\r\n case \"second\":\r\n return `*/${this.#value} * * * * *`;\r\n\r\n case \"minute\":\r\n return `*/${this.#value} * * * *`;\r\n\r\n case \"hour\":\r\n return `0 */${this.#value} * * *`;\r\n\r\n case \"day\":\r\n return `0 0 */${this.#value} * *`;\r\n\r\n case \"month\":\r\n return `0 0 1 */${this.#value} *`;\r\n }\r\n }\r\n\r\n #parseTime(time: string): [number, number] {\r\n if (!/^\\d{2}:\\d{2}$/.test(time)) {\r\n throw new TypeError(\r\n `Invalid time \"${time}\". Expected HH:mm.`\r\n );\r\n }\r\n\r\n const parts = time.split(\":\");\r\n\r\n const hour = Number(parts[0]);\r\n const minute = Number(parts[1]);\r\n\r\n if (\r\n hour < 0 ||\r\n hour > 23 ||\r\n minute < 0 ||\r\n minute > 59\r\n ) {\r\n throw new RangeError(\r\n `Invalid time \"${time}\".`\r\n );\r\n }\r\n\r\n return [hour, minute];\r\n }\r\n}\r\n\r\nexport class Schedule {\r\n static every(value = 1): ScheduleBuilder {\r\n return new ScheduleBuilder(value);\r\n }\r\n\r\n static at(time: string): string {\r\n return new ScheduleBuilder().at(time);\r\n }\r\n\r\n static weekday(weekday: Weekday, time: string): string {\r\n return new ScheduleBuilder().weekdayAt(\r\n weekday,\r\n time\r\n );\r\n }\r\n\r\n static weekdaysAt(time: string): string {\r\n return new ScheduleBuilder().weekdaysAt(time);\r\n }\r\n\r\n static weekendsAt(time: string): string {\r\n return new ScheduleBuilder().weekendsAt(time);\r\n }\r\n}"],"mappings":"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","names":["import_node_cron","cron"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export { C as Cron, Q as QuikCron } from '../cron-BLi976po.cjs';
|
|
2
|
+
|
|
3
|
+
type Weekday = "sunday" | "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday";
|
|
4
|
+
declare class ScheduleBuilder {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(value?: number);
|
|
7
|
+
seconds(): string;
|
|
8
|
+
second(): string;
|
|
9
|
+
minutes(): string;
|
|
10
|
+
minute(): string;
|
|
11
|
+
hours(): string;
|
|
12
|
+
hour(): string;
|
|
13
|
+
days(): string;
|
|
14
|
+
day(): string;
|
|
15
|
+
months(): string;
|
|
16
|
+
month(): string;
|
|
17
|
+
dayAt(time: string): string;
|
|
18
|
+
at(time: string): string;
|
|
19
|
+
weekdayAt(weekday: Weekday, time: string): string;
|
|
20
|
+
sundayAt(time: string): string;
|
|
21
|
+
mondayAt(time: string): string;
|
|
22
|
+
tuesdayAt(time: string): string;
|
|
23
|
+
wednesdayAt(time: string): string;
|
|
24
|
+
thursdayAt(time: string): string;
|
|
25
|
+
fridayAt(time: string): string;
|
|
26
|
+
saturdayAt(time: string): string;
|
|
27
|
+
weekdaysAt(time: string): string;
|
|
28
|
+
weekendsAt(time: string): string;
|
|
29
|
+
}
|
|
30
|
+
declare class Schedule {
|
|
31
|
+
static every(value?: number): ScheduleBuilder;
|
|
32
|
+
static at(time: string): string;
|
|
33
|
+
static weekday(weekday: Weekday, time: string): string;
|
|
34
|
+
static weekdaysAt(time: string): string;
|
|
35
|
+
static weekendsAt(time: string): string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export { Schedule };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export { C as Cron, Q as QuikCron } from '../cron-BLi976po.js';
|
|
2
|
+
|
|
3
|
+
type Weekday = "sunday" | "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday";
|
|
4
|
+
declare class ScheduleBuilder {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(value?: number);
|
|
7
|
+
seconds(): string;
|
|
8
|
+
second(): string;
|
|
9
|
+
minutes(): string;
|
|
10
|
+
minute(): string;
|
|
11
|
+
hours(): string;
|
|
12
|
+
hour(): string;
|
|
13
|
+
days(): string;
|
|
14
|
+
day(): string;
|
|
15
|
+
months(): string;
|
|
16
|
+
month(): string;
|
|
17
|
+
dayAt(time: string): string;
|
|
18
|
+
at(time: string): string;
|
|
19
|
+
weekdayAt(weekday: Weekday, time: string): string;
|
|
20
|
+
sundayAt(time: string): string;
|
|
21
|
+
mondayAt(time: string): string;
|
|
22
|
+
tuesdayAt(time: string): string;
|
|
23
|
+
wednesdayAt(time: string): string;
|
|
24
|
+
thursdayAt(time: string): string;
|
|
25
|
+
fridayAt(time: string): string;
|
|
26
|
+
saturdayAt(time: string): string;
|
|
27
|
+
weekdaysAt(time: string): string;
|
|
28
|
+
weekendsAt(time: string): string;
|
|
29
|
+
}
|
|
30
|
+
declare class Schedule {
|
|
31
|
+
static every(value?: number): ScheduleBuilder;
|
|
32
|
+
static at(time: string): string;
|
|
33
|
+
static weekday(weekday: Weekday, time: string): string;
|
|
34
|
+
static weekdaysAt(time: string): string;
|
|
35
|
+
static weekendsAt(time: string): string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export { Schedule };
|