velocious 1.0.415 → 1.0.416

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.
Files changed (42) hide show
  1. package/README.md +9 -7
  2. package/build/src/background-jobs/client.d.ts.map +1 -1
  3. package/build/src/background-jobs/client.js +14 -28
  4. package/build/src/background-jobs/forked-runner-child.d.ts +2 -0
  5. package/build/src/background-jobs/forked-runner-child.d.ts.map +1 -0
  6. package/build/src/background-jobs/forked-runner-child.js +69 -0
  7. package/build/src/background-jobs/json-socket.d.ts +2 -0
  8. package/build/src/background-jobs/json-socket.d.ts.map +1 -1
  9. package/build/src/background-jobs/json-socket.js +3 -1
  10. package/build/src/background-jobs/main.d.ts +161 -4
  11. package/build/src/background-jobs/main.d.ts.map +1 -1
  12. package/build/src/background-jobs/main.js +282 -99
  13. package/build/src/background-jobs/normalize-error.d.ts +6 -0
  14. package/build/src/background-jobs/normalize-error.d.ts.map +1 -0
  15. package/build/src/background-jobs/normalize-error.js +25 -0
  16. package/build/src/background-jobs/socket-request.d.ts +33 -0
  17. package/build/src/background-jobs/socket-request.d.ts.map +1 -0
  18. package/build/src/background-jobs/socket-request.js +55 -0
  19. package/build/src/background-jobs/status-reporter.d.ts +0 -5
  20. package/build/src/background-jobs/status-reporter.d.ts.map +1 -1
  21. package/build/src/background-jobs/status-reporter.js +16 -46
  22. package/build/src/background-jobs/store.d.ts +112 -6
  23. package/build/src/background-jobs/store.d.ts.map +1 -1
  24. package/build/src/background-jobs/store.js +202 -72
  25. package/build/src/background-jobs/types.d.ts +32 -7
  26. package/build/src/background-jobs/types.d.ts.map +1 -1
  27. package/build/src/background-jobs/types.js +12 -5
  28. package/build/src/background-jobs/web/controller.d.ts.map +1 -1
  29. package/build/src/background-jobs/web/controller.js +2 -1
  30. package/build/src/background-jobs/worker.d.ts +146 -18
  31. package/build/src/background-jobs/worker.d.ts.map +1 -1
  32. package/build/src/background-jobs/worker.js +231 -51
  33. package/build/src/configuration-types.d.ts +6 -6
  34. package/build/src/configuration-types.js +4 -4
  35. package/build/src/database/drivers/base.d.ts +9 -0
  36. package/build/src/database/drivers/base.d.ts.map +1 -1
  37. package/build/src/database/drivers/base.js +7 -1
  38. package/build/src/environment-handlers/node/cli/commands/background-jobs-runner.js +2 -2
  39. package/build/src/environment-handlers/node/cli/commands/background-jobs-worker.js +3 -3
  40. package/build/src/http-server/client/websocket-session.js +2 -2
  41. package/build/tsconfig.tsbuildinfo +1 -1
  42. package/package.json +1 -1
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @param {unknown} error - Error input.
3
+ * @returns {string} - Normalized error string.
4
+ */
5
+ export default function normalizeBackgroundJobError(error: unknown): string;
6
+ //# sourceMappingURL=normalize-error.d.ts.map
@@ -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,CAiDzB;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;IAED;;;OAGG;IACH,uBAHW,OAAO,GACL,MAAM,CAWlB;CACF;mBA1HkB,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
- await new Promise((resolve, reject) => {
35
- const socket = net.createConnection({ host, port });
36
- const jsonSocket = new JsonSocket(socket);
37
- const cleanup = () => {
38
- jsonSocket.removeAllListeners();
39
- };
40
- jsonSocket.on("error", (error) => {
41
- cleanup();
42
- reject(error);
43
- });
44
- /** @param {import("./types.js").BackgroundJobSocketMessage} message - Socket message. */
45
- jsonSocket.on("message", (message) => {
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] - When set, only return jobs with this forked value.
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.
@@ -171,6 +187,11 @@ export default class BackgroundJobsStore {
171
187
  * @returns {Promise<void>} - Resolves when complete.
172
188
  */
173
189
  _applyMigrations(db: import("../database/drivers/base.js").default): Promise<void>;
190
+ /**
191
+ * @param {import("../database/drivers/base.js").default} db - Database connection.
192
+ * @returns {Promise<void>} - Resolves when complete.
193
+ */
194
+ _ensureJobsTableColumns(db: import("../database/drivers/base.js").default): Promise<void>;
174
195
  _initializeModel(): Promise<void>;
175
196
  /**
176
197
  * @param {import("../database/drivers/base.js").default} db - Database connection.
@@ -192,6 +213,66 @@ export default class BackgroundJobsStore {
192
213
  error: unknown;
193
214
  markOrphaned: boolean;
194
215
  }): Promise<import("./types.js").BackgroundJobRow>;
216
+ /**
217
+ * @param {object} args - Options.
218
+ * @param {string} args.failureMessage - Last failure message.
219
+ * @param {boolean} args.markOrphaned - Whether marking orphaned.
220
+ * @param {number} args.nextAttempt - Next attempt count.
221
+ * @param {number} args.now - Current timestamp.
222
+ * @param {number | null} args.scheduledAt - Next scheduled timestamp.
223
+ * @param {boolean} args.shouldRetry - Whether the job should retry.
224
+ * @returns {Record<string, any>} - Database update data.
225
+ */
226
+ _failureUpdate({ failureMessage, markOrphaned, nextAttempt, now, scheduledAt, shouldRetry }: {
227
+ failureMessage: string;
228
+ markOrphaned: boolean;
229
+ nextAttempt: number;
230
+ now: number;
231
+ scheduledAt: number | null;
232
+ shouldRetry: boolean;
233
+ }): Record<string, any>;
234
+ /**
235
+ * @param {object} args - Options.
236
+ * @param {boolean} args.markOrphaned - Whether marking orphaned.
237
+ * @param {number} args.now - Current timestamp.
238
+ * @param {Record<string, any>} args.update - Database update data.
239
+ * @returns {void}
240
+ */
241
+ _applyOrphanedFailureUpdate({ markOrphaned, now, update }: {
242
+ markOrphaned: boolean;
243
+ now: number;
244
+ update: Record<string, any>;
245
+ }): void;
246
+ /**
247
+ * @param {object} args - Options.
248
+ * @param {boolean} args.markOrphaned - Whether marking orphaned.
249
+ * @param {number} args.now - Current timestamp.
250
+ * @param {number | null} args.scheduledAt - Next scheduled timestamp.
251
+ * @param {boolean} args.shouldRetry - Whether the job should retry.
252
+ * @param {Record<string, any>} args.update - Database update data.
253
+ * @returns {void}
254
+ */
255
+ _applyFailureStatusUpdate({ markOrphaned, now, scheduledAt, shouldRetry, update }: {
256
+ markOrphaned: boolean;
257
+ now: number;
258
+ scheduledAt: number | null;
259
+ shouldRetry: boolean;
260
+ update: Record<string, any>;
261
+ }): void;
262
+ /**
263
+ * @param {object} args - Options.
264
+ * @param {string} args.failureMessage - Last failure message.
265
+ * @param {import("./types.js").BackgroundJobRow} args.job - Job row.
266
+ * @param {number} args.nextAttempt - Next attempt count.
267
+ * @param {Record<string, any>} args.update - Database update data.
268
+ * @returns {import("./types.js").BackgroundJobRow} - Updated job row.
269
+ */
270
+ _jobWithFailureUpdate({ failureMessage, job, nextAttempt, update }: {
271
+ failureMessage: string;
272
+ job: import("./types.js").BackgroundJobRow;
273
+ nextAttempt: number;
274
+ update: Record<string, any>;
275
+ }): import("./types.js").BackgroundJobRow;
195
276
  /**
196
277
  * @param {Record<string, any>} row - Raw database row.
197
278
  * @returns {import("./types.js").BackgroundJobRow} - Normalized job row.
@@ -207,16 +288,21 @@ export default class BackgroundJobsStore {
207
288
  * @returns {boolean} - Normalized boolean.
208
289
  */
209
290
  _normalizeBoolean(value: unknown): boolean;
291
+ /**
292
+ * @param {import("./types.js").BackgroundJobOptions} [options] - Job options.
293
+ * @returns {import("./types.js").BackgroundJobExecutionMode} - Normalized execution mode.
294
+ */
295
+ _normalizeExecutionMode(options?: import("./types.js").BackgroundJobOptions): import("./types.js").BackgroundJobExecutionMode;
296
+ /**
297
+ * @param {string} executionMode - Execution mode name.
298
+ * @returns {import("./types.js").BackgroundJobExecutionMode} - Normalized execution mode.
299
+ */
300
+ _normalizeExecutionModeName(executionMode: string): import("./types.js").BackgroundJobExecutionMode;
210
301
  /**
211
302
  * @param {unknown} value - Input value.
212
303
  * @returns {any[]} - Parsed args.
213
304
  */
214
305
  _parseArgs(value: unknown): any[];
215
- /**
216
- * @param {unknown} error - Error input.
217
- * @returns {string} - Normalized error string.
218
- */
219
- _normalizeError(error: unknown): string;
220
306
  /**
221
307
  * @template T
222
308
  * @param {(db: import("../database/drivers/base.js").default) => Promise<T>} callback - Callback.
@@ -235,6 +321,26 @@ export default class BackgroundJobsStore {
235
321
  workerId: string | null | undefined;
236
322
  handedOffAtMs: number | null | undefined;
237
323
  }): boolean;
324
+ /**
325
+ * @param {object} args - Options.
326
+ * @param {import("./types.js").BackgroundJobRow} args.job - Job row.
327
+ * @param {string | null | undefined} args.workerId - Worker id from report.
328
+ * @returns {boolean} - Whether the worker report matches.
329
+ */
330
+ _workerReportMatches({ job, workerId }: {
331
+ job: import("./types.js").BackgroundJobRow;
332
+ workerId: string | null | undefined;
333
+ }): boolean;
334
+ /**
335
+ * @param {object} args - Options.
336
+ * @param {number | null | undefined} args.handedOffAtMs - Handed off timestamp from report.
337
+ * @param {import("./types.js").BackgroundJobRow} args.job - Job row.
338
+ * @returns {boolean} - Whether the handoff report matches.
339
+ */
340
+ _handoffReportMatches({ handedOffAtMs, job }: {
341
+ handedOffAtMs: number | null | undefined;
342
+ job: import("./types.js").BackgroundJobRow;
343
+ }): boolean;
238
344
  _migrationKey(): string;
239
345
  }
240
346
  import Logger from "../logger.js";
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/store.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/store.js"],"names":[],"mappings":"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"}