velocious 1.0.606 → 1.0.607

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 (64) hide show
  1. package/README.md +44 -1
  2. package/build/background-jobs/job-semantics.js +145 -0
  3. package/build/background-jobs/local-adapter.js +161 -0
  4. package/build/background-jobs/local-dispatcher.js +418 -0
  5. package/build/background-jobs/local-job-registry.js +59 -0
  6. package/build/background-jobs/local-store.js +1219 -0
  7. package/build/background-jobs/store.js +33 -97
  8. package/build/background-jobs/types.js +26 -1
  9. package/build/configuration-types.js +3 -1
  10. package/build/configuration.js +16 -1
  11. package/build/database/drivers/sqlite/index.js +46 -41
  12. package/build/environment-handlers/browser.js +10 -0
  13. package/build/src/background-jobs/job-semantics.d.ts +65 -0
  14. package/build/src/background-jobs/job-semantics.d.ts.map +1 -0
  15. package/build/src/background-jobs/job-semantics.js +125 -0
  16. package/build/src/background-jobs/local-adapter.d.ts +161 -0
  17. package/build/src/background-jobs/local-adapter.d.ts.map +1 -0
  18. package/build/src/background-jobs/local-adapter.js +141 -0
  19. package/build/src/background-jobs/local-dispatcher.d.ts +185 -0
  20. package/build/src/background-jobs/local-dispatcher.d.ts.map +1 -0
  21. package/build/src/background-jobs/local-dispatcher.js +383 -0
  22. package/build/src/background-jobs/local-job-registry.d.ts +26 -0
  23. package/build/src/background-jobs/local-job-registry.d.ts.map +1 -0
  24. package/build/src/background-jobs/local-job-registry.js +51 -0
  25. package/build/src/background-jobs/local-store.d.ts +364 -0
  26. package/build/src/background-jobs/local-store.d.ts.map +1 -0
  27. package/build/src/background-jobs/local-store.js +1078 -0
  28. package/build/src/background-jobs/store.d.ts +0 -9
  29. package/build/src/background-jobs/store.d.ts.map +1 -1
  30. package/build/src/background-jobs/store.js +18 -88
  31. package/build/src/background-jobs/types.d.ts +97 -2
  32. package/build/src/background-jobs/types.d.ts.map +1 -1
  33. package/build/src/background-jobs/types.js +27 -2
  34. package/build/src/configuration-types.d.ts +9 -2
  35. package/build/src/configuration-types.d.ts.map +1 -1
  36. package/build/src/configuration-types.js +4 -2
  37. package/build/src/configuration.d.ts +5 -0
  38. package/build/src/configuration.d.ts.map +1 -1
  39. package/build/src/configuration.js +15 -2
  40. package/build/src/database/drivers/sqlite/index.d.ts +8 -0
  41. package/build/src/database/drivers/sqlite/index.d.ts.map +1 -1
  42. package/build/src/database/drivers/sqlite/index.js +47 -41
  43. package/build/src/environment-handlers/browser.d.ts +9 -0
  44. package/build/src/environment-handlers/browser.d.ts.map +1 -1
  45. package/build/src/environment-handlers/browser.js +10 -1
  46. package/build/src/testing/test-runner.d.ts +42 -10
  47. package/build/src/testing/test-runner.d.ts.map +1 -1
  48. package/build/src/testing/test-runner.js +135 -35
  49. package/build/testing/test-runner.js +141 -33
  50. package/build/tsconfig.tsbuildinfo +1 -1
  51. package/package.json +1 -1
  52. package/scripts/test-browser.js +5 -1
  53. package/src/background-jobs/job-semantics.js +145 -0
  54. package/src/background-jobs/local-adapter.js +161 -0
  55. package/src/background-jobs/local-dispatcher.js +418 -0
  56. package/src/background-jobs/local-job-registry.js +59 -0
  57. package/src/background-jobs/local-store.js +1219 -0
  58. package/src/background-jobs/store.js +33 -97
  59. package/src/background-jobs/types.js +26 -1
  60. package/src/configuration-types.js +3 -1
  61. package/src/configuration.js +16 -1
  62. package/src/database/drivers/sqlite/index.js +46 -41
  63. package/src/environment-handlers/browser.js +10 -0
  64. package/src/testing/test-runner.js +141 -33
