velocious 1.0.662 → 1.0.663
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 +1 -1
- package/build/background-jobs/adapter.js +9 -0
- package/build/background-jobs/job-runner.js +3 -1
- package/build/background-jobs/local-adapter.js +7 -0
- package/build/background-jobs/local-store.js +113 -3
- package/build/background-jobs/main.js +35 -1
- package/build/background-jobs/pooled-runner-child.js +38 -0
- package/build/background-jobs/status-reporter.js +97 -1
- package/build/background-jobs/store.js +130 -4
- package/build/background-jobs/types.js +6 -1
- package/build/background-jobs/web/controller.js +4 -0
- package/build/background-jobs/worker.js +59 -0
- package/build/src/background-jobs/adapter.d.ts +17 -0
- package/build/src/background-jobs/adapter.d.ts.map +1 -1
- package/build/src/background-jobs/adapter.js +9 -1
- package/build/src/background-jobs/job-runner.d.ts +3 -1
- package/build/src/background-jobs/job-runner.d.ts.map +1 -1
- package/build/src/background-jobs/job-runner.js +5 -2
- package/build/src/background-jobs/local-adapter.d.ts +13 -0
- package/build/src/background-jobs/local-adapter.d.ts.map +1 -1
- package/build/src/background-jobs/local-adapter.js +7 -1
- package/build/src/background-jobs/local-store.d.ts +38 -0
- package/build/src/background-jobs/local-store.d.ts.map +1 -1
- package/build/src/background-jobs/local-store.js +117 -4
- package/build/src/background-jobs/main.d.ts +14 -0
- package/build/src/background-jobs/main.d.ts.map +1 -1
- package/build/src/background-jobs/main.js +35 -2
- package/build/src/background-jobs/pooled-runner-child.js +38 -1
- package/build/src/background-jobs/status-reporter.d.ts +51 -1
- package/build/src/background-jobs/status-reporter.d.ts.map +1 -1
- package/build/src/background-jobs/status-reporter.js +89 -2
- package/build/src/background-jobs/store.d.ts +48 -0
- package/build/src/background-jobs/store.d.ts.map +1 -1
- package/build/src/background-jobs/store.js +128 -5
- package/build/src/background-jobs/types.d.ts +34 -2
- package/build/src/background-jobs/types.d.ts.map +1 -1
- package/build/src/background-jobs/types.js +7 -2
- package/build/src/background-jobs/web/controller.d.ts.map +1 -1
- package/build/src/background-jobs/web/controller.js +5 -1
- package/build/src/background-jobs/worker.d.ts +20 -0
- package/build/src/background-jobs/worker.d.ts.map +1 -1
- package/build/src/background-jobs/worker.js +58 -1
- package/package.json +1 -1
- package/src/background-jobs/adapter.js +9 -0
- package/src/background-jobs/job-runner.js +3 -1
- package/src/background-jobs/local-adapter.js +7 -0
- package/src/background-jobs/local-store.js +113 -3
- package/src/background-jobs/main.js +35 -1
- package/src/background-jobs/pooled-runner-child.js +38 -0
- package/src/background-jobs/status-reporter.js +97 -1
- package/src/background-jobs/store.js +130 -4
- package/src/background-jobs/types.js +6 -1
- package/src/background-jobs/web/controller.js +4 -0
- package/src/background-jobs/worker.js +59 -0
|
@@ -1255,7 +1255,8 @@ export default class BackgroundJobsStore extends BackgroundJobsAdapter {
|
|
|
1255
1255
|
status: "handed_off",
|
|
1256
1256
|
handed_off_at_ms: handedOffAtMs,
|
|
1257
1257
|
handoff_id: handoffId,
|
|
1258
|
-
worker_id: workerId || null
|
|
1258
|
+
worker_id: workerId || null,
|
|
1259
|
+
...this._clearedChildAcceptanceData()
|
|
1259
1260
|
},
|
|
1260
1261
|
conditions: {concurrency_key: queuedJob.concurrencyKey, id: jobId, status: "queued"}
|
|
1261
1262
|
})
|
|
@@ -1269,6 +1270,7 @@ export default class BackgroundJobsStore extends BackgroundJobsAdapter {
|
|
|
1269
1270
|
/** @type {import("./types.js").BackgroundJobRow} */
|
|
1270
1271
|
const handedOffJob = {
|
|
1271
1272
|
...queuedJob,
|
|
1273
|
+
...this._clearedChildAcceptanceRow(),
|
|
1272
1274
|
handedOffAtMs,
|
|
1273
1275
|
handoffId,
|
|
1274
1276
|
status: "handed_off",
|
|
@@ -1315,6 +1317,67 @@ export default class BackgroundJobsStore extends BackgroundJobsAdapter {
|
|
|
1315
1317
|
})
|
|
1316
1318
|
}
|
|
1317
1319
|
|
|
1320
|
+
/**
|
|
1321
|
+
* Records pooled-child acceptance evidence for an active handoff: when the
|
|
1322
|
+
* executing runner child received and/or started the job, plus that child's
|
|
1323
|
+
* stable identity and pid. Only the fields supplied are written, so a
|
|
1324
|
+
* received-then-started observation lands as two fenced partial updates. The
|
|
1325
|
+
* update is fenced by the exact active handoff lease, so a report for a
|
|
1326
|
+
* reclaimed or re-handed-off job is dropped instead of stamping the wrong
|
|
1327
|
+
* attempt.
|
|
1328
|
+
* @param {object} args - Options.
|
|
1329
|
+
* @param {string} args.jobId - Job id.
|
|
1330
|
+
* @param {string} [args.handoffId] - Handoff lease id.
|
|
1331
|
+
* @param {string} [args.workerId] - Worker id.
|
|
1332
|
+
* @param {number} [args.handedOffAtMs] - Handed off timestamp.
|
|
1333
|
+
* @param {number} [args.receivedAtMs] - Epoch ms the runner child received the job.
|
|
1334
|
+
* @param {number} [args.startedAtMs] - Epoch ms the job's perform started in the child.
|
|
1335
|
+
* @param {string} [args.childInstanceId] - Stable pooled child identity.
|
|
1336
|
+
* @param {number} [args.childPid] - Pooled child OS pid.
|
|
1337
|
+
* @returns {Promise<boolean>} - Whether the fenced report was accepted.
|
|
1338
|
+
*/
|
|
1339
|
+
async markChildAccepted({jobId, handoffId, workerId, handedOffAtMs, receivedAtMs, startedAtMs, childInstanceId, childPid}) {
|
|
1340
|
+
await this.ensureReady()
|
|
1341
|
+
|
|
1342
|
+
return await this._serializedConnectionMutation(async (db) => {
|
|
1343
|
+
const job = await this._getJobRowById(db, jobId)
|
|
1344
|
+
|
|
1345
|
+
if (!job) return false
|
|
1346
|
+
if (!this._shouldAcceptReport({job, handoffId, workerId, handedOffAtMs})) return false
|
|
1347
|
+
|
|
1348
|
+
const data = {}
|
|
1349
|
+
if (typeof receivedAtMs === "number") data.child_received_at_ms = receivedAtMs
|
|
1350
|
+
if (typeof startedAtMs === "number") data.child_started_at_ms = startedAtMs
|
|
1351
|
+
if (typeof childInstanceId === "string") data.child_instance_id = childInstanceId
|
|
1352
|
+
if (typeof childPid === "number") data.child_pid = childPid
|
|
1353
|
+
if (Object.keys(data).length === 0) return false
|
|
1354
|
+
|
|
1355
|
+
const affectedRows = await this._updateAffectedRows(db, {
|
|
1356
|
+
tableName: JOBS_TABLE,
|
|
1357
|
+
data,
|
|
1358
|
+
conditions: this._activeHandoffConditions(job)
|
|
1359
|
+
})
|
|
1360
|
+
|
|
1361
|
+
return affectedRows === 1
|
|
1362
|
+
})
|
|
1363
|
+
}
|
|
1364
|
+
|
|
1365
|
+
/**
|
|
1366
|
+
* Returns the database data that clears pooled-child acceptance evidence.
|
|
1367
|
+
* @returns {Record<string, ReturnType<typeof JSON.parse>>} - Cleared acceptance columns.
|
|
1368
|
+
*/
|
|
1369
|
+
_clearedChildAcceptanceData() {
|
|
1370
|
+
return {child_instance_id: null, child_pid: null, child_received_at_ms: null, child_started_at_ms: null}
|
|
1371
|
+
}
|
|
1372
|
+
|
|
1373
|
+
/**
|
|
1374
|
+
* Returns the row-shape counterpart of the cleared acceptance columns.
|
|
1375
|
+
* @returns {Pick<import("./types.js").BackgroundJobRow, "childInstanceId" | "childPid" | "childReceivedAtMs" | "childStartedAtMs">} - Cleared acceptance fields.
|
|
1376
|
+
*/
|
|
1377
|
+
_clearedChildAcceptanceRow() {
|
|
1378
|
+
return {childInstanceId: null, childPid: null, childReceivedAtMs: null, childStartedAtMs: null}
|
|
1379
|
+
}
|
|
1380
|
+
|
|
1318
1381
|
/**
|
|
1319
1382
|
* Returns an active handoff to the queue at a caller-requested future time.
|
|
1320
1383
|
* This is normal job control flow: it preserves failure attempts and metadata.
|
|
@@ -1345,7 +1408,8 @@ export default class BackgroundJobsStore extends BackgroundJobsAdapter {
|
|
|
1345
1408
|
scheduled_at_ms: scheduledAtMs,
|
|
1346
1409
|
handed_off_at_ms: null,
|
|
1347
1410
|
handoff_id: null,
|
|
1348
|
-
worker_id: null
|
|
1411
|
+
worker_id: null,
|
|
1412
|
+
...this._clearedChildAcceptanceData()
|
|
1349
1413
|
},
|
|
1350
1414
|
conditions: this._activeHandoffConditions(job)
|
|
1351
1415
|
})
|
|
@@ -1378,7 +1442,8 @@ export default class BackgroundJobsStore extends BackgroundJobsAdapter {
|
|
|
1378
1442
|
scheduled_at_ms: this.clock.now(),
|
|
1379
1443
|
handed_off_at_ms: null,
|
|
1380
1444
|
handoff_id: null,
|
|
1381
|
-
worker_id: null
|
|
1445
|
+
worker_id: null,
|
|
1446
|
+
...this._clearedChildAcceptanceData()
|
|
1382
1447
|
},
|
|
1383
1448
|
conditions: {handoff_id: handoffId, id: jobId, status: "handed_off"}
|
|
1384
1449
|
})
|
|
@@ -2063,6 +2128,10 @@ export default class BackgroundJobsStore extends BackgroundJobsAdapter {
|
|
|
2063
2128
|
table.string("concurrency_key", {null: true, index: true})
|
|
2064
2129
|
table.integer("max_concurrency", {null: true})
|
|
2065
2130
|
table.bigint("timeout_ms", {null: true})
|
|
2131
|
+
table.bigint("child_received_at_ms", {null: true})
|
|
2132
|
+
table.bigint("child_started_at_ms", {null: true})
|
|
2133
|
+
table.string("child_instance_id", {null: true})
|
|
2134
|
+
table.integer("child_pid", {null: true})
|
|
2066
2135
|
|
|
2067
2136
|
await db.createTable(table)
|
|
2068
2137
|
}
|
|
@@ -2156,9 +2225,56 @@ export default class BackgroundJobsStore extends BackgroundJobsAdapter {
|
|
|
2156
2225
|
await this._ensureQueueColumn(db)
|
|
2157
2226
|
await this._ensureScheduleKeyColumn(db)
|
|
2158
2227
|
await this._ensureJobTimeoutColumn(db)
|
|
2228
|
+
await this._ensureChildAcceptanceColumns(db)
|
|
2159
2229
|
await this._ensureJobsTableIndexesOnce(db)
|
|
2160
2230
|
}
|
|
2161
2231
|
|
|
2232
|
+
/**
|
|
2233
|
+
* Idempotently adds the pooled-child acceptance evidence columns to existing
|
|
2234
|
+
* job tables. They record when the executing runner child received and
|
|
2235
|
+
* started a job plus that child's identity, so a handed-off job can be told
|
|
2236
|
+
* apart from one whose runner never picked it up.
|
|
2237
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
2238
|
+
* @returns {Promise<void>} - Resolves when ensured.
|
|
2239
|
+
*/
|
|
2240
|
+
async _ensureChildAcceptanceColumns(db) {
|
|
2241
|
+
const lockName = `${MIGRATION_SCOPE}:child_acceptance_columns`
|
|
2242
|
+
const acquired = await db.acquireAdvisoryLock(lockName)
|
|
2243
|
+
|
|
2244
|
+
if (!acquired) throw new Error("Failed to acquire background jobs child-acceptance schema lock")
|
|
2245
|
+
|
|
2246
|
+
try {
|
|
2247
|
+
db.clearSchemaCache()
|
|
2248
|
+
const table = await db.getTableByNameOrFail(JOBS_TABLE)
|
|
2249
|
+
const tableData = new TableData(JOBS_TABLE)
|
|
2250
|
+
let added = false
|
|
2251
|
+
|
|
2252
|
+
if (!(await table.getColumnByName("child_received_at_ms"))) {
|
|
2253
|
+
tableData.bigint("child_received_at_ms", {null: true})
|
|
2254
|
+
added = true
|
|
2255
|
+
}
|
|
2256
|
+
if (!(await table.getColumnByName("child_started_at_ms"))) {
|
|
2257
|
+
tableData.bigint("child_started_at_ms", {null: true})
|
|
2258
|
+
added = true
|
|
2259
|
+
}
|
|
2260
|
+
if (!(await table.getColumnByName("child_instance_id"))) {
|
|
2261
|
+
tableData.string("child_instance_id", {null: true})
|
|
2262
|
+
added = true
|
|
2263
|
+
}
|
|
2264
|
+
if (!(await table.getColumnByName("child_pid"))) {
|
|
2265
|
+
tableData.integer("child_pid", {null: true})
|
|
2266
|
+
added = true
|
|
2267
|
+
}
|
|
2268
|
+
|
|
2269
|
+
if (added) {
|
|
2270
|
+
for (const sql of await db.alterTableSQLs(tableData)) await db.query(sql)
|
|
2271
|
+
db.clearSchemaCache()
|
|
2272
|
+
}
|
|
2273
|
+
} finally {
|
|
2274
|
+
await db.releaseAdvisoryLock(lockName)
|
|
2275
|
+
}
|
|
2276
|
+
}
|
|
2277
|
+
|
|
2162
2278
|
/**
|
|
2163
2279
|
* Repairs secondary indexes that older add-column upgrades declared but did
|
|
2164
2280
|
* not create on every SQL driver. The migration ledger keeps routine store
|
|
@@ -2514,6 +2630,7 @@ export default class BackgroundJobsStore extends BackgroundJobsAdapter {
|
|
|
2514
2630
|
/** @type {import("./types.js").BackgroundJobRow} */
|
|
2515
2631
|
const transitionedJob = {
|
|
2516
2632
|
...job,
|
|
2633
|
+
...(shouldRetry ? this._clearedChildAcceptanceRow() : {}),
|
|
2517
2634
|
attempts: nextAttempt,
|
|
2518
2635
|
handedOffAtMs: null,
|
|
2519
2636
|
lastError: failureMessage,
|
|
@@ -2553,6 +2670,11 @@ export default class BackgroundJobsStore extends BackgroundJobsAdapter {
|
|
|
2553
2670
|
last_error: failureMessage
|
|
2554
2671
|
}
|
|
2555
2672
|
|
|
2673
|
+
// A retry starts a fresh handoff with a possibly different runner, so the
|
|
2674
|
+
// previous child's acceptance evidence must not leak into the next attempt.
|
|
2675
|
+
// Terminal failures keep it as historical evidence for the lost attempt.
|
|
2676
|
+
if (shouldRetry) Object.assign(update, this._clearedChildAcceptanceData())
|
|
2677
|
+
|
|
2556
2678
|
this._applyOrphanedFailureUpdate({markOrphaned, now, update})
|
|
2557
2679
|
this._applyFailureStatusUpdate({markOrphaned, now, scheduledAt, shouldRetry, update})
|
|
2558
2680
|
|
|
@@ -2630,7 +2752,11 @@ export default class BackgroundJobsStore extends BackgroundJobsAdapter {
|
|
|
2630
2752
|
lastError: row.last_error ? String(row.last_error) : null,
|
|
2631
2753
|
concurrencyKey: row.concurrency_key ? String(row.concurrency_key) : null,
|
|
2632
2754
|
maxConcurrency: this._normalizeNumber(row.max_concurrency),
|
|
2633
|
-
timeoutMs: this._normalizeNumber(row.timeout_ms)
|
|
2755
|
+
timeoutMs: this._normalizeNumber(row.timeout_ms),
|
|
2756
|
+
childReceivedAtMs: this._normalizeNumber(row.child_received_at_ms),
|
|
2757
|
+
childStartedAtMs: this._normalizeNumber(row.child_started_at_ms),
|
|
2758
|
+
childInstanceId: row.child_instance_id ? String(row.child_instance_id) : null,
|
|
2759
|
+
childPid: this._normalizeNumber(row.child_pid)
|
|
2634
2760
|
}
|
|
2635
2761
|
}
|
|
2636
2762
|
|
|
@@ -169,6 +169,10 @@
|
|
|
169
169
|
* @property {string | null} concurrencyKey - Durable concurrency key.
|
|
170
170
|
* @property {number | null} maxConcurrency - Durable per-key cap.
|
|
171
171
|
* @property {number | null} timeoutMs - Per-job wall-clock timeout override, or null when omitted.
|
|
172
|
+
* @property {number | null} childReceivedAtMs - Epoch ms when the executing pooled child's event loop processed the job message, or null when no runner accepted it yet.
|
|
173
|
+
* @property {number | null} childStartedAtMs - Epoch ms when the job's perform started in the pooled child, or null when it never started.
|
|
174
|
+
* @property {string | null} childInstanceId - Stable identity of the pooled child process that accepted the job, or null.
|
|
175
|
+
* @property {number | null} childPid - OS pid of the pooled child process that accepted the job, or null.
|
|
172
176
|
*/
|
|
173
177
|
/**
|
|
174
178
|
* @typedef {"queued" | "handed_off" | null} BackgroundJobReplacementPreviousStatus
|
|
@@ -219,6 +223,7 @@
|
|
|
219
223
|
* @typedef {{type: "schedule-cancelled", jobId: string | null, outcome: BackgroundJobCancellationOutcome}} BackgroundJobScheduleCancelledMessage
|
|
220
224
|
* @typedef {{type: "cancel-scheduled-error", error?: string}} BackgroundJobCancelScheduledErrorMessage
|
|
221
225
|
* @typedef {{type: "job", payload: BackgroundJobPayload}} BackgroundJobJobMessage
|
|
226
|
+
* @typedef {{type: "job-accepted", jobId: string, handoffId?: string, workerId?: string, handedOffAtMs?: number, receivedAtMs?: number, startedAtMs?: number, childInstanceId?: string, childPid?: number}} BackgroundJobAcceptedMessage
|
|
222
227
|
* @typedef {{type: "job-complete", jobId: string, handoffId?: string, workerId?: string, handedOffAtMs?: number}} BackgroundJobCompleteMessage
|
|
223
228
|
* @typedef {{type: "job-failed", jobId: string, error?: ReturnType<typeof JSON.parse>, handoffId?: string, workerId?: string, handedOffAtMs?: number, runnerFailure?: PooledRunnerFailure}} BackgroundJobFailedMessage
|
|
224
229
|
* @typedef {{type: "job-reschedule", jobId: string, delayMs: number, handoffId?: string, workerId?: string, handedOffAtMs?: number}} BackgroundJobRescheduleMessage
|
|
@@ -226,7 +231,7 @@
|
|
|
226
231
|
* @typedef {{type: "job-update-error", jobId: string, error?: string}} BackgroundJobUpdateErrorMessage
|
|
227
232
|
*/
|
|
228
233
|
/**
|
|
229
|
-
* @typedef {BackgroundJobHelloMessage | BackgroundJobGenerationAcceptedMessage | BackgroundJobGenerationRejectedMessage | BackgroundJobReadyMessage | BackgroundJobDrainingMessage | BackgroundJobHeartbeatMessage | BackgroundJobEnqueueMessage | BackgroundJobEnqueuedMessage | BackgroundJobEnqueueErrorMessage | BackgroundJobReplaceScheduledMessage | BackgroundJobScheduleReplacedMessage | BackgroundJobReplaceScheduledErrorMessage | BackgroundJobCancelScheduledMessage | BackgroundJobScheduleCancelledMessage | BackgroundJobCancelScheduledErrorMessage | BackgroundJobJobMessage | BackgroundJobCompleteMessage | BackgroundJobFailedMessage | BackgroundJobRescheduleMessage | BackgroundJobUpdatedMessage | BackgroundJobUpdateErrorMessage} BackgroundJobSocketMessage
|
|
234
|
+
* @typedef {BackgroundJobHelloMessage | BackgroundJobGenerationAcceptedMessage | BackgroundJobGenerationRejectedMessage | BackgroundJobReadyMessage | BackgroundJobDrainingMessage | BackgroundJobHeartbeatMessage | BackgroundJobEnqueueMessage | BackgroundJobEnqueuedMessage | BackgroundJobEnqueueErrorMessage | BackgroundJobReplaceScheduledMessage | BackgroundJobScheduleReplacedMessage | BackgroundJobReplaceScheduledErrorMessage | BackgroundJobCancelScheduledMessage | BackgroundJobScheduleCancelledMessage | BackgroundJobCancelScheduledErrorMessage | BackgroundJobJobMessage | BackgroundJobAcceptedMessage | BackgroundJobCompleteMessage | BackgroundJobFailedMessage | BackgroundJobRescheduleMessage | BackgroundJobUpdatedMessage | BackgroundJobUpdateErrorMessage} BackgroundJobSocketMessage
|
|
230
235
|
*/
|
|
231
236
|
|
|
232
237
|
export const nothing = {}
|
|
@@ -192,6 +192,10 @@ export default class VelociousBackgroundJobsWebController extends Controller {
|
|
|
192
192
|
args: redactArgs ? undefined : job.args,
|
|
193
193
|
argsRedacted: redactArgs,
|
|
194
194
|
attempts: job.attempts,
|
|
195
|
+
childInstanceId: job.childInstanceId,
|
|
196
|
+
childPid: job.childPid,
|
|
197
|
+
childReceivedAtMs: job.childReceivedAtMs,
|
|
198
|
+
childStartedAtMs: job.childStartedAtMs,
|
|
195
199
|
completedAtMs: job.completedAtMs,
|
|
196
200
|
createdAtMs: job.createdAtMs,
|
|
197
201
|
executionMode: job.executionMode,
|
|
@@ -56,6 +56,12 @@ const FORKED_RUNNER_ENTRY_PATH = fileURLToPath(new URL("./forked-runner-child.js
|
|
|
56
56
|
const POOLED_RUNNER_ENTRY_PATH = fileURLToPath(new URL("./pooled-runner-child.js", import.meta.url))
|
|
57
57
|
/** How often the worker sends a liveness heartbeat to the main. */
|
|
58
58
|
const HEARTBEAT_INTERVAL_MS = 15000
|
|
59
|
+
/**
|
|
60
|
+
* Max time the worker spends retrying one pooled child's acceptance report
|
|
61
|
+
* before dropping it. Acceptance evidence is diagnostic — a persistent
|
|
62
|
+
* main/DB outage must not hold runner capacity hostage.
|
|
63
|
+
*/
|
|
64
|
+
const CHILD_ACCEPTANCE_REPORT_MAX_DURATION_MS = 10000
|
|
59
65
|
/** TCP keepalive so a half-open connection to the main surfaces as a close. */
|
|
60
66
|
const SOCKET_KEEPALIVE_MS = 10000
|
|
61
67
|
/**
|
|
@@ -72,6 +78,28 @@ function positiveInteger(value) {
|
|
|
72
78
|
return typeof value === "number" && Number.isInteger(value) && value > 0 ? value : undefined
|
|
73
79
|
}
|
|
74
80
|
|
|
81
|
+
/**
|
|
82
|
+
* Checks whether an IPC value is a pooled child's acceptance observation for
|
|
83
|
+
* one job. The child carries its exact handoff lease so the worker can forward
|
|
84
|
+
* the report without depending on its in-flight entry still existing.
|
|
85
|
+
* @param {ReturnType<typeof JSON.parse>} message - IPC message.
|
|
86
|
+
* @returns {message is {type: "job-received" | "job-started", jobId: string, handoffId?: string, workerId?: string, handedOffAtMs?: number, receivedAtMs?: number, startedAtMs?: number, childInstanceId?: string, childPid?: number}} - Whether this is a valid acceptance message.
|
|
87
|
+
*/
|
|
88
|
+
function isChildAcceptanceMessage(message) {
|
|
89
|
+
if (!message || typeof message !== "object") return false
|
|
90
|
+
const record = /** @type {Record<string, ReturnType<typeof JSON.parse>>} */ (message)
|
|
91
|
+
|
|
92
|
+
return (record.type === "job-received" || record.type === "job-started")
|
|
93
|
+
&& typeof record.jobId === "string"
|
|
94
|
+
&& (record.handoffId === undefined || typeof record.handoffId === "string")
|
|
95
|
+
&& (record.workerId === undefined || typeof record.workerId === "string")
|
|
96
|
+
&& (record.handedOffAtMs === undefined || typeof record.handedOffAtMs === "number")
|
|
97
|
+
&& (record.receivedAtMs === undefined || typeof record.receivedAtMs === "number")
|
|
98
|
+
&& (record.startedAtMs === undefined || typeof record.startedAtMs === "number")
|
|
99
|
+
&& (record.childInstanceId === undefined || typeof record.childInstanceId === "string")
|
|
100
|
+
&& (record.childPid === undefined || Number.isInteger(record.childPid))
|
|
101
|
+
}
|
|
102
|
+
|
|
75
103
|
/**
|
|
76
104
|
* Normalizes a candidate pooled-runner resource limit.
|
|
77
105
|
* @param {number | undefined} value - Candidate positive number.
|
|
@@ -1225,6 +1253,10 @@ export default class BackgroundJobsWorker {
|
|
|
1225
1253
|
if (state) state.started = true
|
|
1226
1254
|
return
|
|
1227
1255
|
}
|
|
1256
|
+
if (isChildAcceptanceMessage(message)) {
|
|
1257
|
+
this._reportChildAccepted(message)
|
|
1258
|
+
return
|
|
1259
|
+
}
|
|
1228
1260
|
if (record.type !== "job-outcome" || !state || state.settling || typeof record.jobId !== "string") return
|
|
1229
1261
|
state.started = true
|
|
1230
1262
|
const entry = state.inflight.get(record.jobId)
|
|
@@ -1258,6 +1290,33 @@ export default class BackgroundJobsWorker {
|
|
|
1258
1290
|
this._terminateIfDrained(child)
|
|
1259
1291
|
}
|
|
1260
1292
|
|
|
1293
|
+
/**
|
|
1294
|
+
* Forwards one pooled child's acceptance observation to main as a bounded
|
|
1295
|
+
* diagnostic report. The child carries its exact handoff lease, so a timeout
|
|
1296
|
+
* or outcome that already settled the worker's in-flight entry cannot lose
|
|
1297
|
+
* the fencing. A report that never lands degrades phase diagnostics for that
|
|
1298
|
+
* job only — it must never block or fail the job itself.
|
|
1299
|
+
* @param {{type: "job-received" | "job-started", jobId: string, handoffId?: string, workerId?: string, handedOffAtMs?: number, receivedAtMs?: number, startedAtMs?: number, childInstanceId?: string, childPid?: number}} message - Validated child acceptance message.
|
|
1300
|
+
* @returns {void}
|
|
1301
|
+
*/
|
|
1302
|
+
_reportChildAccepted(message) {
|
|
1303
|
+
if (!this.statusReporter) return
|
|
1304
|
+
|
|
1305
|
+
void this.statusReporter.reportChildAcceptedWithRetry({
|
|
1306
|
+
jobId: message.jobId,
|
|
1307
|
+
handoffId: message.handoffId,
|
|
1308
|
+
workerId: message.workerId,
|
|
1309
|
+
handedOffAtMs: message.handedOffAtMs,
|
|
1310
|
+
receivedAtMs: message.receivedAtMs,
|
|
1311
|
+
startedAtMs: message.startedAtMs,
|
|
1312
|
+
childInstanceId: message.childInstanceId,
|
|
1313
|
+
childPid: message.childPid,
|
|
1314
|
+
maxDurationMs: CHILD_ACCEPTANCE_REPORT_MAX_DURATION_MS
|
|
1315
|
+
}).catch((error) => {
|
|
1316
|
+
console.error("Background job child-acceptance reporting failed:", error)
|
|
1317
|
+
})
|
|
1318
|
+
}
|
|
1319
|
+
|
|
1261
1320
|
/**
|
|
1262
1321
|
* Marks a pooled child for retirement and eagerly spawns a single replacement
|
|
1263
1322
|
* (1-for-1) so its capacity is restored immediately without waiting for it to
|
|
@@ -130,6 +130,23 @@ export default class BackgroundJobsAdapter {
|
|
|
130
130
|
workerId?: string;
|
|
131
131
|
handedOffAtMs?: number;
|
|
132
132
|
}): Promise<boolean>;
|
|
133
|
+
/**
|
|
134
|
+
* Records pooled-child acceptance evidence (received/started timestamps plus
|
|
135
|
+
* runner identity) for a handed-off job, fenced by its active handoff lease.
|
|
136
|
+
* Only the fields supplied are written.
|
|
137
|
+
* @param {{jobId: string, handoffId?: string, workerId?: string, handedOffAtMs?: number, receivedAtMs?: number, startedAtMs?: number, childInstanceId?: string, childPid?: number}} _args - Acceptance report.
|
|
138
|
+
* @returns {Promise<boolean>} - Whether the fenced report was accepted.
|
|
139
|
+
*/
|
|
140
|
+
markChildAccepted(_args: {
|
|
141
|
+
jobId: string;
|
|
142
|
+
handoffId?: string;
|
|
143
|
+
workerId?: string;
|
|
144
|
+
handedOffAtMs?: number;
|
|
145
|
+
receivedAtMs?: number;
|
|
146
|
+
startedAtMs?: number;
|
|
147
|
+
childInstanceId?: string;
|
|
148
|
+
childPid?: number;
|
|
149
|
+
}): Promise<boolean>;
|
|
133
150
|
/**
|
|
134
151
|
* Returns a handed-off job to its schedule.
|
|
135
152
|
* @param {{jobId: string, delayMs: number, handoffId?: string, workerId?: string, handedOffAtMs?: number}} _args - Reschedule report.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/adapter.js"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/adapter.js"],"names":[],"mappings":"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"}
|
|
@@ -111,6 +111,14 @@ export default class BackgroundJobsAdapter {
|
|
|
111
111
|
* @returns {Promise<boolean>} - Whether the fenced report was accepted.
|
|
112
112
|
*/
|
|
113
113
|
async markCompleted(_args) { throw new Error("BackgroundJobsAdapter#markCompleted is not implemented"); }
|
|
114
|
+
/**
|
|
115
|
+
* Records pooled-child acceptance evidence (received/started timestamps plus
|
|
116
|
+
* runner identity) for a handed-off job, fenced by its active handoff lease.
|
|
117
|
+
* Only the fields supplied are written.
|
|
118
|
+
* @param {{jobId: string, handoffId?: string, workerId?: string, handedOffAtMs?: number, receivedAtMs?: number, startedAtMs?: number, childInstanceId?: string, childPid?: number}} _args - Acceptance report.
|
|
119
|
+
* @returns {Promise<boolean>} - Whether the fenced report was accepted.
|
|
120
|
+
*/
|
|
121
|
+
async markChildAccepted(_args) { throw new Error("BackgroundJobsAdapter#markChildAccepted is not implemented"); }
|
|
114
122
|
/**
|
|
115
123
|
* Returns a handed-off job to its schedule.
|
|
116
124
|
* @param {{jobId: string, delayMs: number, handoffId?: string, workerId?: string, handedOffAtMs?: number}} _args - Reschedule report.
|
|
@@ -162,4 +170,4 @@ export default class BackgroundJobsAdapter {
|
|
|
162
170
|
*/
|
|
163
171
|
async pruneTerminalJobs(_args = {}) { throw new Error("BackgroundJobsAdapter#pruneTerminalJobs is not implemented"); }
|
|
164
172
|
}
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvYWRhcHRlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVo7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8scUJBQXFCO0lBQ3hDOzs7OztPQUtHO0lBQ0gsZ0NBQWdDLEtBQUssT0FBTyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBRW5EOzs7OztPQUtHO0lBQ0gsK0JBQStCLEtBQUssT0FBTyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBRWxEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxXQUFXLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUUvRjs7O09BR0c7SUFDSCxLQUFLLENBQUMsS0FBSyxLQUFJLENBQUM7SUFFaEI7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLE1BQU07UUFDVixPQUFPLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFBO0lBQ3RCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLElBQUcsQ0FBQztJQUVyQzs7O09BR0c7SUFDSCxLQUFLLENBQUMseUJBQXlCLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQyxvRUFBb0UsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUUzSDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLDBCQUEwQjtRQUM5QixPQUFPLEVBQUMsY0FBYyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLEVBQUMsQ0FBQTtJQUN0RyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQSxDQUFDLENBQUM7SUFFNUY7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyxrRUFBa0UsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUU1SDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEtBQUssSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRTlHOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUFDLFlBQVksSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRW5IOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLEVBQUUsSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRW5IOzs7T0FHRztJQUNILEtBQUssQ0FBQyxnQkFBZ0IsS0FBSyxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRXpHOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRTNGOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQSxDQUFDLENBQUM7SUFFeEc7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQSxDQUFDLENBQUM7SUFFeEc7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBSyxJQUFJLE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQSxDQUFDLENBQUM7SUFFNUc7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyw4REFBOEQsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUVwSDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLHNCQUFzQixDQUFDLEtBQUssSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLGlFQUFpRSxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRTFIOzs7O09BSUc7SUFDSCxLQUFLLENBQUMscUJBQXFCLEtBQUssT0FBTyxFQUFFLENBQUEsQ0FBQyxDQUFDO0lBRTNDOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLElBQUksT0FBTyxFQUFFLENBQUEsQ0FBQyxDQUFDO0lBRS9DOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRWxHOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLEVBQUUsSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRW5IOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBSyxHQUFHLEVBQUUsSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLDREQUE0RCxDQUFDLENBQUEsQ0FBQyxDQUFDO0NBQ3RIIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogUGxhdGZvcm0tbmV1dHJhbCBwZXJzaXN0ZW5jZSBhbmQgbGlmZWN5Y2xlIGNvbnRyYWN0IHVzZWQgYnkgdGhlIGJhY2tncm91bmQtam9ic1xuICogcnVudGltZS4gQWRhcHRlcnMgb3duIGR1cmFibGUgcXVldWUgc3RhdGU7IHRyYW5zcG9ydCBhbmQgam9iIGV4ZWN1dGlvbiByZW1haW5cbiAqIHNlcGFyYXRlIGNvbmNlcm5zLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIge1xuICAvKipcbiAgICogRGVjbGFyZXMgZXhhY3QgZHVyYWJsZSBmZW5jaW5nIHN1cHBvcnQgZm9yIHJlbGVhc2Utc2NvcGVkIGdlbmVyYXRpb25zLlxuICAgKiBUaGlyZC1wYXJ0eSBhZGFwdGVycyBtdXN0IG92ZXJyaWRlIHRoaXMgb25seSBhZnRlciBpbXBsZW1lbnRpbmcgdGhlIGZ1bGxcbiAgICogc25hcHNob3QsIG93bmVyLCByZXBvcnQsIGFuZCByZWNvdmVyeSBjb250cmFjdC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciBnZW5lcmF0aW9uIG1vZGUgaXMgc3VwcG9ydGVkLlxuICAgKi9cbiAgc3VwcG9ydHNSZWxlYXNlU2NvcGVkR2VuZXJhdGlvbnMoKSB7IHJldHVybiBmYWxzZSB9XG5cbiAgLyoqXG4gICAqIERlY2xhcmVzIGF0b21pYyBwcm9kdWNlci1oYW5kb2ZmIHZhbGlkYXRpb24gcGx1cyBlbnF1ZXVlIHN1cHBvcnQuIEFcbiAgICogZ2VuZXJhdGlvbi1jYXBhYmxlIGFkYXB0ZXIgbXVzdCBvdmVycmlkZSB0aGlzIHRvZ2V0aGVyIHdpdGhcbiAgICogYGVucXVldWVGcm9tT3duZWRIYW5kb2ZmYC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciBhdG9taWMgb3duZWQgZW5xdWV1ZSBpcyBzdXBwb3J0ZWQuXG4gICAqL1xuICBzdXBwb3J0c093bmVkRW5xdWV1ZUZyb21IYW5kb2ZmKCkgeyByZXR1cm4gZmFsc2UgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIHRoZSBhZGFwdGVyIGNhbiBhY2NlcHQgd29yay5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiByZWFkeS5cbiAgICovXG4gIGFzeW5jIGVuc3VyZVJlYWR5KCkgeyB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIjZW5zdXJlUmVhZHkgaXMgbm90IGltcGxlbWVudGVkXCIpIH1cblxuICAvKipcbiAgICogQ2xvc2VzIGFkYXB0ZXItb3duZWQgcmVzb3VyY2VzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyBhZnRlciBjbG9zZS5cbiAgICovXG4gIGFzeW5jIGNsb3NlKCkge31cblxuICAvKipcbiAgICogUmVwb3J0cyBhZGFwdGVyIGhlYWx0aC5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9ic0hlYWx0aD59IC0gQWRhcHRlciBoZWFsdGguXG4gICAqL1xuICBhc3luYyBoZWFsdGgoKSB7XG4gICAgcmV0dXJuIHtyZWFkeTogdHJ1ZX1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIGZyYW1ld29yay1vd25lZCBwZXJzaXN0ZW5jZSBkdXJpbmcgYSBtaWdyYXRpb24gbGlmZWN5Y2xlLiBOb24tU1FMXG4gICAqIGFkYXB0ZXJzIG1heSBsZWF2ZSB0aGlzIGFzIGEgbm8tb3AuXG4gICAqIEBwYXJhbSB7e2RiczogUmVjb3JkPHN0cmluZywgaW1wb3J0KFwiLi4vZGF0YWJhc2UvZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHQ+fX0gX2FyZ3MgLSBNaWdyYXRlZCBkYXRhYmFzZXMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBlbnN1cmVGcmFtZXdvcmtTY2hlbWEoX2FyZ3MpIHt9XG5cbiAgLyoqXG4gICAqIFJlY29uY2lsZXMgY29uZmlndXJlZCBxdWV1ZSBsaW1pdHMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIGFmdGVyIHJlY29uY2lsaWF0aW9uLlxuICAgKi9cbiAgYXN5bmMgcmVjb25jaWxlUXVldWVDb25jdXJyZW5jeSgpIHsgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZEpvYnNBZGFwdGVyI3JlY29uY2lsZVF1ZXVlQ29uY3VycmVuY3kgaXMgbm90IGltcGxlbWVudGVkXCIpIH1cblxuICAvKipcbiAgICogUmVwYWlycyBkcmlmdCBpbiBhZGFwdGVyLW93bmVkIGR1cmFibGUgYWN0aXZlIGNvbmN1cnJlbmN5IGNvdW50cy4gQWRhcHRlcnNcbiAgICogd2l0aG91dCBkdXBsaWNhdGUgYWN0aXZlLWNvdW50IHBlcnNpc3RlbmNlIGNhbiBrZWVwIHRoaXMgbm8tb3AgcmVzdWx0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JDb25jdXJyZW5jeVJlY29uY2lsaWF0aW9uPn0gLSBSZXBhaXIgc3VtbWFyeS5cbiAgICovXG4gIGFzeW5jIHJlY29uY2lsZUFjdGl2ZUNvbmN1cnJlbmN5KCkge1xuICAgIHJldHVybiB7Y2FuZGlkYXRlQ291bnQ6IDAsIGNoZWNrZWRDb3VudDogMCwgcmVwYWlyZWRDb3VudDogMCwgcmVwYWlyczogW10sIHJlcGFpcnNUcnVuY2F0ZWRDb3VudDogMH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbnF1ZXVlcyBhIGpvYi5cbiAgICogQHBhcmFtIHt7am9iTmFtZTogc3RyaW5nLCBhcmdzOiBBcnJheTxSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj4sIG9wdGlvbnM/OiBpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JPcHRpb25zfX0gX2FyZ3MgLSBKb2IgcmVxdWVzdC5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gLSBKb2IgaWQuXG4gICAqL1xuICBhc3luYyBlbnF1ZXVlKF9hcmdzKSB7IHRocm93IG5ldyBFcnJvcihcIkJhY2tncm91bmRKb2JzQWRhcHRlciNlbnF1ZXVlIGlzIG5vdCBpbXBsZW1lbnRlZFwiKSB9XG5cbiAgLyoqXG4gICAqIEF0b21pY2FsbHkgdmFsaWRhdGVzIGFuIGV4YWN0IHByb2R1Y2luZyBoYW5kb2ZmIGFuZCBlbnF1ZXVlcyBpdHMgZm9sbG93LXVwLlxuICAgKiBAcGFyYW0ge3tqb2JOYW1lOiBzdHJpbmcsIGFyZ3M6IEFycmF5PFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Piwgb3B0aW9ucz86IGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYk9wdGlvbnMsIHByb2R1Y2VySW52b2NhdGlvbklkPzogc3RyaW5nLCBwcm9kdWNlclByb29mOiBpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JQcm9kdWNlclByb29mfX0gX2FyZ3MgLSBPd25lZCBlbnF1ZXVlIHJlcXVlc3QuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IC0gSm9iIGlkLlxuICAgKi9cbiAgYXN5bmMgZW5xdWV1ZUZyb21Pd25lZEhhbmRvZmYoX2FyZ3MpIHsgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZEpvYnNBZGFwdGVyI2VucXVldWVGcm9tT3duZWRIYW5kb2ZmIGlzIG5vdCBpbXBsZW1lbnRlZFwiKSB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIHRoZSBvd25lciBvZiBhIHN0YWJsZSBzY2hlZHVsZSBrZXkuXG4gICAqIEBwYXJhbSB7e3NjaGVkdWxlS2V5OiBzdHJpbmcsIGpvYk5hbWU6IHN0cmluZywgYXJnczogQXJyYXk8UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4+LCBvcHRpb25zPzogaW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iT3B0aW9uc319IF9hcmdzIC0gUmVwbGFjZW1lbnQgcmVxdWVzdC5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUmVwbGFjZW1lbnRSZXN1bHQ+fSAtIFJlcGxhY2VtZW50IHJlc3VsdC5cbiAgICovXG4gIGFzeW5jIHJlcGxhY2VTY2hlZHVsZWQoX2FyZ3MpIHsgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZEpvYnNBZGFwdGVyI3JlcGxhY2VTY2hlZHVsZWQgaXMgbm90IGltcGxlbWVudGVkXCIpIH1cblxuICAvKipcbiAgICogQ2FuY2VscyB0aGUgb3duZXIgb2YgYSBzdGFibGUgc2NoZWR1bGUga2V5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gX3NjaGVkdWxlS2V5IC0gU3RhYmxlIHNjaGVkdWxlIGtleS5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iQ2FuY2VsbGF0aW9uUmVzdWx0Pn0gLSBDYW5jZWxsYXRpb24gcmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgY2FuY2VsU2NoZWR1bGVkKF9zY2hlZHVsZUtleSkgeyB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIjY2FuY2VsU2NoZWR1bGVkIGlzIG5vdCBpbXBsZW1lbnRlZFwiKSB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBuZXh0IGVsaWdpYmxlIGpvYi5cbiAgICogQHBhcmFtIHt7ZXhlY3V0aW9uTW9kZT86IGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYkV4ZWN1dGlvbk1vZGUgfCBpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JFeGVjdXRpb25Nb2RlW119fSBbX2FyZ3NdIC0gRGVxdWV1ZSBmaWx0ZXJzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JSb3cgfCBudWxsPn0gLSBOZXh0IGVsaWdpYmxlIGpvYi5cbiAgICovXG4gIGFzeW5jIG5leHRBdmFpbGFibGVKb2IoX2FyZ3MgPSB7fSkgeyB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIjbmV4dEF2YWlsYWJsZUpvYiBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgc29vbmVzdCBmdXR1cmUgam9iLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JSb3cgfCBudWxsPn0gLSBTb29uZXN0IGZ1dHVyZSBqb2IuXG4gICAqL1xuICBhc3luYyBuZXh0U2NoZWR1bGVkSm9iKCkgeyB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIjbmV4dFNjaGVkdWxlZEpvYiBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBvbmUgam9iLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gX2pvYklkIC0gSm9iIGlkLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JSb3cgfCBudWxsPn0gLSBKb2Igcm93LlxuICAgKi9cbiAgYXN5bmMgZ2V0Sm9iKF9qb2JJZCkgeyB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIjZ2V0Sm9iIGlzIG5vdCBpbXBsZW1lbnRlZFwiKSB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyBhIGpvYiBieSBjbGFpbWluZyBpdHMgZHVyYWJsZSBoYW5kb2ZmLlxuICAgKiBXaGVuIGBoYW5kb2ZmSWRgIGlzIHN1cHBsaWVkLCB0aGUgYWRhcHRlciBtdXN0IHBlcnNpc3QgYW5kIHJldHVybiB0aGF0IGV4YWN0XG4gICAqIGlkIHNvIHRoZSBjYWxsZXIgY2FuIGZlbmNlIGFuIGFtYmlndW91cyBjb21taXQgYWNrbm93bGVkZ2VtZW50LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYkhhbmRvZmZSZXF1ZXN0fSBfYXJncyAtIEhhbmRvZmYgcmVxdWVzdC5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iSGFuZG9mZiB8IG51bGw+fSAtIENsYWltZWQgaGFuZG9mZi5cbiAgICovXG4gIGFzeW5jIG1hcmtIYW5kZWRPZmYoX2FyZ3MpIHsgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZEpvYnNBZGFwdGVyI21hcmtIYW5kZWRPZmYgaXMgbm90IGltcGxlbWVudGVkXCIpIH1cblxuICAvKipcbiAgICogTWFya3MgYSBoYW5kZWQtb2ZmIGpvYiBzdWNjZXNzZnVsLlxuICAgKiBAcGFyYW0ge3tqb2JJZDogc3RyaW5nLCBoYW5kb2ZmSWQ/OiBzdHJpbmcsIHdvcmtlcklkPzogc3RyaW5nLCBoYW5kZWRPZmZBdE1zPzogbnVtYmVyfX0gX2FyZ3MgLSBDb21wbGV0aW9uIHJlcG9ydC5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IC0gV2hldGhlciB0aGUgZmVuY2VkIHJlcG9ydCB3YXMgYWNjZXB0ZWQuXG4gICAqL1xuICBhc3luYyBtYXJrQ29tcGxldGVkKF9hcmdzKSB7IHRocm93IG5ldyBFcnJvcihcIkJhY2tncm91bmRKb2JzQWRhcHRlciNtYXJrQ29tcGxldGVkIGlzIG5vdCBpbXBsZW1lbnRlZFwiKSB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBoYW5kZWQtb2ZmIGpvYiB0byBpdHMgc2NoZWR1bGUuXG4gICAqIEBwYXJhbSB7e2pvYklkOiBzdHJpbmcsIGRlbGF5TXM6IG51bWJlciwgaGFuZG9mZklkPzogc3RyaW5nLCB3b3JrZXJJZD86IHN0cmluZywgaGFuZGVkT2ZmQXRNcz86IG51bWJlcn19IF9hcmdzIC0gUmVzY2hlZHVsZSByZXBvcnQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFdoZXRoZXIgdGhlIGZlbmNlZCByZXBvcnQgd2FzIGFjY2VwdGVkLlxuICAgKi9cbiAgYXN5bmMgbWFya1Jlc2NoZWR1bGVkKF9hcmdzKSB7IHRocm93IG5ldyBFcnJvcihcIkJhY2tncm91bmRKb2JzQWRhcHRlciNtYXJrUmVzY2hlZHVsZWQgaXMgbm90IGltcGxlbWVudGVkXCIpIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGhhbmRlZC1vZmYgam9iIHRvIHRoZSBxdWV1ZS5cbiAgICogQHBhcmFtIHt7am9iSWQ6IHN0cmluZywgaGFuZG9mZklkOiBzdHJpbmd9fSBfYXJncyAtIEhhbmRvZmYgcmVsZWFzZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgYWZ0ZXIgdGhlIGpvYiBpcyByZXR1cm5lZC5cbiAgICovXG4gIGFzeW5jIG1hcmtSZXR1cm5lZFRvUXVldWUoX2FyZ3MpIHsgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZEpvYnNBZGFwdGVyI21hcmtSZXR1cm5lZFRvUXVldWUgaXMgbm90IGltcGxlbWVudGVkXCIpIH1cblxuICAvKipcbiAgICogRmluZHMgYWN0aXZlIGhhbmRvZmZzIGZvciBhIHdvcmtlci5cbiAgICogQHBhcmFtIHt7d29ya2VySWQ6IHN0cmluZ319IF9hcmdzIC0gV29ya2VyIGlkZW50aXR5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTx7am9iSWQ6IHN0cmluZywgaGFuZG9mZklkOiBzdHJpbmd9Pj59IC0gQWN0aXZlIHdvcmtlciBoYW5kb2Zmcy5cbiAgICovXG4gIGFzeW5jIGhhbmRlZE9mZkpvYnNGb3JXb3JrZXIoX2FyZ3MpIHsgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZEpvYnNBZGFwdGVyI2hhbmRlZE9mZkpvYnNGb3JXb3JrZXIgaXMgbm90IGltcGxlbWVudGVkXCIpIH1cblxuICAvKipcbiAgICogU25hcHNob3RzIGV4YWN0IGFjdGl2ZSBoYW5kb2ZmcyBiZWZvcmUgYSBuZXcgbWFpbiBnZW5lcmF0aW9uIGFjY2VwdHMgd29ya2VyXG4gICAqIHJlY29ubmVjdHMuIEFkYXB0ZXJzIHRoYXQgZG8gbm90IHBlcnNpc3Qgd29ya2VyIGxlYXNlcyBtYXkgcmV0dXJuIG5vbmUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYkhhbmRvZmZTbmFwc2hvdFtdPn0gLSBFeGFjdCBhY3RpdmUgaGFuZG9mZnMuXG4gICAqL1xuICBhc3luYyBzbmFwc2hvdEhhbmRlZE9mZkpvYnMoKSB7IHJldHVybiBbXSB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgb3JwaGFuIGZhaWx1cmUgc2VtYW50aWNzIHRvIHVuY2hhbmdlZCBleGFjdCBoYW5kb2ZmIHNuYXBzaG90cy5cbiAgICogQWRhcHRlcnMgdGhhdCByZXR1cm4gc3RhcnR1cCBzbmFwc2hvdHMgbXVzdCBpbXBsZW1lbnQgdGhlIG1hdGNoaW5nIGZlbmNlZFxuICAgKiB0cmFuc2l0aW9uLlxuICAgKiBAcGFyYW0ge3toYW5kb2ZmczogaW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iSGFuZG9mZlNuYXBzaG90W10sIGVycm9yOiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPn19IF9hcmdzIC0gRXhhY3QgbGVhc2VzIGFuZCBvcnBoYW4gcmVhc29uLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JSb3dbXT59IC0gQWNjZXB0ZWQgdHJhbnNpdGlvbnMuXG4gICAqL1xuICBhc3luYyBtYXJrT3JwaGFuZWRIYW5kb2ZmcyhfYXJncykgeyByZXR1cm4gW10gfVxuXG4gIC8qKlxuICAgKiBNYXJrcyBhIGhhbmRlZC1vZmYgam9iIGZhaWxlZCBvciByZXRyeWFibGUuXG4gICAqIEBwYXJhbSB7e2pvYklkOiBzdHJpbmcsIGVycm9yOiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPiwgaGFuZG9mZklkPzogc3RyaW5nLCB3b3JrZXJJZD86IHN0cmluZywgaGFuZGVkT2ZmQXRNcz86IG51bWJlcn19IF9hcmdzIC0gRmFpbHVyZSByZXBvcnQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlJvdyB8IG51bGw+fSAtIFVwZGF0ZWQgam9iIHdoZW4gYWNjZXB0ZWQuXG4gICAqL1xuICBhc3luYyBtYXJrRmFpbGVkKF9hcmdzKSB7IHRocm93IG5ldyBFcnJvcihcIkJhY2tncm91bmRKb2JzQWRhcHRlciNtYXJrRmFpbGVkIGlzIG5vdCBpbXBsZW1lbnRlZFwiKSB9XG5cbiAgLyoqXG4gICAqIFJlY2xhaW1zIGV4cGlyZWQgaGFuZG9mZnMuXG4gICAqIEBwYXJhbSB7e29ycGhhbmVkQWZ0ZXJNcz86IG51bWJlcn19IFtfYXJnc10gLSBTd2VlcCBvcHRpb25zLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JSb3dbXT59IC0gTmV3bHkgb3JwaGFuZWQgam9icy5cbiAgICovXG4gIGFzeW5jIG1hcmtPcnBoYW5lZEpvYnMoX2FyZ3MgPSB7fSkgeyB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIjbWFya09ycGhhbmVkSm9icyBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxuXG4gIC8qKlxuICAgKiBQcnVuZXMgdGVybWluYWwgam9icyBwYXN0IHRoZWlyIHJldGVudGlvbiB3aW5kb3dzLlxuICAgKiBAcGFyYW0ge3tjb21wbGV0ZWRUdGxNcz86IG51bWJlciB8IG51bGwsIGZhaWxlZFR0bE1zPzogbnVtYmVyIHwgbnVsbCwgYmF0Y2hTaXplPzogbnVtYmVyfX0gW19hcmdzXSAtIFJldGVudGlvbiBvcHRpb25zLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXI+fSAtIERlbGV0ZWQgcm93cy5cbiAgICovXG4gIGFzeW5jIHBydW5lVGVybWluYWxKb2JzKF9hcmdzID0ge30pIHsgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZEpvYnNBZGFwdGVyI3BydW5lVGVybWluYWxKb2JzIGlzIG5vdCBpbXBsZW1lbnRlZFwiKSB9XG59XG4iXX0=
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvYWRhcHRlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVo7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8scUJBQXFCO0lBQ3hDOzs7OztPQUtHO0lBQ0gsZ0NBQWdDLEtBQUssT0FBTyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBRW5EOzs7OztPQUtHO0lBQ0gsK0JBQStCLEtBQUssT0FBTyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBRWxEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxXQUFXLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUUvRjs7O09BR0c7SUFDSCxLQUFLLENBQUMsS0FBSyxLQUFJLENBQUM7SUFFaEI7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLE1BQU07UUFDVixPQUFPLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFBO0lBQ3RCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLElBQUcsQ0FBQztJQUVyQzs7O09BR0c7SUFDSCxLQUFLLENBQUMseUJBQXlCLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQyxvRUFBb0UsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUUzSDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLDBCQUEwQjtRQUM5QixPQUFPLEVBQUMsY0FBYyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLEVBQUMsQ0FBQTtJQUN0RyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQSxDQUFDLENBQUM7SUFFNUY7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyxrRUFBa0UsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUU1SDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEtBQUssSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRTlHOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUFDLFlBQVksSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRW5IOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLEVBQUUsSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRW5IOzs7T0FHRztJQUNILEtBQUssQ0FBQyxnQkFBZ0IsS0FBSyxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRXpHOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRTNGOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQSxDQUFDLENBQUM7SUFFeEc7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQSxDQUFDLENBQUM7SUFFeEc7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEtBQUssSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLDREQUE0RCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRWhIOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRTVHOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsbUJBQW1CLENBQUMsS0FBSyxJQUFJLE1BQU0sSUFBSSxLQUFLLENBQUMsOERBQThELENBQUMsQ0FBQSxDQUFDLENBQUM7SUFFcEg7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyxpRUFBaUUsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUUxSDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLHFCQUFxQixLQUFLLE9BQU8sRUFBRSxDQUFBLENBQUMsQ0FBQztJQUUzQzs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsb0JBQW9CLENBQUMsS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFBLENBQUMsQ0FBQztJQUUvQzs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUVsRzs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEtBQUssR0FBRyxFQUFFLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUVuSDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEtBQUssR0FBRyxFQUFFLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFBLENBQUMsQ0FBQztDQUN0SCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKipcbiAqIFBsYXRmb3JtLW5ldXRyYWwgcGVyc2lzdGVuY2UgYW5kIGxpZmVjeWNsZSBjb250cmFjdCB1c2VkIGJ5IHRoZSBiYWNrZ3JvdW5kLWpvYnNcbiAqIHJ1bnRpbWUuIEFkYXB0ZXJzIG93biBkdXJhYmxlIHF1ZXVlIHN0YXRlOyB0cmFuc3BvcnQgYW5kIGpvYiBleGVjdXRpb24gcmVtYWluXG4gKiBzZXBhcmF0ZSBjb25jZXJucy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmFja2dyb3VuZEpvYnNBZGFwdGVyIHtcbiAgLyoqXG4gICAqIERlY2xhcmVzIGV4YWN0IGR1cmFibGUgZmVuY2luZyBzdXBwb3J0IGZvciByZWxlYXNlLXNjb3BlZCBnZW5lcmF0aW9ucy5cbiAgICogVGhpcmQtcGFydHkgYWRhcHRlcnMgbXVzdCBvdmVycmlkZSB0aGlzIG9ubHkgYWZ0ZXIgaW1wbGVtZW50aW5nIHRoZSBmdWxsXG4gICAqIHNuYXBzaG90LCBvd25lciwgcmVwb3J0LCBhbmQgcmVjb3ZlcnkgY29udHJhY3QuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgZ2VuZXJhdGlvbiBtb2RlIGlzIHN1cHBvcnRlZC5cbiAgICovXG4gIHN1cHBvcnRzUmVsZWFzZVNjb3BlZEdlbmVyYXRpb25zKCkgeyByZXR1cm4gZmFsc2UgfVxuXG4gIC8qKlxuICAgKiBEZWNsYXJlcyBhdG9taWMgcHJvZHVjZXItaGFuZG9mZiB2YWxpZGF0aW9uIHBsdXMgZW5xdWV1ZSBzdXBwb3J0LiBBXG4gICAqIGdlbmVyYXRpb24tY2FwYWJsZSBhZGFwdGVyIG11c3Qgb3ZlcnJpZGUgdGhpcyB0b2dldGhlciB3aXRoXG4gICAqIGBlbnF1ZXVlRnJvbU93bmVkSGFuZG9mZmAuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgYXRvbWljIG93bmVkIGVucXVldWUgaXMgc3VwcG9ydGVkLlxuICAgKi9cbiAgc3VwcG9ydHNPd25lZEVucXVldWVGcm9tSGFuZG9mZigpIHsgcmV0dXJuIGZhbHNlIH1cblxuICAvKipcbiAgICogRW5zdXJlcyB0aGUgYWRhcHRlciBjYW4gYWNjZXB0IHdvcmsuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gcmVhZHkuXG4gICAqL1xuICBhc3luYyBlbnN1cmVSZWFkeSgpIHsgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZEpvYnNBZGFwdGVyI2Vuc3VyZVJlYWR5IGlzIG5vdCBpbXBsZW1lbnRlZFwiKSB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyBhZGFwdGVyLW93bmVkIHJlc291cmNlcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgYWZ0ZXIgY2xvc2UuXG4gICAqL1xuICBhc3luYyBjbG9zZSgpIHt9XG5cbiAgLyoqXG4gICAqIFJlcG9ydHMgYWRhcHRlciBoZWFsdGguXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYnNIZWFsdGg+fSAtIEFkYXB0ZXIgaGVhbHRoLlxuICAgKi9cbiAgYXN5bmMgaGVhbHRoKCkge1xuICAgIHJldHVybiB7cmVhZHk6IHRydWV9XG4gIH1cblxuICAvKipcbiAgICogRW5zdXJlcyBmcmFtZXdvcmstb3duZWQgcGVyc2lzdGVuY2UgZHVyaW5nIGEgbWlncmF0aW9uIGxpZmVjeWNsZS4gTm9uLVNRTFxuICAgKiBhZGFwdGVycyBtYXkgbGVhdmUgdGhpcyBhcyBhIG5vLW9wLlxuICAgKiBAcGFyYW0ge3tkYnM6IFJlY29yZDxzdHJpbmcsIGltcG9ydChcIi4uL2RhdGFiYXNlL2RyaXZlcnMvYmFzZS5qc1wiKS5kZWZhdWx0Pn19IF9hcmdzIC0gTWlncmF0ZWQgZGF0YWJhc2VzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgZW5zdXJlRnJhbWV3b3JrU2NoZW1hKF9hcmdzKSB7fVxuXG4gIC8qKlxuICAgKiBSZWNvbmNpbGVzIGNvbmZpZ3VyZWQgcXVldWUgbGltaXRzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyBhZnRlciByZWNvbmNpbGlhdGlvbi5cbiAgICovXG4gIGFzeW5jIHJlY29uY2lsZVF1ZXVlQ29uY3VycmVuY3koKSB7IHRocm93IG5ldyBFcnJvcihcIkJhY2tncm91bmRKb2JzQWRhcHRlciNyZWNvbmNpbGVRdWV1ZUNvbmN1cnJlbmN5IGlzIG5vdCBpbXBsZW1lbnRlZFwiKSB9XG5cbiAgLyoqXG4gICAqIFJlcGFpcnMgZHJpZnQgaW4gYWRhcHRlci1vd25lZCBkdXJhYmxlIGFjdGl2ZSBjb25jdXJyZW5jeSBjb3VudHMuIEFkYXB0ZXJzXG4gICAqIHdpdGhvdXQgZHVwbGljYXRlIGFjdGl2ZS1jb3VudCBwZXJzaXN0ZW5jZSBjYW4ga2VlcCB0aGlzIG5vLW9wIHJlc3VsdC5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iQ29uY3VycmVuY3lSZWNvbmNpbGlhdGlvbj59IC0gUmVwYWlyIHN1bW1hcnkuXG4gICAqL1xuICBhc3luYyByZWNvbmNpbGVBY3RpdmVDb25jdXJyZW5jeSgpIHtcbiAgICByZXR1cm4ge2NhbmRpZGF0ZUNvdW50OiAwLCBjaGVja2VkQ291bnQ6IDAsIHJlcGFpcmVkQ291bnQ6IDAsIHJlcGFpcnM6IFtdLCByZXBhaXJzVHJ1bmNhdGVkQ291bnQ6IDB9XG4gIH1cblxuICAvKipcbiAgICogRW5xdWV1ZXMgYSBqb2IuXG4gICAqIEBwYXJhbSB7e2pvYk5hbWU6IHN0cmluZywgYXJnczogQXJyYXk8UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4+LCBvcHRpb25zPzogaW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iT3B0aW9uc319IF9hcmdzIC0gSm9iIHJlcXVlc3QuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IC0gSm9iIGlkLlxuICAgKi9cbiAgYXN5bmMgZW5xdWV1ZShfYXJncykgeyB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIjZW5xdWV1ZSBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxuXG4gIC8qKlxuICAgKiBBdG9taWNhbGx5IHZhbGlkYXRlcyBhbiBleGFjdCBwcm9kdWNpbmcgaGFuZG9mZiBhbmQgZW5xdWV1ZXMgaXRzIGZvbGxvdy11cC5cbiAgICogQHBhcmFtIHt7am9iTmFtZTogc3RyaW5nLCBhcmdzOiBBcnJheTxSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj4sIG9wdGlvbnM/OiBpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JPcHRpb25zLCBwcm9kdWNlckludm9jYXRpb25JZD86IHN0cmluZywgcHJvZHVjZXJQcm9vZjogaW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUHJvZHVjZXJQcm9vZn19IF9hcmdzIC0gT3duZWQgZW5xdWV1ZSByZXF1ZXN0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSAtIEpvYiBpZC5cbiAgICovXG4gIGFzeW5jIGVucXVldWVGcm9tT3duZWRIYW5kb2ZmKF9hcmdzKSB7IHRocm93IG5ldyBFcnJvcihcIkJhY2tncm91bmRKb2JzQWRhcHRlciNlbnF1ZXVlRnJvbU93bmVkSGFuZG9mZiBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyB0aGUgb3duZXIgb2YgYSBzdGFibGUgc2NoZWR1bGUga2V5LlxuICAgKiBAcGFyYW0ge3tzY2hlZHVsZUtleTogc3RyaW5nLCBqb2JOYW1lOiBzdHJpbmcsIGFyZ3M6IEFycmF5PFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Piwgb3B0aW9ucz86IGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYk9wdGlvbnN9fSBfYXJncyAtIFJlcGxhY2VtZW50IHJlcXVlc3QuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlJlcGxhY2VtZW50UmVzdWx0Pn0gLSBSZXBsYWNlbWVudCByZXN1bHQuXG4gICAqL1xuICBhc3luYyByZXBsYWNlU2NoZWR1bGVkKF9hcmdzKSB7IHRocm93IG5ldyBFcnJvcihcIkJhY2tncm91bmRKb2JzQWRhcHRlciNyZXBsYWNlU2NoZWR1bGVkIGlzIG5vdCBpbXBsZW1lbnRlZFwiKSB9XG5cbiAgLyoqXG4gICAqIENhbmNlbHMgdGhlIG93bmVyIG9mIGEgc3RhYmxlIHNjaGVkdWxlIGtleS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IF9zY2hlZHVsZUtleSAtIFN0YWJsZSBzY2hlZHVsZSBrZXkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYkNhbmNlbGxhdGlvblJlc3VsdD59IC0gQ2FuY2VsbGF0aW9uIHJlc3VsdC5cbiAgICovXG4gIGFzeW5jIGNhbmNlbFNjaGVkdWxlZChfc2NoZWR1bGVLZXkpIHsgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZEpvYnNBZGFwdGVyI2NhbmNlbFNjaGVkdWxlZCBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgbmV4dCBlbGlnaWJsZSBqb2IuXG4gICAqIEBwYXJhbSB7e2V4ZWN1dGlvbk1vZGU/OiBpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JFeGVjdXRpb25Nb2RlIHwgaW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iRXhlY3V0aW9uTW9kZVtdfX0gW19hcmdzXSAtIERlcXVldWUgZmlsdGVycy5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUm93IHwgbnVsbD59IC0gTmV4dCBlbGlnaWJsZSBqb2IuXG4gICAqL1xuICBhc3luYyBuZXh0QXZhaWxhYmxlSm9iKF9hcmdzID0ge30pIHsgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZEpvYnNBZGFwdGVyI25leHRBdmFpbGFibGVKb2IgaXMgbm90IGltcGxlbWVudGVkXCIpIH1cblxuICAvKipcbiAgICogRmluZHMgdGhlIHNvb25lc3QgZnV0dXJlIGpvYi5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUm93IHwgbnVsbD59IC0gU29vbmVzdCBmdXR1cmUgam9iLlxuICAgKi9cbiAgYXN5bmMgbmV4dFNjaGVkdWxlZEpvYigpIHsgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZEpvYnNBZGFwdGVyI25leHRTY2hlZHVsZWRKb2IgaXMgbm90IGltcGxlbWVudGVkXCIpIH1cblxuICAvKipcbiAgICogUmVhZHMgb25lIGpvYi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IF9qb2JJZCAtIEpvYiBpZC5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUm93IHwgbnVsbD59IC0gSm9iIHJvdy5cbiAgICovXG4gIGFzeW5jIGdldEpvYihfam9iSWQpIHsgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZEpvYnNBZGFwdGVyI2dldEpvYiBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgYSBqb2IgYnkgY2xhaW1pbmcgaXRzIGR1cmFibGUgaGFuZG9mZi5cbiAgICogV2hlbiBgaGFuZG9mZklkYCBpcyBzdXBwbGllZCwgdGhlIGFkYXB0ZXIgbXVzdCBwZXJzaXN0IGFuZCByZXR1cm4gdGhhdCBleGFjdFxuICAgKiBpZCBzbyB0aGUgY2FsbGVyIGNhbiBmZW5jZSBhbiBhbWJpZ3VvdXMgY29tbWl0IGFja25vd2xlZGdlbWVudC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JIYW5kb2ZmUmVxdWVzdH0gX2FyZ3MgLSBIYW5kb2ZmIHJlcXVlc3QuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYkhhbmRvZmYgfCBudWxsPn0gLSBDbGFpbWVkIGhhbmRvZmYuXG4gICAqL1xuICBhc3luYyBtYXJrSGFuZGVkT2ZmKF9hcmdzKSB7IHRocm93IG5ldyBFcnJvcihcIkJhY2tncm91bmRKb2JzQWRhcHRlciNtYXJrSGFuZGVkT2ZmIGlzIG5vdCBpbXBsZW1lbnRlZFwiKSB9XG5cbiAgLyoqXG4gICAqIE1hcmtzIGEgaGFuZGVkLW9mZiBqb2Igc3VjY2Vzc2Z1bC5cbiAgICogQHBhcmFtIHt7am9iSWQ6IHN0cmluZywgaGFuZG9mZklkPzogc3RyaW5nLCB3b3JrZXJJZD86IHN0cmluZywgaGFuZGVkT2ZmQXRNcz86IG51bWJlcn19IF9hcmdzIC0gQ29tcGxldGlvbiByZXBvcnQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFdoZXRoZXIgdGhlIGZlbmNlZCByZXBvcnQgd2FzIGFjY2VwdGVkLlxuICAgKi9cbiAgYXN5bmMgbWFya0NvbXBsZXRlZChfYXJncykgeyB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIjbWFya0NvbXBsZXRlZCBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxuXG4gIC8qKlxuICAgKiBSZWNvcmRzIHBvb2xlZC1jaGlsZCBhY2NlcHRhbmNlIGV2aWRlbmNlIChyZWNlaXZlZC9zdGFydGVkIHRpbWVzdGFtcHMgcGx1c1xuICAgKiBydW5uZXIgaWRlbnRpdHkpIGZvciBhIGhhbmRlZC1vZmYgam9iLCBmZW5jZWQgYnkgaXRzIGFjdGl2ZSBoYW5kb2ZmIGxlYXNlLlxuICAgKiBPbmx5IHRoZSBmaWVsZHMgc3VwcGxpZWQgYXJlIHdyaXR0ZW4uXG4gICAqIEBwYXJhbSB7e2pvYklkOiBzdHJpbmcsIGhhbmRvZmZJZD86IHN0cmluZywgd29ya2VySWQ/OiBzdHJpbmcsIGhhbmRlZE9mZkF0TXM/OiBudW1iZXIsIHJlY2VpdmVkQXRNcz86IG51bWJlciwgc3RhcnRlZEF0TXM/OiBudW1iZXIsIGNoaWxkSW5zdGFuY2VJZD86IHN0cmluZywgY2hpbGRQaWQ/OiBudW1iZXJ9fSBfYXJncyAtIEFjY2VwdGFuY2UgcmVwb3J0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gLSBXaGV0aGVyIHRoZSBmZW5jZWQgcmVwb3J0IHdhcyBhY2NlcHRlZC5cbiAgICovXG4gIGFzeW5jIG1hcmtDaGlsZEFjY2VwdGVkKF9hcmdzKSB7IHRocm93IG5ldyBFcnJvcihcIkJhY2tncm91bmRKb2JzQWRhcHRlciNtYXJrQ2hpbGRBY2NlcHRlZCBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgaGFuZGVkLW9mZiBqb2IgdG8gaXRzIHNjaGVkdWxlLlxuICAgKiBAcGFyYW0ge3tqb2JJZDogc3RyaW5nLCBkZWxheU1zOiBudW1iZXIsIGhhbmRvZmZJZD86IHN0cmluZywgd29ya2VySWQ/OiBzdHJpbmcsIGhhbmRlZE9mZkF0TXM/OiBudW1iZXJ9fSBfYXJncyAtIFJlc2NoZWR1bGUgcmVwb3J0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gLSBXaGV0aGVyIHRoZSBmZW5jZWQgcmVwb3J0IHdhcyBhY2NlcHRlZC5cbiAgICovXG4gIGFzeW5jIG1hcmtSZXNjaGVkdWxlZChfYXJncykgeyB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIjbWFya1Jlc2NoZWR1bGVkIGlzIG5vdCBpbXBsZW1lbnRlZFwiKSB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBoYW5kZWQtb2ZmIGpvYiB0byB0aGUgcXVldWUuXG4gICAqIEBwYXJhbSB7e2pvYklkOiBzdHJpbmcsIGhhbmRvZmZJZDogc3RyaW5nfX0gX2FyZ3MgLSBIYW5kb2ZmIHJlbGVhc2UuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIGFmdGVyIHRoZSBqb2IgaXMgcmV0dXJuZWQuXG4gICAqL1xuICBhc3luYyBtYXJrUmV0dXJuZWRUb1F1ZXVlKF9hcmdzKSB7IHRocm93IG5ldyBFcnJvcihcIkJhY2tncm91bmRKb2JzQWRhcHRlciNtYXJrUmV0dXJuZWRUb1F1ZXVlIGlzIG5vdCBpbXBsZW1lbnRlZFwiKSB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGFjdGl2ZSBoYW5kb2ZmcyBmb3IgYSB3b3JrZXIuXG4gICAqIEBwYXJhbSB7e3dvcmtlcklkOiBzdHJpbmd9fSBfYXJncyAtIFdvcmtlciBpZGVudGl0eS5cbiAgICogQHJldHVybnMge1Byb21pc2U8QXJyYXk8e2pvYklkOiBzdHJpbmcsIGhhbmRvZmZJZDogc3RyaW5nfT4+fSAtIEFjdGl2ZSB3b3JrZXIgaGFuZG9mZnMuXG4gICAqL1xuICBhc3luYyBoYW5kZWRPZmZKb2JzRm9yV29ya2VyKF9hcmdzKSB7IHRocm93IG5ldyBFcnJvcihcIkJhY2tncm91bmRKb2JzQWRhcHRlciNoYW5kZWRPZmZKb2JzRm9yV29ya2VyIGlzIG5vdCBpbXBsZW1lbnRlZFwiKSB9XG5cbiAgLyoqXG4gICAqIFNuYXBzaG90cyBleGFjdCBhY3RpdmUgaGFuZG9mZnMgYmVmb3JlIGEgbmV3IG1haW4gZ2VuZXJhdGlvbiBhY2NlcHRzIHdvcmtlclxuICAgKiByZWNvbm5lY3RzLiBBZGFwdGVycyB0aGF0IGRvIG5vdCBwZXJzaXN0IHdvcmtlciBsZWFzZXMgbWF5IHJldHVybiBub25lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JIYW5kb2ZmU25hcHNob3RbXT59IC0gRXhhY3QgYWN0aXZlIGhhbmRvZmZzLlxuICAgKi9cbiAgYXN5bmMgc25hcHNob3RIYW5kZWRPZmZKb2JzKCkgeyByZXR1cm4gW10gfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIG9ycGhhbiBmYWlsdXJlIHNlbWFudGljcyB0byB1bmNoYW5nZWQgZXhhY3QgaGFuZG9mZiBzbmFwc2hvdHMuXG4gICAqIEFkYXB0ZXJzIHRoYXQgcmV0dXJuIHN0YXJ0dXAgc25hcHNob3RzIG11c3QgaW1wbGVtZW50IHRoZSBtYXRjaGluZyBmZW5jZWRcbiAgICogdHJhbnNpdGlvbi5cbiAgICogQHBhcmFtIHt7aGFuZG9mZnM6IGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYkhhbmRvZmZTbmFwc2hvdFtdLCBlcnJvcjogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59fSBfYXJncyAtIEV4YWN0IGxlYXNlcyBhbmQgb3JwaGFuIHJlYXNvbi5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUm93W10+fSAtIEFjY2VwdGVkIHRyYW5zaXRpb25zLlxuICAgKi9cbiAgYXN5bmMgbWFya09ycGhhbmVkSGFuZG9mZnMoX2FyZ3MpIHsgcmV0dXJuIFtdIH1cblxuICAvKipcbiAgICogTWFya3MgYSBoYW5kZWQtb2ZmIGpvYiBmYWlsZWQgb3IgcmV0cnlhYmxlLlxuICAgKiBAcGFyYW0ge3tqb2JJZDogc3RyaW5nLCBlcnJvcjogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4sIGhhbmRvZmZJZD86IHN0cmluZywgd29ya2VySWQ/OiBzdHJpbmcsIGhhbmRlZE9mZkF0TXM/OiBudW1iZXJ9fSBfYXJncyAtIEZhaWx1cmUgcmVwb3J0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JSb3cgfCBudWxsPn0gLSBVcGRhdGVkIGpvYiB3aGVuIGFjY2VwdGVkLlxuICAgKi9cbiAgYXN5bmMgbWFya0ZhaWxlZChfYXJncykgeyB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIjbWFya0ZhaWxlZCBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxuXG4gIC8qKlxuICAgKiBSZWNsYWltcyBleHBpcmVkIGhhbmRvZmZzLlxuICAgKiBAcGFyYW0ge3tvcnBoYW5lZEFmdGVyTXM/OiBudW1iZXJ9fSBbX2FyZ3NdIC0gU3dlZXAgb3B0aW9ucy5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUm93W10+fSAtIE5ld2x5IG9ycGhhbmVkIGpvYnMuXG4gICAqL1xuICBhc3luYyBtYXJrT3JwaGFuZWRKb2JzKF9hcmdzID0ge30pIHsgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZEpvYnNBZGFwdGVyI21hcmtPcnBoYW5lZEpvYnMgaXMgbm90IGltcGxlbWVudGVkXCIpIH1cblxuICAvKipcbiAgICogUHJ1bmVzIHRlcm1pbmFsIGpvYnMgcGFzdCB0aGVpciByZXRlbnRpb24gd2luZG93cy5cbiAgICogQHBhcmFtIHt7Y29tcGxldGVkVHRsTXM/OiBudW1iZXIgfCBudWxsLCBmYWlsZWRUdGxNcz86IG51bWJlciB8IG51bGwsIGJhdGNoU2l6ZT86IG51bWJlcn19IFtfYXJnc10gLSBSZXRlbnRpb24gb3B0aW9ucy5cbiAgICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyPn0gLSBEZWxldGVkIHJvd3MuXG4gICAqL1xuICBhc3luYyBwcnVuZVRlcm1pbmFsSm9icyhfYXJncyA9IHt9KSB7IHRocm93IG5ldyBFcnJvcihcIkJhY2tncm91bmRKb2JzQWRhcHRlciNwcnVuZVRlcm1pbmFsSm9icyBpcyBub3QgaW1wbGVtZW50ZWRcIikgfVxufVxuIl19
|
|
@@ -11,12 +11,14 @@ export declare class BackgroundJobPerformedFailure extends Error {
|
|
|
11
11
|
* @param {object} [options] - Runner options.
|
|
12
12
|
* @param {boolean} [options.closeConnections] - Whether to gracefully close framework connections after the job.
|
|
13
13
|
* @param {boolean} [options.manageProcessTitle] - Whether to set the per-job process title and restore it afterwards. Off for concurrent pooled runners, where interleaved snapshot/restore of the single process-wide `process.title` would corrupt it; the pooled child owns an aggregate title instead.
|
|
14
|
+
* @param {() => void} [options.onPerformStart] - Observation hook fired once, immediately before perform runs (with its connection acquired). Pooled runners use it to report that the job actually started. Must not throw into the job.
|
|
14
15
|
* @param {string} [options.processType] - Generic application process type.
|
|
15
16
|
* @returns {Promise<"completed" | "rescheduled">} - Acknowledged outcome.
|
|
16
17
|
*/
|
|
17
|
-
export default function runJobPayload(payload: import("./types.js").BackgroundJobPayload, { closeConnections, manageProcessTitle, processType }?: {
|
|
18
|
+
export default function runJobPayload(payload: import("./types.js").BackgroundJobPayload, { closeConnections, manageProcessTitle, onPerformStart, processType }?: {
|
|
18
19
|
closeConnections?: boolean;
|
|
19
20
|
manageProcessTitle?: boolean;
|
|
21
|
+
onPerformStart?: () => void;
|
|
20
22
|
processType?: string;
|
|
21
23
|
}): Promise<"completed" | "rescheduled">;
|
|
22
24
|
//# sourceMappingURL=job-runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-runner.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/job-runner.js"],"names":[],"mappings":"AAWA,qBAAa,6BAA8B,SAAQ,KAAK;IACtD;;;OAGG;IACH,YAAY,KAAK,EAFN,KAEM,EAGhB;CACF;AA0DD
|
|
1
|
+
{"version":3,"file":"job-runner.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/job-runner.js"],"names":[],"mappings":"AAWA,qBAAa,6BAA8B,SAAQ,KAAK;IACtD;;;OAGG;IACH,YAAY,KAAK,EAFN,KAEM,EAGhB;CACF;AA0DD;;;;;;;;;GASG;AACH,wBAA8B,aAAa,CAAC,OAAO,EARxC,OAAO,YAAY,EAAE,oBAQmB,EAAE,EAAC,gBAAuB,EAAE,kBAAyB,EAAE,cAAc,EAAE,WAAsC,EAAC,AAP9J,CAKA,EAJA;IAA0B,gBAAgB,AAA1C,CACA,EADQ,OAAO,CACf;IAA0B,kBAAkB,AAA5C,CACA,EADQ,OAAO,CACf;IAA6B,cAAc,AAA3C,CACA,EADQ,MAAM,IAAI,CAClB;IAAyB,WAAW,AAApC,CACA,EADQ,MAAM,CACd;CAEmK,GAFzJ,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC,CA6FhD"}
|
|
@@ -72,10 +72,11 @@ function runnerProcessTitle(JobClass, payload) {
|
|
|
72
72
|
* @param {object} [options] - Runner options.
|
|
73
73
|
* @param {boolean} [options.closeConnections] - Whether to gracefully close framework connections after the job.
|
|
74
74
|
* @param {boolean} [options.manageProcessTitle] - Whether to set the per-job process title and restore it afterwards. Off for concurrent pooled runners, where interleaved snapshot/restore of the single process-wide `process.title` would corrupt it; the pooled child owns an aggregate title instead.
|
|
75
|
+
* @param {() => void} [options.onPerformStart] - Observation hook fired once, immediately before perform runs (with its connection acquired). Pooled runners use it to report that the job actually started. Must not throw into the job.
|
|
75
76
|
* @param {string} [options.processType] - Generic application process type.
|
|
76
77
|
* @returns {Promise<"completed" | "rescheduled">} - Acknowledged outcome.
|
|
77
78
|
*/
|
|
78
|
-
export default async function runJobPayload(payload, { closeConnections = true, manageProcessTitle = true, processType = "background-jobs-runner" } = {}) {
|
|
79
|
+
export default async function runJobPayload(payload, { closeConnections = true, manageProcessTitle = true, onPerformStart, processType = "background-jobs-runner" } = {}) {
|
|
79
80
|
const configuration = await configurationResolver();
|
|
80
81
|
configuration.setCurrent();
|
|
81
82
|
await configuration.initialize({ type: processType });
|
|
@@ -107,6 +108,8 @@ export default async function runJobPayload(payload, { closeConnections = true,
|
|
|
107
108
|
try {
|
|
108
109
|
await runWithBackgroundJobPayload(payload, async () => {
|
|
109
110
|
await configuration.withConnections({ databaseIdentifiers: JobClass.databaseIdentifiers, name: `Background job runner: ${payload.jobName}` }, async () => {
|
|
111
|
+
if (onPerformStart)
|
|
112
|
+
onPerformStart();
|
|
110
113
|
await perform.apply(jobInstance, jobArgs);
|
|
111
114
|
});
|
|
112
115
|
});
|
|
@@ -163,4 +166,4 @@ export default async function runJobPayload(payload, { closeConnections = true,
|
|
|
163
166
|
}
|
|
164
167
|
}
|
|
165
168
|
}
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLXJ1bm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvam9iLXJ1bm5lci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxxQkFBcUIsTUFBTSw4QkFBOEIsQ0FBQTtBQUNoRSxPQUFPLHFCQUFxQixNQUFNLG1CQUFtQixDQUFBO0FBQ3JELE9BQU8sNEJBQTRCLE1BQU0sc0JBQXNCLENBQUE7QUFDL0QsT0FBTyw2QkFBNkIsTUFBTSx3QkFBd0IsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUV0RSxNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQTtBQUVwQyxNQUFNLE9BQU8sNkJBQThCLFNBQVEsS0FBSztJQUN0RDs7O09BR0c7SUFDSCxZQUFZLEtBQUs7UUFDZixLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUE7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRywrQkFBK0IsQ0FBQTtJQUM3QyxDQUFDO0NBQ0Y7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsc0JBQXNCLENBQUMsYUFBYSxFQUFFLEtBQUs7SUFDbEQsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFBO0lBQ2xELE1BQU0sZUFBZSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDakYsTUFBTSxPQUFPLEdBQUc7UUFDZCxPQUFPLEVBQUUsRUFBQyxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBQztRQUNwRSxLQUFLLEVBQUUsZUFBZTtLQUN2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YUFBYSxDQUFDLENBQUE7UUFDN0MsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBjb25maWd1cmF0aW9uUmVzb2x2ZXIgZnJvbSBcIi4uL2NvbmZpZ3VyYXRpb24tcmVzb2x2ZXIuanNcIlxuaW1wb3J0IEJhY2tncm91bmRKb2JSZWdpc3RyeSBmcm9tIFwiLi9qb2ItcmVnaXN0cnkuanNcIlxuaW1wb3J0IEJhY2tncm91bmRKb2JzU3RhdHVzUmVwb3J0ZXIgZnJvbSBcIi4vc3RhdHVzLXJlcG9ydGVyLmpzXCJcbmltcG9ydCBCYWNrZ3JvdW5kSm9iUmVzY2hlZHVsZVNpZ25hbCBmcm9tIFwiLi9yZXNjaGVkdWxlLXNpZ25hbC5qc1wiXG5pbXBvcnQgeyBydW5XaXRoQmFja2dyb3VuZEpvYlBheWxvYWQgfSBmcm9tIFwiLi9leGVjdXRpb24tY29udGV4dC5qc1wiXG5pbXBvcnQgeyBjbG9zZVJ1bm5lckNvbm5lY3Rpb25zIH0gZnJvbSBcIi4vcnVubmVyLWdyYWNlZnVsLXNodXRkb3duLmpzXCJcblxuY29uc3QgQkVBQ09OX1JFQURZX1RJTUVPVVRfTVMgPSA1MDAwXG5cbmV4cG9ydCBjbGFzcyBCYWNrZ3JvdW5kSm9iUGVyZm9ybWVkRmFpbHVyZSBleHRlbmRzIEVycm9yIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwZXJmb3JtZWQtam9iIGZhaWx1cmUgYWZ0ZXIgaXRzIHRlcm1pbmFsIHJlcG9ydCBpcyBhY2tub3dsZWRnZWQuXG4gICAqIEBwYXJhbSB7RXJyb3J9IGNhdXNlIC0gQSBqb2IgcGVyZm9ybSBlcnJvciB3aG9zZSBmYWlsZWQgdGVybWluYWwgcmVwb3J0IHdhcyBhY2tub3dsZWRnZWQuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihjYXVzZSkge1xuICAgIHN1cGVyKGNhdXNlLm1lc3NhZ2UsIHtjYXVzZX0pXG4gICAgdGhpcy5uYW1lID0gXCJCYWNrZ3JvdW5kSm9iUGVyZm9ybWVkRmFpbHVyZVwiXG4gIH1cbn1cblxuLyoqXG4gKiBSdW5zIHJlcG9ydCBiZWFjb24gcmVhZHkgZXJyb3IuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0ge1JldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+fSBlcnJvciAtIEJlYWNvbiByZWFkaW5lc3MgZXJyb3IuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gcmVwb3J0QmVhY29uUmVhZHlFcnJvcihjb25maWd1cmF0aW9uLCBlcnJvcikge1xuICBjb25zdCBlcnJvckV2ZW50cyA9IGNvbmZpZ3VyYXRpb24uZ2V0RXJyb3JFdmVudHMoKVxuICBjb25zdCBub3JtYWxpemVkRXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSlcbiAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICBjb250ZXh0OiB7cGVlclR5cGU6IFwiYmFja2dyb3VuZC1qb2JzLXJ1bm5lclwiLCBzdGFnZTogXCJiZWFjb24tcmVhZHlcIn0sXG4gICAgZXJyb3I6IG5vcm1hbGl6ZWRFcnJvclxuICB9XG4gIGNvbnN0IGhhc0xpc3RlbmVyID0gZXJyb3JFdmVudHMubGlzdGVuZXJDb3VudChcImZyYW1ld29yay1lcnJvclwiKSA+IDBcbiAgICB8fCBlcnJvckV2ZW50cy5saXN0ZW5lckNvdW50KFwiYWxsLWVycm9yXCIpID4gMFxuXG4gIGVycm9yRXZlbnRzLmVtaXQoXCJmcmFtZXdvcmstZXJyb3JcIiwgcGF5bG9hZClcbiAgZXJyb3JFdmVudHMuZW1pdChcImFsbC1lcnJvclwiLCB7Li4ucGF5bG9hZCwgZXJyb3JUeXBlOiBcImZyYW1ld29yay1lcnJvclwifSlcblxuICBpZiAoIWhhc0xpc3RlbmVyKSB7XG4gICAgY29uc29sZS5lcnJvcihgW3ZlbG9jaW91cyBmcmFtZXdvcmstZXJyb3Igc3RhZ2U9YmVhY29uLXJlYWR5XSAke25vcm1hbGl6ZWRFcnJvci5tZXNzYWdlfWApXG4gIH1cbn1cblxuLyoqXG4gKiBSdW5zIGNvbm5lY3QgYmVhY29uLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGNvbmZpZ3VyYXRpb24gLSBDb25maWd1cmF0aW9uLlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNvbm5lY3RCZWFjb24oY29uZmlndXJhdGlvbikge1xuICBjb25zdCBiZWFjb25DbGllbnQgPSBhd2FpdCBjb25maWd1cmF0aW9uLmNvbm5lY3RCZWFjb24oe3BlZXJUeXBlOiBcImJhY2tncm91bmQtam9icy1ydW5uZXJcIn0pXG5cbiAgaWYgKCFiZWFjb25DbGllbnQpIHJldHVyblxuXG4gIHRyeSB7XG4gICAgYXdhaXQgYmVhY29uQ2xpZW50LndhaXRGb3JSZWFkeSh7dGltZW91dE1zOiBCRUFDT05fUkVBRFlfVElNRU9VVF9NU30pXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVwb3J0QmVhY29uUmVhZHlFcnJvcihjb25maWd1cmF0aW9uLCBlcnJvcilcbiAgfVxufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBwcm9jZXNzIHRpdGxlIHRvIHNob3cgd2hpbGUgYSBqb2IgcnVuczogdGhlIGpvYiBjbGFzcydzIGRlY2xhcmVkXG4gKiBgc3RhdGljIHByb2Nlc3NUaXRsZWAsIGVsc2UgYSBgdmVsb2Npb3VzIGpvYi1ydW5uZXI6IDxKb2JOYW1lPmAgZmFsbGJhY2suXG4gKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuL2pvYi5qc1wiKS5kZWZhdWx0fSBKb2JDbGFzcyAtIFJlc29sdmVkIGpvYiBjbGFzcy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUGF5bG9hZH0gcGF5bG9hZCAtIFBheWxvYWQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIFByb2Nlc3MgdGl0bGUuXG4gKi9cbmZ1bmN0aW9uIHJ1bm5lclByb2Nlc3NUaXRsZShKb2JDbGFzcywgcGF5bG9hZCkge1xuICBjb25zdCBkZWNsYXJlZCA9IEpvYkNsYXNzLnByb2Nlc3NUaXRsZVxuXG4gIGlmICh0eXBlb2YgZGVjbGFyZWQgPT09IFwic3RyaW5nXCIgJiYgZGVjbGFyZWQubGVuZ3RoID4gMCkgcmV0dXJuIGRlY2xhcmVkXG5cbiAgcmV0dXJuIGB2ZWxvY2lvdXMgam9iLXJ1bm5lcjogJHtwYXlsb2FkLmpvYk5hbWV9YFxufVxuXG4vKipcbiAqIFJ1bnMgcnVuIGpvYiBwYXlsb2FkLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JQYXlsb2FkfSBwYXlsb2FkIC0gUGF5bG9hZC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10gLSBSdW5uZXIgb3B0aW9ucy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuY2xvc2VDb25uZWN0aW9uc10gLSBXaGV0aGVyIHRvIGdyYWNlZnVsbHkgY2xvc2UgZnJhbWV3b3JrIGNvbm5lY3Rpb25zIGFmdGVyIHRoZSBqb2IuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLm1hbmFnZVByb2Nlc3NUaXRsZV0gLSBXaGV0aGVyIHRvIHNldCB0aGUgcGVyLWpvYiBwcm9jZXNzIHRpdGxlIGFuZCByZXN0b3JlIGl0IGFmdGVyd2FyZHMuIE9mZiBmb3IgY29uY3VycmVudCBwb29sZWQgcnVubmVycywgd2hlcmUgaW50ZXJsZWF2ZWQgc25hcHNob3QvcmVzdG9yZSBvZiB0aGUgc2luZ2xlIHByb2Nlc3Mtd2lkZSBgcHJvY2Vzcy50aXRsZWAgd291bGQgY29ycnVwdCBpdDsgdGhlIHBvb2xlZCBjaGlsZCBvd25zIGFuIGFnZ3JlZ2F0ZSB0aXRsZSBpbnN0ZWFkLlxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnByb2Nlc3NUeXBlXSAtIEdlbmVyaWMgYXBwbGljYXRpb24gcHJvY2VzcyB0eXBlLlxuICogQHJldHVybnMge1Byb21pc2U8XCJjb21wbGV0ZWRcIiB8IFwicmVzY2hlZHVsZWRcIj59IC0gQWNrbm93bGVkZ2VkIG91dGNvbWUuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHJ1bkpvYlBheWxvYWQocGF5bG9hZCwge2Nsb3NlQ29ubmVjdGlvbnMgPSB0cnVlLCBtYW5hZ2VQcm9jZXNzVGl0bGUgPSB0cnVlLCBwcm9jZXNzVHlwZSA9IFwiYmFja2dyb3VuZC1qb2JzLXJ1bm5lclwifSA9IHt9KSB7XG4gIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBhd2FpdCBjb25maWd1cmF0aW9uUmVzb2x2ZXIoKVxuICBjb25maWd1cmF0aW9uLnNldEN1cnJlbnQoKVxuICBhd2FpdCBjb25maWd1cmF0aW9uLmluaXRpYWxpemUoe3R5cGU6IHByb2Nlc3NUeXBlfSlcbiAgYXdhaXQgY29ubmVjdEJlYWNvbihjb25maWd1cmF0aW9uKVxuICBjb25zdCByZXBvcnRlciA9IG5ldyBCYWNrZ3JvdW5kSm9ic1N0YXR1c1JlcG9ydGVyKHtjb25maWd1cmF0aW9ufSlcblxuICBjb25zdCByZWdpc3RyeSA9IG5ldyBCYWNrZ3JvdW5kSm9iUmVnaXN0cnkoe2NvbmZpZ3VyYXRpb259KVxuICBhd2FpdCByZWdpc3RyeS5sb2FkKClcbiAgY29uc3QgSm9iQ2xhc3MgPSByZWdpc3RyeS5nZXRKb2JCeU5hbWUocGF5bG9hZC5qb2JOYW1lKVxuICBjb25zdCBqb2JJbnN0YW5jZSA9IG5ldyBKb2JDbGFzcygpXG4gIGNvbnN0IGpvYkFyZ3MgPSBwYXlsb2FkLmFyZ3MgfHwgW11cbiAgam9iSW5zdGFuY2UuX3NldEJhY2tncm91bmRKb2JDb250ZXh0KHtcbiAgICBhcmdzOiBqb2JBcmdzLFxuICAgIGpvYkNsYXNzOiBKb2JDbGFzcyxcbiAgICBqb2JOYW1lOiBwYXlsb2FkLmpvYk5hbWUsXG4gICAgb3B0aW9uczogcGF5bG9hZC5vcHRpb25zIHx8IHt9LFxuICAgIHBheWxvYWRcbiAgfSlcbiAgLyoqXG4gICAqIFBlcmZvcm0uXG4gICAqIEB0eXBlIHsoLi4uYXJnczogQXJyYXk8UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4+KSA9PiBQcm9taXNlPHZvaWQ+fSAqL1xuICBjb25zdCBwZXJmb3JtID0gam9iSW5zdGFuY2UucGVyZm9ybVxuXG4gIC8vIE5hbWUgdGhlIHByb2Nlc3MgYWZ0ZXIgdGhlIGpvYiBpdCBpcyBydW5uaW5nIHNvIGBwc2AvYHRvcGAgc2hvdyB3aGF0IGVhY2hcbiAgLy8gcnVubmVyIGlzIGRvaW5nOyByZXN0b3JlZCBpbiB0aGUgYGZpbmFsbHlgIGJlbG93IHdoZW4gdGhlIGpvYiBmaW5pc2hlcy5cbiAgLy8gU2tpcHBlZCBmb3IgY29uY3VycmVudCBwb29sZWQgcnVubmVycywgd2hvc2UgY2hpbGQgb3ducyBhbiBhZ2dyZWdhdGUgdGl0bGUuXG4gIGNvbnN0IHByZXZpb3VzVGl0bGUgPSBwcm9jZXNzLnRpdGxlXG4gIGlmIChtYW5hZ2VQcm9jZXNzVGl0bGUpIHByb2Nlc3MudGl0bGUgPSBydW5uZXJQcm9jZXNzVGl0bGUoSm9iQ2xhc3MsIHBheWxvYWQpXG5cbiAgdHJ5IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcnVuV2l0aEJhY2tncm91bmRKb2JQYXlsb2FkKHBheWxvYWQsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgY29uZmlndXJhdGlvbi53aXRoQ29ubmVjdGlvbnMoe2RhdGFiYXNlSWRlbnRpZmllcnM6IEpvYkNsYXNzLmRhdGFiYXNlSWRlbnRpZmllcnMsIG5hbWU6IGBCYWNrZ3JvdW5kIGpvYiBydW5uZXI6ICR7cGF5bG9hZC5qb2JOYW1lfWB9LCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgcGVyZm9ybS5hcHBseShqb2JJbnN0YW5jZSwgam9iQXJncylcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEJhY2tncm91bmRKb2JSZXNjaGVkdWxlU2lnbmFsKSB7XG4gICAgICAgIGlmIChwYXlsb2FkLmlkKSB7XG4gICAgICAgICAgYXdhaXQgcmVwb3J0ZXIucmVwb3J0V2l0aFJldHJ5KHtcbiAgICAgICAgICAgIGpvYklkOiBwYXlsb2FkLmlkLFxuICAgICAgICAgICAgc3RhdHVzOiBcInJlc2NoZWR1bGVkXCIsXG4gICAgICAgICAgICBkZWxheU1zOiBlcnJvci5kZWxheU1zLFxuICAgICAgICAgICAgaGFuZG9mZklkOiBwYXlsb2FkLmhhbmRvZmZJZCxcbiAgICAgICAgICAgIHdvcmtlcklkOiBwYXlsb2FkLndvcmtlcklkLFxuICAgICAgICAgICAgaGFuZGVkT2ZmQXRNczogcGF5bG9hZC5oYW5kZWRPZmZBdE1zLFxuICAgICAgICAgICAgbWF4RHVyYXRpb25NczogMzAwMDAsXG4gICAgICAgICAgICByZXRyeVBlcnNpc3RFcnJvcnM6IHRydWVcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFwicmVzY2hlZHVsZWRcIlxuICAgICAgfVxuXG4gICAgICBjb25zdCBwZXJmb3JtZWRFcnJvciA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKVxuICAgICAgaWYgKHBheWxvYWQuaWQpIHtcbiAgICAgICAgYXdhaXQgcmVwb3J0ZXIucmVwb3J0V2l0aFJldHJ5KHtcbiAgICAgICAgICBqb2JJZDogcGF5bG9hZC5pZCxcbiAgICAgICAgICBzdGF0dXM6IFwiZmFpbGVkXCIsXG4gICAgICAgICAgZXJyb3I6IHBlcmZvcm1lZEVycm9yLFxuICAgICAgICAgIGhhbmRvZmZJZDogcGF5bG9hZC5oYW5kb2ZmSWQsXG4gICAgICAgICAgd29ya2VySWQ6IHBheWxvYWQud29ya2VySWQsXG4gICAgICAgICAgaGFuZGVkT2ZmQXRNczogcGF5bG9hZC5oYW5kZWRPZmZBdE1zLFxuICAgICAgICAgIG1heER1cmF0aW9uTXM6IDMwMDAwXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBCYWNrZ3JvdW5kSm9iUGVyZm9ybWVkRmFpbHVyZShwZXJmb3JtZWRFcnJvcilcbiAgICB9XG5cbiAgICBpZiAocGF5bG9hZC5pZCkge1xuICAgICAgYXdhaXQgcmVwb3J0ZXIucmVwb3J0V2l0aFJldHJ5KHtcbiAgICAgICAgam9iSWQ6IHBheWxvYWQuaWQsXG4gICAgICAgIHN0YXR1czogXCJjb21wbGV0ZWRcIixcbiAgICAgICAgaGFuZG9mZklkOiBwYXlsb2FkLmhhbmRvZmZJZCxcbiAgICAgICAgd29ya2VySWQ6IHBheWxvYWQud29ya2VySWQsXG4gICAgICAgIGhhbmRlZE9mZkF0TXM6IHBheWxvYWQuaGFuZGVkT2ZmQXRNcyxcbiAgICAgICAgbWF4RHVyYXRpb25NczogMzAwMDBcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiBcImNvbXBsZXRlZFwiXG4gIH0gZmluYWxseSB7XG4gICAgLy8gUmVzdG9yZSB0aGUgcnVubmVyJ3MgYmFzZSB0aXRsZSBzbyBhIGxpbmdlcmluZy9pZGxlIHJ1bm5lciAob3IgYSByZXVzZWRcbiAgICAvLyBvbmUpIGRvZXNuJ3QgbWlzcmVwb3J0IGEgZmluaXNoZWQgam9iIGFzIHN0aWxsIHJ1bm5pbmcuXG4gICAgaWYgKG1hbmFnZVByb2Nlc3NUaXRsZSkgcHJvY2Vzcy50aXRsZSA9IHByZXZpb3VzVGl0bGVcbiAgICBpZiAoY2xvc2VDb25uZWN0aW9ucykge1xuICAgICAgYXdhaXQgY2xvc2VSdW5uZXJDb25uZWN0aW9ucyhjb25maWd1cmF0aW9uKVxuICAgIH1cbiAgfVxufVxuIl19
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLXJ1bm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvam9iLXJ1bm5lci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxxQkFBcUIsTUFBTSw4QkFBOEIsQ0FBQTtBQUNoRSxPQUFPLHFCQUFxQixNQUFNLG1CQUFtQixDQUFBO0FBQ3JELE9BQU8sNEJBQTRCLE1BQU0sc0JBQXNCLENBQUE7QUFDL0QsT0FBTyw2QkFBNkIsTUFBTSx3QkFBd0IsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUV0RSxNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQTtBQUVwQyxNQUFNLE9BQU8sNkJBQThCLFNBQVEsS0FBSztJQUN0RDs7O09BR0c7SUFDSCxZQUFZLEtBQUs7UUFDZixLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUE7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRywrQkFBK0IsQ0FBQTtJQUM3QyxDQUFDO0NBQ0Y7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsc0JBQXNCLENBQUMsYUFBYSxFQUFFLEtBQUs7SUFDbEQsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFBO0lBQ2xELE1BQU0sZUFBZSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDakYsTUFBTSxPQUFPLEdBQUc7UUFDZCxPQUFPLEVBQUUsRUFBQyxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBQztRQUNwRSxLQUFLLEVBQUUsZUFBZTtLQUN2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Q3JELElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNyQixNQUFNLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQzdDLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgY29uZmlndXJhdGlvblJlc29sdmVyIGZyb20gXCIuLi9jb25maWd1cmF0aW9uLXJlc29sdmVyLmpzXCJcbmltcG9ydCBCYWNrZ3JvdW5kSm9iUmVnaXN0cnkgZnJvbSBcIi4vam9iLXJlZ2lzdHJ5LmpzXCJcbmltcG9ydCBCYWNrZ3JvdW5kSm9ic1N0YXR1c1JlcG9ydGVyIGZyb20gXCIuL3N0YXR1cy1yZXBvcnRlci5qc1wiXG5pbXBvcnQgQmFja2dyb3VuZEpvYlJlc2NoZWR1bGVTaWduYWwgZnJvbSBcIi4vcmVzY2hlZHVsZS1zaWduYWwuanNcIlxuaW1wb3J0IHsgcnVuV2l0aEJhY2tncm91bmRKb2JQYXlsb2FkIH0gZnJvbSBcIi4vZXhlY3V0aW9uLWNvbnRleHQuanNcIlxuaW1wb3J0IHsgY2xvc2VSdW5uZXJDb25uZWN0aW9ucyB9IGZyb20gXCIuL3J1bm5lci1ncmFjZWZ1bC1zaHV0ZG93bi5qc1wiXG5cbmNvbnN0IEJFQUNPTl9SRUFEWV9USU1FT1VUX01TID0gNTAwMFxuXG5leHBvcnQgY2xhc3MgQmFja2dyb3VuZEpvYlBlcmZvcm1lZEZhaWx1cmUgZXh0ZW5kcyBFcnJvciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcGVyZm9ybWVkLWpvYiBmYWlsdXJlIGFmdGVyIGl0cyB0ZXJtaW5hbCByZXBvcnQgaXMgYWNrbm93bGVkZ2VkLlxuICAgKiBAcGFyYW0ge0Vycm9yfSBjYXVzZSAtIEEgam9iIHBlcmZvcm0gZXJyb3Igd2hvc2UgZmFpbGVkIHRlcm1pbmFsIHJlcG9ydCB3YXMgYWNrbm93bGVkZ2VkLlxuICAgKi9cbiAgY29uc3RydWN0b3IoY2F1c2UpIHtcbiAgICBzdXBlcihjYXVzZS5tZXNzYWdlLCB7Y2F1c2V9KVxuICAgIHRoaXMubmFtZSA9IFwiQmFja2dyb3VuZEpvYlBlcmZvcm1lZEZhaWx1cmVcIlxuICB9XG59XG5cbi8qKlxuICogUnVucyByZXBvcnQgYmVhY29uIHJlYWR5IGVycm9yLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGNvbmZpZ3VyYXRpb24gLSBDb25maWd1cmF0aW9uLlxuICogQHBhcmFtIHtSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPn0gZXJyb3IgLSBCZWFjb24gcmVhZGluZXNzIGVycm9yLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHJlcG9ydEJlYWNvblJlYWR5RXJyb3IoY29uZmlndXJhdGlvbiwgZXJyb3IpIHtcbiAgY29uc3QgZXJyb3JFdmVudHMgPSBjb25maWd1cmF0aW9uLmdldEVycm9yRXZlbnRzKClcbiAgY29uc3Qgbm9ybWFsaXplZEVycm9yID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpXG4gIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgY29udGV4dDoge3BlZXJUeXBlOiBcImJhY2tncm91bmQtam9icy1ydW5uZXJcIiwgc3RhZ2U6IFwiYmVhY29uLXJlYWR5XCJ9LFxuICAgIGVycm9yOiBub3JtYWxpemVkRXJyb3JcbiAgfVxuICBjb25zdCBoYXNMaXN0ZW5lciA9IGVycm9yRXZlbnRzLmxpc3RlbmVyQ291bnQoXCJmcmFtZXdvcmstZXJyb3JcIikgPiAwXG4gICAgfHwgZXJyb3JFdmVudHMubGlzdGVuZXJDb3VudChcImFsbC1lcnJvclwiKSA+IDBcblxuICBlcnJvckV2ZW50cy5lbWl0KFwiZnJhbWV3b3JrLWVycm9yXCIsIHBheWxvYWQpXG4gIGVycm9yRXZlbnRzLmVtaXQoXCJhbGwtZXJyb3JcIiwgey4uLnBheWxvYWQsIGVycm9yVHlwZTogXCJmcmFtZXdvcmstZXJyb3JcIn0pXG5cbiAgaWYgKCFoYXNMaXN0ZW5lcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFt2ZWxvY2lvdXMgZnJhbWV3b3JrLWVycm9yIHN0YWdlPWJlYWNvbi1yZWFkeV0gJHtub3JtYWxpemVkRXJyb3IubWVzc2FnZX1gKVxuICB9XG59XG5cbi8qKlxuICogUnVucyBjb25uZWN0IGJlYWNvbi5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBjb25maWd1cmF0aW9uIC0gQ29uZmlndXJhdGlvbi5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBjb25uZWN0QmVhY29uKGNvbmZpZ3VyYXRpb24pIHtcbiAgY29uc3QgYmVhY29uQ2xpZW50ID0gYXdhaXQgY29uZmlndXJhdGlvbi5jb25uZWN0QmVhY29uKHtwZWVyVHlwZTogXCJiYWNrZ3JvdW5kLWpvYnMtcnVubmVyXCJ9KVxuXG4gIGlmICghYmVhY29uQ2xpZW50KSByZXR1cm5cblxuICB0cnkge1xuICAgIGF3YWl0IGJlYWNvbkNsaWVudC53YWl0Rm9yUmVhZHkoe3RpbWVvdXRNczogQkVBQ09OX1JFQURZX1RJTUVPVVRfTVN9KVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcG9ydEJlYWNvblJlYWR5RXJyb3IoY29uZmlndXJhdGlvbiwgZXJyb3IpXG4gIH1cbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgcHJvY2VzcyB0aXRsZSB0byBzaG93IHdoaWxlIGEgam9iIHJ1bnM6IHRoZSBqb2IgY2xhc3MncyBkZWNsYXJlZFxuICogYHN0YXRpYyBwcm9jZXNzVGl0bGVgLCBlbHNlIGEgYHZlbG9jaW91cyBqb2ItcnVubmVyOiA8Sm9iTmFtZT5gIGZhbGxiYWNrLlxuICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi9qb2IuanNcIikuZGVmYXVsdH0gSm9iQ2xhc3MgLSBSZXNvbHZlZCBqb2IgY2xhc3MuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlBheWxvYWR9IHBheWxvYWQgLSBQYXlsb2FkLlxuICogQHJldHVybnMge3N0cmluZ30gLSBQcm9jZXNzIHRpdGxlLlxuICovXG5mdW5jdGlvbiBydW5uZXJQcm9jZXNzVGl0bGUoSm9iQ2xhc3MsIHBheWxvYWQpIHtcbiAgY29uc3QgZGVjbGFyZWQgPSBKb2JDbGFzcy5wcm9jZXNzVGl0bGVcblxuICBpZiAodHlwZW9mIGRlY2xhcmVkID09PSBcInN0cmluZ1wiICYmIGRlY2xhcmVkLmxlbmd0aCA+IDApIHJldHVybiBkZWNsYXJlZFxuXG4gIHJldHVybiBgdmVsb2Npb3VzIGpvYi1ydW5uZXI6ICR7cGF5bG9hZC5qb2JOYW1lfWBcbn1cblxuLyoqXG4gKiBSdW5zIHJ1biBqb2IgcGF5bG9hZC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUGF5bG9hZH0gcGF5bG9hZCAtIFBheWxvYWQuXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdIC0gUnVubmVyIG9wdGlvbnMuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmNsb3NlQ29ubmVjdGlvbnNdIC0gV2hldGhlciB0byBncmFjZWZ1bGx5IGNsb3NlIGZyYW1ld29yayBjb25uZWN0aW9ucyBhZnRlciB0aGUgam9iLlxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5tYW5hZ2VQcm9jZXNzVGl0bGVdIC0gV2hldGhlciB0byBzZXQgdGhlIHBlci1qb2IgcHJvY2VzcyB0aXRsZSBhbmQgcmVzdG9yZSBpdCBhZnRlcndhcmRzLiBPZmYgZm9yIGNvbmN1cnJlbnQgcG9vbGVkIHJ1bm5lcnMsIHdoZXJlIGludGVybGVhdmVkIHNuYXBzaG90L3Jlc3RvcmUgb2YgdGhlIHNpbmdsZSBwcm9jZXNzLXdpZGUgYHByb2Nlc3MudGl0bGVgIHdvdWxkIGNvcnJ1cHQgaXQ7IHRoZSBwb29sZWQgY2hpbGQgb3ducyBhbiBhZ2dyZWdhdGUgdGl0bGUgaW5zdGVhZC5cbiAqIEBwYXJhbSB7KCkgPT4gdm9pZH0gW29wdGlvbnMub25QZXJmb3JtU3RhcnRdIC0gT2JzZXJ2YXRpb24gaG9vayBmaXJlZCBvbmNlLCBpbW1lZGlhdGVseSBiZWZvcmUgcGVyZm9ybSBydW5zICh3aXRoIGl0cyBjb25uZWN0aW9uIGFjcXVpcmVkKS4gUG9vbGVkIHJ1bm5lcnMgdXNlIGl0IHRvIHJlcG9ydCB0aGF0IHRoZSBqb2IgYWN0dWFsbHkgc3RhcnRlZC4gTXVzdCBub3QgdGhyb3cgaW50byB0aGUgam9iLlxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnByb2Nlc3NUeXBlXSAtIEdlbmVyaWMgYXBwbGljYXRpb24gcHJvY2VzcyB0eXBlLlxuICogQHJldHVybnMge1Byb21pc2U8XCJjb21wbGV0ZWRcIiB8IFwicmVzY2hlZHVsZWRcIj59IC0gQWNrbm93bGVkZ2VkIG91dGNvbWUuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHJ1bkpvYlBheWxvYWQocGF5bG9hZCwge2Nsb3NlQ29ubmVjdGlvbnMgPSB0cnVlLCBtYW5hZ2VQcm9jZXNzVGl0bGUgPSB0cnVlLCBvblBlcmZvcm1TdGFydCwgcHJvY2Vzc1R5cGUgPSBcImJhY2tncm91bmQtam9icy1ydW5uZXJcIn0gPSB7fSkge1xuICBjb25zdCBjb25maWd1cmF0aW9uID0gYXdhaXQgY29uZmlndXJhdGlvblJlc29sdmVyKClcbiAgY29uZmlndXJhdGlvbi5zZXRDdXJyZW50KClcbiAgYXdhaXQgY29uZmlndXJhdGlvbi5pbml0aWFsaXplKHt0eXBlOiBwcm9jZXNzVHlwZX0pXG4gIGF3YWl0IGNvbm5lY3RCZWFjb24oY29uZmlndXJhdGlvbilcbiAgY29uc3QgcmVwb3J0ZXIgPSBuZXcgQmFja2dyb3VuZEpvYnNTdGF0dXNSZXBvcnRlcih7Y29uZmlndXJhdGlvbn0pXG5cbiAgY29uc3QgcmVnaXN0cnkgPSBuZXcgQmFja2dyb3VuZEpvYlJlZ2lzdHJ5KHtjb25maWd1cmF0aW9ufSlcbiAgYXdhaXQgcmVnaXN0cnkubG9hZCgpXG4gIGNvbnN0IEpvYkNsYXNzID0gcmVnaXN0cnkuZ2V0Sm9iQnlOYW1lKHBheWxvYWQuam9iTmFtZSlcbiAgY29uc3Qgam9iSW5zdGFuY2UgPSBuZXcgSm9iQ2xhc3MoKVxuICBjb25zdCBqb2JBcmdzID0gcGF5bG9hZC5hcmdzIHx8IFtdXG4gIGpvYkluc3RhbmNlLl9zZXRCYWNrZ3JvdW5kSm9iQ29udGV4dCh7XG4gICAgYXJnczogam9iQXJncyxcbiAgICBqb2JDbGFzczogSm9iQ2xhc3MsXG4gICAgam9iTmFtZTogcGF5bG9hZC5qb2JOYW1lLFxuICAgIG9wdGlvbnM6IHBheWxvYWQub3B0aW9ucyB8fCB7fSxcbiAgICBwYXlsb2FkXG4gIH0pXG4gIC8qKlxuICAgKiBQZXJmb3JtLlxuICAgKiBAdHlwZSB7KC4uLmFyZ3M6IEFycmF5PFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+PikgPT4gUHJvbWlzZTx2b2lkPn0gKi9cbiAgY29uc3QgcGVyZm9ybSA9IGpvYkluc3RhbmNlLnBlcmZvcm1cblxuICAvLyBOYW1lIHRoZSBwcm9jZXNzIGFmdGVyIHRoZSBqb2IgaXQgaXMgcnVubmluZyBzbyBgcHNgL2B0b3BgIHNob3cgd2hhdCBlYWNoXG4gIC8vIHJ1bm5lciBpcyBkb2luZzsgcmVzdG9yZWQgaW4gdGhlIGBmaW5hbGx5YCBiZWxvdyB3aGVuIHRoZSBqb2IgZmluaXNoZXMuXG4gIC8vIFNraXBwZWQgZm9yIGNvbmN1cnJlbnQgcG9vbGVkIHJ1bm5lcnMsIHdob3NlIGNoaWxkIG93bnMgYW4gYWdncmVnYXRlIHRpdGxlLlxuICBjb25zdCBwcmV2aW91c1RpdGxlID0gcHJvY2Vzcy50aXRsZVxuICBpZiAobWFuYWdlUHJvY2Vzc1RpdGxlKSBwcm9jZXNzLnRpdGxlID0gcnVubmVyUHJvY2Vzc1RpdGxlKEpvYkNsYXNzLCBwYXlsb2FkKVxuXG4gIHRyeSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJ1bldpdGhCYWNrZ3JvdW5kSm9iUGF5bG9hZChwYXlsb2FkLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IGNvbmZpZ3VyYXRpb24ud2l0aENvbm5lY3Rpb25zKHtkYXRhYmFzZUlkZW50aWZpZXJzOiBKb2JDbGFzcy5kYXRhYmFzZUlkZW50aWZpZXJzLCBuYW1lOiBgQmFja2dyb3VuZCBqb2IgcnVubmVyOiAke3BheWxvYWQuam9iTmFtZX1gfSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGlmIChvblBlcmZvcm1TdGFydCkgb25QZXJmb3JtU3RhcnQoKVxuICAgICAgICAgIGF3YWl0IHBlcmZvcm0uYXBwbHkoam9iSW5zdGFuY2UsIGpvYkFyZ3MpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBCYWNrZ3JvdW5kSm9iUmVzY2hlZHVsZVNpZ25hbCkge1xuICAgICAgICBpZiAocGF5bG9hZC5pZCkge1xuICAgICAgICAgIGF3YWl0IHJlcG9ydGVyLnJlcG9ydFdpdGhSZXRyeSh7XG4gICAgICAgICAgICBqb2JJZDogcGF5bG9hZC5pZCxcbiAgICAgICAgICAgIHN0YXR1czogXCJyZXNjaGVkdWxlZFwiLFxuICAgICAgICAgICAgZGVsYXlNczogZXJyb3IuZGVsYXlNcyxcbiAgICAgICAgICAgIGhhbmRvZmZJZDogcGF5bG9hZC5oYW5kb2ZmSWQsXG4gICAgICAgICAgICB3b3JrZXJJZDogcGF5bG9hZC53b3JrZXJJZCxcbiAgICAgICAgICAgIGhhbmRlZE9mZkF0TXM6IHBheWxvYWQuaGFuZGVkT2ZmQXRNcyxcbiAgICAgICAgICAgIG1heER1cmF0aW9uTXM6IDMwMDAwLFxuICAgICAgICAgICAgcmV0cnlQZXJzaXN0RXJyb3JzOiB0cnVlXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBcInJlc2NoZWR1bGVkXCJcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGVyZm9ybWVkRXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSlcbiAgICAgIGlmIChwYXlsb2FkLmlkKSB7XG4gICAgICAgIGF3YWl0IHJlcG9ydGVyLnJlcG9ydFdpdGhSZXRyeSh7XG4gICAgICAgICAgam9iSWQ6IHBheWxvYWQuaWQsXG4gICAgICAgICAgc3RhdHVzOiBcImZhaWxlZFwiLFxuICAgICAgICAgIGVycm9yOiBwZXJmb3JtZWRFcnJvcixcbiAgICAgICAgICBoYW5kb2ZmSWQ6IHBheWxvYWQuaGFuZG9mZklkLFxuICAgICAgICAgIHdvcmtlcklkOiBwYXlsb2FkLndvcmtlcklkLFxuICAgICAgICAgIGhhbmRlZE9mZkF0TXM6IHBheWxvYWQuaGFuZGVkT2ZmQXRNcyxcbiAgICAgICAgICBtYXhEdXJhdGlvbk1zOiAzMDAwMFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgQmFja2dyb3VuZEpvYlBlcmZvcm1lZEZhaWx1cmUocGVyZm9ybWVkRXJyb3IpXG4gICAgfVxuXG4gICAgaWYgKHBheWxvYWQuaWQpIHtcbiAgICAgIGF3YWl0IHJlcG9ydGVyLnJlcG9ydFdpdGhSZXRyeSh7XG4gICAgICAgIGpvYklkOiBwYXlsb2FkLmlkLFxuICAgICAgICBzdGF0dXM6IFwiY29tcGxldGVkXCIsXG4gICAgICAgIGhhbmRvZmZJZDogcGF5bG9hZC5oYW5kb2ZmSWQsXG4gICAgICAgIHdvcmtlcklkOiBwYXlsb2FkLndvcmtlcklkLFxuICAgICAgICBoYW5kZWRPZmZBdE1zOiBwYXlsb2FkLmhhbmRlZE9mZkF0TXMsXG4gICAgICAgIG1heER1cmF0aW9uTXM6IDMwMDAwXG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gXCJjb21wbGV0ZWRcIlxuICB9IGZpbmFsbHkge1xuICAgIC8vIFJlc3RvcmUgdGhlIHJ1bm5lcidzIGJhc2UgdGl0bGUgc28gYSBsaW5nZXJpbmcvaWRsZSBydW5uZXIgKG9yIGEgcmV1c2VkXG4gICAgLy8gb25lKSBkb2Vzbid0IG1pc3JlcG9ydCBhIGZpbmlzaGVkIGpvYiBhcyBzdGlsbCBydW5uaW5nLlxuICAgIGlmIChtYW5hZ2VQcm9jZXNzVGl0bGUpIHByb2Nlc3MudGl0bGUgPSBwcmV2aW91c1RpdGxlXG4gICAgaWYgKGNsb3NlQ29ubmVjdGlvbnMpIHtcbiAgICAgIGF3YWl0IGNsb3NlUnVubmVyQ29ubmVjdGlvbnMoY29uZmlndXJhdGlvbilcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -124,6 +124,19 @@ export default class LocalBackgroundJobsAdapter extends BackgroundJobsAdapter {
|
|
|
124
124
|
jobId: string;
|
|
125
125
|
handoffId?: string;
|
|
126
126
|
}): Promise<boolean>;
|
|
127
|
+
/**
|
|
128
|
+
* Records pooled-child acceptance evidence for a local handoff.
|
|
129
|
+
* @param {{jobId: string, handoffId?: string, receivedAtMs?: number, startedAtMs?: number, childInstanceId?: string, childPid?: number}} args - Acceptance report.
|
|
130
|
+
* @returns {Promise<boolean>} - Whether accepted.
|
|
131
|
+
*/
|
|
132
|
+
markChildAccepted(args: {
|
|
133
|
+
jobId: string;
|
|
134
|
+
handoffId?: string;
|
|
135
|
+
receivedAtMs?: number;
|
|
136
|
+
startedAtMs?: number;
|
|
137
|
+
childInstanceId?: string;
|
|
138
|
+
childPid?: number;
|
|
139
|
+
}): Promise<boolean>;
|
|
127
140
|
/**
|
|
128
141
|
* Acknowledges an explicit local reschedule.
|
|
129
142
|
* @param {{jobId: string, delayMs: number, handoffId?: string}} args - Reschedule report.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-adapter.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/local-adapter.js"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local-adapter.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/local-adapter.js"],"names":[],"mappings":"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"}
|