@useparagon/core 1.0.7 → 1.0.8-canary.2
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/triggers/cron/cron.interface.d.ts +7 -2
- package/dist/triggers/cron/cron.interface.js +1 -0
- package/dist/triggers/cron/cron.interface.js.map +1 -1
- package/dist/triggers/cron/cron.utils.d.ts +2 -2
- package/dist/triggers/cron/cron.utils.js +58 -28
- package/dist/triggers/cron/cron.utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,7 +6,8 @@ export declare enum Unit {
|
|
|
6
6
|
MINUTES = "MINUTES",
|
|
7
7
|
HOURLY = "HOURLY",
|
|
8
8
|
DAILY = "DAILY",
|
|
9
|
-
WEEKLY = "WEEKLY"
|
|
9
|
+
WEEKLY = "WEEKLY",
|
|
10
|
+
CUSTOM = "CUSTOM"
|
|
10
11
|
}
|
|
11
12
|
export declare enum Weekday {
|
|
12
13
|
MONDAY = "MONDAY",
|
|
@@ -44,7 +45,11 @@ export type WeeklySchedule<T = Time> = {
|
|
|
44
45
|
weekday: Weekday;
|
|
45
46
|
time: T;
|
|
46
47
|
};
|
|
47
|
-
export type
|
|
48
|
+
export type CustomSchedule = {
|
|
49
|
+
unit: Unit.CUSTOM;
|
|
50
|
+
expression: string;
|
|
51
|
+
};
|
|
52
|
+
export type Schedule = SecondsSchedule | MinutesSchedule | HourlySchedule | DailySchedule | WeeklySchedule | CustomSchedule;
|
|
48
53
|
export type Timezone = {
|
|
49
54
|
offset: string;
|
|
50
55
|
label: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron.interface.js","sourceRoot":"","sources":["../../../src/triggers/cron/cron.interface.ts"],"names":[],"mappings":";;;AAIA,IAAY,
|
|
1
|
+
{"version":3,"file":"cron.interface.js","sourceRoot":"","sources":["../../../src/triggers/cron/cron.interface.ts"],"names":[],"mappings":";;;AAIA,IAAY,IAOX;AAPD,WAAY,IAAI;IACd,2BAAmB,CAAA;IACnB,2BAAmB,CAAA;IACnB,yBAAiB,CAAA;IACjB,uBAAe,CAAA;IACf,yBAAiB,CAAA;IACjB,yBAAiB,CAAA;AACnB,CAAC,EAPW,IAAI,oBAAJ,IAAI,QAOf;AAED,IAAY,OAQX;AARD,WAAY,OAAO;IACjB,4BAAiB,CAAA;IACjB,8BAAmB,CAAA;IACnB,kCAAuB,CAAA;IACvB,gCAAqB,CAAA;IACrB,4BAAiB,CAAA;IACjB,gCAAqB,CAAA;IACrB,4BAAiB,CAAA;AACnB,CAAC,EARW,OAAO,uBAAP,OAAO,QAQlB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Schedule } from './cron.interface';
|
|
2
|
-
export declare const getCronOptions: (schedule: Schedule) => {
|
|
2
|
+
export declare const getCronOptions: (schedule: Schedule, timezone?: string) => {
|
|
3
3
|
cron: string;
|
|
4
|
-
|
|
4
|
+
timezone?: string | undefined;
|
|
5
5
|
};
|
|
6
6
|
export declare const getSchedule: (cron: string, timezone?: string) => Schedule;
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getSchedule = exports.getCronOptions = void 0;
|
|
4
4
|
const cron_parser_1 = require("cron-parser");
|
|
5
5
|
const cron_interface_1 = require("./cron.interface");
|
|
6
|
-
const getCronOptions = (schedule) => {
|
|
6
|
+
const getCronOptions = (schedule, timezone = 'America/Los_Angeles') => {
|
|
7
7
|
switch (schedule.unit) {
|
|
8
8
|
case cron_interface_1.Unit.SECONDS:
|
|
9
9
|
return { cron: `*/${schedule.seconds} * * * * *` };
|
|
@@ -20,7 +20,7 @@ const getCronOptions = (schedule) => {
|
|
|
20
20
|
const dailyHours = Math.floor(schedule.time.minutes / 60);
|
|
21
21
|
return {
|
|
22
22
|
cron: `0 ${dailyMinutes} ${dailyHours} */${schedule.days} * *`,
|
|
23
|
-
|
|
23
|
+
timezone,
|
|
24
24
|
};
|
|
25
25
|
case cron_interface_1.Unit.WEEKLY:
|
|
26
26
|
const weeklyMinutes = schedule.time.minutes % 60;
|
|
@@ -28,11 +28,26 @@ const getCronOptions = (schedule) => {
|
|
|
28
28
|
const weeklyWeekday = Object.keys(cron_interface_1.Weekday).indexOf(schedule.weekday) + 1;
|
|
29
29
|
return {
|
|
30
30
|
cron: `0 ${weeklyMinutes} ${weeklyHours} * * ${weeklyWeekday}`,
|
|
31
|
-
|
|
31
|
+
timezone,
|
|
32
|
+
};
|
|
33
|
+
case cron_interface_1.Unit.CUSTOM:
|
|
34
|
+
return {
|
|
35
|
+
cron: schedule.expression,
|
|
32
36
|
};
|
|
33
37
|
}
|
|
34
38
|
};
|
|
35
39
|
exports.getCronOptions = getCronOptions;
|
|
40
|
+
const extractMinutes = (cronExpression) => {
|
|
41
|
+
const expressionParts = cronExpression.split(' ');
|
|
42
|
+
const minutePart = expressionParts.length === 5 ? expressionParts[0] : expressionParts[1];
|
|
43
|
+
return minutePart.replace('*/', '');
|
|
44
|
+
};
|
|
45
|
+
const sanitizeExpression = (cronExpression) => {
|
|
46
|
+
const parts = cronExpression.split(' ');
|
|
47
|
+
return parts.length > 5
|
|
48
|
+
? parts.slice(parts.length - 5, parts.length).join(' ')
|
|
49
|
+
: parts.join(' ');
|
|
50
|
+
};
|
|
36
51
|
const getSchedule = (cron, timezone = 'America/Los_Angeles') => {
|
|
37
52
|
const parser = (0, cron_parser_1.parseExpression)(cron);
|
|
38
53
|
const firstIteration = parser.next().toDate();
|
|
@@ -46,44 +61,59 @@ const getSchedule = (cron, timezone = 'America/Los_Angeles') => {
|
|
|
46
61
|
}
|
|
47
62
|
const diffMinutes = Math.floor(diffSeconds / 60);
|
|
48
63
|
if (diffMinutes < 60) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
64
|
+
const minutesFromExpression = parseInt(extractMinutes(cron));
|
|
65
|
+
if (isNaN(minutesFromExpression) ||
|
|
66
|
+
(minutesFromExpression > 60 && minutesFromExpression < 0)) {
|
|
67
|
+
throw new Error(`The minute provided in following cron expression "${cron}" is not a valid value. Value should lie between 0-60`);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
return {
|
|
71
|
+
unit: cron_interface_1.Unit.MINUTES,
|
|
72
|
+
minutes: minutesFromExpression,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
53
75
|
}
|
|
54
76
|
const diffHours = Math.floor(diffMinutes / 60);
|
|
55
77
|
if (diffHours < 24) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
78
|
+
const minuteExpression = parseInt(cron.split(' ')[1]);
|
|
79
|
+
const offset = isNaN(minuteExpression) ? 0 : 0;
|
|
80
|
+
return offset % 5 === 0
|
|
81
|
+
? {
|
|
82
|
+
unit: cron_interface_1.Unit.HOURLY,
|
|
83
|
+
hours: diffHours,
|
|
84
|
+
offset,
|
|
85
|
+
}
|
|
86
|
+
: { unit: cron_interface_1.Unit.CUSTOM, expression: sanitizeExpression(cron) };
|
|
61
87
|
}
|
|
62
88
|
const diffDays = Math.floor(diffHours / 24);
|
|
63
89
|
const minutes = firstIteration.getHours() * 60 + firstIteration.getMinutes();
|
|
64
90
|
if (diffDays !== 7) {
|
|
65
|
-
return
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
91
|
+
return minutes % 15 === 0
|
|
92
|
+
? {
|
|
93
|
+
unit: cron_interface_1.Unit.DAILY,
|
|
94
|
+
days: diffDays,
|
|
95
|
+
time: {
|
|
96
|
+
minutes,
|
|
97
|
+
timezone,
|
|
98
|
+
},
|
|
99
|
+
}
|
|
100
|
+
: { unit: cron_interface_1.Unit.CUSTOM, expression: sanitizeExpression(cron) };
|
|
73
101
|
}
|
|
74
102
|
const weekday = new Intl.DateTimeFormat('en-US', {
|
|
75
103
|
weekday: 'long',
|
|
76
104
|
})
|
|
77
105
|
.format(firstIteration)
|
|
78
106
|
.toUpperCase();
|
|
79
|
-
return
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
107
|
+
return minutes % 15 === 0
|
|
108
|
+
? {
|
|
109
|
+
unit: cron_interface_1.Unit.WEEKLY,
|
|
110
|
+
weekday,
|
|
111
|
+
time: {
|
|
112
|
+
minutes,
|
|
113
|
+
timezone: timezone,
|
|
114
|
+
},
|
|
115
|
+
}
|
|
116
|
+
: { unit: cron_interface_1.Unit.CUSTOM, expression: sanitizeExpression(cron) };
|
|
87
117
|
};
|
|
88
118
|
exports.getSchedule = getSchedule;
|
|
89
119
|
//# sourceMappingURL=cron.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron.utils.js","sourceRoot":"","sources":["../../../src/triggers/cron/cron.utils.ts"],"names":[],"mappings":";;;AAAA,6CAA8C;AAE9C,qDAA2D;AAOpD,MAAM,cAAc,GAAG,CAC5B,QAAkB,
|
|
1
|
+
{"version":3,"file":"cron.utils.js","sourceRoot":"","sources":["../../../src/triggers/cron/cron.utils.ts"],"names":[],"mappings":";;;AAAA,6CAA8C;AAE9C,qDAA2D;AAOpD,MAAM,cAAc,GAAG,CAC5B,QAAkB,EAClB,QAAQ,GAAG,qBAAqB,EACK,EAAE;IACvC,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,qBAAI,CAAC,OAAO;YACf,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,CAAC,OAAO,YAAY,EAAE,CAAC;QACrD,KAAK,qBAAI,CAAC,OAAO;YACf,OAAO;gBACL,IAAI,EAAE,OAAO,QAAQ,CAAC,OAAO,UAAU;aACxC,CAAC;QACJ,KAAK,qBAAI,CAAC,MAAM;YACd,OAAO;gBACL,IAAI,EAAE,KAAK,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC,KAAK,QAAQ;aACvD,CAAC;QACJ,KAAK,qBAAI,CAAC,KAAK;YACb,MAAM,YAAY,GAAW,QAAQ,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YACxD,MAAM,UAAU,GAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;YAClE,OAAO;gBACL,IAAI,EAAE,KAAK,YAAY,IAAI,UAAU,MAAM,QAAQ,CAAC,IAAI,MAAM;gBAC9D,QAAQ;aACT,CAAC;QACJ,KAAK,qBAAI,CAAC,MAAM;YACd,MAAM,aAAa,GAAW,QAAQ,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YACzD,MAAM,WAAW,GAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,aAAa,GACjB,MAAM,CAAC,IAAI,CAAC,wBAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrD,OAAO;gBACL,IAAI,EAAE,KAAK,aAAa,IAAI,WAAW,QAAQ,aAAa,EAAE;gBAC9D,QAAQ;aACT,CAAC;QACJ,KAAK,qBAAI,CAAC,MAAM;YACd,OAAO;gBACL,IAAI,EAAE,QAAQ,CAAC,UAAU;aAC1B,CAAC;IACN,CAAC;AACH,CAAC,CAAC;AApCW,QAAA,cAAc,kBAoCzB;AAEF,MAAM,cAAc,GAAG,CAAC,cAAsB,EAAE,EAAE;IAChD,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,UAAU,GACd,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAEzE,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,cAAsB,EAAE,EAAE;IACpD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAExC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC;QACrB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACvD,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC,CAAC;AAMK,MAAM,WAAW,GAAG,CACzB,IAAY,EACZ,WAAmB,qBAAqB,EAC9B,EAAE;IACZ,MAAM,MAAM,GAAG,IAAA,6BAAe,EAAC,IAAI,CAAC,CAAC;IACrC,MAAM,cAAc,GAAS,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;IACpD,MAAM,eAAe,GAAS,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;IAErD,MAAM,WAAW,GAAW,IAAI,CAAC,KAAK,CACpC,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAC9D,CAAC;IACF,IAAI,WAAW,GAAG,EAAE,EAAE,CAAC;QACrB,OAAO;YACL,IAAI,EAAE,qBAAI,CAAC,OAAO;YAClB,OAAO,EAAE,WAAW;SACrB,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAW,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IACzD,IAAI,WAAW,GAAG,EAAE,EAAE,CAAC;QACrB,MAAM,qBAAqB,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,IACE,KAAK,CAAC,qBAAqB,CAAC;YAC5B,CAAC,qBAAqB,GAAG,EAAE,IAAI,qBAAqB,GAAG,CAAC,CAAC,EACzD,CAAC;YACD,MAAM,IAAI,KAAK,CACb,qDAAqD,IAAI,uDAAuD,CACjH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,IAAI,EAAE,qBAAI,CAAC,OAAO;gBAClB,OAAO,EAAE,qBAAqB;aAC/B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAW,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IACvD,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;QACnB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtD,MAAM,MAAM,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/C,OAAO,MAAM,GAAG,CAAC,KAAK,CAAC;YACrB,CAAC,CAAC;gBACE,IAAI,EAAE,qBAAI,CAAC,MAAM;gBACjB,KAAK,EAAE,SAAS;gBAChB,MAAM;aACP;YACH,CAAC,CAAC,EAAE,IAAI,EAAE,qBAAI,CAAC,MAAM,EAAE,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;IAClE,CAAC;IAED,MAAM,QAAQ,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;IACpD,MAAM,OAAO,GACX,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,UAAU,EAAE,CAAC;IAE/D,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,OAAO,GAAG,EAAE,KAAK,CAAC;YACvB,CAAC,CAAC;gBACE,IAAI,EAAE,qBAAI,CAAC,KAAK;gBAChB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE;oBACJ,OAAO;oBACP,QAAQ;iBACT;aACF;YACH,CAAC,CAAC,EAAE,IAAI,EAAE,qBAAI,CAAC,MAAM,EAAE,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;IAClE,CAAC;IAED,MAAM,OAAO,GAAY,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QACxD,OAAO,EAAE,MAAM;KAChB,CAAC;SACC,MAAM,CAAC,cAAc,CAAC;SACtB,WAAW,EAAa,CAAC;IAE5B,OAAO,OAAO,GAAG,EAAE,KAAK,CAAC;QACvB,CAAC,CAAC;YACE,IAAI,EAAE,qBAAI,CAAC,MAAM;YACjB,OAAO;YACP,IAAI,EAAE;gBACJ,OAAO;gBACP,QAAQ,EAAE,QAAQ;aACnB;SACF;QACH,CAAC,CAAC,EAAE,IAAI,EAAE,qBAAI,CAAC,MAAM,EAAE,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AAClE,CAAC,CAAC;AApFW,QAAA,WAAW,eAoFtB"}
|