@@ -0,0 +1,26 @@
1
+ import VelociousJob from "./platform-job.js";
2
+ /** Static, bundler-safe local background-job registry. */
3
+ export default class LocalBackgroundJobRegistry {
4
+ jobClasses: (typeof VelociousJob)[];
5
+ /** @type {Map<string, typeof VelociousJob> | undefined} */
6
+ jobsByName: Map<string, typeof VelociousJob> | undefined;
7
+ /**
8
+ * Creates a registry from the configuration's statically imported job classes.
9
+ * @param {{jobClasses: Array<typeof VelociousJob>}} args - Registry options.
10
+ */
11
+ constructor({ jobClasses }: {
12
+ jobClasses: Array<typeof VelociousJob>;
13
+ });
14
+ /**
15
+ * Validates and indexes the configured job classes.
16
+ * @returns {void} - No return value.
17
+ */
18
+ ensureReady(): void;
19
+ /**
20
+ * Resolves a registered class.
21
+ * @param {string} jobName - Persisted job name.
22
+ * @returns {typeof VelociousJob} - Registered class.
23
+ */
24
+ resolve(jobName: string): typeof VelociousJob;
25
+ }
26
+ //# sourceMappingURL=local-job-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-job-registry.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/local-job-registry.js"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,mBAAmB,CAAA;AAE5C,0DAA0D;AAC1D,MAAM,CAAC,OAAO,OAAO,0BAA0B;IAMtC,UAAU;IACf,2DAA2D;IACtD,UAAU,EADJ,GAAG,CAAC,MAAM,EAAE,OAAO,YAAY,CAAC,GAAG,SAAS;IANzD;;;OAGG;IACH,YAAY,EAAC,UAAU,EAAC,EAFb;QAAC,UAAU,EAAE,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;KAE1B,EAIvB;IAED;;;OAGG;IACH,WAAW,IAFE,IAAI,CAwBhB;IAED;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAHJ,MAGI,GAFF,OAAO,YAAY,CAU/B;CACF"}
@@ -0,0 +1,51 @@
1
+ // @ts-check
2
+ import VelociousJob from "./platform-job.js";
3
+ /** Static, bundler-safe local background-job registry. */
4
+ export default class LocalBackgroundJobRegistry {
5
+ /**
6
+ * Creates a registry from the configuration's statically imported job classes.
7
+ * @param {{jobClasses: Array<typeof VelociousJob>}} args - Registry options.
8
+ */
9
+ constructor({ jobClasses }) {
10
+ this.jobClasses = jobClasses;
11
+ /** @type {Map<string, typeof VelociousJob> | undefined} */
12
+ this.jobsByName = undefined;
13
+ }
14
+ /**
15
+ * Validates and indexes the configured job classes.
16
+ * @returns {void} - No return value.
17
+ */
18
+ ensureReady() {
19
+ if (this.jobsByName)
20
+ return;
21
+ if (!Array.isArray(this.jobClasses))
22
+ throw new TypeError("backgroundJobs.jobClasses must be an array");
23
+ const jobsByName = new Map();
24
+ for (const JobClass of this.jobClasses) {
25
+ if (typeof JobClass !== "function" || JobClass === VelociousJob || !(JobClass.prototype instanceof VelociousJob)) {
26
+ throw new TypeError("backgroundJobs.jobClasses must contain VelociousJob subclasses");
27
+ }
28
+ const jobName = JobClass.jobName();
29
+ if (typeof jobName !== "string" || jobName.trim().length === 0) {
30
+ throw new TypeError("backgroundJobs.jobClasses must declare non-empty job names");
31
+ }
32
+ if (jobsByName.has(jobName))
33
+ throw new Error(`Duplicate local background job name: ${jobName}`);
34
+ jobsByName.set(jobName, JobClass);
35
+ }
36
+ this.jobsByName = jobsByName;
37
+ }
38
+ /**
39
+ * Resolves a registered class.
40
+ * @param {string} jobName - Persisted job name.
41
+ * @returns {typeof VelociousJob} - Registered class.
42
+ */
43
+ resolve(jobName) {
44
+ this.ensureReady();
45
+ const JobClass = this.jobsByName?.get(jobName);
46
+ if (!JobClass)
47
+ throw new Error(`Local background job is not registered in backgroundJobs.jobClasses: ${jobName}`);
48
+ return JobClass;
49
+ }
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtam9iLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tncm91bmQtam9icy9sb2NhbC1qb2ItcmVnaXN0cnkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sWUFBWSxNQUFNLG1CQUFtQixDQUFBO0FBRTVDLDBEQUEwRDtBQUMxRCxNQUFNLENBQUMsT0FBTyxPQUFPLDBCQUEwQjtJQUM3Qzs7O09BR0c7SUFDSCxZQUFZLEVBQUMsVUFBVSxFQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1FBQzVCLDJEQUEyRDtRQUMzRCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQTtJQUM3QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFNO1FBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLDRDQUE0QyxDQUFDLENBQUE7UUFFdEcsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQTtRQUU1QixLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN2QyxJQUFJLE9BQU8sUUFBUSxLQUFLLFVBQVUsSUFBSSxRQUFRLEtBQUssWUFBWSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxZQUFZLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ2pILE1BQU0sSUFBSSxTQUFTLENBQUMsZ0VBQWdFLENBQUMsQ0FBQTtZQUN2RixDQUFDO1lBRUQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFBO1lBRWxDLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQy9ELE1BQU0sSUFBSSxTQUFTLENBQUMsNERBQTRELENBQUMsQ0FBQTtZQUNuRixDQUFDO1lBQ0QsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1lBRS9GLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQ25DLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQTtJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxPQUFPO1FBQ2IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBRWxCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRTlDLElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3RUFBd0UsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUVqSCxPQUFPLFFBQVEsQ0FBQTtJQUNqQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IFZlbG9jaW91c0pvYiBmcm9tIFwiLi9wbGF0Zm9ybS1qb2IuanNcIlxuXG4vKiogU3RhdGljLCBidW5kbGVyLXNhZmUgbG9jYWwgYmFja2dyb3VuZC1qb2IgcmVnaXN0cnkuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2NhbEJhY2tncm91bmRKb2JSZWdpc3RyeSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcmVnaXN0cnkgZnJvbSB0aGUgY29uZmlndXJhdGlvbidzIHN0YXRpY2FsbHkgaW1wb3J0ZWQgam9iIGNsYXNzZXMuXG4gICAqIEBwYXJhbSB7e2pvYkNsYXNzZXM6IEFycmF5PHR5cGVvZiBWZWxvY2lvdXNKb2I+fX0gYXJncyAtIFJlZ2lzdHJ5IG9wdGlvbnMuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7am9iQ2xhc3Nlc30pIHtcbiAgICB0aGlzLmpvYkNsYXNzZXMgPSBqb2JDbGFzc2VzXG4gICAgLyoqIEB0eXBlIHtNYXA8c3RyaW5nLCB0eXBlb2YgVmVsb2Npb3VzSm9iPiB8IHVuZGVmaW5lZH0gKi9cbiAgICB0aGlzLmpvYnNCeU5hbWUgPSB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW5kIGluZGV4ZXMgdGhlIGNvbmZpZ3VyZWQgam9iIGNsYXNzZXMuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIGVuc3VyZVJlYWR5KCkge1xuICAgIGlmICh0aGlzLmpvYnNCeU5hbWUpIHJldHVyblxuICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLmpvYkNsYXNzZXMpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiYmFja2dyb3VuZEpvYnMuam9iQ2xhc3NlcyBtdXN0IGJlIGFuIGFycmF5XCIpXG5cbiAgICBjb25zdCBqb2JzQnlOYW1lID0gbmV3IE1hcCgpXG5cbiAgICBmb3IgKGNvbnN0IEpvYkNsYXNzIG9mIHRoaXMuam9iQ2xhc3Nlcykge1xuICAgICAgaWYgKHR5cGVvZiBKb2JDbGFzcyAhPT0gXCJmdW5jdGlvblwiIHx8IEpvYkNsYXNzID09PSBWZWxvY2lvdXNKb2IgfHwgIShKb2JDbGFzcy5wcm90b3R5cGUgaW5zdGFuY2VvZiBWZWxvY2lvdXNKb2IpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJiYWNrZ3JvdW5kSm9icy5qb2JDbGFzc2VzIG11c3QgY29udGFpbiBWZWxvY2lvdXNKb2Igc3ViY2xhc3Nlc1wiKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBqb2JOYW1lID0gSm9iQ2xhc3Muam9iTmFtZSgpXG5cbiAgICAgIGlmICh0eXBlb2Ygam9iTmFtZSAhPT0gXCJzdHJpbmdcIiB8fCBqb2JOYW1lLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImJhY2tncm91bmRKb2JzLmpvYkNsYXNzZXMgbXVzdCBkZWNsYXJlIG5vbi1lbXB0eSBqb2IgbmFtZXNcIilcbiAgICAgIH1cbiAgICAgIGlmIChqb2JzQnlOYW1lLmhhcyhqb2JOYW1lKSkgdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgbG9jYWwgYmFja2dyb3VuZCBqb2IgbmFtZTogJHtqb2JOYW1lfWApXG5cbiAgICAgIGpvYnNCeU5hbWUuc2V0KGpvYk5hbWUsIEpvYkNsYXNzKVxuICAgIH1cblxuICAgIHRoaXMuam9ic0J5TmFtZSA9IGpvYnNCeU5hbWVcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhIHJlZ2lzdGVyZWQgY2xhc3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBqb2JOYW1lIC0gUGVyc2lzdGVkIGpvYiBuYW1lLlxuICAgKiBAcmV0dXJucyB7dHlwZW9mIFZlbG9jaW91c0pvYn0gLSBSZWdpc3RlcmVkIGNsYXNzLlxuICAgKi9cbiAgcmVzb2x2ZShqb2JOYW1lKSB7XG4gICAgdGhpcy5lbnN1cmVSZWFkeSgpXG5cbiAgICBjb25zdCBKb2JDbGFzcyA9IHRoaXMuam9ic0J5TmFtZT8uZ2V0KGpvYk5hbWUpXG5cbiAgICBpZiAoIUpvYkNsYXNzKSB0aHJvdyBuZXcgRXJyb3IoYExvY2FsIGJhY2tncm91bmQgam9iIGlzIG5vdCByZWdpc3RlcmVkIGluIGJhY2tncm91bmRKb2JzLmpvYkNsYXNzZXM6ICR7am9iTmFtZX1gKVxuXG4gICAgcmV0dXJuIEpvYkNsYXNzXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,364 @@
1
+ import TableData from "../database/table-data/index.js";
2
+ export declare const LOCAL_BACKGROUND_JOBS_TABLE = "velocious_local_background_jobs";
3
+ export declare const LOCAL_BACKGROUND_JOB_CONCURRENCY_TABLE = "velocious_local_background_job_concurrency";
4
+ export declare const LOCAL_BACKGROUND_JOBS_INDEX_NAMES: string[];
5
+ /**
6
+ * Creates the production clock used by local dispatch.
7
+ * @returns {import("./types.js").LocalBackgroundJobsClock} - Production clock.
8
+ */
9
+ export declare function localBackgroundJobsClock(): import("./types.js").LocalBackgroundJobsClock;
10
+ /** Namespaced portable SQLite persistence for local background jobs. */
11
+ export default class LocalBackgroundJobsStore {
12
+ clock: import("./types.js").LocalBackgroundJobsClock;
13
+ configuration: import("../configuration.js").default;
14
+ databaseIdentifier: string | undefined;
15
+ onCommittedEnqueue: (() => void) | undefined;
16
+ _isReady: boolean;
17
+ /** @type {Promise<void> | null} */
18
+ _readyPromise: Promise<void> | null;
19
+ /** @type {WeakMap<import("../database/drivers/base.js").default, {completion: Promise<void>, promise: Promise<void>}>} */
20
+ _transactionReadyPromises: WeakMap<import("../database/drivers/base.js").default, {
21
+ completion: Promise<void>;
22
+ promise: Promise<void>;
23
+ }>;
24
+ /**
25
+ * Creates a store for one configuration and local database.
26
+ * @param {object} args - Store options.
27
+ * @param {import("../configuration.js").default} args.configuration - Owning configuration.
28
+ * @param {import("./types.js").LocalBackgroundJobsClock} [args.clock] - Persistence clock.
29
+ * @param {string} [args.databaseIdentifier] - Configured local database identifier.
30
+ * @param {() => void} [args.onCommittedEnqueue] - Commit-aware dispatcher wake.
31
+ */
32
+ constructor({ configuration, clock, databaseIdentifier, onCommittedEnqueue }: {
33
+ configuration: import("../configuration.js").default;
34
+ clock?: import("./types.js").LocalBackgroundJobsClock;
35
+ databaseIdentifier?: string;
36
+ onCommittedEnqueue?: () => void;
37
+ });
38
+ /**
39
+ * Resolves the configured local database identifier.
40
+ * @returns {string} - Database identifier.
41
+ */
42
+ getDatabaseIdentifier(): string;
43
+ /**
44
+ * Ensures the versioned physical schema exists.
45
+ * @returns {Promise<void>} - Resolves when ready.
46
+ */
47
+ ensureReady(): Promise<void>;
48
+ /**
49
+ * Clears the per-instance readiness latch for a deliberate adapter reopen.
50
+ * @returns {void} - No return value.
51
+ */
52
+ resetReadiness(): void;
53
+ /**
54
+ * Coordinates physical and transaction-local schema readiness.
55
+ * @param {import("../database/drivers/base.js").default} db - Local SQLite connection.
56
+ * @returns {Promise<void>} - Resolves when this caller can use the schema.
57
+ */
58
+ _ensureReadyWithDb(db: import("../database/drivers/base.js").default): Promise<void>;
59
+ /**
60
+ * Creates or repairs version-one tables and indexes.
61
+ * @param {import("../database/drivers/base.js").default} db - Local SQLite connection.
62
+ * @returns {Promise<boolean>} - Whether schema state changed.
63
+ */
64
+ _applySchema(db: import("../database/drivers/base.js").default): Promise<boolean>;
65
+ /**
66
+ * Builds the migration ledger table definition.
67
+ * @returns {TableData} - Migration ledger table.
68
+ */
69
+ _migrationsTableData(): TableData;
70
+ /**
71
+ * Builds the local jobs table definition.
72
+ * @returns {TableData} - Local jobs table definition.
73
+ */
74
+ _jobsTableData(): TableData;
75
+ /**
76
+ * Builds the local concurrency counter table definition.
77
+ * @returns {TableData} - Concurrency counter table definition.
78
+ */
79
+ _concurrencyTableData(): TableData;
80
+ /**
81
+ * Rejects an incompatible current-version table rather than rebuilding data.
82
+ * @param {import("../database/drivers/base.js").default} db - Local SQLite connection.
83
+ * @param {string} tableName - Table name.
84
+ * @param {string[]} expectedColumns - Required columns.
85
+ * @returns {Promise<void>} - Resolves when compatible.
86
+ */
87
+ _assertColumns(db: import("../database/drivers/base.js").default, tableName: string, expectedColumns: string[]): Promise<void>;
88
+ /**
89
+ * Recreates missing indexes declared by the current schema.
90
+ * @param {import("../database/drivers/base.js").default} db - Local SQLite connection.
91
+ * @returns {Promise<boolean>} - Whether an index was created.
92
+ */
93
+ _ensureIndexes(db: import("../database/drivers/base.js").default): Promise<boolean>;
94
+ /**
95
+ * Checks whether the current local schema version is recorded.
96
+ * @param {import("../database/drivers/base.js").default} db - Connection.
97
+ * @returns {Promise<boolean>} - Whether version one is recorded.
98
+ */
99
+ _hasMigration(db: import("../database/drivers/base.js").default): Promise<boolean>;
100
+ /**
101
+ * Builds the scoped migration key.
102
+ * @returns {string} - Scoped migration key.
103
+ */
104
+ _migrationKey(): string;
105
+ /**
106
+ * Enqueues a local job in the caller's active transaction when present.
107
+ * @param {object} args - Enqueue request.
108
+ * @param {string} args.jobName - Registered job name.
109
+ * @param {Array<ReturnType<typeof JSON.parse>>} args.args - Serialized job arguments.
110
+ * @param {import("./types.js").BackgroundJobOptions} [args.options] - Job options.
111
+ * @returns {Promise<string>} - Durable job id.
112
+ */
113
+ enqueue({ jobName, args, options }: {
114
+ jobName: string;
115
+ args: Array<ReturnType<typeof JSON.parse>>;
116
+ options?: import("./types.js").BackgroundJobOptions;
117
+ }): Promise<string>;
118
+ /**
119
+ * Serializes matching in-process deduplication checks through commit while
120
+ * leaving unrelated job identities independent.
121
+ * @template T
122
+ * @param {import("./types.js").PreparedLocalBackgroundJob} preparedJob - Prepared job identity.
123
+ * @param {(holdUntil: (completion: Promise<void>) => void) => Promise<T>} callback - Deduplication mutation.
124
+ * @returns {Promise<T>} - Mutation result.
125
+ */
126
+ _serializeDeduplicatedEnqueue<T>(preparedJob: import("./types.js").PreparedLocalBackgroundJob, callback: (holdUntil: (completion: Promise<void>) => void) => Promise<T>): Promise<T>;
127
+ /**
128
+ * Prepares validated local job data for insertion.
129
+ * @param {{args: Array<ReturnType<typeof JSON.parse>>, jobName: string, options: import("./types.js").BackgroundJobOptions}} args - Job request.
130
+ * @returns {import("./types.js").PreparedLocalBackgroundJob} - Prepared row data.
131
+ */
132
+ _prepareJob({ args, jobName, options }: {
133
+ args: Array<ReturnType<typeof JSON.parse>>;
134
+ jobName: string;
135
+ options: import("./types.js").BackgroundJobOptions;
136
+ }): import("./types.js").PreparedLocalBackgroundJob;
137
+ /**
138
+ * Inserts one prepared local job row and its concurrency metadata.
139
+ * @param {import("../database/drivers/base.js").default} db - Local SQLite connection.
140
+ * @param {import("./types.js").PreparedLocalBackgroundJob} preparedJob - Prepared row data.
141
+ * @returns {Promise<void>} - Resolves after insertion.
142
+ */
143
+ _insertPreparedJob(db: import("../database/drivers/base.js").default, preparedJob: import("./types.js").PreparedLocalBackgroundJob): Promise<void>;
144
+ /**
145
+ * Reconciles configured queue-derived caps and durable counters.
146
+ * @returns {Promise<void>} - Resolves after reconciliation.
147
+ */
148
+ reconcileQueueConcurrency(): Promise<void>;
149
+ /**
150
+ * Applies current queue-derived concurrency policy to one queued row.
151
+ * Explicit concurrency keys remain owned by the enqueue contract.
152
+ * @param {import("../database/drivers/base.js").default} db - Local SQLite connection.
153
+ * @param {import("./types.js").BackgroundJobRow} job - Queued job snapshot.
154
+ * @param {Record<string, {maxConcurrent?: number, priority?: number}>} queues - Current queue policy snapshot.
155
+ * @returns {Promise<import("./types.js").BackgroundJobRow>} - Reconciled snapshot.
156
+ */
157
+ _reconcileQueuedJobConcurrency(db: import("../database/drivers/base.js").default, job: import("./types.js").BackgroundJobRow, queues: Record<string, {
158
+ maxConcurrent?: number;
159
+ priority?: number;
160
+ }>): Promise<import("./types.js").BackgroundJobRow>;
161
+ /**
162
+ * Finds the next eligible local job.
163
+ * @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Next eligible local job.
164
+ */
165
+ nextAvailableJob(): Promise<import("./types.js").BackgroundJobRow | null>;
166
+ /**
167
+ * Finds the soonest future queued job.
168
+ * @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Soonest future queued job.
169
+ */
170
+ nextScheduledJob(): Promise<import("./types.js").BackgroundJobRow | null>;
171
+ /**
172
+ * Finds a persisted local job by id.
173
+ * @param {string} jobId - Job id.
174
+ * @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Persisted job.
175
+ */
176
+ getJob(jobId: string): Promise<import("./types.js").BackgroundJobRow | null>;
177
+ /**
178
+ * Lists local jobs in creation order.
179
+ * @returns {Promise<import("./types.js").BackgroundJobRow[]>} - All local jobs in creation order.
180
+ */
181
+ listJobs(): Promise<import("./types.js").BackgroundJobRow[]>;
182
+ /**
183
+ * Atomically reserves concurrency and claims one queued job.
184
+ * @param {{jobId: string, workerId?: string}} args - Claim request.
185
+ * @returns {Promise<import("./types.js").BackgroundJobHandoff | null>} - Fenced claim.
186
+ */
187
+ markHandedOff({ jobId, workerId }: {
188
+ jobId: string;
189
+ workerId?: string;
190
+ }): Promise<import("./types.js").BackgroundJobHandoff | null>;
191
+ /**
192
+ * Finds active local handoffs owned by one worker.
193
+ * @param {{workerId: string}} args - Worker identity.
194
+ * @returns {Promise<Array<{jobId: string, handoffId: string}>>} - Active worker handoffs.
195
+ */
196
+ handedOffJobsForWorker({ workerId }: {
197
+ workerId: string;
198
+ }): Promise<Array<{
199
+ jobId: string;
200
+ handoffId: string;
201
+ }>>;
202
+ /**
203
+ * Returns an exact active handoff to the queue.
204
+ * @param {{jobId: string, handoffId: string}} args - Handoff release.
205
+ * @returns {Promise<void>} - Resolves after the fenced release.
206
+ */
207
+ markReturnedToQueue({ jobId, handoffId }: {
208
+ jobId: string;
209
+ handoffId: string;
210
+ }): Promise<void>;
211
+ /**
212
+ * Applies a fenced successful acknowledgement.
213
+ * @param {{jobId: string, handoffId?: string}} args - Completion report.
214
+ * @returns {Promise<boolean>} - Whether the lease won.
215
+ */
216
+ markCompleted({ jobId, handoffId }: {
217
+ jobId: string;
218
+ handoffId?: string;
219
+ }): Promise<boolean>;
220
+ /**
221
+ * Applies a fenced reschedule without consuming an attempt.
222
+ * @param {{jobId: string, handoffId?: string, delayMs: number}} args - Reschedule report.
223
+ * @returns {Promise<boolean>} - Whether the lease won.
224
+ */
225
+ markRescheduled({ jobId, handoffId, delayMs }: {
226
+ jobId: string;
227
+ handoffId?: string;
228
+ delayMs: number;
229
+ }): Promise<boolean>;
230
+ /**
231
+ * Applies a fenced failure, retry, or terminal transition.
232
+ * @param {{jobId: string, handoffId?: string, error: ReturnType<typeof JSON.parse>}} args - Failure report.
233
+ * @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Accepted transition snapshot.
234
+ */
235
+ markFailed({ jobId, handoffId, error }: {
236
+ jobId: string;
237
+ handoffId?: string;
238
+ error: ReturnType<typeof JSON.parse>;
239
+ }): Promise<import("./types.js").BackgroundJobRow | null>;
240
+ /**
241
+ * Turns every abandoned local handoff into the normal failure/retry path.
242
+ * @returns {Promise<import("./types.js").BackgroundJobRow[]>} - Recovered transitions.
243
+ */
244
+ recoverHandedOffJobs(): Promise<import("./types.js").BackgroundJobRow[]>;
245
+ /**
246
+ * Deletes local queue state for focused tests.
247
+ * @returns {Promise<void>} - Resolves after deletion.
248
+ */
249
+ clearAll(): Promise<void>;
250
+ /**
251
+ * Applies the common retry or exhausted failure transition.
252
+ * @param {import("../database/drivers/base.js").default} db - Local SQLite connection.
253
+ * @param {import("./types.js").BackgroundJobRow} job - Active handoff.
254
+ * @param {ReturnType<typeof JSON.parse>} error - Performance error.
255
+ * @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Transition snapshot.
256
+ */
257
+ _applyFailure(db: import("../database/drivers/base.js").default, job: import("./types.js").BackgroundJobRow, error: ReturnType<typeof JSON.parse>): Promise<import("./types.js").BackgroundJobRow | null>;
258
+ /**
259
+ * Ensures that a durable concurrency counter exists with the required cap.
260
+ * @param {import("../database/drivers/base.js").default} db - Local SQLite connection.
261
+ * @param {import("./types.js").ResolvedBackgroundJobConcurrency} concurrency - Desired counter.
262
+ * @returns {Promise<void>} - Resolves when ensured.
263
+ */
264
+ _ensureConcurrency(db: import("../database/drivers/base.js").default, concurrency: import("./types.js").ResolvedBackgroundJobConcurrency): Promise<void>;
265
+ /**
266
+ * Atomically reserves one slot for a concurrency key.
267
+ * @param {import("../database/drivers/base.js").default} db - Connection.
268
+ * @param {string} concurrencyKey - Concurrency key.
269
+ * @returns {Promise<boolean>} - Whether a slot was reserved.
270
+ */
271
+ _reserveConcurrency(db: import("../database/drivers/base.js").default, concurrencyKey: string): Promise<boolean>;
272
+ /**
273
+ * Releases one slot for a concurrency key.
274
+ * @param {import("../database/drivers/base.js").default} db - Connection.
275
+ * @param {string | null} concurrencyKey - Concurrency key.
276
+ * @returns {Promise<void>} - Resolves after release.
277
+ */
278
+ _releaseConcurrency(db: import("../database/drivers/base.js").default, concurrencyKey: string | null): Promise<void>;
279
+ /**
280
+ * Acquires the transaction's write lock for a concurrency counter row.
281
+ * @param {import("../database/drivers/base.js").default} db - Connection.
282
+ * @param {string | null} concurrencyKey - Concurrency key.
283
+ * @returns {Promise<void>} - Resolves after locking.
284
+ */
285
+ _lockConcurrencyRow(db: import("../database/drivers/base.js").default, concurrencyKey: string | null): Promise<void>;
286
+ /**
287
+ * Rebuilds active counters from durable handed-off jobs.
288
+ * @param {import("../database/drivers/base.js").default} db - Connection.
289
+ * @returns {Promise<void>} - Resolves after counter rebuild.
290
+ */
291
+ _rebuildConcurrencyCounts(db: import("../database/drivers/base.js").default): Promise<void>;
292
+ /**
293
+ * Builds the configured queue-priority ordering expression.
294
+ * @param {import("../database/drivers/base.js").default} db - Connection.
295
+ * @returns {string | null} - Queue priority expression.
296
+ */
297
+ _queuePriorityOrderSql(db: import("../database/drivers/base.js").default): string | null;
298
+ /**
299
+ * Checks whether a persisted handoff owns the supplied acknowledgement fence.
300
+ * @param {import("./types.js").BackgroundJobRow | null} job - Persisted job.
301
+ * @param {string | undefined} handoffId - Handoff fence.
302
+ * @returns {job is import("./types.js").BackgroundJobRow} - Whether accepted.
303
+ */
304
+ _acceptsHandoff(job: import("./types.js").BackgroundJobRow | null, handoffId: string | undefined): job is import("./types.js").BackgroundJobRow;
305
+ /**
306
+ * Finds a persisted local job using the current connection.
307
+ * @param {import("../database/drivers/base.js").default} db - Connection.
308
+ * @param {string} jobId - Job id.
309
+ * @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Persisted row.
310
+ */
311
+ _getJob(db: import("../database/drivers/base.js").default, jobId: string): Promise<import("./types.js").BackgroundJobRow | null>;
312
+ /**
313
+ * Normalizes one raw local database row.
314
+ * @param {Record<string, ReturnType<typeof JSON.parse>>} row - Raw row.
315
+ * @returns {import("./types.js").BackgroundJobRow} - Normalized row.
316
+ */
317
+ _normalizeRow(row: Record<string, ReturnType<typeof JSON.parse>>): import("./types.js").BackgroundJobRow;
318
+ /**
319
+ * Normalizes one nullable database number.
320
+ * @param {ReturnType<typeof JSON.parse>} value - Database number.
321
+ * @returns {number | null} - Normalized number.
322
+ */
323
+ _numberOrNull(value: ReturnType<typeof JSON.parse>): number | null;
324
+ /**
325
+ * Executes a structured update and reports its affected-row count.
326
+ * @param {import("../database/drivers/base.js").default} db - Connection.
327
+ * @param {import("../database/drivers/base.js").UpdateSqlArgsType} args - Update arguments.
328
+ * @returns {Promise<number>} - Affected rows.
329
+ */
330
+ _updateAffectedRows(db: import("../database/drivers/base.js").default, args: import("../database/drivers/base.js").UpdateSqlArgsType): Promise<number>;
331
+ /**
332
+ * Joins an ambient app transaction or uses the database's scoped operation lease.
333
+ * @template T
334
+ * @param {import("../database/drivers/base.js").default} db - Connection.
335
+ * @param {(db: import("../database/drivers/base.js").default) => Promise<T>} callback - Mutation.
336
+ * @returns {Promise<T>} - Mutation result.
337
+ */
338
+ _mutate<T>(db: import("../database/drivers/base.js").default, callback: (db: import("../database/drivers/base.js").default) => Promise<T>): Promise<T>;
339
+ /**
340
+ * Runs a callback in a transaction and returns its captured result.
341
+ * @template T
342
+ * @param {import("../database/drivers/base.js").default} db - Connection.
343
+ * @param {() => Promise<T>} callback - Transaction callback.
344
+ * @returns {Promise<T>} - Callback result.
345
+ */
346
+ _transactionResult<T>(db: import("../database/drivers/base.js").default, callback: () => Promise<T>): Promise<T>;
347
+ /**
348
+ * Runs a callback with the configured local database connection.
349
+ * @template T
350
+ * @param {(db: import("../database/drivers/base.js").default) => Promise<T>} callback - Connection callback.
351
+ * @returns {Promise<T>} - Callback result.
352
+ */
353
+ _withDb<T>(callback: (db: import("../database/drivers/base.js").default) => Promise<T>): Promise<T>;
354
+ /**
355
+ * Reports an unexpected local-store failure through framework channels.
356
+ * @param {{error: Error, stage: string}} args - Error report.
357
+ * @returns {void} - No return value.
358
+ */
359
+ _reportFrameworkError({ error, stage }: {
360
+ error: Error;
361
+ stage: string;
362
+ }): void;
363
+ }
364
+ //# sourceMappingURL=local-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-store.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/local-store.js"],"names":[],"mappings":"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"}