@stamhoofd/crons 2.119.0 → 2.120.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.
- package/dist/{src/crons.d.ts → crons.d.ts} +1 -0
- package/dist/crons.d.ts.map +1 -0
- package/{src/crons.ts → dist/crons.js} +11 -32
- package/dist/crons.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -4
- package/dist/index.js.map +1 -1
- package/package.json +6 -5
- package/dist/src/crons.d.ts.map +0 -1
- package/dist/src/crons.js +0 -147
- package/dist/src/crons.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -4,6 +4,7 @@ export type CronJobDefinition = {
|
|
|
4
4
|
running: boolean;
|
|
5
5
|
};
|
|
6
6
|
export declare function registerCron(name: string, method: () => Promise<void>): void;
|
|
7
|
+
export declare function checkReadOnly(): Promise<boolean>;
|
|
7
8
|
export declare function startCrons(): void;
|
|
8
9
|
export declare function stopCrons(): void;
|
|
9
10
|
export declare function waitForCrons(): Promise<void>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crons.d.ts","sourceRoot":"","sources":["../src/crons.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,iBAAiB,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AAIF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,QAMrE;AAuBD,wBAAsB,aAAa,qBA2BlC;AAgED,wBAAgB,UAAU,SASzB;AAED,wBAAgB,SAAS,SAOxB;AAED,wBAAsB,YAAY,kBAWjC"}
|
|
@@ -1,24 +1,15 @@
|
|
|
1
1
|
import { logger, StyledText } from '@simonbackx/simple-logging';
|
|
2
2
|
import { sleep } from '@stamhoofd/utility';
|
|
3
3
|
import { Database } from '@simonbackx/simple-database';
|
|
4
|
-
|
|
5
|
-
export
|
|
6
|
-
name: string;
|
|
7
|
-
method: () => Promise<void>;
|
|
8
|
-
running: boolean;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
const registeredCronJobs: CronJobDefinition[] = [];
|
|
12
|
-
|
|
13
|
-
export function registerCron(name: string, method: () => Promise<void>) {
|
|
4
|
+
const registeredCronJobs = [];
|
|
5
|
+
export function registerCron(name, method) {
|
|
14
6
|
registeredCronJobs.push({
|
|
15
7
|
name,
|
|
16
8
|
method,
|
|
17
9
|
running: false,
|
|
18
10
|
});
|
|
19
11
|
}
|
|
20
|
-
|
|
21
|
-
async function run(name: string, handler: () => Promise<void>) {
|
|
12
|
+
async function run(name, handler) {
|
|
22
13
|
try {
|
|
23
14
|
await logger.setContext({
|
|
24
15
|
prefixes: [
|
|
@@ -38,8 +29,7 @@ async function run(name: string, handler: () => Promise<void>) {
|
|
|
38
29
|
console.error(new StyledText(e).addClass('error'));
|
|
39
30
|
}
|
|
40
31
|
}
|
|
41
|
-
|
|
42
|
-
async function checkReadOnly() {
|
|
32
|
+
export async function checkReadOnly() {
|
|
43
33
|
// Check if database is in read only mode. If so, skip running cronjobs.
|
|
44
34
|
const [results] = await Database.select("SHOW VARIABLES LIKE 'read_only'");
|
|
45
35
|
if (results.length !== 1) {
|
|
@@ -60,7 +50,6 @@ async function checkReadOnly() {
|
|
|
60
50
|
}
|
|
61
51
|
else {
|
|
62
52
|
if (value === 'ON') {
|
|
63
|
-
console.error(new StyledText(`[CRONS] `).addClass('crons', 'tag'), new StyledText('MySQL is in read-only mode: crons are disabled.').addClass('error'));
|
|
64
53
|
return true;
|
|
65
54
|
}
|
|
66
55
|
}
|
|
@@ -68,18 +57,15 @@ async function checkReadOnly() {
|
|
|
68
57
|
}
|
|
69
58
|
return false;
|
|
70
59
|
}
|
|
71
|
-
|
|
72
60
|
let doStopCrons = false;
|
|
73
61
|
function stopCronScheduling() {
|
|
74
62
|
doStopCrons = true;
|
|
75
63
|
}
|
|
76
|
-
|
|
77
64
|
let schedulingJobs = false;
|
|
78
|
-
function areCronsRunning()
|
|
65
|
+
function areCronsRunning() {
|
|
79
66
|
if (schedulingJobs && !doStopCrons) {
|
|
80
67
|
return true;
|
|
81
68
|
}
|
|
82
|
-
|
|
83
69
|
for (const job of registeredCronJobs) {
|
|
84
70
|
if (job.running) {
|
|
85
71
|
return true;
|
|
@@ -87,17 +73,15 @@ function areCronsRunning(): boolean {
|
|
|
87
73
|
}
|
|
88
74
|
return false;
|
|
89
75
|
}
|
|
90
|
-
|
|
91
76
|
async function crons() {
|
|
92
77
|
if (STAMHOOFD.CRONS_DISABLED) {
|
|
93
78
|
console.error(new StyledText(`[CRONS] `).addClass('crons', 'tag'), new StyledText('Crons are disabled. Make sure to enable them in the environment variables.').addClass('error'));
|
|
94
79
|
return;
|
|
95
80
|
}
|
|
96
|
-
|
|
97
81
|
if (await checkReadOnly()) {
|
|
82
|
+
console.error(new StyledText(`[CRONS] `).addClass('crons', 'tag'), new StyledText('MySQL is in read-only mode: crons are disabled.').addClass('error'));
|
|
98
83
|
return;
|
|
99
84
|
}
|
|
100
|
-
|
|
101
85
|
schedulingJobs = true;
|
|
102
86
|
for (const job of registeredCronJobs) {
|
|
103
87
|
if (doStopCrons) {
|
|
@@ -114,41 +98,35 @@ async function crons() {
|
|
|
114
98
|
job.running = false;
|
|
115
99
|
console.error(e);
|
|
116
100
|
});
|
|
117
|
-
|
|
118
101
|
// Prevent starting too many jobs at once
|
|
119
102
|
if (STAMHOOFD.environment !== 'development') {
|
|
120
103
|
await sleep(10 * 1000);
|
|
121
|
-
|
|
122
104
|
if (await checkReadOnly()) {
|
|
105
|
+
console.error(new StyledText(`[CRONS] `).addClass('crons', 'tag'), new StyledText('MySQL is in read-only mode: crons are interrupted.').addClass('error'));
|
|
123
106
|
return;
|
|
124
107
|
}
|
|
125
108
|
}
|
|
126
109
|
}
|
|
127
110
|
schedulingJobs = false;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
let cronInterval
|
|
131
|
-
|
|
111
|
+
}
|
|
112
|
+
;
|
|
113
|
+
let cronInterval = null;
|
|
132
114
|
export function startCrons() {
|
|
133
115
|
if (registeredCronJobs.length === 0) {
|
|
134
116
|
throw new Error('No crons registered');
|
|
135
117
|
}
|
|
136
|
-
|
|
137
118
|
cronInterval = setInterval(() => {
|
|
138
119
|
crons().catch(console.error);
|
|
139
120
|
}, STAMHOOFD.environment === 'development' ? 10 * 1000 : 5 * 60 * 1000);
|
|
140
121
|
crons().catch(console.error);
|
|
141
122
|
}
|
|
142
|
-
|
|
143
123
|
export function stopCrons() {
|
|
144
124
|
stopCronScheduling();
|
|
145
|
-
|
|
146
125
|
if (cronInterval) {
|
|
147
126
|
clearInterval(cronInterval);
|
|
148
127
|
cronInterval = null;
|
|
149
128
|
}
|
|
150
129
|
}
|
|
151
|
-
|
|
152
130
|
export async function waitForCrons() {
|
|
153
131
|
try {
|
|
154
132
|
while (areCronsRunning()) {
|
|
@@ -161,3 +139,4 @@ export async function waitForCrons() {
|
|
|
161
139
|
console.error(err);
|
|
162
140
|
}
|
|
163
141
|
}
|
|
142
|
+
//# sourceMappingURL=crons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crons.js","sourceRoot":"","sources":["../src/crons.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './crons.js';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stamhoofd/crons",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"
|
|
3
|
+
"version": "2.120.1",
|
|
4
|
+
"type": "module",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
|
+
"main": "./dist/index.js",
|
|
6
7
|
"license": "UNLICENCED",
|
|
7
8
|
"sideEffects": false,
|
|
8
9
|
"files": [
|
|
9
|
-
"src",
|
|
10
10
|
"dist"
|
|
11
11
|
],
|
|
12
12
|
"scripts": {
|
|
13
|
-
"build": "tsc
|
|
13
|
+
"build": "tsc --build tsconfig.build.json",
|
|
14
|
+
"lint": "eslint"
|
|
14
15
|
},
|
|
15
16
|
"publishConfig": {
|
|
16
17
|
"access": "public"
|
|
17
18
|
},
|
|
18
|
-
"gitHead": "
|
|
19
|
+
"gitHead": "00f65fc28d68feb86c30789784181a8954d638d7"
|
|
19
20
|
}
|
package/dist/src/crons.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crons.d.ts","sourceRoot":"","sources":["../../src/crons.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,iBAAiB,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AAIF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,QAMrE;AAiHD,wBAAgB,UAAU,SASzB;AAED,wBAAgB,SAAS,SAOxB;AAED,wBAAsB,YAAY,kBAWjC"}
|
package/dist/src/crons.js
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.registerCron = registerCron;
|
|
4
|
-
exports.startCrons = startCrons;
|
|
5
|
-
exports.stopCrons = stopCrons;
|
|
6
|
-
exports.waitForCrons = waitForCrons;
|
|
7
|
-
const simple_logging_1 = require("@simonbackx/simple-logging");
|
|
8
|
-
const utility_1 = require("@stamhoofd/utility");
|
|
9
|
-
const simple_database_1 = require("@simonbackx/simple-database");
|
|
10
|
-
const registeredCronJobs = [];
|
|
11
|
-
function registerCron(name, method) {
|
|
12
|
-
registeredCronJobs.push({
|
|
13
|
-
name,
|
|
14
|
-
method,
|
|
15
|
-
running: false,
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
async function run(name, handler) {
|
|
19
|
-
try {
|
|
20
|
-
await simple_logging_1.logger.setContext({
|
|
21
|
-
prefixes: [
|
|
22
|
-
new simple_logging_1.StyledText(`[${name}] `).addClass('crons', 'tag'),
|
|
23
|
-
],
|
|
24
|
-
tags: ['crons'],
|
|
25
|
-
}, async () => {
|
|
26
|
-
try {
|
|
27
|
-
await handler();
|
|
28
|
-
}
|
|
29
|
-
catch (e) {
|
|
30
|
-
console.error(new simple_logging_1.StyledText(e).addClass('error'));
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
catch (e) {
|
|
35
|
-
console.error(new simple_logging_1.StyledText(e).addClass('error'));
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
async function checkReadOnly() {
|
|
39
|
-
// Check if database is in read only mode. If so, skip running cronjobs.
|
|
40
|
-
const [results] = await simple_database_1.Database.select("SHOW VARIABLES LIKE 'read_only'");
|
|
41
|
-
if (results.length !== 1) {
|
|
42
|
-
console.error('UNEXPECTED RESULT FOR checking read only mode on the server.');
|
|
43
|
-
console.error('Received', results);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
const result = results[0]['session_variables'];
|
|
47
|
-
if (!result) {
|
|
48
|
-
console.error('UNEXPECTED RESULT FOR checking read only mode on the server.');
|
|
49
|
-
console.error('Received', results);
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
const value = result['Value'];
|
|
53
|
-
if (value !== 'ON' && value !== 'OFF') {
|
|
54
|
-
console.error('UNEXPECTED RESULT FOR checking read only mode on the server.');
|
|
55
|
-
console.error('Received', results);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
if (value === 'ON') {
|
|
59
|
-
console.error(new simple_logging_1.StyledText(`[CRONS] `).addClass('crons', 'tag'), new simple_logging_1.StyledText('MySQL is in read-only mode: crons are disabled.').addClass('error'));
|
|
60
|
-
return true;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
let doStopCrons = false;
|
|
68
|
-
function stopCronScheduling() {
|
|
69
|
-
doStopCrons = true;
|
|
70
|
-
}
|
|
71
|
-
let schedulingJobs = false;
|
|
72
|
-
function areCronsRunning() {
|
|
73
|
-
if (schedulingJobs && !doStopCrons) {
|
|
74
|
-
return true;
|
|
75
|
-
}
|
|
76
|
-
for (const job of registeredCronJobs) {
|
|
77
|
-
if (job.running) {
|
|
78
|
-
return true;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
return false;
|
|
82
|
-
}
|
|
83
|
-
async function crons() {
|
|
84
|
-
if (STAMHOOFD.CRONS_DISABLED) {
|
|
85
|
-
console.error(new simple_logging_1.StyledText(`[CRONS] `).addClass('crons', 'tag'), new simple_logging_1.StyledText('Crons are disabled. Make sure to enable them in the environment variables.').addClass('error'));
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
if (await checkReadOnly()) {
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
schedulingJobs = true;
|
|
92
|
-
for (const job of registeredCronJobs) {
|
|
93
|
-
if (doStopCrons) {
|
|
94
|
-
break;
|
|
95
|
-
}
|
|
96
|
-
if (job.running) {
|
|
97
|
-
console.warn(job.name, 'is still running');
|
|
98
|
-
continue;
|
|
99
|
-
}
|
|
100
|
-
job.running = true;
|
|
101
|
-
run(job.name, job.method).finally(() => {
|
|
102
|
-
job.running = false;
|
|
103
|
-
}).catch((e) => {
|
|
104
|
-
job.running = false;
|
|
105
|
-
console.error(e);
|
|
106
|
-
});
|
|
107
|
-
// Prevent starting too many jobs at once
|
|
108
|
-
if (STAMHOOFD.environment !== 'development') {
|
|
109
|
-
await (0, utility_1.sleep)(10 * 1000);
|
|
110
|
-
if (await checkReadOnly()) {
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
schedulingJobs = false;
|
|
116
|
-
}
|
|
117
|
-
;
|
|
118
|
-
let cronInterval = null;
|
|
119
|
-
function startCrons() {
|
|
120
|
-
if (registeredCronJobs.length === 0) {
|
|
121
|
-
throw new Error('No crons registered');
|
|
122
|
-
}
|
|
123
|
-
cronInterval = setInterval(() => {
|
|
124
|
-
crons().catch(console.error);
|
|
125
|
-
}, STAMHOOFD.environment === 'development' ? 10 * 1000 : 5 * 60 * 1000);
|
|
126
|
-
crons().catch(console.error);
|
|
127
|
-
}
|
|
128
|
-
function stopCrons() {
|
|
129
|
-
stopCronScheduling();
|
|
130
|
-
if (cronInterval) {
|
|
131
|
-
clearInterval(cronInterval);
|
|
132
|
-
cronInterval = null;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
async function waitForCrons() {
|
|
136
|
-
try {
|
|
137
|
-
while (areCronsRunning()) {
|
|
138
|
-
console.log('Crons are still running. Waiting 2 seconds...');
|
|
139
|
-
await (0, utility_1.sleep)(2000);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
catch (err) {
|
|
143
|
-
console.error('Failed to wait for crons to finish:');
|
|
144
|
-
console.error(err);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
//# sourceMappingURL=crons.js.map
|
package/dist/src/crons.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crons.js","sourceRoot":"","sources":["../../src/crons.ts"],"names":[],"mappings":";;AAYA,oCAMC;AAiHD,gCASC;AAED,8BAOC;AAED,oCAWC;AAlKD,+DAAgE;AAChE,gDAA2C;AAC3C,iEAAuD;AAQvD,MAAM,kBAAkB,GAAwB,EAAE,CAAC;AAEnD,SAAgB,YAAY,CAAC,IAAY,EAAE,MAA2B;IAClE,kBAAkB,CAAC,IAAI,CAAC;QACpB,IAAI;QACJ,MAAM;QACN,OAAO,EAAE,KAAK;KACjB,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,IAAY,EAAE,OAA4B;IACzD,IAAI,CAAC;QACD,MAAM,uBAAM,CAAC,UAAU,CAAC;YACpB,QAAQ,EAAE;gBACN,IAAI,2BAAU,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;aACxD;YACD,IAAI,EAAE,CAAC,OAAO,CAAC;SAClB,EAAE,KAAK,IAAI,EAAE;YACV,IAAI,CAAC;gBACD,MAAM,OAAO,EAAE,CAAC;YACpB,CAAC;YACD,OAAO,CAAC,EAAE,CAAC;gBACP,OAAO,CAAC,KAAK,CAAC,IAAI,2BAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YACvD,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,CAAC,EAAE,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,IAAI,2BAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC;AACL,CAAC;AAED,KAAK,UAAU,aAAa;IACxB,wEAAwE;IACxE,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,0BAAQ,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC;IAC3E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAC9E,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;SACI,CAAC;QACF,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;YAC9E,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;aACI,CAAC;YACF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;gBACpC,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;gBAC9E,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACvC,CAAC;iBACI,CAAC;gBACF,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACjB,OAAO,CAAC,KAAK,CAAC,IAAI,2BAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,2BAAU,CAAC,iDAAiD,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;oBACxJ,OAAO,IAAI,CAAC;gBAChB,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,SAAS,kBAAkB;IACvB,WAAW,GAAG,IAAI,CAAC;AACvB,CAAC;AAED,IAAI,cAAc,GAAG,KAAK,CAAC;AAC3B,SAAS,eAAe;IACpB,IAAI,cAAc,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACnC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,KAAK;IAChB,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,IAAI,2BAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,2BAAU,CAAC,4EAA4E,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACnL,OAAO;IACX,CAAC;IAED,IAAI,MAAM,aAAa,EAAE,EAAE,CAAC;QACxB,OAAO;IACX,CAAC;IAED,cAAc,GAAG,IAAI,CAAC;IACtB,KAAK,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACnC,IAAI,WAAW,EAAE,CAAC;YACd,MAAM;QACV,CAAC;QACD,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;YAC3C,SAAS;QACb,CAAC;QACD,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;QACnB,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YACnC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,yCAAyC;QACzC,IAAI,SAAS,CAAC,WAAW,KAAK,aAAa,EAAE,CAAC;YAC1C,MAAM,IAAA,eAAK,EAAC,EAAE,GAAG,IAAI,CAAC,CAAC;YAEvB,IAAI,MAAM,aAAa,EAAE,EAAE,CAAC;gBACxB,OAAO;YACX,CAAC;QACL,CAAC;IACL,CAAC;IACD,cAAc,GAAG,KAAK,CAAC;AAC3B,CAAC;AAAA,CAAC;AAEF,IAAI,YAAY,GAA0B,IAAI,CAAC;AAE/C,SAAgB,UAAU;IACtB,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC3C,CAAC;IAED,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC,EAAE,SAAS,CAAC,WAAW,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACxE,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,SAAgB,SAAS;IACrB,kBAAkB,EAAE,CAAC;IAErB,IAAI,YAAY,EAAE,CAAC;QACf,aAAa,CAAC,YAAY,CAAC,CAAC;QAC5B,YAAY,GAAG,IAAI,CAAC;IACxB,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,YAAY;IAC9B,IAAI,CAAC;QACD,OAAO,eAAe,EAAE,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACL,CAAC;IACD,OAAO,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;AACL,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"root":["../src/crons.ts","../index.ts","../../../../environment.d.ts","../../../../jest-extended.d.ts","../../../stamhoofd.d.ts"],"version":"5.8.3"}
|