velocious 1.0.598 → 1.0.600

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 (90) hide show
  1. package/README.md +12 -1
  2. package/build/background-jobs/adapter-client.js +45 -0
  3. package/build/background-jobs/adapter.js +139 -0
  4. package/build/background-jobs/job-registry.js +1 -1
  5. package/build/background-jobs/job.js +20 -129
  6. package/build/background-jobs/main.js +71 -28
  7. package/build/background-jobs/perform-job.js +23 -0
  8. package/build/background-jobs/platform-job.js +156 -0
  9. package/build/background-jobs/runtime.js +156 -0
  10. package/build/background-jobs/sql-adapter.js +20 -0
  11. package/build/background-jobs/store.js +3 -1
  12. package/build/background-jobs/types.js +10 -0
  13. package/build/background-jobs/web/controller.js +5 -2
  14. package/build/background-jobs/worker.js +6 -8
  15. package/build/configuration-types.js +5 -0
  16. package/build/configuration.js +217 -40
  17. package/build/environment-handlers/base.js +20 -0
  18. package/build/environment-handlers/node.js +27 -20
  19. package/build/jobs/prune-terminal-background-jobs.js +2 -3
  20. package/build/src/background-jobs/adapter-client.d.ts +41 -0
  21. package/build/src/background-jobs/adapter-client.d.ts.map +1 -0
  22. package/build/src/background-jobs/adapter-client.js +39 -0
  23. package/build/src/background-jobs/adapter.d.ts +165 -0
  24. package/build/src/background-jobs/adapter.d.ts.map +1 -0
  25. package/build/src/background-jobs/adapter.js +121 -0
  26. package/build/src/background-jobs/job-registry.d.ts +1 -1
  27. package/build/src/background-jobs/job-registry.d.ts.map +1 -1
  28. package/build/src/background-jobs/job-registry.js +2 -2
  29. package/build/src/background-jobs/job.d.ts +6 -69
  30. package/build/src/background-jobs/job.d.ts.map +1 -1
  31. package/build/src/background-jobs/job.js +17 -116
  32. package/build/src/background-jobs/main.d.ts +13 -3
  33. package/build/src/background-jobs/main.d.ts.map +1 -1
  34. package/build/src/background-jobs/main.js +66 -30
  35. package/build/src/background-jobs/perform-job.d.ts +16 -0
  36. package/build/src/background-jobs/perform-job.d.ts.map +1 -0
  37. package/build/src/background-jobs/perform-job.js +22 -0
  38. package/build/src/background-jobs/platform-job.d.ts +110 -0
  39. package/build/src/background-jobs/platform-job.d.ts.map +1 -0
  40. package/build/src/background-jobs/platform-job.js +138 -0
  41. package/build/src/background-jobs/runtime.d.ts +78 -0
  42. package/build/src/background-jobs/runtime.d.ts.map +1 -0
  43. package/build/src/background-jobs/runtime.js +132 -0
  44. package/build/src/background-jobs/sql-adapter.d.ts +13 -0
  45. package/build/src/background-jobs/sql-adapter.d.ts.map +1 -0
  46. package/build/src/background-jobs/sql-adapter.js +18 -0
  47. package/build/src/background-jobs/store.d.ts +2 -1
  48. package/build/src/background-jobs/store.d.ts.map +1 -1
  49. package/build/src/background-jobs/store.js +4 -2
  50. package/build/src/background-jobs/types.d.ts +41 -0
  51. package/build/src/background-jobs/types.d.ts.map +1 -1
  52. package/build/src/background-jobs/types.js +11 -1
  53. package/build/src/background-jobs/web/controller.d.ts.map +1 -1
  54. package/build/src/background-jobs/web/controller.js +5 -3
  55. package/build/src/background-jobs/worker.d.ts.map +1 -1
  56. package/build/src/background-jobs/worker.js +7 -8
  57. package/build/src/configuration-types.d.ts +16 -0
  58. package/build/src/configuration-types.d.ts.map +1 -1
  59. package/build/src/configuration-types.js +5 -1
  60. package/build/src/configuration.d.ts +51 -2
  61. package/build/src/configuration.d.ts.map +1 -1
  62. package/build/src/configuration.js +202 -39
  63. package/build/src/environment-handlers/base.d.ts +17 -0
  64. package/build/src/environment-handlers/base.d.ts.map +1 -1
  65. package/build/src/environment-handlers/base.js +19 -1
  66. package/build/src/environment-handlers/node.d.ts +18 -0
  67. package/build/src/environment-handlers/node.d.ts.map +1 -1
  68. package/build/src/environment-handlers/node.js +25 -20
  69. package/build/src/jobs/prune-terminal-background-jobs.d.ts.map +1 -1
  70. package/build/src/jobs/prune-terminal-background-jobs.js +3 -4
  71. package/build/tsconfig.tsbuildinfo +1 -1
  72. package/package.json +1 -1
  73. package/src/background-jobs/adapter-client.js +45 -0
  74. package/src/background-jobs/adapter.js +139 -0
  75. package/src/background-jobs/job-registry.js +1 -1
  76. package/src/background-jobs/job.js +20 -129
  77. package/src/background-jobs/main.js +71 -28
  78. package/src/background-jobs/perform-job.js +23 -0
  79. package/src/background-jobs/platform-job.js +156 -0
  80. package/src/background-jobs/runtime.js +156 -0
  81. package/src/background-jobs/sql-adapter.js +20 -0
  82. package/src/background-jobs/store.js +3 -1
  83. package/src/background-jobs/types.js +10 -0
  84. package/src/background-jobs/web/controller.js +5 -2
  85. package/src/background-jobs/worker.js +6 -8
  86. package/src/configuration-types.js +5 -0
  87. package/src/configuration.js +217 -40
  88. package/src/environment-handlers/base.js +20 -0
  89. package/src/environment-handlers/node.js +27 -20
  90. package/src/jobs/prune-terminal-background-jobs.js +2 -3
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Platform-neutral persistence and lifecycle contract used by the background-jobs
3
+ * runtime. Adapters own durable queue state; transport and job execution remain
4
+ * separate concerns.
5
+ */
6
+ export default class BackgroundJobsAdapter {
7
+ /**
8
+ * Ensures the adapter can accept work.
9
+ * @returns {Promise<void>} - Resolves when ready.
10
+ */
11
+ ensureReady(): Promise<void>;
12
+ /**
13
+ * Closes adapter-owned resources.
14
+ * @returns {Promise<void>} - Resolves after close.
15
+ */
16
+ close(): Promise<void>;
17
+ /**
18
+ * Reports adapter health.
19
+ * @returns {Promise<import("./types.js").BackgroundJobsHealth>} - Adapter health.
20
+ */
21
+ health(): Promise<import("./types.js").BackgroundJobsHealth>;
22
+ /**
23
+ * Ensures framework-owned persistence during a migration lifecycle. Non-SQL
24
+ * adapters may leave this as a no-op.
25
+ * @param {{dbs: Record<string, import("../database/drivers/base.js").default>}} _args - Migrated databases.
26
+ * @returns {Promise<void>} - Resolves when complete.
27
+ */
28
+ ensureFrameworkSchema(_args: {
29
+ dbs: Record<string, import("../database/drivers/base.js").default>;
30
+ }): Promise<void>;
31
+ /**
32
+ * Reconciles configured queue limits.
33
+ * @returns {Promise<void>} - Resolves after reconciliation.
34
+ */
35
+ reconcileQueueConcurrency(): Promise<void>;
36
+ /**
37
+ * Enqueues a job.
38
+ * @param {{jobName: string, args: Array<ReturnType<typeof JSON.parse>>, options?: import("./types.js").BackgroundJobOptions}} _args - Job request.
39
+ * @returns {Promise<string>} - Job id.
40
+ */
41
+ enqueue(_args: {
42
+ jobName: string;
43
+ args: Array<ReturnType<typeof JSON.parse>>;
44
+ options?: import("./types.js").BackgroundJobOptions;
45
+ }): Promise<string>;
46
+ /**
47
+ * Replaces the owner of a stable schedule key.
48
+ * @param {{scheduleKey: string, jobName: string, args: Array<ReturnType<typeof JSON.parse>>, options?: import("./types.js").BackgroundJobOptions}} _args - Replacement request.
49
+ * @returns {Promise<import("./types.js").BackgroundJobReplacementResult>} - Replacement result.
50
+ */
51
+ replaceScheduled(_args: {
52
+ scheduleKey: string;
53
+ jobName: string;
54
+ args: Array<ReturnType<typeof JSON.parse>>;
55
+ options?: import("./types.js").BackgroundJobOptions;
56
+ }): Promise<import("./types.js").BackgroundJobReplacementResult>;
57
+ /**
58
+ * Cancels the owner of a stable schedule key.
59
+ * @param {string} _scheduleKey - Stable schedule key.
60
+ * @returns {Promise<import("./types.js").BackgroundJobCancellationResult>} - Cancellation result.
61
+ */
62
+ cancelScheduled(_scheduleKey: string): Promise<import("./types.js").BackgroundJobCancellationResult>;
63
+ /**
64
+ * Finds the next eligible job.
65
+ * @param {{executionMode?: import("./types.js").BackgroundJobExecutionMode | import("./types.js").BackgroundJobExecutionMode[]}} [_args] - Dequeue filters.
66
+ * @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Next eligible job.
67
+ */
68
+ nextAvailableJob(_args?: {
69
+ executionMode?: import("./types.js").BackgroundJobExecutionMode | import("./types.js").BackgroundJobExecutionMode[];
70
+ }): Promise<import("./types.js").BackgroundJobRow | null>;
71
+ /**
72
+ * Finds the soonest future job.
73
+ * @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Soonest future job.
74
+ */
75
+ nextScheduledJob(): Promise<import("./types.js").BackgroundJobRow | null>;
76
+ /**
77
+ * Reads one job.
78
+ * @param {string} _jobId - Job id.
79
+ * @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Job row.
80
+ */
81
+ getJob(_jobId: string): Promise<import("./types.js").BackgroundJobRow | null>;
82
+ /**
83
+ * Starts a job by claiming its durable handoff.
84
+ * @param {{jobId: string, workerId?: string}} _args - Handoff request.
85
+ * @returns {Promise<import("./types.js").BackgroundJobHandoff | null>} - Claimed handoff.
86
+ */
87
+ markHandedOff(_args: {
88
+ jobId: string;
89
+ workerId?: string;
90
+ }): Promise<import("./types.js").BackgroundJobHandoff | null>;
91
+ /**
92
+ * Marks a handed-off job successful.
93
+ * @param {{jobId: string, handoffId?: string, workerId?: string, handedOffAtMs?: number}} _args - Completion report.
94
+ * @returns {Promise<boolean>} - Whether the fenced report was accepted.
95
+ */
96
+ markCompleted(_args: {
97
+ jobId: string;
98
+ handoffId?: string;
99
+ workerId?: string;
100
+ handedOffAtMs?: number;
101
+ }): Promise<boolean>;
102
+ /**
103
+ * Returns a handed-off job to its schedule.
104
+ * @param {{jobId: string, delayMs: number, handoffId?: string, workerId?: string, handedOffAtMs?: number}} _args - Reschedule report.
105
+ * @returns {Promise<boolean>} - Whether the fenced report was accepted.
106
+ */
107
+ markRescheduled(_args: {
108
+ jobId: string;
109
+ delayMs: number;
110
+ handoffId?: string;
111
+ workerId?: string;
112
+ handedOffAtMs?: number;
113
+ }): Promise<boolean>;
114
+ /**
115
+ * Returns a handed-off job to the queue.
116
+ * @param {{jobId: string, handoffId: string}} _args - Handoff release.
117
+ * @returns {Promise<void>} - Resolves after the job is returned.
118
+ */
119
+ markReturnedToQueue(_args: {
120
+ jobId: string;
121
+ handoffId: string;
122
+ }): Promise<void>;
123
+ /**
124
+ * Finds active handoffs for a worker.
125
+ * @param {{workerId: string}} _args - Worker identity.
126
+ * @returns {Promise<Array<{jobId: string, handoffId: string}>>} - Active worker handoffs.
127
+ */
128
+ handedOffJobsForWorker(_args: {
129
+ workerId: string;
130
+ }): Promise<Array<{
131
+ jobId: string;
132
+ handoffId: string;
133
+ }>>;
134
+ /**
135
+ * Marks a handed-off job failed or retryable.
136
+ * @param {{jobId: string, error: ReturnType<typeof JSON.parse>, handoffId?: string, workerId?: string, handedOffAtMs?: number}} _args - Failure report.
137
+ * @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Updated job when accepted.
138
+ */
139
+ markFailed(_args: {
140
+ jobId: string;
141
+ error: ReturnType<typeof JSON.parse>;
142
+ handoffId?: string;
143
+ workerId?: string;
144
+ handedOffAtMs?: number;
145
+ }): Promise<import("./types.js").BackgroundJobRow | null>;
146
+ /**
147
+ * Reclaims expired handoffs.
148
+ * @param {{orphanedAfterMs?: number}} [_args] - Sweep options.
149
+ * @returns {Promise<import("./types.js").BackgroundJobRow[]>} - Newly orphaned jobs.
150
+ */
151
+ markOrphanedJobs(_args?: {
152
+ orphanedAfterMs?: number;
153
+ }): Promise<import("./types.js").BackgroundJobRow[]>;
154
+ /**
155
+ * Prunes terminal jobs past their retention windows.
156
+ * @param {{completedTtlMs?: number | null, failedTtlMs?: number | null, batchSize?: number}} [_args] - Retention options.
157
+ * @returns {Promise<number>} - Deleted rows.
158
+ */
159
+ pruneTerminalJobs(_args?: {
160
+ completedTtlMs?: number | null;
161
+ failedTtlMs?: number | null;
162
+ batchSize?: number;
163
+ }): Promise<number>;
164
+ }
165
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/adapter.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ // @ts-check
2
+ /**
3
+ * Platform-neutral persistence and lifecycle contract used by the background-jobs
4
+ * runtime. Adapters own durable queue state; transport and job execution remain
5
+ * separate concerns.
6
+ */
7
+ export default class BackgroundJobsAdapter {
8
+ /**
9
+ * Ensures the adapter can accept work.
10
+ * @returns {Promise<void>} - Resolves when ready.
11
+ */
12
+ async ensureReady() { throw new Error("BackgroundJobsAdapter#ensureReady is not implemented"); }
13
+ /**
14
+ * Closes adapter-owned resources.
15
+ * @returns {Promise<void>} - Resolves after close.
16
+ */
17
+ async close() { }
18
+ /**
19
+ * Reports adapter health.
20
+ * @returns {Promise<import("./types.js").BackgroundJobsHealth>} - Adapter health.
21
+ */
22
+ async health() {
23
+ return { ready: true };
24
+ }
25
+ /**
26
+ * Ensures framework-owned persistence during a migration lifecycle. Non-SQL
27
+ * adapters may leave this as a no-op.
28
+ * @param {{dbs: Record<string, import("../database/drivers/base.js").default>}} _args - Migrated databases.
29
+ * @returns {Promise<void>} - Resolves when complete.
30
+ */
31
+ async ensureFrameworkSchema(_args) { }
32
+ /**
33
+ * Reconciles configured queue limits.
34
+ * @returns {Promise<void>} - Resolves after reconciliation.
35
+ */
36
+ async reconcileQueueConcurrency() { throw new Error("BackgroundJobsAdapter#reconcileQueueConcurrency is not implemented"); }
37
+ /**
38
+ * Enqueues a job.
39
+ * @param {{jobName: string, args: Array<ReturnType<typeof JSON.parse>>, options?: import("./types.js").BackgroundJobOptions}} _args - Job request.
40
+ * @returns {Promise<string>} - Job id.
41
+ */
42
+ async enqueue(_args) { throw new Error("BackgroundJobsAdapter#enqueue is not implemented"); }
43
+ /**
44
+ * Replaces the owner of a stable schedule key.
45
+ * @param {{scheduleKey: string, jobName: string, args: Array<ReturnType<typeof JSON.parse>>, options?: import("./types.js").BackgroundJobOptions}} _args - Replacement request.
46
+ * @returns {Promise<import("./types.js").BackgroundJobReplacementResult>} - Replacement result.
47
+ */
48
+ async replaceScheduled(_args) { throw new Error("BackgroundJobsAdapter#replaceScheduled is not implemented"); }
49
+ /**
50
+ * Cancels the owner of a stable schedule key.
51
+ * @param {string} _scheduleKey - Stable schedule key.
52
+ * @returns {Promise<import("./types.js").BackgroundJobCancellationResult>} - Cancellation result.
53
+ */
54
+ async cancelScheduled(_scheduleKey) { throw new Error("BackgroundJobsAdapter#cancelScheduled is not implemented"); }
55
+ /**
56
+ * Finds the next eligible job.
57
+ * @param {{executionMode?: import("./types.js").BackgroundJobExecutionMode | import("./types.js").BackgroundJobExecutionMode[]}} [_args] - Dequeue filters.
58
+ * @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Next eligible job.
59
+ */
60
+ async nextAvailableJob(_args = {}) { throw new Error("BackgroundJobsAdapter#nextAvailableJob is not implemented"); }
61
+ /**
62
+ * Finds the soonest future job.
63
+ * @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Soonest future job.
64
+ */
65
+ async nextScheduledJob() { throw new Error("BackgroundJobsAdapter#nextScheduledJob is not implemented"); }
66
+ /**
67
+ * Reads one job.
68
+ * @param {string} _jobId - Job id.
69
+ * @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Job row.
70
+ */
71
+ async getJob(_jobId) { throw new Error("BackgroundJobsAdapter#getJob is not implemented"); }
72
+ /**
73
+ * Starts a job by claiming its durable handoff.
74
+ * @param {{jobId: string, workerId?: string}} _args - Handoff request.
75
+ * @returns {Promise<import("./types.js").BackgroundJobHandoff | null>} - Claimed handoff.
76
+ */
77
+ async markHandedOff(_args) { throw new Error("BackgroundJobsAdapter#markHandedOff is not implemented"); }
78
+ /**
79
+ * Marks a handed-off job successful.
80
+ * @param {{jobId: string, handoffId?: string, workerId?: string, handedOffAtMs?: number}} _args - Completion report.
81
+ * @returns {Promise<boolean>} - Whether the fenced report was accepted.
82
+ */
83
+ async markCompleted(_args) { throw new Error("BackgroundJobsAdapter#markCompleted is not implemented"); }
84
+ /**
85
+ * Returns a handed-off job to its schedule.
86
+ * @param {{jobId: string, delayMs: number, handoffId?: string, workerId?: string, handedOffAtMs?: number}} _args - Reschedule report.
87
+ * @returns {Promise<boolean>} - Whether the fenced report was accepted.
88
+ */
89
+ async markRescheduled(_args) { throw new Error("BackgroundJobsAdapter#markRescheduled is not implemented"); }
90
+ /**
91
+ * Returns a handed-off job to the queue.
92
+ * @param {{jobId: string, handoffId: string}} _args - Handoff release.
93
+ * @returns {Promise<void>} - Resolves after the job is returned.
94
+ */
95
+ async markReturnedToQueue(_args) { throw new Error("BackgroundJobsAdapter#markReturnedToQueue is not implemented"); }
96
+ /**
97
+ * Finds active handoffs for a worker.
98
+ * @param {{workerId: string}} _args - Worker identity.
99
+ * @returns {Promise<Array<{jobId: string, handoffId: string}>>} - Active worker handoffs.
100
+ */
101
+ async handedOffJobsForWorker(_args) { throw new Error("BackgroundJobsAdapter#handedOffJobsForWorker is not implemented"); }
102
+ /**
103
+ * Marks a handed-off job failed or retryable.
104
+ * @param {{jobId: string, error: ReturnType<typeof JSON.parse>, handoffId?: string, workerId?: string, handedOffAtMs?: number}} _args - Failure report.
105
+ * @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Updated job when accepted.
106
+ */
107
+ async markFailed(_args) { throw new Error("BackgroundJobsAdapter#markFailed is not implemented"); }
108
+ /**
109
+ * Reclaims expired handoffs.
110
+ * @param {{orphanedAfterMs?: number}} [_args] - Sweep options.
111
+ * @returns {Promise<import("./types.js").BackgroundJobRow[]>} - Newly orphaned jobs.
112
+ */
113
+ async markOrphanedJobs(_args = {}) { throw new Error("BackgroundJobsAdapter#markOrphanedJobs is not implemented"); }
114
+ /**
115
+ * Prunes terminal jobs past their retention windows.
116
+ * @param {{completedTtlMs?: number | null, failedTtlMs?: number | null, batchSize?: number}} [_args] - Retention options.
117
+ * @returns {Promise<number>} - Deleted rows.
118
+ */
119
+ async pruneTerminalJobs(_args = {}) { throw new Error("BackgroundJobsAdapter#pruneTerminalJobs is not implemented"); }
120
+ }
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvYWRhcHRlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVo7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8scUJBQXFCO0lBQ3hDOzs7T0FHRztJQUNILEtBQUssQ0FBQyxXQUFXLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUUvRjs7O09BR0c7SUFDSCxLQUFLLENBQUMsS0FBSyxLQUFJLENBQUM7SUFFaEI7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLE1BQU07UUFDVixPQUFPLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFBO0lBQ3RCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLElBQUcsQ0FBQztJQUVyQzs7O09BR0c7SUFDSCxLQUFLLENBQUMseUJBQXlCLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQyxvRUFBb0UsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUUzSDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUU1Rjs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEtBQUssSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRTlHOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUFDLFlBQVksSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRW5IOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLEVBQUUsSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRW5IOzs7T0FHRztJQUNILEtBQUssQ0FBQyxnQkFBZ0IsS0FBSyxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRXpHOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRTNGOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRXhHOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRXhHOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRTVHOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsbUJBQW1CLENBQUMsS0FBSyxJQUFJLE1BQU0sSUFBSSxLQUFLLENBQUMsOERBQThELENBQUMsQ0FBQSxDQUFDLENBQUM7SUFFcEg7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyxpRUFBaUUsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUUxSDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUVsRzs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEtBQUssR0FBRyxFQUFFLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUVuSDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEtBQUssR0FBRyxFQUFFLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFBLENBQUMsQ0FBQztDQUN0SCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKipcbiAqIFBsYXRmb3JtLW5ldXRyYWwgcGVyc2lzdGVuY2UgYW5kIGxpZmVjeWNsZSBjb250cmFjdCB1c2VkIGJ5IHRoZSBiYWNrZ3JvdW5kLWpvYnNcbiAqIHJ1bnRpbWUuIEFkYXB0ZXJzIG93biBkdXJhYmxlIHF1ZXVlIHN0YXRlOyB0cmFuc3BvcnQgYW5kIGpvYiBleGVjdXRpb24gcmVtYWluXG4gKiBzZXBhcmF0ZSBjb25jZXJucy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmFja2dyb3VuZEpvYnNBZGFwdGVyIHtcbiAgLyoqXG4gICAqIEVuc3VyZXMgdGhlIGFkYXB0ZXIgY2FuIGFjY2VwdCB3b3JrLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIHJlYWR5LlxuICAgKi9cbiAgYXN5bmMgZW5zdXJlUmVhZHkoKSB7IHRocm93IG5ldyBFcnJvcihcIkJhY2tncm91bmRKb2JzQWRhcHRlciNlbnN1cmVSZWFkeSBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgYWRhcHRlci1vd25lZCByZXNvdXJjZXMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIGFmdGVyIGNsb3NlLlxuICAgKi9cbiAgYXN5bmMgY2xvc2UoKSB7fVxuXG4gIC8qKlxuICAgKiBSZXBvcnRzIGFkYXB0ZXIgaGVhbHRoLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JzSGVhbHRoPn0gLSBBZGFwdGVyIGhlYWx0aC5cbiAgICovXG4gIGFzeW5jIGhlYWx0aCgpIHtcbiAgICByZXR1cm4ge3JlYWR5OiB0cnVlfVxuICB9XG5cbiAgLyoqXG4gICAqIEVuc3VyZXMgZnJhbWV3b3JrLW93bmVkIHBlcnNpc3RlbmNlIGR1cmluZyBhIG1pZ3JhdGlvbiBsaWZlY3ljbGUuIE5vbi1TUUxcbiAgICogYWRhcHRlcnMgbWF5IGxlYXZlIHRoaXMgYXMgYSBuby1vcC5cbiAgICogQHBhcmFtIHt7ZGJzOiBSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoXCIuLi9kYXRhYmFzZS9kcml2ZXJzL2Jhc2UuanNcIikuZGVmYXVsdD59fSBfYXJncyAtIE1pZ3JhdGVkIGRhdGFiYXNlcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIGVuc3VyZUZyYW1ld29ya1NjaGVtYShfYXJncykge31cblxuICAvKipcbiAgICogUmVjb25jaWxlcyBjb25maWd1cmVkIHF1ZXVlIGxpbWl0cy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgYWZ0ZXIgcmVjb25jaWxpYXRpb24uXG4gICAqL1xuICBhc3luYyByZWNvbmNpbGVRdWV1ZUNvbmN1cnJlbmN5KCkgeyB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIjcmVjb25jaWxlUXVldWVDb25jdXJyZW5jeSBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxuXG4gIC8qKlxuICAgKiBFbnF1ZXVlcyBhIGpvYi5cbiAgICogQHBhcmFtIHt7am9iTmFtZTogc3RyaW5nLCBhcmdzOiBBcnJheTxSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj4sIG9wdGlvbnM/OiBpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JPcHRpb25zfX0gX2FyZ3MgLSBKb2IgcmVxdWVzdC5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gLSBKb2IgaWQuXG4gICAqL1xuICBhc3luYyBlbnF1ZXVlKF9hcmdzKSB7IHRocm93IG5ldyBFcnJvcihcIkJhY2tncm91bmRKb2JzQWRhcHRlciNlbnF1ZXVlIGlzIG5vdCBpbXBsZW1lbnRlZFwiKSB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIHRoZSBvd25lciBvZiBhIHN0YWJsZSBzY2hlZHVsZSBrZXkuXG4gICAqIEBwYXJhbSB7e3NjaGVkdWxlS2V5OiBzdHJpbmcsIGpvYk5hbWU6IHN0cmluZywgYXJnczogQXJyYXk8UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4+LCBvcHRpb25zPzogaW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iT3B0aW9uc319IF9hcmdzIC0gUmVwbGFjZW1lbnQgcmVxdWVzdC5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUmVwbGFjZW1lbnRSZXN1bHQ+fSAtIFJlcGxhY2VtZW50IHJlc3VsdC5cbiAgICovXG4gIGFzeW5jIHJlcGxhY2VTY2hlZHVsZWQoX2FyZ3MpIHsgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZEpvYnNBZGFwdGVyI3JlcGxhY2VTY2hlZHVsZWQgaXMgbm90IGltcGxlbWVudGVkXCIpIH1cblxuICAvKipcbiAgICogQ2FuY2VscyB0aGUgb3duZXIgb2YgYSBzdGFibGUgc2NoZWR1bGUga2V5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gX3NjaGVkdWxlS2V5IC0gU3RhYmxlIHNjaGVkdWxlIGtleS5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iQ2FuY2VsbGF0aW9uUmVzdWx0Pn0gLSBDYW5jZWxsYXRpb24gcmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgY2FuY2VsU2NoZWR1bGVkKF9zY2hlZHVsZUtleSkgeyB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIjY2FuY2VsU2NoZWR1bGVkIGlzIG5vdCBpbXBsZW1lbnRlZFwiKSB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBuZXh0IGVsaWdpYmxlIGpvYi5cbiAgICogQHBhcmFtIHt7ZXhlY3V0aW9uTW9kZT86IGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYkV4ZWN1dGlvbk1vZGUgfCBpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JFeGVjdXRpb25Nb2RlW119fSBbX2FyZ3NdIC0gRGVxdWV1ZSBmaWx0ZXJzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JSb3cgfCBudWxsPn0gLSBOZXh0IGVsaWdpYmxlIGpvYi5cbiAgICovXG4gIGFzeW5jIG5leHRBdmFpbGFibGVKb2IoX2FyZ3MgPSB7fSkgeyB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIjbmV4dEF2YWlsYWJsZUpvYiBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgc29vbmVzdCBmdXR1cmUgam9iLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JSb3cgfCBudWxsPn0gLSBTb29uZXN0IGZ1dHVyZSBqb2IuXG4gICAqL1xuICBhc3luYyBuZXh0U2NoZWR1bGVkSm9iKCkgeyB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIjbmV4dFNjaGVkdWxlZEpvYiBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBvbmUgam9iLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gX2pvYklkIC0gSm9iIGlkLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JSb3cgfCBudWxsPn0gLSBKb2Igcm93LlxuICAgKi9cbiAgYXN5bmMgZ2V0Sm9iKF9qb2JJZCkgeyB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIjZ2V0Sm9iIGlzIG5vdCBpbXBsZW1lbnRlZFwiKSB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyBhIGpvYiBieSBjbGFpbWluZyBpdHMgZHVyYWJsZSBoYW5kb2ZmLlxuICAgKiBAcGFyYW0ge3tqb2JJZDogc3RyaW5nLCB3b3JrZXJJZD86IHN0cmluZ319IF9hcmdzIC0gSGFuZG9mZiByZXF1ZXN0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JIYW5kb2ZmIHwgbnVsbD59IC0gQ2xhaW1lZCBoYW5kb2ZmLlxuICAgKi9cbiAgYXN5bmMgbWFya0hhbmRlZE9mZihfYXJncykgeyB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIjbWFya0hhbmRlZE9mZiBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxuXG4gIC8qKlxuICAgKiBNYXJrcyBhIGhhbmRlZC1vZmYgam9iIHN1Y2Nlc3NmdWwuXG4gICAqIEBwYXJhbSB7e2pvYklkOiBzdHJpbmcsIGhhbmRvZmZJZD86IHN0cmluZywgd29ya2VySWQ/OiBzdHJpbmcsIGhhbmRlZE9mZkF0TXM/OiBudW1iZXJ9fSBfYXJncyAtIENvbXBsZXRpb24gcmVwb3J0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gLSBXaGV0aGVyIHRoZSBmZW5jZWQgcmVwb3J0IHdhcyBhY2NlcHRlZC5cbiAgICovXG4gIGFzeW5jIG1hcmtDb21wbGV0ZWQoX2FyZ3MpIHsgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZEpvYnNBZGFwdGVyI21hcmtDb21wbGV0ZWQgaXMgbm90IGltcGxlbWVudGVkXCIpIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGhhbmRlZC1vZmYgam9iIHRvIGl0cyBzY2hlZHVsZS5cbiAgICogQHBhcmFtIHt7am9iSWQ6IHN0cmluZywgZGVsYXlNczogbnVtYmVyLCBoYW5kb2ZmSWQ/OiBzdHJpbmcsIHdvcmtlcklkPzogc3RyaW5nLCBoYW5kZWRPZmZBdE1zPzogbnVtYmVyfX0gX2FyZ3MgLSBSZXNjaGVkdWxlIHJlcG9ydC5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IC0gV2hldGhlciB0aGUgZmVuY2VkIHJlcG9ydCB3YXMgYWNjZXB0ZWQuXG4gICAqL1xuICBhc3luYyBtYXJrUmVzY2hlZHVsZWQoX2FyZ3MpIHsgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZEpvYnNBZGFwdGVyI21hcmtSZXNjaGVkdWxlZCBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgaGFuZGVkLW9mZiBqb2IgdG8gdGhlIHF1ZXVlLlxuICAgKiBAcGFyYW0ge3tqb2JJZDogc3RyaW5nLCBoYW5kb2ZmSWQ6IHN0cmluZ319IF9hcmdzIC0gSGFuZG9mZiByZWxlYXNlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyBhZnRlciB0aGUgam9iIGlzIHJldHVybmVkLlxuICAgKi9cbiAgYXN5bmMgbWFya1JldHVybmVkVG9RdWV1ZShfYXJncykgeyB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIjbWFya1JldHVybmVkVG9RdWV1ZSBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBhY3RpdmUgaGFuZG9mZnMgZm9yIGEgd29ya2VyLlxuICAgKiBAcGFyYW0ge3t3b3JrZXJJZDogc3RyaW5nfX0gX2FyZ3MgLSBXb3JrZXIgaWRlbnRpdHkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PHtqb2JJZDogc3RyaW5nLCBoYW5kb2ZmSWQ6IHN0cmluZ30+Pn0gLSBBY3RpdmUgd29ya2VyIGhhbmRvZmZzLlxuICAgKi9cbiAgYXN5bmMgaGFuZGVkT2ZmSm9ic0ZvcldvcmtlcihfYXJncykgeyB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIjaGFuZGVkT2ZmSm9ic0ZvcldvcmtlciBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxuXG4gIC8qKlxuICAgKiBNYXJrcyBhIGhhbmRlZC1vZmYgam9iIGZhaWxlZCBvciByZXRyeWFibGUuXG4gICAqIEBwYXJhbSB7e2pvYklkOiBzdHJpbmcsIGVycm9yOiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPiwgaGFuZG9mZklkPzogc3RyaW5nLCB3b3JrZXJJZD86IHN0cmluZywgaGFuZGVkT2ZmQXRNcz86IG51bWJlcn19IF9hcmdzIC0gRmFpbHVyZSByZXBvcnQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlJvdyB8IG51bGw+fSAtIFVwZGF0ZWQgam9iIHdoZW4gYWNjZXB0ZWQuXG4gICAqL1xuICBhc3luYyBtYXJrRmFpbGVkKF9hcmdzKSB7IHRocm93IG5ldyBFcnJvcihcIkJhY2tncm91bmRKb2JzQWRhcHRlciNtYXJrRmFpbGVkIGlzIG5vdCBpbXBsZW1lbnRlZFwiKSB9XG5cbiAgLyoqXG4gICAqIFJlY2xhaW1zIGV4cGlyZWQgaGFuZG9mZnMuXG4gICAqIEBwYXJhbSB7e29ycGhhbmVkQWZ0ZXJNcz86IG51bWJlcn19IFtfYXJnc10gLSBTd2VlcCBvcHRpb25zLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JSb3dbXT59IC0gTmV3bHkgb3JwaGFuZWQgam9icy5cbiAgICovXG4gIGFzeW5jIG1hcmtPcnBoYW5lZEpvYnMoX2FyZ3MgPSB7fSkgeyB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIjbWFya09ycGhhbmVkSm9icyBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxuXG4gIC8qKlxuICAgKiBQcnVuZXMgdGVybWluYWwgam9icyBwYXN0IHRoZWlyIHJldGVudGlvbiB3aW5kb3dzLlxuICAgKiBAcGFyYW0ge3tjb21wbGV0ZWRUdGxNcz86IG51bWJlciB8IG51bGwsIGZhaWxlZFR0bE1zPzogbnVtYmVyIHwgbnVsbCwgYmF0Y2hTaXplPzogbnVtYmVyfX0gW19hcmdzXSAtIFJldGVudGlvbiBvcHRpb25zLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXI+fSAtIERlbGV0ZWQgcm93cy5cbiAgICovXG4gIGFzeW5jIHBydW5lVGVybWluYWxKb2JzKF9hcmdzID0ge30pIHsgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZEpvYnNBZGFwdGVyI3BydW5lVGVybWluYWxKb2JzIGlzIG5vdCBpbXBsZW1lbnRlZFwiKSB9XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import VelociousJob from "./job.js";
1
+ import VelociousJob from "./platform-job.js";
2
2
  export default class BackgroundJobRegistry {
3
3
  configuration: import("../configuration.js").default;
4
4
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"job-registry.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/job-registry.js"],"names":[],"mappings":"AAKA,OAAO,YAAY,MAAM,UAAU,CAAA;AAEnC,MAAM,CAAC,OAAO,OAAO,qBAAqB;IAOjC,aAAa;IAClB;;kDAE8C;IACzC,UAAU,EADL,GAAG,CAAC,MAAM,EAAE,OAAO,YAAY,CAAC;IAT5C;;;;OAIG;IACH,YAAY,EAAC,aAAa,EAAC,EAFxB;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO,CAC/C;KAC0B,EAM1B;IAED;;;OAGG;IACG,IAAI,IAFG,OAAO,CAAC,IAAI,CAAC,CAezB;IAED;;;;OAIG;IACH,YAAY,CAAC,OAAO,EAHT,MAGS,GAFP,OAAO,YAAY,CAU/B;IAED;;;;;;OAMG;IACG,sBAAsB,CAAC,OAAO,EALzB,MAKyB,EAAE,EAAC,cAAc,EAAC,EAHnD;QAAsB,cAAc,EAA5B,OAAO,CACf;KAEmD,GAFzC,OAAO,CAAC,IAAI,CAAC,CA8BzB;CACF"}
1
+ {"version":3,"file":"job-registry.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/job-registry.js"],"names":[],"mappings":"AAKA,OAAO,YAAY,MAAM,mBAAmB,CAAA;AAE5C,MAAM,CAAC,OAAO,OAAO,qBAAqB;IAOjC,aAAa;IAClB;;kDAE8C;IACzC,UAAU,EADL,GAAG,CAAC,MAAM,EAAE,OAAO,YAAY,CAAC;IAT5C;;;;OAIG;IACH,YAAY,EAAC,aAAa,EAAC,EAFxB;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO,CAC/C;KAC0B,EAM1B;IAED;;;OAGG;IACG,IAAI,IAFG,OAAO,CAAC,IAAI,CAAC,CAezB;IAED;;;;OAIG;IACH,YAAY,CAAC,OAAO,EAHT,MAGS,GAFP,OAAO,YAAY,CAU/B;IAED;;;;;;OAMG;IACG,sBAAsB,CAAC,OAAO,EALzB,MAKyB,EAAE,EAAC,cAAc,EAAC,EAHnD;QAAsB,cAAc,EAA5B,OAAO,CACf;KAEmD,GAFzC,OAAO,CAAC,IAAI,CAAC,CA8BzB;CACF"}
@@ -2,7 +2,7 @@
2
2
  import fs from "fs/promises";
