velocious 1.0.415 → 1.0.417
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 +9 -7
- package/build/src/background-jobs/client.d.ts.map +1 -1
- package/build/src/background-jobs/client.js +14 -28
- package/build/src/background-jobs/forked-runner-child.d.ts +2 -0
- package/build/src/background-jobs/forked-runner-child.d.ts.map +1 -0
- package/build/src/background-jobs/forked-runner-child.js +69 -0
- package/build/src/background-jobs/json-socket.d.ts +2 -0
- package/build/src/background-jobs/json-socket.d.ts.map +1 -1
- package/build/src/background-jobs/json-socket.js +3 -1
- package/build/src/background-jobs/main.d.ts +161 -4
- package/build/src/background-jobs/main.d.ts.map +1 -1
- package/build/src/background-jobs/main.js +282 -99
- package/build/src/background-jobs/normalize-error.d.ts +6 -0
- package/build/src/background-jobs/normalize-error.d.ts.map +1 -0
- package/build/src/background-jobs/normalize-error.js +25 -0
- package/build/src/background-jobs/socket-request.d.ts +33 -0
- package/build/src/background-jobs/socket-request.d.ts.map +1 -0
- package/build/src/background-jobs/socket-request.js +55 -0
- package/build/src/background-jobs/status-reporter.d.ts +0 -5
- package/build/src/background-jobs/status-reporter.d.ts.map +1 -1
- package/build/src/background-jobs/status-reporter.js +16 -46
- package/build/src/background-jobs/store.d.ts +130 -8
- package/build/src/background-jobs/store.d.ts.map +1 -1
- package/build/src/background-jobs/store.js +249 -85
- package/build/src/background-jobs/types.d.ts +32 -7
- package/build/src/background-jobs/types.d.ts.map +1 -1
- package/build/src/background-jobs/types.js +12 -5
- package/build/src/background-jobs/web/controller.d.ts.map +1 -1
- package/build/src/background-jobs/web/controller.js +2 -1
- package/build/src/background-jobs/worker.d.ts +146 -18
- package/build/src/background-jobs/worker.d.ts.map +1 -1
- package/build/src/background-jobs/worker.js +231 -51
- package/build/src/configuration-types.d.ts +6 -6
- package/build/src/configuration-types.js +4 -4
- package/build/src/database/drivers/base.d.ts +9 -0
- package/build/src/database/drivers/base.d.ts.map +1 -1
- package/build/src/database/drivers/base.js +7 -1
- package/build/src/environment-handlers/node/cli/commands/background-jobs-runner.js +2 -2
- package/build/src/environment-handlers/node/cli/commands/background-jobs-worker.js +3 -3
- package/build/src/http-server/client/websocket-session.js +2 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-error.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/normalize-error.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH,2DAHW,OAAO,GACL,MAAM,CAOlB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/**
|
|
3
|
+
* @param {unknown} error - Error input.
|
|
4
|
+
* @returns {string} - Normalized error string.
|
|
5
|
+
*/
|
|
6
|
+
export default function normalizeBackgroundJobError(error) {
|
|
7
|
+
if (error instanceof Error)
|
|
8
|
+
return error.stack || error.message;
|
|
9
|
+
if (typeof error === "string")
|
|
10
|
+
return error;
|
|
11
|
+
return stringifyUnknownError(error);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* @param {unknown} error - Error input.
|
|
15
|
+
* @returns {string} - Stringified error.
|
|
16
|
+
*/
|
|
17
|
+
function stringifyUnknownError(error) {
|
|
18
|
+
try {
|
|
19
|
+
return JSON.stringify(error);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return String(error);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplLWVycm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tncm91bmQtam9icy9ub3JtYWxpemUtZXJyb3IuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxPQUFPLFVBQVUsMkJBQTJCLENBQUMsS0FBSztJQUN2RCxJQUFJLEtBQUssWUFBWSxLQUFLO1FBQUUsT0FBTyxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUE7SUFDL0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFFM0MsT0FBTyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUNyQyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxxQkFBcUIsQ0FBQyxLQUFLO0lBQ2xDLElBQUksQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDdEIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBAcGFyYW0ge3Vua25vd259IGVycm9yIC0gRXJyb3IgaW5wdXQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIE5vcm1hbGl6ZWQgZXJyb3Igc3RyaW5nLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBub3JtYWxpemVCYWNrZ3JvdW5kSm9iRXJyb3IoZXJyb3IpIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHJldHVybiBlcnJvci5zdGFjayB8fCBlcnJvci5tZXNzYWdlXG4gIGlmICh0eXBlb2YgZXJyb3IgPT09IFwic3RyaW5nXCIpIHJldHVybiBlcnJvclxuXG4gIHJldHVybiBzdHJpbmdpZnlVbmtub3duRXJyb3IoZXJyb3IpXG59XG5cbi8qKlxuICogQHBhcmFtIHt1bmtub3dufSBlcnJvciAtIEVycm9yIGlucHV0LlxuICogQHJldHVybnMge3N0cmluZ30gLSBTdHJpbmdpZmllZCBlcnJvci5cbiAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5VW5rbm93bkVycm9yKGVycm9yKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGVycm9yKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gU3RyaW5nKGVycm9yKVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export default class BackgroundJobsSocketRequest {
|
|
2
|
+
/**
|
|
3
|
+
* @param {object} args - Options.
|
|
4
|
+
* @param {string} args.host - Host.
|
|
5
|
+
* @param {number} args.port - Port.
|
|
6
|
+
* @param {"client" | "reporter"} args.role - Socket role.
|
|
7
|
+
*/
|
|
8
|
+
constructor({ host, port, role }: {
|
|
9
|
+
host: string;
|
|
10
|
+
port: number;
|
|
11
|
+
role: "client" | "reporter";
|
|
12
|
+
});
|
|
13
|
+
host: string;
|
|
14
|
+
port: number;
|
|
15
|
+
role: "client" | "reporter";
|
|
16
|
+
/**
|
|
17
|
+
* @template T
|
|
18
|
+
* @param {object} args - Options.
|
|
19
|
+
* @param {(jsonSocket: JsonSocket) => void} args.onConnect - Called after the socket connects.
|
|
20
|
+
* @param {(args: {message: import("./types.js").BackgroundJobSocketMessage, resolve: (value: T) => void, reject: (error: Error) => void}) => void} args.onMessage - Message handler.
|
|
21
|
+
* @returns {Promise<T>} - Resolved request value.
|
|
22
|
+
*/
|
|
23
|
+
run<T>({ onConnect, onMessage }: {
|
|
24
|
+
onConnect: (jsonSocket: JsonSocket) => void;
|
|
25
|
+
onMessage: (args: {
|
|
26
|
+
message: import("./types.js").BackgroundJobSocketMessage;
|
|
27
|
+
resolve: (value: T) => void;
|
|
28
|
+
reject: (error: Error) => void;
|
|
29
|
+
}) => void;
|
|
30
|
+
}): Promise<T>;
|
|
31
|
+
}
|
|
32
|
+
import JsonSocket from "./json-socket.js";
|
|
33
|
+
//# sourceMappingURL=socket-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket-request.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/socket-request.js"],"names":[],"mappings":"AAKA;IACE;;;;;OAKG;IACH,kCAJG;QAAqB,IAAI,EAAjB,MAAM;QACO,IAAI,EAAjB,MAAM;QACsB,IAAI,EAAhC,QAAQ,GAAG,UAAU;KAC/B,EAKA;IAHC,aAAgB;IAChB,aAAgB;IAChB,4BAAgB;IAGlB;;;;;;OAMG;IACH,IANa,CAAC,4BAEX;QAA+C,SAAS,EAAhD,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI;QAC8G,SAAS,EAAvJ,CAAC,IAAI,EAAE;YAAC,OAAO,EAAE,OAAO,YAAY,EAAE,0BAA0B,CAAC;YAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;YAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;SAAC,KAAK,IAAI;KAC/I,GAAU,OAAO,CAAC,CAAC,CAAC,CAmCtB;CACF;uBAxDsB,kBAAkB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
import net from "net";
|
|
3
|
+
import JsonSocket from "./json-socket.js";
|
|
4
|
+
export default class BackgroundJobsSocketRequest {
|
|
5
|
+
/**
|
|
6
|
+
* @param {object} args - Options.
|
|
7
|
+
* @param {string} args.host - Host.
|
|
8
|
+
* @param {number} args.port - Port.
|
|
9
|
+
* @param {"client" | "reporter"} args.role - Socket role.
|
|
10
|
+
*/
|
|
11
|
+
constructor({ host, port, role }) {
|
|
12
|
+
this.host = host;
|
|
13
|
+
this.port = port;
|
|
14
|
+
this.role = role;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @template T
|
|
18
|
+
* @param {object} args - Options.
|
|
19
|
+
* @param {(jsonSocket: JsonSocket) => void} args.onConnect - Called after the socket connects.
|
|
20
|
+
* @param {(args: {message: import("./types.js").BackgroundJobSocketMessage, resolve: (value: T) => void, reject: (error: Error) => void}) => void} args.onMessage - Message handler.
|
|
21
|
+
* @returns {Promise<T>} - Resolved request value.
|
|
22
|
+
*/
|
|
23
|
+
async run({ onConnect, onMessage }) {
|
|
24
|
+
const socket = net.createConnection({ host: this.host, port: this.port });
|
|
25
|
+
const jsonSocket = new JsonSocket(socket);
|
|
26
|
+
return await new Promise((resolve, reject) => {
|
|
27
|
+
let finished = false;
|
|
28
|
+
/** @param {() => void} callback - Finish callback. */
|
|
29
|
+
const finish = (callback) => {
|
|
30
|
+
if (finished)
|
|
31
|
+
return;
|
|
32
|
+
finished = true;
|
|
33
|
+
jsonSocket.removeAllListeners();
|
|
34
|
+
jsonSocket.close();
|
|
35
|
+
callback();
|
|
36
|
+
};
|
|
37
|
+
jsonSocket.on("error", (error) => {
|
|
38
|
+
finish(() => reject(error));
|
|
39
|
+
});
|
|
40
|
+
/** @param {import("./types.js").BackgroundJobSocketMessage} message - Socket message. */
|
|
41
|
+
jsonSocket.on("message", (message) => {
|
|
42
|
+
onMessage({
|
|
43
|
+
message,
|
|
44
|
+
resolve: (value) => finish(() => resolve(value)),
|
|
45
|
+
reject: (error) => finish(() => reject(error))
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
socket.on("connect", () => {
|
|
49
|
+
jsonSocket.send({ type: "hello", role: this.role });
|
|
50
|
+
onConnect(jsonSocket);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LXJlcXVlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2dyb3VuZC1qb2JzL3NvY2tldC1yZXF1ZXN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUE7QUFDckIsT0FBTyxVQUFVLE1BQU0sa0JBQWtCLENBQUE7QUFFekMsTUFBTSxDQUFDLE9BQU8sT0FBTywyQkFBMkI7SUFDOUM7Ozs7O09BS0c7SUFDSCxZQUFZLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7SUFDbEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFDO1FBQzlCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQTtRQUN2RSxNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUV6QyxPQUFPLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDM0MsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFBO1lBQ3BCLHNEQUFzRDtZQUN0RCxNQUFNLE1BQU0sR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUMxQixJQUFJLFFBQVE7b0JBQUUsT0FBTTtnQkFDcEIsUUFBUSxHQUFHLElBQUksQ0FBQTtnQkFDZixVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtnQkFDL0IsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFBO2dCQUNsQixRQUFRLEVBQUUsQ0FBQTtZQUNaLENBQUMsQ0FBQTtZQUVELFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQy9CLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtZQUM3QixDQUFDLENBQUMsQ0FBQTtZQUVGLHlGQUF5RjtZQUN6RixVQUFVLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNuQyxTQUFTLENBQUM7b0JBQ1IsT0FBTztvQkFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2hELE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDL0MsQ0FBQyxDQUFBO1lBQ0osQ0FBQyxDQUFDLENBQUE7WUFFRixNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7Z0JBQ3hCLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQTtnQkFDakQsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ3ZCLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IG5ldCBmcm9tIFwibmV0XCJcbmltcG9ydCBKc29uU29ja2V0IGZyb20gXCIuL2pzb24tc29ja2V0LmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmFja2dyb3VuZEpvYnNTb2NrZXRSZXF1ZXN0IHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuaG9zdCAtIEhvc3QuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhcmdzLnBvcnQgLSBQb3J0LlxuICAgKiBAcGFyYW0ge1wiY2xpZW50XCIgfCBcInJlcG9ydGVyXCJ9IGFyZ3Mucm9sZSAtIFNvY2tldCByb2xlLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2hvc3QsIHBvcnQsIHJvbGV9KSB7XG4gICAgdGhpcy5ob3N0ID0gaG9zdFxuICAgIHRoaXMucG9ydCA9IHBvcnRcbiAgICB0aGlzLnJvbGUgPSByb2xlXG4gIH1cblxuICAvKipcbiAgICogQHRlbXBsYXRlIFRcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICAgKiBAcGFyYW0geyhqc29uU29ja2V0OiBKc29uU29ja2V0KSA9PiB2b2lkfSBhcmdzLm9uQ29ubmVjdCAtIENhbGxlZCBhZnRlciB0aGUgc29ja2V0IGNvbm5lY3RzLlxuICAgKiBAcGFyYW0geyhhcmdzOiB7bWVzc2FnZTogaW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iU29ja2V0TWVzc2FnZSwgcmVzb2x2ZTogKHZhbHVlOiBUKSA9PiB2b2lkLCByZWplY3Q6IChlcnJvcjogRXJyb3IpID0+IHZvaWR9KSA9PiB2b2lkfSBhcmdzLm9uTWVzc2FnZSAtIE1lc3NhZ2UgaGFuZGxlci5cbiAgICogQHJldHVybnMge1Byb21pc2U8VD59IC0gUmVzb2x2ZWQgcmVxdWVzdCB2YWx1ZS5cbiAgICovXG4gIGFzeW5jIHJ1bih7b25Db25uZWN0LCBvbk1lc3NhZ2V9KSB7XG4gICAgY29uc3Qgc29ja2V0ID0gbmV0LmNyZWF0ZUNvbm5lY3Rpb24oe2hvc3Q6IHRoaXMuaG9zdCwgcG9ydDogdGhpcy5wb3J0fSlcbiAgICBjb25zdCBqc29uU29ja2V0ID0gbmV3IEpzb25Tb2NrZXQoc29ja2V0KVxuXG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGxldCBmaW5pc2hlZCA9IGZhbHNlXG4gICAgICAvKiogQHBhcmFtIHsoKSA9PiB2b2lkfSBjYWxsYmFjayAtIEZpbmlzaCBjYWxsYmFjay4gKi9cbiAgICAgIGNvbnN0IGZpbmlzaCA9IChjYWxsYmFjaykgPT4ge1xuICAgICAgICBpZiAoZmluaXNoZWQpIHJldHVyblxuICAgICAgICBmaW5pc2hlZCA9IHRydWVcbiAgICAgICAganNvblNvY2tldC5yZW1vdmVBbGxMaXN0ZW5lcnMoKVxuICAgICAgICBqc29uU29ja2V0LmNsb3NlKClcbiAgICAgICAgY2FsbGJhY2soKVxuICAgICAgfVxuXG4gICAgICBqc29uU29ja2V0Lm9uKFwiZXJyb3JcIiwgKGVycm9yKSA9PiB7XG4gICAgICAgIGZpbmlzaCgoKSA9PiByZWplY3QoZXJyb3IpKVxuICAgICAgfSlcblxuICAgICAgLyoqIEBwYXJhbSB7aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iU29ja2V0TWVzc2FnZX0gbWVzc2FnZSAtIFNvY2tldCBtZXNzYWdlLiAqL1xuICAgICAganNvblNvY2tldC5vbihcIm1lc3NhZ2VcIiwgKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgb25NZXNzYWdlKHtcbiAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgIHJlc29sdmU6ICh2YWx1ZSkgPT4gZmluaXNoKCgpID0+IHJlc29sdmUodmFsdWUpKSxcbiAgICAgICAgICByZWplY3Q6IChlcnJvcikgPT4gZmluaXNoKCgpID0+IHJlamVjdChlcnJvcikpXG4gICAgICAgIH0pXG4gICAgICB9KVxuXG4gICAgICBzb2NrZXQub24oXCJjb25uZWN0XCIsICgpID0+IHtcbiAgICAgICAganNvblNvY2tldC5zZW5kKHt0eXBlOiBcImhlbGxvXCIsIHJvbGU6IHRoaXMucm9sZX0pXG4gICAgICAgIG9uQ29ubmVjdChqc29uU29ja2V0KVxuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG4iXX0=
|
|
@@ -48,11 +48,6 @@ export default class BackgroundJobsStatusReporter {
|
|
|
48
48
|
workerId?: string | undefined;
|
|
49
49
|
maxDurationMs?: number | undefined;
|
|
50
50
|
}): Promise<void>;
|
|
51
|
-
/**
|
|
52
|
-
* @param {unknown} error - Error input.
|
|
53
|
-
* @returns {string} - Normalized error string.
|
|
54
|
-
*/
|
|
55
|
-
_normalizeError(error: unknown): string;
|
|
56
51
|
}
|
|
57
52
|
import Logger from "../logger.js";
|
|
58
53
|
//# sourceMappingURL=status-reporter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-reporter.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/status-reporter.js"],"names":[],"mappings":"AAQA;IACE;;;;;OAKG;IACH,2CAJG;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO;QACvB,IAAI;QACJ,IAAI;KAC5B,EAMA;IAJC,qDAAkC;IAClC,yBAAgB;IAChB,yBAAgB;IAChB,eAA8B;IAGhC;;;;;;;;OAQG;IACH,0DAPG;QAAqB,KAAK,EAAlB,MAAM;QACuB,MAAM,EAAnC,WAAW,GAAG,QAAQ;QACP,KAAK,GAApB,OAAO;QACO,aAAa;QACb,QAAQ;KAC9B,GAAU,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"status-reporter.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/status-reporter.js"],"names":[],"mappings":"AAQA;IACE;;;;;OAKG;IACH,2CAJG;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO;QACvB,IAAI;QACJ,IAAI;KAC5B,EAMA;IAJC,qDAAkC;IAClC,yBAAgB;IAChB,yBAAgB;IAChB,eAA8B;IAGhC;;;;;;;;OAQG;IACH,0DAPG;QAAqB,KAAK,EAAlB,MAAM;QACuB,MAAM,EAAnC,WAAW,GAAG,QAAQ;QACP,KAAK,GAApB,OAAO;QACO,aAAa;QACb,QAAQ;KAC9B,GAAU,OAAO,CAAC,IAAI,CAAC,CAgCzB;IAED;;;;;;;;;OASG;IACH,kFARG;QAAqB,KAAK,EAAlB,MAAM;QACuB,MAAM,EAAnC,WAAW,GAAG,QAAQ;QACP,KAAK,GAApB,OAAO;QACO,aAAa;QACb,QAAQ;QACR,aAAa;KACnC,GAAU,OAAO,CAAC,IAAI,CAAC,CAwBzB;CAEF;mBA7FkB,cAAc"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// @ts-check
|
|
2
|
-
import net from "net";
|
|
3
2
|
import timeout from "awaitery/build/timeout.js";
|
|
4
3
|
import wait from "awaitery/build/wait.js";
|
|
5
|
-
import JsonSocket from "./json-socket.js";
|
|
6
4
|
import Logger from "../logger.js";
|
|
5
|
+
import normalizeBackgroundJobError from "./normalize-error.js";
|
|
6
|
+
import BackgroundJobsSocketRequest from "./socket-request.js";
|
|
7
7
|
export default class BackgroundJobsStatusReporter {
|
|
8
8
|
/**
|
|
9
9
|
* @param {object} args - Options.
|
|
@@ -31,40 +31,26 @@ export default class BackgroundJobsStatusReporter {
|
|
|
31
31
|
const host = this.host || config.host;
|
|
32
32
|
const port = typeof this.port === "number" ? this.port : config.port;
|
|
33
33
|
await timeout({ timeout: 5000 }, async () => {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
34
|
+
const request = new BackgroundJobsSocketRequest({ host, port, role: "reporter" });
|
|
35
|
+
await request.run({
|
|
36
|
+
onConnect: (jsonSocket) => {
|
|
37
|
+
jsonSocket.send({
|
|
38
|
+
type: status === "completed" ? "job-complete" : "job-failed",
|
|
39
|
+
jobId,
|
|
40
|
+
workerId,
|
|
41
|
+
handedOffAtMs,
|
|
42
|
+
error: error ? normalizeBackgroundJobError(error) : undefined
|
|
43
|
+
});
|
|
44
|
+
},
|
|
45
|
+
onMessage: ({ message, resolve, reject }) => {
|
|
46
46
|
if (message?.type === "job-updated" && message.jobId === jobId) {
|
|
47
|
-
cleanup();
|
|
48
|
-
jsonSocket.close();
|
|
49
47
|
resolve(undefined);
|
|
50
48
|
return;
|
|
51
49
|
}
|
|
52
50
|
if (message?.type === "job-update-error" && message.jobId === jobId) {
|
|
53
|
-
cleanup();
|
|
54
|
-
jsonSocket.close();
|
|
55
51
|
reject(new Error(message.error || "Job update failed"));
|
|
56
52
|
}
|
|
57
|
-
}
|
|
58
|
-
socket.on("connect", () => {
|
|
59
|
-
jsonSocket.send({ type: "hello", role: "reporter" });
|
|
60
|
-
jsonSocket.send({
|
|
61
|
-
type: status === "completed" ? "job-complete" : "job-failed",
|
|
62
|
-
jobId,
|
|
63
|
-
workerId,
|
|
64
|
-
handedOffAtMs,
|
|
65
|
-
error: error ? this._normalizeError(error) : undefined
|
|
66
|
-
});
|
|
67
|
-
});
|
|
53
|
+
}
|
|
68
54
|
});
|
|
69
55
|
});
|
|
70
56
|
}
|
|
@@ -98,21 +84,5 @@ export default class BackgroundJobsStatusReporter {
|
|
|
98
84
|
}
|
|
99
85
|
}
|
|
100
86
|
}
|
|
101
|
-
/**
|
|
102
|
-
* @param {unknown} error - Error input.
|
|
103
|
-
* @returns {string} - Normalized error string.
|
|
104
|
-
*/
|
|
105
|
-
_normalizeError(error) {
|
|
106
|
-
if (error instanceof Error)
|
|
107
|
-
return error.stack || error.message;
|
|
108
|
-
if (typeof error === "string")
|
|
109
|
-
return error;
|
|
110
|
-
try {
|
|
111
|
-
return JSON.stringify(error);
|
|
112
|
-
}
|
|
113
|
-
catch {
|
|
114
|
-
return String(error);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
87
|
}
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLXJlcG9ydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tncm91bmQtam9icy9zdGF0dXMtcmVwb3J0ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQTtBQUNyQixPQUFPLE9BQU8sTUFBTSwyQkFBMkIsQ0FBQTtBQUMvQyxPQUFPLElBQUksTUFBTSx3QkFBd0IsQ0FBQTtBQUN6QyxPQUFPLFVBQVUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN6QyxPQUFPLE1BQU0sTUFBTSxjQUFjLENBQUE7QUFFakMsTUFBTSxDQUFDLE9BQU8sT0FBTyw0QkFBNEI7SUFDL0M7Ozs7O09BS0c7SUFDSCxZQUFZLEVBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDbEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBQztRQUMxRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHVCQUF1QixFQUFFLENBQUE7UUFDM0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFBO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FB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QkFDWixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUE7Z0JBRWhELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsK0NBQStDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQTtnQkFFakYsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsSUFBSSxhQUFhLEVBQUUsQ0FBQztvQkFDN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxtREFBbUQsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO29CQUNwRixPQUFNO2dCQUNSLENBQUM7Z0JBRUQsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDMUIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZUFBZSxDQUFDLEtBQUs7UUFDbkIsSUFBSSxLQUFLLFlBQVksS0FBSztZQUFFLE9BQU8sS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFBO1FBQy9ELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtZQUFFLE9BQU8sS0FBSyxDQUFBO1FBRTNDLElBQUksQ0FBQztZQUNILE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM5QixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDdEIsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgbmV0IGZyb20gXCJuZXRcIlxuaW1wb3J0IHRpbWVvdXQgZnJvbSBcImF3YWl0ZXJ5L2J1aWxkL3RpbWVvdXQuanNcIlxuaW1wb3J0IHdhaXQgZnJvbSBcImF3YWl0ZXJ5L2J1aWxkL3dhaXQuanNcIlxuaW1wb3J0IEpzb25Tb2NrZXQgZnJvbSBcIi4vanNvbi1zb2NrZXQuanNcIlxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi4vbG9nZ2VyLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmFja2dyb3VuZEpvYnNTdGF0dXNSZXBvcnRlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBhcmdzLmNvbmZpZ3VyYXRpb24gLSBDb25maWd1cmF0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3MuaG9zdF0gLSBIb3N0LlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2FyZ3MucG9ydF0gLSBQb3J0LlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbmZpZ3VyYXRpb24sIGhvc3QsIHBvcnR9KSB7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvblxuICAgIHRoaXMuaG9zdCA9IGhvc3RcbiAgICB0aGlzLnBvcnQgPSBwb3J0XG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5qb2JJZCAtIEpvYiBpZC5cbiAgICogQHBhcmFtIHtcImNvbXBsZXRlZFwiIHwgXCJmYWlsZWRcIn0gYXJncy5zdGF0dXMgLSBTdGF0dXMuXG4gICAqIEBwYXJhbSB7dW5rbm93bn0gW2FyZ3MuZXJyb3JdIC0gRXJyb3IuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5oYW5kZWRPZmZBdE1zXSAtIEhhbmRlZCBvZmYgdGltZXN0YW1wLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3Mud29ya2VySWRdIC0gV29ya2VyIGlkLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIHJlcG9ydGVkLlxuICAgKi9cbiAgYXN5bmMgcmVwb3J0KHtqb2JJZCwgc3RhdHVzLCBlcnJvciwgaGFuZGVkT2ZmQXRNcywgd29ya2VySWR9KSB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWd1cmF0aW9uLmdldEJhY2tncm91bmRKb2JzQ29uZmlnKClcbiAgICBjb25zdCBob3N0ID0gdGhpcy5ob3N0IHx8IGNvbmZpZy5ob3N0XG4gICAgY29uc3QgcG9ydCA9IHR5cGVvZiB0aGlzLnBvcnQgPT09IFwibnVtYmVyXCIgPyB0aGlzLnBvcnQgOiBjb25maWcucG9ydFxuXG4gICAgYXdhaXQgdGltZW91dCh7dGltZW91dDogNTAwMH0sIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3Qgc29ja2V0ID0gbmV0LmNyZWF0ZUNvbm5lY3Rpb24oe2hvc3QsIHBvcnR9KVxuICAgICAgICBjb25zdCBqc29uU29ja2V0ID0gbmV3IEpzb25Tb2NrZXQoc29ja2V0KVxuXG4gICAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgICAgICAganNvblNvY2tldC5yZW1vdmVBbGxMaXN0ZW5lcnMoKVxuICAgICAgICB9XG5cbiAgICAgICAganNvblNvY2tldC5vbihcImVycm9yXCIsIChlcnJvcikgPT4ge1xuICAgICAgICAgIGNsZWFudXAoKVxuICAgICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgICAgfSlcblxuICAgICAgICAvKiogQHBhcmFtIHtpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JTb2NrZXRNZXNzYWdlfSBtZXNzYWdlIC0gU29ja2V0IG1lc3NhZ2UuICovXG4gICAgICAgIGpzb25Tb2NrZXQub24oXCJtZXNzYWdlXCIsIChtZXNzYWdlKSA9PiB7XG4gICAgICAgICAgaWYgKG1lc3NhZ2U/LnR5cGUgPT09IFwiam9iLXVwZGF0ZWRcIiAmJiBtZXNzYWdlLmpvYklkID09PSBqb2JJZCkge1xuICAgICAgICAgICAgY2xlYW51cCgpXG4gICAgICAgICAgICBqc29uU29ja2V0LmNsb3NlKClcbiAgICAgICAgICAgIHJlc29sdmUodW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG1lc3NhZ2U/LnR5cGUgPT09IFwiam9iLXVwZGF0ZS1lcnJvclwiICYmIG1lc3NhZ2Uuam9iSWQgPT09IGpvYklkKSB7XG4gICAgICAgICAgICBjbGVhbnVwKClcbiAgICAgICAgICAgIGpzb25Tb2NrZXQuY2xvc2UoKVxuICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihtZXNzYWdlLmVycm9yIHx8IFwiSm9iIHVwZGF0ZSBmYWlsZWRcIikpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIHNvY2tldC5vbihcImNvbm5lY3RcIiwgKCkgPT4ge1xuICAgICAgICAgIGpzb25Tb2NrZXQuc2VuZCh7dHlwZTogXCJoZWxsb1wiLCByb2xlOiBcInJlcG9ydGVyXCJ9KVxuICAgICAgICAgIGpzb25Tb2NrZXQuc2VuZCh7XG4gICAgICAgICAgICB0eXBlOiBzdGF0dXMgPT09IFwiY29tcGxldGVkXCIgPyBcImpvYi1jb21wbGV0ZVwiIDogXCJqb2ItZmFpbGVkXCIsXG4gICAgICAgICAgICBqb2JJZCxcbiAgICAgICAgICAgIHdvcmtlcklkLFxuICAgICAgICAgICAgaGFuZGVkT2ZmQXRNcyxcbiAgICAgICAgICAgIGVycm9yOiBlcnJvciA/IHRoaXMuX25vcm1hbGl6ZUVycm9yKGVycm9yKSA6IHVuZGVmaW5lZFxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5qb2JJZCAtIEpvYiBpZC5cbiAgICogQHBhcmFtIHtcImNvbXBsZXRlZFwiIHwgXCJmYWlsZWRcIn0gYXJncy5zdGF0dXMgLSBTdGF0dXMuXG4gICAqIEBwYXJhbSB7dW5rbm93bn0gW2FyZ3MuZXJyb3JdIC0gRXJyb3IuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5oYW5kZWRPZmZBdE1zXSAtIEhhbmRlZCBvZmYgdGltZXN0YW1wLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3Mud29ya2VySWRdIC0gV29ya2VyIGlkLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2FyZ3MubWF4RHVyYXRpb25Nc10gLSBNYXggZHVyYXRpb24gZm9yIHJldHJpZXMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gcmVwb3J0ZWQuXG4gICAqL1xuICBhc3luYyByZXBvcnRXaXRoUmV0cnkoe2pvYklkLCBzdGF0dXMsIGVycm9yLCBoYW5kZWRPZmZBdE1zLCB3b3JrZXJJZCwgbWF4RHVyYXRpb25Nc30pIHtcbiAgICBsZXQgYXR0ZW1wdCA9IDBcbiAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpXG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZXBvcnQoe2pvYklkLCBzdGF0dXMsIGVycm9yLCBoYW5kZWRPZmZBdE1zLCB3b3JrZXJJZH0pXG4gICAgICAgIHJldHVyblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgYXR0ZW1wdCArPSAxXG4gICAgICAgIGNvbnN0IGRlbGF5U2Vjb25kcyA9IE1hdGgubWluKDMwLCAwLjUgKiBhdHRlbXB0KVxuXG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCgpID0+IFtcIkJhY2tncm91bmQgam9iIHN0YXR1cyByZXBvcnQgZmFpbGVkLCByZXRyeWluZ1wiLCBlcnJvcl0pXG5cbiAgICAgICAgaWYgKG1heER1cmF0aW9uTXMgJiYgRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSA+PSBtYXhEdXJhdGlvbk1zKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIud2FybigoKSA9PiBbXCJCYWNrZ3JvdW5kIGpvYiBzdGF0dXMgcmVwb3J0IHRpbWVkIG91dCwgZ2l2aW5nIHVwXCIsIGVycm9yXSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHdhaXQoZGVsYXlTZWNvbmRzKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3Vua25vd259IGVycm9yIC0gRXJyb3IgaW5wdXQuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gTm9ybWFsaXplZCBlcnJvciBzdHJpbmcuXG4gICAqL1xuICBfbm9ybWFsaXplRXJyb3IoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikgcmV0dXJuIGVycm9yLnN0YWNrIHx8IGVycm9yLm1lc3NhZ2VcbiAgICBpZiAodHlwZW9mIGVycm9yID09PSBcInN0cmluZ1wiKSByZXR1cm4gZXJyb3JcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZXJyb3IpXG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gU3RyaW5nKGVycm9yKVxuICAgIH1cbiAgfVxufVxuIl19
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLXJlcG9ydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tncm91bmQtam9icy9zdGF0dXMtcmVwb3J0ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sT0FBTyxNQUFNLDJCQUEyQixDQUFBO0FBQy9DLE9BQU8sSUFBSSxNQUFNLHdCQUF3QixDQUFBO0FBQ3pDLE9BQU8sTUFBTSxNQUFNLGNBQWMsQ0FBQTtBQUNqQyxPQUFPLDJCQUEyQixNQUFNLHNCQUFzQixDQUFBO0FBQzlELE9BQU8sMkJBQTJCLE1BQU0scUJBQXFCLENBQUE7QUFFN0QsTUFBTSxDQUFDLE9BQU8sT0FBTyw0QkFBNEI7SUFDL0M7Ozs7O09BS0c7SUFDSCxZQUFZLEVBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDbEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBQztRQUMxRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHVCQUF1QixFQUFFLENBQUE7UUFDM0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFBO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUE7UUFFcEUsTUFBTSxPQUFPLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDeEMsTUFBTSxPQUFPLEdBQUcsSUFBSSwyQkFBMkIsQ0FBQyxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUE7WUFFL0UsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUNoQixTQUFTLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRTtvQkFDeEIsVUFBVSxDQUFDLElBQUksQ0FBQzt3QkFDZCxJQUFJLEVBQUUsTUFBTSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxZQUFZO3dCQUM1RCxLQUFLO3dCQUNMLFFBQVE7d0JBQ1IsYUFBYTt3QkFDYixLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztxQkFDOUQsQ0FBQyxDQUFBO2dCQUNKLENBQUM7Z0JBQ0QsU0FBUyxFQUFFLENBQUMsRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBQyxFQUFFLEVBQUU7b0JBQ3hDLElBQUksT0FBTyxFQUFFLElBQUksS0FBSyxhQUFhLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQzt3QkFDL0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO3dCQUNsQixPQUFNO29CQUNSLENBQUM7b0JBRUQsSUFBSSxPQUFPLEVBQUUsSUFBSSxLQUFLLGtCQUFrQixJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7d0JBQ3BFLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLG1CQUFtQixDQUFDLENBQUMsQ0FBQTtvQkFDekQsQ0FBQztnQkFDSCxDQUFDO2FBQ0YsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFDO1FBQ2xGLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQTtRQUNmLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUU1QixPQUFPLElBQUksRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDO2dCQUNILE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUMsQ0FBQyxDQUFBO2dCQUNsRSxPQUFNO1lBQ1IsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxJQUFJLENBQUMsQ0FBQTtnQkFDWixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUE7Z0JBRWhELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsK0NBQStDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQTtnQkFFakYsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsSUFBSSxhQUFhLEVBQUUsQ0FBQztvQkFDN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxtREFBbUQsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO29CQUNwRixPQUFNO2dCQUNSLENBQUM7Z0JBRUQsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDMUIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHRpbWVvdXQgZnJvbSBcImF3YWl0ZXJ5L2J1aWxkL3RpbWVvdXQuanNcIlxuaW1wb3J0IHdhaXQgZnJvbSBcImF3YWl0ZXJ5L2J1aWxkL3dhaXQuanNcIlxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi4vbG9nZ2VyLmpzXCJcbmltcG9ydCBub3JtYWxpemVCYWNrZ3JvdW5kSm9iRXJyb3IgZnJvbSBcIi4vbm9ybWFsaXplLWVycm9yLmpzXCJcbmltcG9ydCBCYWNrZ3JvdW5kSm9ic1NvY2tldFJlcXVlc3QgZnJvbSBcIi4vc29ja2V0LXJlcXVlc3QuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYWNrZ3JvdW5kSm9ic1N0YXR1c1JlcG9ydGVyIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGFyZ3MuY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5ob3N0XSAtIEhvc3QuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5wb3J0XSAtIFBvcnQuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7Y29uZmlndXJhdGlvbiwgaG9zdCwgcG9ydH0pIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uXG4gICAgdGhpcy5ob3N0ID0gaG9zdFxuICAgIHRoaXMucG9ydCA9IHBvcnRcbiAgICB0aGlzLmxvZ2dlciA9IG5ldyBMb2dnZXIodGhpcylcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmpvYklkIC0gSm9iIGlkLlxuICAgKiBAcGFyYW0ge1wiY29tcGxldGVkXCIgfCBcImZhaWxlZFwifSBhcmdzLnN0YXR1cyAtIFN0YXR1cy5cbiAgICogQHBhcmFtIHt1bmtub3dufSBbYXJncy5lcnJvcl0gLSBFcnJvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFthcmdzLmhhbmRlZE9mZkF0TXNdIC0gSGFuZGVkIG9mZiB0aW1lc3RhbXAuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy53b3JrZXJJZF0gLSBXb3JrZXIgaWQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gcmVwb3J0ZWQuXG4gICAqL1xuICBhc3luYyByZXBvcnQoe2pvYklkLCBzdGF0dXMsIGVycm9yLCBoYW5kZWRPZmZBdE1zLCB3b3JrZXJJZH0pIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0QmFja2dyb3VuZEpvYnNDb25maWcoKVxuICAgIGNvbnN0IGhvc3QgPSB0aGlzLmhvc3QgfHwgY29uZmlnLmhvc3RcbiAgICBjb25zdCBwb3J0ID0gdHlwZW9mIHRoaXMucG9ydCA9PT0gXCJudW1iZXJcIiA/IHRoaXMucG9ydCA6IGNvbmZpZy5wb3J0XG5cbiAgICBhd2FpdCB0aW1lb3V0KHt0aW1lb3V0OiA1MDAwfSwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBCYWNrZ3JvdW5kSm9ic1NvY2tldFJlcXVlc3Qoe2hvc3QsIHBvcnQsIHJvbGU6IFwicmVwb3J0ZXJcIn0pXG5cbiAgICAgIGF3YWl0IHJlcXVlc3QucnVuKHtcbiAgICAgICAgb25Db25uZWN0OiAoanNvblNvY2tldCkgPT4ge1xuICAgICAgICAgIGpzb25Tb2NrZXQuc2VuZCh7XG4gICAgICAgICAgICB0eXBlOiBzdGF0dXMgPT09IFwiY29tcGxldGVkXCIgPyBcImpvYi1jb21wbGV0ZVwiIDogXCJqb2ItZmFpbGVkXCIsXG4gICAgICAgICAgICBqb2JJZCxcbiAgICAgICAgICAgIHdvcmtlcklkLFxuICAgICAgICAgICAgaGFuZGVkT2ZmQXRNcyxcbiAgICAgICAgICAgIGVycm9yOiBlcnJvciA/IG5vcm1hbGl6ZUJhY2tncm91bmRKb2JFcnJvcihlcnJvcikgOiB1bmRlZmluZWRcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICBvbk1lc3NhZ2U6ICh7bWVzc2FnZSwgcmVzb2x2ZSwgcmVqZWN0fSkgPT4ge1xuICAgICAgICAgIGlmIChtZXNzYWdlPy50eXBlID09PSBcImpvYi11cGRhdGVkXCIgJiYgbWVzc2FnZS5qb2JJZCA9PT0gam9iSWQpIHtcbiAgICAgICAgICAgIHJlc29sdmUodW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG1lc3NhZ2U/LnR5cGUgPT09IFwiam9iLXVwZGF0ZS1lcnJvclwiICYmIG1lc3NhZ2Uuam9iSWQgPT09IGpvYklkKSB7XG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKG1lc3NhZ2UuZXJyb3IgfHwgXCJKb2IgdXBkYXRlIGZhaWxlZFwiKSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmpvYklkIC0gSm9iIGlkLlxuICAgKiBAcGFyYW0ge1wiY29tcGxldGVkXCIgfCBcImZhaWxlZFwifSBhcmdzLnN0YXR1cyAtIFN0YXR1cy5cbiAgICogQHBhcmFtIHt1bmtub3dufSBbYXJncy5lcnJvcl0gLSBFcnJvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFthcmdzLmhhbmRlZE9mZkF0TXNdIC0gSGFuZGVkIG9mZiB0aW1lc3RhbXAuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy53b3JrZXJJZF0gLSBXb3JrZXIgaWQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5tYXhEdXJhdGlvbk1zXSAtIE1heCBkdXJhdGlvbiBmb3IgcmV0cmllcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiByZXBvcnRlZC5cbiAgICovXG4gIGFzeW5jIHJlcG9ydFdpdGhSZXRyeSh7am9iSWQsIHN0YXR1cywgZXJyb3IsIGhhbmRlZE9mZkF0TXMsIHdvcmtlcklkLCBtYXhEdXJhdGlvbk1zfSkge1xuICAgIGxldCBhdHRlbXB0ID0gMFxuICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KClcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnJlcG9ydCh7am9iSWQsIHN0YXR1cywgZXJyb3IsIGhhbmRlZE9mZkF0TXMsIHdvcmtlcklkfSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBhdHRlbXB0ICs9IDFcbiAgICAgICAgY29uc3QgZGVsYXlTZWNvbmRzID0gTWF0aC5taW4oMzAsIDAuNSAqIGF0dGVtcHQpXG5cbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoKCkgPT4gW1wiQmFja2dyb3VuZCBqb2Igc3RhdHVzIHJlcG9ydCBmYWlsZWQsIHJldHJ5aW5nXCIsIGVycm9yXSlcblxuICAgICAgICBpZiAobWF4RHVyYXRpb25NcyAmJiBEYXRlLm5vdygpIC0gc3RhcnRUaW1lID49IG1heER1cmF0aW9uTXMpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKCgpID0+IFtcIkJhY2tncm91bmQgam9iIHN0YXR1cyByZXBvcnQgdGltZWQgb3V0LCBnaXZpbmcgdXBcIiwgZXJyb3JdKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgd2FpdChkZWxheVNlY29uZHMpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -34,11 +34,13 @@ export default class BackgroundJobsStore {
|
|
|
34
34
|
}): Promise<string>;
|
|
35
35
|
/**
|
|
36
36
|
* @param {object} [args] - Options.
|
|
37
|
-
* @param {boolean} [args.forked] -
|
|
37
|
+
* @param {boolean} [args.forked] - Compatibility filter for non-inline vs inline jobs.
|
|
38
|
+
* @param {import("./types.js").BackgroundJobExecutionMode | import("./types.js").BackgroundJobExecutionMode[]} [args.executionMode] - Execution mode or modes to match.
|
|
38
39
|
* @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Next job.
|
|
39
40
|
*/
|
|
40
41
|
nextAvailableJob(args?: {
|
|
41
42
|
forked?: boolean | undefined;
|
|
43
|
+
executionMode?: import("./types.js").BackgroundJobExecutionMode | import("./types.js").BackgroundJobExecutionMode[] | undefined;
|
|
42
44
|
}): Promise<import("./types.js").BackgroundJobRow | null>;
|
|
43
45
|
/**
|
|
44
46
|
* Returns the soonest future-scheduled queued job (one whose
|
|
@@ -49,6 +51,20 @@ export default class BackgroundJobsStore {
|
|
|
49
51
|
* @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Soonest future-scheduled job, or null.
|
|
50
52
|
*/
|
|
51
53
|
nextScheduledJob(): Promise<import("./types.js").BackgroundJobRow | null>;
|
|
54
|
+
/**
|
|
55
|
+
* @param {object} args - Options.
|
|
56
|
+
* @param {import("../database/drivers/base.js").default} args.db - Database connection.
|
|
57
|
+
* @param {"<=" | ">"} args.scheduledAtOperator - Scheduled timestamp operator.
|
|
58
|
+
* @param {boolean} [args.forked] - Compatibility filter for non-inline vs inline jobs.
|
|
59
|
+
* @param {import("./types.js").BackgroundJobExecutionMode | import("./types.js").BackgroundJobExecutionMode[]} [args.executionMode] - Execution mode or modes to match.
|
|
60
|
+
* @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Next matching queued job.
|
|
61
|
+
*/
|
|
62
|
+
_nextQueuedJob({ db, scheduledAtOperator, forked, executionMode }: {
|
|
63
|
+
db: import("../database/drivers/base.js").default;
|
|
64
|
+
scheduledAtOperator: "<=" | ">";
|
|
65
|
+
forked?: boolean | undefined;
|
|
66
|
+
executionMode?: import("./types.js").BackgroundJobExecutionMode | import("./types.js").BackgroundJobExecutionMode[] | undefined;
|
|
67
|
+
}): Promise<import("./types.js").BackgroundJobRow | null>;
|
|
52
68
|
/**
|
|
53
69
|
* @param {string} jobId - Job id.
|
|
54
70
|
* @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Job row.
|
|
@@ -163,14 +179,31 @@ export default class BackgroundJobsStore {
|
|
|
163
179
|
_ensureMigrationsTable(db: import("../database/drivers/base.js").default): Promise<void>;
|
|
164
180
|
/**
|
|
165
181
|
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
182
|
+
* @param {string} [version] - Migration version.
|
|
166
183
|
* @returns {Promise<boolean>} - Whether migration exists.
|
|
167
184
|
*/
|
|
168
|
-
_hasMigration(db: import("../database/drivers/base.js").default): Promise<boolean>;
|
|
185
|
+
_hasMigration(db: import("../database/drivers/base.js").default, version?: string): Promise<boolean>;
|
|
169
186
|
/**
|
|
170
187
|
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
171
188
|
* @returns {Promise<void>} - Resolves when complete.
|
|
172
189
|
*/
|
|
173
190
|
_applyMigrations(db: import("../database/drivers/base.js").default): Promise<void>;
|
|
191
|
+
/**
|
|
192
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
193
|
+
* @returns {Promise<void>} - Resolves when complete.
|
|
194
|
+
*/
|
|
195
|
+
_ensureJobsTableColumns(db: import("../database/drivers/base.js").default): Promise<void>;
|
|
196
|
+
/**
|
|
197
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
198
|
+
* @returns {Promise<void>} - Resolves when complete.
|
|
199
|
+
*/
|
|
200
|
+
_backfillExecutionModesOnce(db: import("../database/drivers/base.js").default): Promise<void>;
|
|
201
|
+
/**
|
|
202
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
203
|
+
* @param {string} version - Migration version.
|
|
204
|
+
* @returns {Promise<void>} - Resolves when complete.
|
|
205
|
+
*/
|
|
206
|
+
_recordMigration(db: import("../database/drivers/base.js").default, version: string): Promise<void>;
|
|
174
207
|
_initializeModel(): Promise<void>;
|
|
175
208
|
/**
|
|
176
209
|
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
@@ -192,6 +225,66 @@ export default class BackgroundJobsStore {
|
|
|
192
225
|
error: unknown;
|
|
193
226
|
markOrphaned: boolean;
|
|
194
227
|
}): Promise<import("./types.js").BackgroundJobRow>;
|
|
228
|
+
/**
|
|
229
|
+
* @param {object} args - Options.
|
|
230
|
+
* @param {string} args.failureMessage - Last failure message.
|
|
231
|
+
* @param {boolean} args.markOrphaned - Whether marking orphaned.
|
|
232
|
+
* @param {number} args.nextAttempt - Next attempt count.
|
|
233
|
+
* @param {number} args.now - Current timestamp.
|
|
234
|
+
* @param {number | null} args.scheduledAt - Next scheduled timestamp.
|
|
235
|
+
* @param {boolean} args.shouldRetry - Whether the job should retry.
|
|
236
|
+
* @returns {Record<string, any>} - Database update data.
|
|
237
|
+
*/
|
|
238
|
+
_failureUpdate({ failureMessage, markOrphaned, nextAttempt, now, scheduledAt, shouldRetry }: {
|
|
239
|
+
failureMessage: string;
|
|
240
|
+
markOrphaned: boolean;
|
|
241
|
+
nextAttempt: number;
|
|
242
|
+
now: number;
|
|
243
|
+
scheduledAt: number | null;
|
|
244
|
+
shouldRetry: boolean;
|
|
245
|
+
}): Record<string, any>;
|
|
246
|
+
/**
|
|
247
|
+
* @param {object} args - Options.
|
|
248
|
+
* @param {boolean} args.markOrphaned - Whether marking orphaned.
|
|
249
|
+
* @param {number} args.now - Current timestamp.
|
|
250
|
+
* @param {Record<string, any>} args.update - Database update data.
|
|
251
|
+
* @returns {void}
|
|
252
|
+
*/
|
|
253
|
+
_applyOrphanedFailureUpdate({ markOrphaned, now, update }: {
|
|
254
|
+
markOrphaned: boolean;
|
|
255
|
+
now: number;
|
|
256
|
+
update: Record<string, any>;
|
|
257
|
+
}): void;
|
|
258
|
+
/**
|
|
259
|
+
* @param {object} args - Options.
|
|
260
|
+
* @param {boolean} args.markOrphaned - Whether marking orphaned.
|
|
261
|
+
* @param {number} args.now - Current timestamp.
|
|
262
|
+
* @param {number | null} args.scheduledAt - Next scheduled timestamp.
|
|
263
|
+
* @param {boolean} args.shouldRetry - Whether the job should retry.
|
|
264
|
+
* @param {Record<string, any>} args.update - Database update data.
|
|
265
|
+
* @returns {void}
|
|
266
|
+
*/
|
|
267
|
+
_applyFailureStatusUpdate({ markOrphaned, now, scheduledAt, shouldRetry, update }: {
|
|
268
|
+
markOrphaned: boolean;
|
|
269
|
+
now: number;
|
|
270
|
+
scheduledAt: number | null;
|
|
271
|
+
shouldRetry: boolean;
|
|
272
|
+
update: Record<string, any>;
|
|
273
|
+
}): void;
|
|
274
|
+
/**
|
|
275
|
+
* @param {object} args - Options.
|
|
276
|
+
* @param {string} args.failureMessage - Last failure message.
|
|
277
|
+
* @param {import("./types.js").BackgroundJobRow} args.job - Job row.
|
|
278
|
+
* @param {number} args.nextAttempt - Next attempt count.
|
|
279
|
+
* @param {Record<string, any>} args.update - Database update data.
|
|
280
|
+
* @returns {import("./types.js").BackgroundJobRow} - Updated job row.
|
|
281
|
+
*/
|
|
282
|
+
_jobWithFailureUpdate({ failureMessage, job, nextAttempt, update }: {
|
|
283
|
+
failureMessage: string;
|
|
284
|
+
job: import("./types.js").BackgroundJobRow;
|
|
285
|
+
nextAttempt: number;
|
|
286
|
+
update: Record<string, any>;
|
|
287
|
+
}): import("./types.js").BackgroundJobRow;
|
|
195
288
|
/**
|
|
196
289
|
* @param {Record<string, any>} row - Raw database row.
|
|
197
290
|
* @returns {import("./types.js").BackgroundJobRow} - Normalized job row.
|
|
@@ -207,16 +300,21 @@ export default class BackgroundJobsStore {
|
|
|
207
300
|
* @returns {boolean} - Normalized boolean.
|
|
208
301
|
*/
|
|
209
302
|
_normalizeBoolean(value: unknown): boolean;
|
|
303
|
+
/**
|
|
304
|
+
* @param {import("./types.js").BackgroundJobOptions} [options] - Job options.
|
|
305
|
+
* @returns {import("./types.js").BackgroundJobExecutionMode} - Normalized execution mode.
|
|
306
|
+
*/
|
|
307
|
+
_normalizeExecutionMode(options?: import("./types.js").BackgroundJobOptions): import("./types.js").BackgroundJobExecutionMode;
|
|
308
|
+
/**
|
|
309
|
+
* @param {string} executionMode - Execution mode name.
|
|
310
|
+
* @returns {import("./types.js").BackgroundJobExecutionMode} - Normalized execution mode.
|
|
311
|
+
*/
|
|
312
|
+
_normalizeExecutionModeName(executionMode: string): import("./types.js").BackgroundJobExecutionMode;
|
|
210
313
|
/**
|
|
211
314
|
* @param {unknown} value - Input value.
|
|
212
315
|
* @returns {any[]} - Parsed args.
|
|
213
316
|
*/
|
|
214
317
|
_parseArgs(value: unknown): any[];
|
|
215
|
-
/**
|
|
216
|
-
* @param {unknown} error - Error input.
|
|
217
|
-
* @returns {string} - Normalized error string.
|
|
218
|
-
*/
|
|
219
|
-
_normalizeError(error: unknown): string;
|
|
220
318
|
/**
|
|
221
319
|
* @template T
|
|
222
320
|
* @param {(db: import("../database/drivers/base.js").default) => Promise<T>} callback - Callback.
|
|
@@ -235,7 +333,31 @@ export default class BackgroundJobsStore {
|
|
|
235
333
|
workerId: string | null | undefined;
|
|
236
334
|
handedOffAtMs: number | null | undefined;
|
|
237
335
|
}): boolean;
|
|
238
|
-
|
|
336
|
+
/**
|
|
337
|
+
* @param {object} args - Options.
|
|
338
|
+
* @param {import("./types.js").BackgroundJobRow} args.job - Job row.
|
|
339
|
+
* @param {string | null | undefined} args.workerId - Worker id from report.
|
|
340
|
+
* @returns {boolean} - Whether the worker report matches.
|
|
341
|
+
*/
|
|
342
|
+
_workerReportMatches({ job, workerId }: {
|
|
343
|
+
job: import("./types.js").BackgroundJobRow;
|
|
344
|
+
workerId: string | null | undefined;
|
|
345
|
+
}): boolean;
|
|
346
|
+
/**
|
|
347
|
+
* @param {object} args - Options.
|
|
348
|
+
* @param {number | null | undefined} args.handedOffAtMs - Handed off timestamp from report.
|
|
349
|
+
* @param {import("./types.js").BackgroundJobRow} args.job - Job row.
|
|
350
|
+
* @returns {boolean} - Whether the handoff report matches.
|
|
351
|
+
*/
|
|
352
|
+
_handoffReportMatches({ handedOffAtMs, job }: {
|
|
353
|
+
handedOffAtMs: number | null | undefined;
|
|
354
|
+
job: import("./types.js").BackgroundJobRow;
|
|
355
|
+
}): boolean;
|
|
356
|
+
/**
|
|
357
|
+
* @param {string} [version] - Migration version.
|
|
358
|
+
* @returns {string} - Migration key.
|
|
359
|
+
*/
|
|
360
|
+
_migrationKey(version?: string): string;
|
|
239
361
|
}
|
|
240
362
|
import Logger from "../logger.js";
|
|
241
363
|
//# sourceMappingURL=store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/store.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/store.js"],"names":[],"mappings":"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"}
|