velocious 1.0.516 → 1.0.518
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 +2 -0
- package/build/background-jobs/job.js +27 -2
- package/build/background-jobs/store.js +356 -39
- package/build/background-jobs/types.js +6 -0
- package/build/configuration-types.js +12 -1
- package/build/configuration.js +2 -1
- package/build/database/drivers/base.js +26 -0
- package/build/database/drivers/mssql/index.js +13 -0
- package/build/database/drivers/mysql/index.js +18 -0
- package/build/database/drivers/pgsql/index.js +12 -0
- package/build/database/drivers/sqlite/connection-sql-js.js +11 -0
- package/build/database/drivers/sqlite/index.js +14 -4
- package/build/database/drivers/sqlite/index.native.js +13 -0
- package/build/database/drivers/sqlite/index.web.js +11 -1
- package/build/database/drivers/sqlite/query.js +1 -2
- package/build/http-server/client/request-buffer/index.js +151 -89
- package/build/src/background-jobs/job.d.ts +15 -0
- package/build/src/background-jobs/job.d.ts.map +1 -1
- package/build/src/background-jobs/job.js +24 -3
- package/build/src/background-jobs/store.d.ts +111 -9
- package/build/src/background-jobs/store.d.ts.map +1 -1
- package/build/src/background-jobs/store.js +339 -40
- package/build/src/background-jobs/types.d.ts +30 -0
- package/build/src/background-jobs/types.d.ts.map +1 -1
- package/build/src/background-jobs/types.js +7 -1
- package/build/src/configuration-types.d.ts +29 -2
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +13 -2
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +3 -2
- package/build/src/database/drivers/base.d.ts +13 -0
- package/build/src/database/drivers/base.d.ts.map +1 -1
- package/build/src/database/drivers/base.js +25 -1
- package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/index.js +13 -1
- package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/index.js +21 -1
- package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
- package/build/src/database/drivers/pgsql/index.js +14 -1
- package/build/src/database/drivers/sqlite/connection-sql-js.d.ts +6 -0
- package/build/src/database/drivers/sqlite/connection-sql-js.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/connection-sql-js.js +11 -1
- package/build/src/database/drivers/sqlite/index.d.ts +2 -2
- package/build/src/database/drivers/sqlite/index.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.js +15 -5
- package/build/src/database/drivers/sqlite/index.native.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.native.js +14 -1
- package/build/src/database/drivers/sqlite/index.web.d.ts +2 -1
- package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.web.js +11 -2
- package/build/src/database/drivers/sqlite/query.d.ts +2 -2
- package/build/src/database/drivers/sqlite/query.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/query.js +2 -3
- package/build/src/http-server/client/request-buffer/index.d.ts +23 -2
- package/build/src/http-server/client/request-buffer/index.d.ts.map +1 -1
- package/build/src/http-server/client/request-buffer/index.js +141 -86
- package/package.json +2 -2
- package/src/background-jobs/job.js +27 -2
- package/src/background-jobs/store.js +356 -39
- package/src/background-jobs/types.js +6 -0
- package/src/configuration-types.js +12 -1
- package/src/configuration.js +2 -1
- package/src/database/drivers/base.js +26 -0
- package/src/database/drivers/mssql/index.js +13 -0
- package/src/database/drivers/mysql/index.js +18 -0
- package/src/database/drivers/pgsql/index.js +12 -0
- package/src/database/drivers/sqlite/connection-sql-js.js +11 -0
- package/src/database/drivers/sqlite/index.js +14 -4
- package/src/database/drivers/sqlite/index.native.js +13 -0
- package/src/database/drivers/sqlite/index.web.js +11 -1
- package/src/database/drivers/sqlite/query.js +1 -2
- package/src/http-server/client/request-buffer/index.js +151 -89
|
@@ -11,6 +11,14 @@ import BackgroundJobsClient from "./client.js";
|
|
|
11
11
|
* @template {Array<?>} [TArgs=[]]
|
|
12
12
|
*/
|
|
13
13
|
export default class VelociousJob {
|
|
14
|
+
/**
|
|
15
|
+
* Queue this job class runs on. Subclasses set e.g. `static queue = "builds"`
|
|
16
|
+
* to route onto a queue with its own cluster-wide concurrency cap (configured
|
|
17
|
+
* via `backgroundJobs.queues`). The `{queue}` enqueue option overrides it.
|
|
18
|
+
* Left undefined, jobs run on the `"default"` queue.
|
|
19
|
+
* @type {string | undefined}
|
|
20
|
+
*/
|
|
21
|
+
static queue = undefined;
|
|
14
22
|
/**
|
|
15
23
|
* Runs job name.
|
|
16
24
|
* @returns {string} - Job name.
|
|
@@ -18,6 +26,19 @@ export default class VelociousJob {
|
|
|
18
26
|
static jobName() {
|
|
19
27
|
return this.name;
|
|
20
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Folds this job class's static `queue` into the enqueue options unless the
|
|
31
|
+
* caller already specified one.
|
|
32
|
+
* @param {import("./types.js").BackgroundJobOptions | undefined} options - Job options.
|
|
33
|
+
* @returns {import("./types.js").BackgroundJobOptions} - Options including the resolved queue.
|
|
34
|
+
*/
|
|
35
|
+
static _withQueue(options) {
|
|
36
|
+
const merged = options ? { ...options } : {};
|
|
37
|
+
if (merged.queue === undefined && typeof this.queue === "string" && this.queue.length > 0) {
|
|
38
|
+
merged.queue = this.queue;
|
|
39
|
+
}
|
|
40
|
+
return merged;
|
|
41
|
+
}
|
|
21
42
|
/**
|
|
22
43
|
* Runs perform later.
|
|
23
44
|
* @param {...?} args - Job args.
|
|
@@ -29,7 +50,7 @@ export default class VelociousJob {
|
|
|
29
50
|
return await client.enqueue({
|
|
30
51
|
jobName: this.jobName(),
|
|
31
52
|
args: jobArgs,
|
|
32
|
-
options: jobOptions
|
|
53
|
+
options: this._withQueue(jobOptions)
|
|
33
54
|
});
|
|
34
55
|
}
|
|
35
56
|
/**
|
|
@@ -44,7 +65,7 @@ export default class VelociousJob {
|
|
|
44
65
|
return await client.enqueue({
|
|
45
66
|
jobName: this.jobName(),
|
|
46
67
|
args,
|
|
47
|
-
options
|
|
68
|
+
options: this._withQueue(options)
|
|
48
69
|
});
|
|
49
70
|
}
|
|
50
71
|
/**
|
|
@@ -73,4 +94,4 @@ export default class VelociousJob {
|
|
|
73
94
|
throw new Error("perform not implemented");
|
|
74
95
|
}
|
|
75
96
|
}
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tncm91bmQtam9icy9qb2IuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sb0JBQW9CLE1BQU0sYUFBYSxDQUFBO0FBRTlDOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8sWUFBWTtJQUMvQjs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQTtJQUV4Qjs7O09BR0c7SUFDSCxNQUFNLENBQUMsT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQTtJQUNsQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU87UUFDdkIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUUxQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUYsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBQzNCLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJO1FBQy9CLE1BQU0sRUFBQyxPQUFPLEVBQUUsVUFBVSxFQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzdELE1BQU0sTUFBTSxHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQTtRQUV6QyxPQUFPLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUMxQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUN2QixJQUFJLEVBQUUsT0FBTztZQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztTQUNyQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUM7UUFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFBO1FBRXpDLE9BQU8sTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQzFCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLElBQUk7WUFDSixPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7U0FDbEMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBSTtRQUM5QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEIsT0FBTyxFQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBQyxDQUFBO1FBQ3RDLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUNyQyxNQUFNLFlBQVksR0FBRyxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxZQUFZLElBQUksT0FBTyxDQUFBO1FBRWpILElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsTUFBTSxFQUFDLFVBQVUsRUFBQyxHQUFHLHNFQUFzRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDckcsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxVQUFVLElBQUksRUFBRSxFQUFDLENBQUE7UUFDbkUsQ0FBQztRQUVELE9BQU8sRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUMsQ0FBQTtJQUN4QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLO1FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQTtJQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBCYWNrZ3JvdW5kSm9ic0NsaWVudCBmcm9tIFwiLi9jbGllbnQuanNcIlxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGJhY2tncm91bmQgam9icy5cbiAqXG4gKiBgVEFyZ3NgIGlzIHRoZSB0dXBsZSBvZiBhcmd1bWVudHMgdGhlIHN1YmNsYXNzJ3MgYHBlcmZvcm1gIGFjY2VwdHMsIHNvIGEgam9iIHRoYXRcbiAqIG5lZWRzIGFyZ3VtZW50cyBkZWNsYXJlcyB0aGVtIGFzIHJlcXVpcmVkIGFuZCB0eXBlZCDigJQgZm9yIGV4YW1wbGVcbiAqIGBjbGFzcyBSdW5CdWlsZEpvYiBleHRlbmRzIFZlbG9jaW91c0pvYjxbc3RyaW5nXT5gIHdpdGggYGFzeW5jIHBlcmZvcm0oYnVpbGRJZClgLlxuICogVGhlIGRlZmF1bHQgZW1wdHkgdHVwbGUga2VlcHMgYXJndW1lbnQtbGVzcyBqb2JzIChgZXh0ZW5kcyBWZWxvY2lvdXNKb2JgLFxuICogYGFzeW5jIHBlcmZvcm0oKWApIHdvcmtpbmcgdW5jaGFuZ2VkLlxuICogQHRlbXBsYXRlIHtBcnJheTw/Pn0gW1RBcmdzPVtdXVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNKb2Ige1xuICAvKipcbiAgICogUXVldWUgdGhpcyBqb2IgY2xhc3MgcnVucyBvbi4gU3ViY2xhc3NlcyBzZXQgZS5nLiBgc3RhdGljIHF1ZXVlID0gXCJidWlsZHNcImBcbiAgICogdG8gcm91dGUgb250byBhIHF1ZXVlIHdpdGggaXRzIG93biBjbHVzdGVyLXdpZGUgY29uY3VycmVuY3kgY2FwIChjb25maWd1cmVkXG4gICAqIHZpYSBgYmFja2dyb3VuZEpvYnMucXVldWVzYCkuIFRoZSBge3F1ZXVlfWAgZW5xdWV1ZSBvcHRpb24gb3ZlcnJpZGVzIGl0LlxuICAgKiBMZWZ0IHVuZGVmaW5lZCwgam9icyBydW4gb24gdGhlIGBcImRlZmF1bHRcImAgcXVldWUuXG4gICAqIEB0eXBlIHtzdHJpbmcgfCB1bmRlZmluZWR9XG4gICAqL1xuICBzdGF0aWMgcXVldWUgPSB1bmRlZmluZWRcblxuICAvKipcbiAgICogUnVucyBqb2IgbmFtZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBKb2IgbmFtZS5cbiAgICovXG4gIHN0YXRpYyBqb2JOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWVcbiAgfVxuXG4gIC8qKlxuICAgKiBGb2xkcyB0aGlzIGpvYiBjbGFzcydzIHN0YXRpYyBgcXVldWVgIGludG8gdGhlIGVucXVldWUgb3B0aW9ucyB1bmxlc3MgdGhlXG4gICAqIGNhbGxlciBhbHJlYWR5IHNwZWNpZmllZCBvbmUuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iT3B0aW9ucyB8IHVuZGVmaW5lZH0gb3B0aW9ucyAtIEpvYiBvcHRpb25zLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iT3B0aW9uc30gLSBPcHRpb25zIGluY2x1ZGluZyB0aGUgcmVzb2x2ZWQgcXVldWUuXG4gICAqL1xuICBzdGF0aWMgX3dpdGhRdWV1ZShvcHRpb25zKSB7XG4gICAgY29uc3QgbWVyZ2VkID0gb3B0aW9ucyA/IHsuLi5vcHRpb25zfSA6IHt9XG5cbiAgICBpZiAobWVyZ2VkLnF1ZXVlID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIHRoaXMucXVldWUgPT09IFwic3RyaW5nXCIgJiYgdGhpcy5xdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBtZXJnZWQucXVldWUgPSB0aGlzLnF1ZXVlXG4gICAgfVxuXG4gICAgcmV0dXJuIG1lcmdlZFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcGVyZm9ybSBsYXRlci5cbiAgICogQHBhcmFtIHsuLi4/fSBhcmdzIC0gSm9iIGFyZ3MuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IC0gSm9iIGlkLlxuICAgKi9cbiAgc3RhdGljIGFzeW5jIHBlcmZvcm1MYXRlciguLi5hcmdzKSB7XG4gICAgY29uc3Qge2pvYkFyZ3MsIGpvYk9wdGlvbnN9ID0gdGhpcy5fc3BsaXRBcmdzQW5kT3B0aW9ucyhhcmdzKVxuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBCYWNrZ3JvdW5kSm9ic0NsaWVudCgpXG5cbiAgICByZXR1cm4gYXdhaXQgY2xpZW50LmVucXVldWUoe1xuICAgICAgam9iTmFtZTogdGhpcy5qb2JOYW1lKCksXG4gICAgICBhcmdzOiBqb2JBcmdzLFxuICAgICAgb3B0aW9uczogdGhpcy5fd2l0aFF1ZXVlKGpvYk9wdGlvbnMpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHBlcmZvcm0gbGF0ZXIgd2l0aCBvcHRpb25zLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7QXJyYXk8Pz59IGFyZ3MuYXJncyAtIEpvYiBhcmdzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYk9wdGlvbnN9IFthcmdzLm9wdGlvbnNdIC0gSm9iIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IC0gSm9iIGlkLlxuICAgKi9cbiAgc3RhdGljIGFzeW5jIHBlcmZvcm1MYXRlcldpdGhPcHRpb25zKHthcmdzLCBvcHRpb25zfSkge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBCYWNrZ3JvdW5kSm9ic0NsaWVudCgpXG5cbiAgICByZXR1cm4gYXdhaXQgY2xpZW50LmVucXVldWUoe1xuICAgICAgam9iTmFtZTogdGhpcy5qb2JOYW1lKCksXG4gICAgICBhcmdzLFxuICAgICAgb3B0aW9uczogdGhpcy5fd2l0aFF1ZXVlKG9wdGlvbnMpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNwbGl0IGFyZ3MgYW5kIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7QXJyYXk8Pz59IGFyZ3MgLSBKb2IgYXJncy5cbiAgICogQHJldHVybnMge3tqb2JBcmdzOiBBcnJheTw/Piwgam9iT3B0aW9uczogaW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iT3B0aW9uc319IC0gU3BsaXQgYXJncyBhbmQgb3B0aW9ucy5cbiAgICovXG4gIHN0YXRpYyBfc3BsaXRBcmdzQW5kT3B0aW9ucyhhcmdzKSB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4ge2pvYkFyZ3M6IFtdLCBqb2JPcHRpb25zOiB7fX1cbiAgICB9XG5cbiAgICBjb25zdCBsYXN0QXJnID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdXG4gICAgY29uc3QgaXNPcHRpb25zQXJnID0gbGFzdEFyZyAmJiB0eXBlb2YgbGFzdEFyZyA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheShsYXN0QXJnKSAmJiBcImpvYk9wdGlvbnNcIiBpbiBsYXN0QXJnXG5cbiAgICBpZiAoaXNPcHRpb25zQXJnKSB7XG4gICAgICBjb25zdCB7am9iT3B0aW9uc30gPSAvKiogQHR5cGUge3tqb2JPcHRpb25zOiBpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JPcHRpb25zfX0gKi8gKGxhc3RBcmcpXG4gICAgICByZXR1cm4ge2pvYkFyZ3M6IGFyZ3Muc2xpY2UoMCwgLTEpLCBqb2JPcHRpb25zOiBqb2JPcHRpb25zIHx8IHt9fVxuICAgIH1cblxuICAgIHJldHVybiB7am9iQXJnczogYXJncywgam9iT3B0aW9uczoge319XG4gIH1cblxuICAvKipcbiAgICogT3ZlcnJpZGUgaW4gc3ViY2xhc3Nlcy5cbiAgICogQHBhcmFtIHtUQXJnc30gX2FyZ3MgLSBKb2IgYXJncyAodGhlIHR1cGxlIHRoaXMgam9iIGNsYXNzIHdhcyBwYXJhbWV0ZXJpemVkIHdpdGgpLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgcGVyZm9ybSguLi5fYXJncykge1xuICAgIHRocm93IG5ldyBFcnJvcihcInBlcmZvcm0gbm90IGltcGxlbWVudGVkXCIpXG4gIH1cbn1cbiJdfQ==
|
|
@@ -180,6 +180,12 @@ export default class BackgroundJobsStore {
|
|
|
180
180
|
* @returns {Promise<void>} - Resolves when cleared.
|
|
181
181
|
*/
|
|
182
182
|
clearAll(): Promise<void>;
|
|
183
|
+
/**
|
|
184
|
+
* Cancels a queued or handed-off job and releases any durable concurrency reservation.
|
|
185
|
+
* @param {string} jobId - Job id.
|
|
186
|
+
* @returns {Promise<boolean>} - Whether the job was cancelled.
|
|
187
|
+
*/
|
|
188
|
+
cancel(jobId: string): Promise<boolean>;
|
|
183
189
|
/**
|
|
184
190
|
* Runs get retry delay ms.
|
|
185
191
|
* @param {number} retryCount - Retry attempt count (1-based).
|
|
@@ -218,6 +224,14 @@ export default class BackgroundJobsStore {
|
|
|
218
224
|
* @returns {Promise<void>} - Resolves when complete.
|
|
219
225
|
*/
|
|
220
226
|
_ensureJobsTableColumns(db: import("../database/drivers/base.js").default): Promise<void>;
|
|
227
|
+
/**
|
|
228
|
+
* Idempotently adds the `queue` column to an existing jobs table. Existing
|
|
229
|
+
* rows read back as the default queue (see {@link _normalizeJobRow}), so no
|
|
230
|
+
* data backfill is required.
|
|
231
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
232
|
+
* @returns {Promise<void>} - Resolves when ensured.
|
|
233
|
+
*/
|
|
234
|
+
_ensureQueueColumn(db: import("../database/drivers/base.js").default): Promise<void>;
|
|
221
235
|
/**
|
|
222
236
|
* Runs backfill execution modes once.
|
|
223
237
|
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
@@ -309,6 +323,99 @@ export default class BackgroundJobsStore {
|
|
|
309
323
|
* @returns {import("./types.js").BackgroundJobRow} - Normalized job row.
|
|
310
324
|
*/
|
|
311
325
|
_normalizeJobRow(row: Record<string, unknown>): import("./types.js").BackgroundJobRow;
|
|
326
|
+
/**
|
|
327
|
+
* Validates concurrency options.
|
|
328
|
+
* @param {import("./types.js").BackgroundJobOptions | undefined} options - Job options.
|
|
329
|
+
* @returns {{concurrencyKey: string, maxConcurrency: number} | null} - Normalized configuration.
|
|
330
|
+
*/
|
|
331
|
+
_normalizeConcurrencyOptions(options: import("./types.js").BackgroundJobOptions | undefined): {
|
|
332
|
+
concurrencyKey: string;
|
|
333
|
+
maxConcurrency: number;
|
|
334
|
+
} | null;
|
|
335
|
+
/**
|
|
336
|
+
* Normalizes a job's queue name, defaulting to "default".
|
|
337
|
+
* @param {import("./types.js").BackgroundJobOptions | undefined} options - Job options.
|
|
338
|
+
* @returns {string} - Queue name.
|
|
339
|
+
*/
|
|
340
|
+
_normalizeQueue(options: import("./types.js").BackgroundJobOptions | undefined): string;
|
|
341
|
+
/**
|
|
342
|
+
* Resolves a job's durable concurrency. An explicit concurrencyKey/maxConcurrency
|
|
343
|
+
* pair always wins. Otherwise, when the job's queue has a configured cap
|
|
344
|
+
* (`backgroundJobs.queues[queue].maxConcurrent`), derive a queue-scoped
|
|
345
|
+
* concurrency key so the queue cap is enforced cluster-wide through the
|
|
346
|
+
* existing durable concurrency mechanism.
|
|
347
|
+
* @param {import("./types.js").BackgroundJobOptions | undefined} options - Job options.
|
|
348
|
+
* @param {string} queue - Normalized queue name.
|
|
349
|
+
* @returns {{concurrencyKey: string, maxConcurrency: number, queueDerived: boolean} | null} - Resolved concurrency.
|
|
350
|
+
*/
|
|
351
|
+
_resolveConcurrency(options: import("./types.js").BackgroundJobOptions | undefined, queue: string): {
|
|
352
|
+
concurrencyKey: string;
|
|
353
|
+
maxConcurrency: number;
|
|
354
|
+
queueDerived: boolean;
|
|
355
|
+
} | null;
|
|
356
|
+
/**
|
|
357
|
+
* Reads the configured max concurrency for a queue from the background-jobs config.
|
|
358
|
+
* @param {string} queue - Queue name.
|
|
359
|
+
* @returns {number | null} - Positive integer cap, or null when the queue has no configured cap.
|
|
360
|
+
*/
|
|
361
|
+
_queueMaxConcurrency(queue: string): number | null;
|
|
362
|
+
/**
|
|
363
|
+
* Like {@link _ensureConcurrencyKey}, but for queue-derived keys the configured
|
|
364
|
+
* queue cap is the source of truth: if it changed, update the stored cap
|
|
365
|
+
* instead of throwing on conflict (config-driven caps must be tunable).
|
|
366
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
367
|
+
* @param {{concurrencyKey: string, maxConcurrency: number}} concurrency - Concurrency configuration.
|
|
368
|
+
* @returns {Promise<void>} - Resolves when ensured.
|
|
369
|
+
*/
|
|
370
|
+
_ensureQueueConcurrencyKey(db: import("../database/drivers/base.js").default, { concurrencyKey, maxConcurrency }: {
|
|
371
|
+
concurrencyKey: string;
|
|
372
|
+
maxConcurrency: number;
|
|
373
|
+
}): Promise<void>;
|
|
374
|
+
/**
|
|
375
|
+
* Ensures the concurrency state table exists.
|
|
376
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
377
|
+
* @returns {Promise<void>} - Resolves when ready.
|
|
378
|
+
*/
|
|
379
|
+
_ensureConcurrencyTable(db: import("../database/drivers/base.js").default): Promise<void>;
|
|
380
|
+
/**
|
|
381
|
+
* Registers or verifies a stable key configuration.
|
|
382
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
383
|
+
* @param {object} concurrency - Concurrency configuration.
|
|
384
|
+
* @param {string} concurrency.concurrencyKey - Concurrency key.
|
|
385
|
+
* @param {number} concurrency.maxConcurrency - Stable cap.
|
|
386
|
+
* @returns {Promise<void>} - Resolves when verified.
|
|
387
|
+
*/
|
|
388
|
+
_ensureConcurrencyKey(db: import("../database/drivers/base.js").default, { concurrencyKey, maxConcurrency }: {
|
|
389
|
+
concurrencyKey: string;
|
|
390
|
+
maxConcurrency: number;
|
|
391
|
+
}): Promise<void>;
|
|
392
|
+
/**
|
|
393
|
+
* Atomically reserves capacity for a key.
|
|
394
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
395
|
+
* @param {string} concurrencyKey - Concurrency key.
|
|
396
|
+
* @returns {Promise<boolean>} - Whether capacity was reserved.
|
|
397
|
+
*/
|
|
398
|
+
_reserveConcurrency(db: import("../database/drivers/base.js").default, concurrencyKey: string): Promise<boolean>;
|
|
399
|
+
/**
|
|
400
|
+
* Runs a portable update and returns its affected-row count.
|
|
401
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
402
|
+
* @param {import("../database/drivers/base.js").UpdateSqlArgsType} args - Update options.
|
|
403
|
+
* @returns {Promise<number>} - Affected row count.
|
|
404
|
+
*/
|
|
405
|
+
_updateAffectedRows(db: import("../database/drivers/base.js").default, args: import("../database/drivers/base.js").UpdateSqlArgsType): Promise<number>;
|
|
406
|
+
/**
|
|
407
|
+
* Releases capacity for a key.
|
|
408
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
409
|
+
* @param {string | null} concurrencyKey - Concurrency key.
|
|
410
|
+
* @returns {Promise<void>} - Resolves when released.
|
|
411
|
+
*/
|
|
412
|
+
_releaseConcurrency(db: import("../database/drivers/base.js").default, concurrencyKey: string | null): Promise<void>;
|
|
413
|
+
/**
|
|
414
|
+
* Rebuilds durable counts from active handoffs after startup.
|
|
415
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
416
|
+
* @returns {Promise<void>} - Resolves when reconciled.
|
|
417
|
+
*/
|
|
418
|
+
_reconcileConcurrency(db: import("../database/drivers/base.js").default): Promise<void>;
|
|
312
419
|
/**
|
|
313
420
|
* Runs normalize number.
|
|
314
421
|
* @param {?} value - Input value.
|
|
@@ -347,18 +454,13 @@ export default class BackgroundJobsStore {
|
|
|
347
454
|
*/
|
|
348
455
|
_withDb<T>(callback: (db: import("../database/drivers/base.js").default) => Promise<T>): Promise<T>;
|
|
349
456
|
/**
|
|
350
|
-
*
|
|
457
|
+
* Runs a value-returning callback inside the driver's void-typed transaction API.
|
|
351
458
|
* @template T
|
|
352
|
-
* @param {
|
|
353
|
-
* @param {
|
|
354
|
-
* @param {string} args.jobId - Job id.
|
|
355
|
-
* @param {() => Promise<T>} callback - Locked callback.
|
|
459
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
460
|
+
* @param {() => Promise<T>} callback - Transaction callback.
|
|
356
461
|
* @returns {Promise<T>} - Callback result.
|
|
357
462
|
*/
|
|
358
|
-
|
|
359
|
-
db: import("../database/drivers/base.js").default;
|
|
360
|
-
jobId: string;
|
|
361
|
-
}, callback: () => Promise<T>): Promise<T>;
|
|
463
|
+
_transactionResult<T>(db: import("../database/drivers/base.js").default, callback: () => Promise<T>): Promise<T>;
|
|
362
464
|
/**
|
|
363
465
|
* Runs should accept report.
|
|
364
466
|
* @param {object} args - Options.
|
|
@@ -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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"}
|