3
3
  import path from "path";
4
4
  import toImportSpecifier from "../utils/to-import-specifier.js";
5
- import VelociousJob from "./job.js";
5
+ import VelociousJob from "./platform-job.js";
6
6
  export default class BackgroundJobRegistry {
7
7
  /**
8
8
  * Runs constructor.
@@ -77,4 +77,4 @@ export default class BackgroundJobRegistry {
77
77
  }
78
78
  }
79
79
  }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tncm91bmQtam9icy9qb2ItcmVnaXN0cnkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM1QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxpQkFBaUIsTUFBTSxpQ0FBaUMsQ0FBQTtBQUMvRCxPQUFPLFlBQVksTUFBTSxVQUFVLENBQUE7QUFFbkMsTUFBTSxDQUFDLE9BQU8sT0FBTyxxQkFBcUI7SUFDeEM7Ozs7T0FJRztJQUNILFlBQVksRUFBQyxhQUFhLEVBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDbEM7O3NEQUU4QztRQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDbkQsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLEVBQUMsY0FBYyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUE7UUFFbkUsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtRQUN6RixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNoRSxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDL0MsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFFakUsSUFBSSxpQkFBaUIsS0FBSywwQkFBMEIsRUFBRSxDQUFDO1lBQ3JELE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixFQUFFLEVBQUMsY0FBYyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUE7UUFDN0UsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLE9BQU87UUFDbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFN0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsT0FBTyxtQkFBbUIsQ0FBQyxDQUFBO1FBQzdELENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQTtJQUNqQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxFQUFDLGNBQWMsRUFBQztRQUNwRCxJQUFJLENBQUM7WUFDSCxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDMUIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sVUFBVSxDQUFDLENBQUE7UUFFOUMsSUFBSSxLQUFLLEVBQUUsTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7WUFDckMsTUFBTSxTQUFTLEdBQUcsTUFBTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtZQUMxRCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFBO1lBRWxDLElBQUksQ0FBQyxRQUFRO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLE9BQU8sRUFBRSxDQUFDLENBQUE7WUFDbEYsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsWUFBWSxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUNsRCxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1lBQ25FLENBQUM7WUFFRCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUE7WUFFbEMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLGNBQWM7b0JBQUUsU0FBUTtnQkFFNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsT0FBTyxVQUFVLE9BQU8sRUFBRSxDQUFDLENBQUE7WUFDcEUsQ0FBQztZQUVELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUN4QyxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBmcyBmcm9tIFwiZnMvcHJvbWlzZXNcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHRvSW1wb3J0U3BlY2lmaWVyIGZyb20gXCIuLi91dGlscy90by1pbXBvcnQtc3BlY2lmaWVyLmpzXCJcbmltcG9ydCBWZWxvY2lvdXNKb2IgZnJvbSBcIi4vam9iLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmFja2dyb3VuZEpvYlJlZ2lzdHJ5IHtcbiAgLyoqXG4gICAqIFJ1bnMgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGFyZ3MuY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7Y29uZmlndXJhdGlvbn0pIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uXG4gICAgLyoqXG4gICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAqIEB0eXBlIHtNYXA8c3RyaW5nLCB0eXBlb2YgVmVsb2Npb3VzSm9iPn0gKi9cbiAgICB0aGlzLmpvYnNCeU5hbWUgPSBuZXcgTWFwKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGxvYWQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBsb2FkKCkge1xuICAgIGNvbnN0IGRpcmVjdG9yeSA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXREaXJlY3RvcnkoKVxuICAgIGNvbnN0IGpvYnNEaXIgPSBwYXRoLmpvaW4oZGlyZWN0b3J5LCBcInNyY1wiLCBcImpvYnNcIilcbiAgICBhd2FpdCB0aGlzLl9sb2FkSm9ic0Zyb21EaXJlY3Rvcnkoam9ic0Rpciwge3NraXBEdXBsaWNhdGVzOiBmYWxzZX0pXG5cbiAgICBjb25zdCB2ZWxvY2lvdXNQYXRoID0gYXdhaXQgdGhpcy5jb25maWd1cmF0aW9uLmdldEVudmlyb25tZW50SGFuZGxlcigpLmdldFZlbG9jaW91c1BhdGgoKVxuICAgIGNvbnN0IHZlbG9jaW91c0pvYnNEaXIgPSBwYXRoLmpvaW4odmVsb2Npb3VzUGF0aCwgXCJzcmNcIiwgXCJqb2JzXCIpXG4gICAgY29uc3Qgbm9ybWFsaXplZEpvYnNEaXIgPSBwYXRoLnJlc29sdmUoam9ic0RpcilcbiAgICBjb25zdCBub3JtYWxpemVkVmVsb2Npb3VzSm9ic0RpciA9IHBhdGgucmVzb2x2ZSh2ZWxvY2lvdXNKb2JzRGlyKVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRKb2JzRGlyICE9PSBub3JtYWxpemVkVmVsb2Npb3VzSm9ic0Rpcikge1xuICAgICAgYXdhaXQgdGhpcy5fbG9hZEpvYnNGcm9tRGlyZWN0b3J5KHZlbG9jaW91c0pvYnNEaXIsIHtza2lwRHVwbGljYXRlczogdHJ1ZX0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZ2V0IGpvYiBieSBuYW1lLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gam9iTmFtZSAtIEpvYiBuYW1lLlxuICAgKiBAcmV0dXJucyB7dHlwZW9mIFZlbG9jaW91c0pvYn0gLSBKb2IgY2xhc3MuXG4gICAqL1xuICBnZXRKb2JCeU5hbWUoam9iTmFtZSkge1xuICAgIGNvbnN0IGpvYkNsYXNzID0gdGhpcy5qb2JzQnlOYW1lLmdldChqb2JOYW1lKVxuXG4gICAgaWYgKCFqb2JDbGFzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGpvYiBcIiR7am9iTmFtZX1cIi4gQ2hlY2sgc3JjL2pvYnNgKVxuICAgIH1cblxuICAgIHJldHVybiBqb2JDbGFzc1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgbG9hZCBqb2JzIGZyb20gZGlyZWN0b3J5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gam9ic0RpciAtIERpcmVjdG9yeSB3aXRoIGpvYiBmaWxlcy5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFyZ3Muc2tpcER1cGxpY2F0ZXMgLSBXaGV0aGVyIHRvIHNraXAgZHVwbGljYXRlIGpvYiBuYW1lcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIF9sb2FkSm9ic0Zyb21EaXJlY3Rvcnkoam9ic0Rpciwge3NraXBEdXBsaWNhdGVzfSkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmcy5hY2Nlc3Moam9ic0RpcilcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGpvYkZpbGVzID0gZnMuZ2xvYihgJHtqb2JzRGlyfS8qKi8qLmpzYClcblxuICAgIGZvciBhd2FpdCAoY29uc3Qgam9iRmlsZSBvZiBqb2JGaWxlcykge1xuICAgICAgY29uc3Qgam9iSW1wb3J0ID0gYXdhaXQgaW1wb3J0KHRvSW1wb3J0U3BlY2lmaWVyKGpvYkZpbGUpKVxuICAgICAgY29uc3QgSm9iQ2xhc3MgPSBqb2JJbXBvcnQuZGVmYXVsdFxuXG4gICAgICBpZiAoIUpvYkNsYXNzKSB0aHJvdyBuZXcgRXJyb3IoYEpvYiBmaWxlIG11c3QgZXhwb3J0IGEgZGVmYXVsdCBjbGFzczogJHtqb2JGaWxlfWApXG4gICAgICBpZiAoIShKb2JDbGFzcy5wcm90b3R5cGUgaW5zdGFuY2VvZiBWZWxvY2lvdXNKb2IpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSm9iIGNsYXNzIG11c3QgZXh0ZW5kIFZlbG9jaW91c0pvYjogJHtqb2JGaWxlfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGpvYk5hbWUgPSBKb2JDbGFzcy5qb2JOYW1lKClcblxuICAgICAgaWYgKHRoaXMuam9ic0J5TmFtZS5oYXMoam9iTmFtZSkpIHtcbiAgICAgICAgaWYgKHNraXBEdXBsaWNhdGVzKSBjb250aW51ZVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlIGpvYiBuYW1lIFwiJHtqb2JOYW1lfVwiIGZyb20gJHtqb2JGaWxlfWApXG4gICAgICB9XG5cbiAgICAgIHRoaXMuam9ic0J5TmFtZS5zZXQoam9iTmFtZSwgSm9iQ2xhc3MpXG4gICAgfVxuICB9XG59XG4iXX0=
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tncm91bmQtam9icy9qb2ItcmVnaXN0cnkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM1QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxpQkFBaUIsTUFBTSxpQ0FBaUMsQ0FBQTtBQUMvRCxPQUFPLFlBQVksTUFBTSxtQkFBbUIsQ0FBQTtBQUU1QyxNQUFNLENBQUMsT0FBTyxPQUFPLHFCQUFxQjtJQUN4Qzs7OztPQUlHO0lBQ0gsWUFBWSxFQUFDLGFBQWEsRUFBQztRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQTtRQUNsQzs7c0RBRThDO1FBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQTtJQUM3QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQ25ELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNuRCxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsRUFBQyxjQUFjLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtRQUVuRSxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1FBQ3pGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ2hFLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMvQyxNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUVqRSxJQUFJLGlCQUFpQixLQUFLLDBCQUEwQixFQUFFLENBQUM7WUFDckQsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLEVBQUUsRUFBQyxjQUFjLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQTtRQUM3RSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxZQUFZLENBQUMsT0FBTztRQUNsQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUU3QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixPQUFPLG1CQUFtQixDQUFDLENBQUE7UUFDN0QsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLEVBQUMsY0FBYyxFQUFDO1FBQ3BELElBQUksQ0FBQztZQUNILE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMxQixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxVQUFVLENBQUMsQ0FBQTtRQUU5QyxJQUFJLEtBQUssRUFBRSxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNyQyxNQUFNLFNBQVMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1lBQzFELE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUE7WUFFbEMsSUFBSSxDQUFDLFFBQVE7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtZQUNsRixJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxZQUFZLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ2xELE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLE9BQU8sRUFBRSxDQUFDLENBQUE7WUFDbkUsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtZQUVsQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLElBQUksY0FBYztvQkFBRSxTQUFRO2dCQUU1QixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixPQUFPLFVBQVUsT0FBTyxFQUFFLENBQUMsQ0FBQTtZQUNwRSxDQUFDO1lBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IGZzIGZyb20gXCJmcy9wcm9taXNlc1wiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgdG9JbXBvcnRTcGVjaWZpZXIgZnJvbSBcIi4uL3V0aWxzL3RvLWltcG9ydC1zcGVjaWZpZXIuanNcIlxuaW1wb3J0IFZlbG9jaW91c0pvYiBmcm9tIFwiLi9wbGF0Zm9ybS1qb2IuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYWNrZ3JvdW5kSm9iUmVnaXN0cnkge1xuICAvKipcbiAgICogUnVucyBjb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gYXJncy5jb25maWd1cmF0aW9uIC0gQ29uZmlndXJhdGlvbi5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb25maWd1cmF0aW9ufSkge1xuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25cbiAgICAvKipcbiAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICogQHR5cGUge01hcDxzdHJpbmcsIHR5cGVvZiBWZWxvY2lvdXNKb2I+fSAqL1xuICAgIHRoaXMuam9ic0J5TmFtZSA9IG5ldyBNYXAoKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgbG9hZC5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgY29uc3QgZGlyZWN0b3J5ID0gdGhpcy5jb25maWd1cmF0aW9uLmdldERpcmVjdG9yeSgpXG4gICAgY29uc3Qgam9ic0RpciA9IHBhdGguam9pbihkaXJlY3RvcnksIFwic3JjXCIsIFwiam9ic1wiKVxuICAgIGF3YWl0IHRoaXMuX2xvYWRKb2JzRnJvbURpcmVjdG9yeShqb2JzRGlyLCB7c2tpcER1cGxpY2F0ZXM6IGZhbHNlfSlcblxuICAgIGNvbnN0IHZlbG9jaW91c1BhdGggPSBhd2FpdCB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0RW52aXJvbm1lbnRIYW5kbGVyKCkuZ2V0VmVsb2Npb3VzUGF0aCgpXG4gICAgY29uc3QgdmVsb2Npb3VzSm9ic0RpciA9IHBhdGguam9pbih2ZWxvY2lvdXNQYXRoLCBcInNyY1wiLCBcImpvYnNcIilcbiAgICBjb25zdCBub3JtYWxpemVkSm9ic0RpciA9IHBhdGgucmVzb2x2ZShqb2JzRGlyKVxuICAgIGNvbnN0IG5vcm1hbGl6ZWRWZWxvY2lvdXNKb2JzRGlyID0gcGF0aC5yZXNvbHZlKHZlbG9jaW91c0pvYnNEaXIpXG5cbiAgICBpZiAobm9ybWFsaXplZEpvYnNEaXIgIT09IG5vcm1hbGl6ZWRWZWxvY2lvdXNKb2JzRGlyKSB7XG4gICAgICBhd2FpdCB0aGlzLl9sb2FkSm9ic0Zyb21EaXJlY3RvcnkodmVsb2Npb3VzSm9ic0Rpciwge3NraXBEdXBsaWNhdGVzOiB0cnVlfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyBnZXQgam9iIGJ5IG5hbWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBqb2JOYW1lIC0gSm9iIG5hbWUuXG4gICAqIEByZXR1cm5zIHt0eXBlb2YgVmVsb2Npb3VzSm9ifSAtIEpvYiBjbGFzcy5cbiAgICovXG4gIGdldEpvYkJ5TmFtZShqb2JOYW1lKSB7XG4gICAgY29uc3Qgam9iQ2xhc3MgPSB0aGlzLmpvYnNCeU5hbWUuZ2V0KGpvYk5hbWUpXG5cbiAgICBpZiAoIWpvYkNsYXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gam9iIFwiJHtqb2JOYW1lfVwiLiBDaGVjayBzcmMvam9ic2ApXG4gICAgfVxuXG4gICAgcmV0dXJuIGpvYkNsYXNzXG4gIH1cblxuICAvKipcbiAgICogUnVucyBsb2FkIGpvYnMgZnJvbSBkaXJlY3RvcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBqb2JzRGlyIC0gRGlyZWN0b3J5IHdpdGggam9iIGZpbGVzLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYXJncy5za2lwRHVwbGljYXRlcyAtIFdoZXRoZXIgdG8gc2tpcCBkdXBsaWNhdGUgam9iIG5hbWVzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgX2xvYWRKb2JzRnJvbURpcmVjdG9yeShqb2JzRGlyLCB7c2tpcER1cGxpY2F0ZXN9KSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZzLmFjY2Vzcyhqb2JzRGlyKVxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3Qgam9iRmlsZXMgPSBmcy5nbG9iKGAke2pvYnNEaXJ9LyoqLyouanNgKVxuXG4gICAgZm9yIGF3YWl0IChjb25zdCBqb2JGaWxlIG9mIGpvYkZpbGVzKSB7XG4gICAgICBjb25zdCBqb2JJbXBvcnQgPSBhd2FpdCBpbXBvcnQodG9JbXBvcnRTcGVjaWZpZXIoam9iRmlsZSkpXG4gICAgICBjb25zdCBKb2JDbGFzcyA9IGpvYkltcG9ydC5kZWZhdWx0XG5cbiAgICAgIGlmICghSm9iQ2xhc3MpIHRocm93IG5ldyBFcnJvcihgSm9iIGZpbGUgbXVzdCBleHBvcnQgYSBkZWZhdWx0IGNsYXNzOiAke2pvYkZpbGV9YClcbiAgICAgIGlmICghKEpvYkNsYXNzLnByb3RvdHlwZSBpbnN0YW5jZW9mIFZlbG9jaW91c0pvYikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBKb2IgY2xhc3MgbXVzdCBleHRlbmQgVmVsb2Npb3VzSm9iOiAke2pvYkZpbGV9YClcbiAgICAgIH1cblxuICAgICAgY29uc3Qgam9iTmFtZSA9IEpvYkNsYXNzLmpvYk5hbWUoKVxuXG4gICAgICBpZiAodGhpcy5qb2JzQnlOYW1lLmhhcyhqb2JOYW1lKSkge1xuICAgICAgICBpZiAoc2tpcER1cGxpY2F0ZXMpIGNvbnRpbnVlXG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgam9iIG5hbWUgXCIke2pvYk5hbWV9XCIgZnJvbSAke2pvYkZpbGV9YClcbiAgICAgIH1cblxuICAgICAgdGhpcy5qb2JzQnlOYW1lLnNldChqb2JOYW1lLCBKb2JDbGFzcylcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,60 +1,12 @@
1
+ import PlatformVelociousJob from "./platform-job.js";
1
2
  /**
2
- * Base class for background jobs.
3
- *
4
- * `TArgs` is the tuple of arguments the subclass's `perform` accepts, so a job that
5
- * needs arguments declares them as required and typed — for example
6
- * `class RunBuildJob extends VelociousJob<[string]>` with `async perform(buildId)`.
7
- * The default empty tuple keeps argument-less jobs (`extends VelociousJob`,
8
- * `async perform()`) working unchanged.
3
+ * Node background-job entry. It preserves lazy configuration discovery for
4
+ * fresh producer processes while the explicit platform entry stays free of
5
+ * Node-only configuration resolution.
9
6
  * @template {Array<ReturnType<typeof JSON.parse>>} [TArgs=[]]
7
+ * @augments {PlatformVelociousJob<TArgs>}
10
8
  */
11
- export default class VelociousJob<TArgs extends Array<ReturnType<typeof JSON.parse>> = []> {
12
- /**
13
- * Database identifiers checked out while this job performs. Set an explicit
14
- * list to avoid holding unrelated configured database connections, or `[]`
15
- * when the job establishes any connections it needs itself. Left undefined,
16
- * jobs retain the existing behavior of checking out every active database.
17
- * @type {string[] | undefined}
18
- */
19
- static databaseIdentifiers: string[] | undefined;
20
- /**
21
- * Queue this job class runs on. Subclasses set e.g. `static queue = "builds"`
22
- * to route onto a queue with its own cluster-wide concurrency cap (configured
23
- * via `backgroundJobs.queues`). The `{queue}` enqueue option overrides it.
24
- * Left undefined, jobs run on the `"default"` queue.
25
- * @type {string | undefined}
26
- */
27
- static queue: string | undefined;
28
- /**
29
- * Optional process title shown for the runner while this job executes.
30
- * Velocious sets `process.title` to this for the duration of the job — so
31
- * `ps`/`top`/`htop` identify what a runner is doing — and restores the
32
- * runner's base title when the job finishes. Left undefined, the runner falls
33
- * back to `velocious job-runner: <JobName>`. Set e.g.
34
- * `static processTitle = "velocious media transcoder"` to give a job a
35
- * custom, human-readable title.
36
- * @type {string | undefined}
37
- */
38
- static processTitle: string | undefined;
39
- /**
40
- * Stops this performance and reschedules the same logical job row. This is
41
- * normal control flow: it does not count as a failure or consume a retry.
42
- * @param {number} delayMs - Non-negative safe-integer delay in milliseconds.
43
- * @returns {never} - This method never returns.
44
- */
45
- rescheduleIn(delayMs: number): never;
46
- /**
47
- * Runs job name.
48
- * @returns {string} - Job name.
49
- */
50
- static jobName(): string;
51
- /**
52
- * Folds this job class's static `queue` into the enqueue options unless the
53
- * caller already specified one.
54
- * @param {import("./types.js").BackgroundJobOptions | undefined} options - Job options.
55
- * @returns {import("./types.js").BackgroundJobOptions} - Options including the resolved queue.
56
- */
57
- static _withQueue(options: import("./types.js").BackgroundJobOptions | undefined): import("./types.js").BackgroundJobOptions;
9
+ export default class VelociousJob<TArgs extends Array<ReturnType<typeof JSON.parse>> = []> extends PlatformVelociousJob<TArgs> {
58
10
  /**
59
11
  * Runs perform later.
60
12
  * @param {...ReturnType<typeof JSON.parse>} args - Job args.
@@ -91,20 +43,5 @@ export default class VelociousJob<TArgs extends Array<ReturnType<typeof JSON.par
91
43
  * @returns {Promise<import("./types.js").BackgroundJobCancellationResult>} - Cancellation result.
92
44
  */
93
45
  static cancelScheduled(scheduleKey: string): Promise<import("./types.js").BackgroundJobCancellationResult>;
94
- /**
95
- * Runs split args and options.
96
- * @param {Array<ReturnType<typeof JSON.parse>>} args - Job args.
97
- * @returns {{jobArgs: Array<ReturnType<typeof JSON.parse>>, jobOptions: import("./types.js").BackgroundJobOptions}} - Split args and options.
98
- */
99
- static _splitArgsAndOptions(args: Array<ReturnType<typeof JSON.parse>>): {
100
- jobArgs: Array<ReturnType<typeof JSON.parse>>;
101
- jobOptions: import("./types.js").BackgroundJobOptions;
102
- };
103
- /**
104
- * Override in subclasses.
105
- * @param {TArgs} _args - Job args (the tuple this job class was parameterized with).
106
- * @returns {Promise<void>} - Resolves when complete.
107
- */
108
- perform(..._args: TArgs): Promise<void>;
109
46
  }
110
47
  //# sourceMappingURL=job.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/job.js"],"names":[],"mappings":"AAKA;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY,CAFoB,KAAK,SAA5C,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAS,EAAG;IAG5D;;;;;;OAMG;IACH,MAAM,CAAC,mBAAmB,EAFhB,MAAM,EAAE,GAAG,SAAS,CAEQ;IAEtC;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,EAFF,MAAM,GAAG,SAAS,CAEJ;IAExB;;;;;;;;;OASG;IACH,MAAM,CAAC,YAAY,EAFT,MAAM,GAAG,SAAS,CAEG;IAE/B;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAHT,MAGS,GAFP,KAAK,CAQjB;IAED;;;OAGG;IACH,MAAM,CAAC,OAAO,IAFD,MAAM,CAIlB;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,OAAO,EAHd,OAAO,YAAY,EAAE,oBAAoB,GAAG,SAG9B,GAFZ,OAAO,YAAY,EAAE,oBAAoB,CAUrD;IAED;;;;OAIG;IACH,OAAa,YAAY,CAAC,GAAG,IAAI,EAHnB,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,EAGV,GAFpB,OAAO,CAAC,MAAM,CAAC,CAW3B;IAED;;;;;;OAMG;IACH,OAAa,uBAAuB,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,EAJjD;QAAmD,IAAI,EAA/C,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAC5C;QAAyD,OAAO,AAAhE,CACA,EADQ,OAAO,YAAY,EAAE,oBAAoB,CACjD;KAEiD,GAFvC,OAAO,CAAC,MAAM,CAAC,CAU3B;IAED;;;;;;;OAOG;IACH,OAAa,gBAAgB,CAAC,EAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAC,EALvD;QAAqB,WAAW,EAAxB,MAAM,CACd;QAAmD,IAAI,EAA/C,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAC5C;QAAyD,OAAO,AAAhE,CACA,EADQ,OAAO,YAAY,EAAE,oBAAoB,CACjD;KAEuD,GAF7C,OAAO,CAAC,OAAO,YAAY,EAAE,8BAA8B,CAAC,CAWxE;IAED;;;;OAIG;IACH,OAAa,eAAe,CAAC,WAAW,EAH7B,MAG6B,GAF3B,OAAO,CAAC,OAAO,YAAY,EAAE,+BAA+B,CAAC,CAMzE;IAED;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAHrB,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAGd,GAFnB;QAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAAC,UAAU,EAAE,OAAO,YAAY,EAAE,oBAAoB,CAAA;KAAC,CAgBlH;IAED;;;;OAIG;IACG,OAAO,CAAC,GAAG,KAAK,EAHX,KAGW,GAFT,OAAO,CAAC,IAAI,CAAC,CAIzB;CACF"}
1
+ {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/job.js"],"names":[],"mappings":"AAGA,OAAO,oBAAoB,MAAM,mBAAmB,CAAA;AAOpD;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY,CAHoB,KAAK,SAA5C,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAS,EAAG,CAG5B,SAAQ,oBAAoB,CAF3B,KAAK,CAEsB;IAC5D;;;;OAIG;IACH,OAAa,YAAY,CAAC,GAAG,IAAI,EAHnB,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,EAGV,GAFpB,OAAO,CAAC,MAAM,CAAC,CAO3B;IAED;;;;;;OAMG;IACH,OAAa,uBAAuB,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,EAJjD;QAAmD,IAAI,EAA/C,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAC5C;QAAyD,OAAO,AAAhE,CACA,EADQ,OAAO,YAAY,EAAE,oBAAoB,CACjD;KAEiD,GAFvC,OAAO,CAAC,MAAM,CAAC,CAM3B;IAED;;;;;;;OAOG;IACH,OAAa,gBAAgB,CAAC,EAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAC,EALvD;QAAqB,WAAW,EAAxB,MAAM,CACd;QAAmD,IAAI,EAA/C,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAC5C;QAAyD,OAAO,AAAhE,CACA,EADQ,OAAO,YAAY,EAAE,oBAAoB,CACjD;KAEuD,GAF7C,OAAO,CAAC,OAAO,YAAY,EAAE,8BAA8B,CAAC,CAMxE;IAED;;;;OAIG;IACH,OAAa,eAAe,CAAC,WAAW,EAH7B,MAG6B,GAF3B,OAAO,CAAC,OAAO,YAAY,EAAE,+BAA+B,CAAC,CAMzE;CACF"}