@stamhoofd/crons 2.121.0 → 2.122.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/crons.d.ts +2 -0
- package/dist/crons.d.ts.map +1 -1
- package/dist/crons.js +24 -9
- package/dist/crons.js.map +1 -1
- package/package.json +11 -4
package/dist/crons.d.ts
CHANGED
|
@@ -3,10 +3,12 @@ export type CronJobDefinition = {
|
|
|
3
3
|
method: () => Promise<void>;
|
|
4
4
|
running: boolean;
|
|
5
5
|
};
|
|
6
|
+
export declare function markAllSeedsFinished(): void;
|
|
6
7
|
export declare function registerCron(name: string, method: () => Promise<void>): void;
|
|
7
8
|
export declare function checkReadOnly(): Promise<boolean>;
|
|
8
9
|
export declare function startCrons(options?: {
|
|
9
10
|
allowReadOnly: boolean;
|
|
11
|
+
allowBeforeSeeds: boolean;
|
|
10
12
|
}): void;
|
|
11
13
|
export declare function stopCrons(): void;
|
|
12
14
|
export declare function waitForCrons(): Promise<void>;
|
package/dist/crons.d.ts.map
CHANGED
|
@@ -1 +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;
|
|
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;AAMF,wBAAgB,oBAAoB,SAEnC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,QAMrE;AAqBD,wBAAsB,aAAa,qBAwBlC;AAsED,wBAAgB,UAAU,CAAC,OAAO,GAAE;IAAE,aAAa,EAAE,OAAO,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAA;CAAsD,QAe5I;AAED,wBAAgB,SAAS,SAOxB;AAED,wBAAsB,YAAY,kBAYjC"}
|
package/dist/crons.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
import { Database } from '@simonbackx/simple-database';
|
|
1
2
|
import { logger, StyledText } from '@simonbackx/simple-logging';
|
|
2
3
|
import { sleep } from '@stamhoofd/utility';
|
|
3
|
-
import { Database } from '@simonbackx/simple-database';
|
|
4
4
|
const registeredCronJobs = [];
|
|
5
|
+
let areSeedsNotFinished = true;
|
|
6
|
+
export function markAllSeedsFinished() {
|
|
7
|
+
areSeedsNotFinished = false;
|
|
8
|
+
}
|
|
5
9
|
export function registerCron(name, method) {
|
|
6
10
|
registeredCronJobs.push({
|
|
7
11
|
name,
|
|
@@ -63,14 +67,14 @@ function stopCronScheduling() {
|
|
|
63
67
|
}
|
|
64
68
|
let schedulingJobs = false;
|
|
65
69
|
function areCronsRunning() {
|
|
66
|
-
if (schedulingJobs && !doStopCrons) {
|
|
67
|
-
return true;
|
|
68
|
-
}
|
|
69
70
|
for (const job of registeredCronJobs) {
|
|
70
71
|
if (job.running) {
|
|
71
|
-
return
|
|
72
|
+
return job.name || 'unknown';
|
|
72
73
|
}
|
|
73
74
|
}
|
|
75
|
+
if (schedulingJobs && !doStopCrons) {
|
|
76
|
+
return 'scheduling';
|
|
77
|
+
}
|
|
74
78
|
return false;
|
|
75
79
|
}
|
|
76
80
|
async function crons(options) {
|
|
@@ -82,6 +86,10 @@ async function crons(options) {
|
|
|
82
86
|
console.error(new StyledText(`[CRONS] `).addClass('crons', 'tag'), new StyledText('MySQL is in read-only mode: crons are disabled.').addClass('error'));
|
|
83
87
|
return;
|
|
84
88
|
}
|
|
89
|
+
if (!options.allowBeforeSeeds && areSeedsNotFinished) {
|
|
90
|
+
console.error(new StyledText(`[CRONS] `).addClass('crons', 'tag'), new StyledText('Not all seeds are finished: crons are disabled.').addClass('error'));
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
85
93
|
schedulingJobs = true;
|
|
86
94
|
for (const job of registeredCronJobs) {
|
|
87
95
|
if (doStopCrons) {
|
|
@@ -99,7 +107,7 @@ async function crons(options) {
|
|
|
99
107
|
console.error(e);
|
|
100
108
|
});
|
|
101
109
|
// Prevent starting too many jobs at once
|
|
102
|
-
if (STAMHOOFD.environment !== 'development') {
|
|
110
|
+
if (STAMHOOFD.environment !== 'development' && STAMHOOFD.environment !== 'test') {
|
|
103
111
|
await sleep(10 * 1000);
|
|
104
112
|
if (!options.allowReadOnly && await checkReadOnly()) {
|
|
105
113
|
console.error(new StyledText(`[CRONS] `).addClass('crons', 'tag'), new StyledText('MySQL is in read-only mode: crons are interrupted.').addClass('error'));
|
|
@@ -111,10 +119,15 @@ async function crons(options) {
|
|
|
111
119
|
}
|
|
112
120
|
;
|
|
113
121
|
let cronInterval = null;
|
|
114
|
-
export function startCrons(options = { allowReadOnly: false }) {
|
|
122
|
+
export function startCrons(options = { allowReadOnly: false, allowBeforeSeeds: false }) {
|
|
115
123
|
if (registeredCronJobs.length === 0) {
|
|
116
124
|
throw new Error('No crons registered');
|
|
117
125
|
}
|
|
126
|
+
if (STAMHOOFD.environment === 'test') {
|
|
127
|
+
// Don't run crons in test mode (Playwright) - for now
|
|
128
|
+
// Tests currently don't rely on them + in production these only run every 5 minutes
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
118
131
|
cronInterval = setInterval(() => {
|
|
119
132
|
crons(options).catch(console.error);
|
|
120
133
|
}, STAMHOOFD.environment === 'development' ? 10 * 1000 : 5 * 60 * 1000);
|
|
@@ -129,9 +142,11 @@ export function stopCrons() {
|
|
|
129
142
|
}
|
|
130
143
|
export async function waitForCrons() {
|
|
131
144
|
try {
|
|
132
|
-
|
|
133
|
-
|
|
145
|
+
let running = areCronsRunning();
|
|
146
|
+
while (running) {
|
|
147
|
+
console.log('Crons are still running (' + running + '). Waiting 2 seconds...');
|
|
134
148
|
await sleep(2000);
|
|
149
|
+
running = areCronsRunning();
|
|
135
150
|
}
|
|
136
151
|
}
|
|
137
152
|
catch (err) {
|
package/dist/crons.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crons.js","sourceRoot":"","sources":["../src/crons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"crons.js","sourceRoot":"","sources":["../src/crons.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stamhoofd/crons",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.122.0",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"types": "./dist/index.d.ts",
|
|
6
5
|
"main": "./dist/index.js",
|
|
7
|
-
"
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
8
7
|
"sideEffects": false,
|
|
9
8
|
"files": [
|
|
10
9
|
"dist"
|
|
@@ -13,8 +12,16 @@
|
|
|
13
12
|
"build": "tsc --build tsconfig.build.json",
|
|
14
13
|
"lint": "eslint"
|
|
15
14
|
},
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"@simonbackx/simple-database": "1.37.1",
|
|
17
|
+
"@simonbackx/simple-logging": "1.0.1"
|
|
18
|
+
},
|
|
19
|
+
"peerDependencies": {
|
|
20
|
+
"@stamhoofd/utility": "*"
|
|
21
|
+
},
|
|
22
|
+
"license": "UNLICENCED",
|
|
16
23
|
"publishConfig": {
|
|
17
24
|
"access": "public"
|
|
18
25
|
},
|
|
19
|
-
"gitHead": "
|
|
26
|
+
"gitHead": "3c022b7d7801fb105acfaa401432a8d029abda61"
|
|
20
27
|
}
|