@stamhoofd/crons 2.119.0 → 2.120.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.map +1 -0
- package/{src/crons.ts → dist/crons.js} +8 -30
- 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
- /package/dist/{src/crons.d.ts → crons.d.ts} +0 -0
|
@@ -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;AAiHD,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,7 +29,6 @@ async function run(name: string, handler: () => Promise<void>) {
|
|
|
38
29
|
console.error(new StyledText(e).addClass('error'));
|
|
39
30
|
}
|
|
40
31
|
}
|
|
41
|
-
|
|
42
32
|
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'");
|
|
@@ -68,18 +58,15 @@ async function checkReadOnly() {
|
|
|
68
58
|
}
|
|
69
59
|
return false;
|
|
70
60
|
}
|
|
71
|
-
|
|
72
61
|
let doStopCrons = false;
|
|
73
62
|
function stopCronScheduling() {
|
|
74
63
|
doStopCrons = true;
|
|
75
64
|
}
|
|
76
|
-
|
|
77
65
|
let schedulingJobs = false;
|
|
78
|
-
function areCronsRunning()
|
|
66
|
+
function areCronsRunning() {
|
|
79
67
|
if (schedulingJobs && !doStopCrons) {
|
|
80
68
|
return true;
|
|
81
69
|
}
|
|
82
|
-
|
|
83
70
|
for (const job of registeredCronJobs) {
|
|
84
71
|
if (job.running) {
|
|
85
72
|
return true;
|
|
@@ -87,17 +74,14 @@ function areCronsRunning(): boolean {
|
|
|
87
74
|
}
|
|
88
75
|
return false;
|
|
89
76
|
}
|
|
90
|
-
|
|
91
77
|
async function crons() {
|
|
92
78
|
if (STAMHOOFD.CRONS_DISABLED) {
|
|
93
79
|
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
80
|
return;
|
|
95
81
|
}
|
|
96
|
-
|
|
97
82
|
if (await checkReadOnly()) {
|
|
98
83
|
return;
|
|
99
84
|
}
|
|
100
|
-
|
|
101
85
|
schedulingJobs = true;
|
|
102
86
|
for (const job of registeredCronJobs) {
|
|
103
87
|
if (doStopCrons) {
|
|
@@ -114,41 +98,34 @@ 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()) {
|
|
123
105
|
return;
|
|
124
106
|
}
|
|
125
107
|
}
|
|
126
108
|
}
|
|
127
109
|
schedulingJobs = false;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
let cronInterval
|
|
131
|
-
|
|
110
|
+
}
|
|
111
|
+
;
|
|
112
|
+
let cronInterval = null;
|
|
132
113
|
export function startCrons() {
|
|
133
114
|
if (registeredCronJobs.length === 0) {
|
|
134
115
|
throw new Error('No crons registered');
|
|
135
116
|
}
|
|
136
|
-
|
|
137
117
|
cronInterval = setInterval(() => {
|
|
138
118
|
crons().catch(console.error);
|
|
139
119
|
}, STAMHOOFD.environment === 'development' ? 10 * 1000 : 5 * 60 * 1000);
|
|
140
120
|
crons().catch(console.error);
|
|
141
121
|
}
|
|
142
|
-
|
|
143
122
|
export function stopCrons() {
|
|
144
123
|
stopCronScheduling();
|
|
145
|
-
|
|
146
124
|
if (cronInterval) {
|
|
147
125
|
clearInterval(cronInterval);
|
|
148
126
|
cronInterval = null;
|
|
149
127
|
}
|
|
150
128
|
}
|
|
151
|
-
|
|
152
129
|
export async function waitForCrons() {
|
|
153
130
|
try {
|
|
154
131
|
while (areCronsRunning()) {
|
|
@@ -161,3 +138,4 @@ export async function waitForCrons() {
|
|
|
161
138
|
console.error(err);
|
|
162
139
|
}
|
|
163
140
|
}
|
|
141
|
+
//# 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.0",
|
|
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": "f38f79c15ce16b0c8c14743ff3eb61feda5a18d4"
|
|
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":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"root":["../src/crons.ts","../index.ts","../../../../environment.d.ts","../../../../jest-extended.d.ts","../../../stamhoofd.d.ts"],"version":"5.8.3"}
|
|
File without changes
|