velocious 1.0.676 → 1.0.678
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/build/background-jobs/pooled-runner-child.js +87 -5
- package/build/background-jobs/pooled-runner-shutdown.js +55 -0
- package/build/background-jobs/types.js +24 -2
- package/build/background-jobs/worker.js +182 -36
- package/build/src/background-jobs/pooled-runner-child.js +87 -7
- package/build/src/background-jobs/pooled-runner-shutdown.d.ts +26 -0
- package/build/src/background-jobs/pooled-runner-shutdown.d.ts.map +1 -0
- package/build/src/background-jobs/pooled-runner-shutdown.js +49 -0
- package/build/src/background-jobs/types.d.ts +84 -3
- package/build/src/background-jobs/types.d.ts.map +1 -1
- package/build/src/background-jobs/types.js +25 -3
- package/build/src/background-jobs/worker.d.ts +54 -4
- package/build/src/background-jobs/worker.d.ts.map +1 -1
- package/build/src/background-jobs/worker.js +191 -39
- package/package.json +1 -1
- package/src/background-jobs/pooled-runner-child.js +87 -5
- package/src/background-jobs/pooled-runner-shutdown.js +55 -0
- package/src/background-jobs/types.js +24 -2
- package/src/background-jobs/worker.js +182 -36
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
|
+
import timeout from "awaitery/build/timeout.js";
|
|
3
4
|
import runJobPayload, { BackgroundJobPerformedFailure } from "./job-runner.js";
|
|
5
|
+
import { boundedPooledRunnerInflightJobIds, isPooledChildShutdownReason, isPooledChildShutdownSignal } from "./pooled-runner-shutdown.js";
|
|
4
6
|
import { closeRunnerConnections, closeRunnerFrameworkConnections, currentConfigurationOrNull } from "./runner-graceful-shutdown.js";
|
|
5
7
|
import setRunnerProcessTitle from "./runner-process-title.js";
|
|
6
8
|
import PooledRunnerBrokerIdentity from "./pooled-runner-broker-identity.js";
|
|
7
9
|
import { runWithSharedTransactionBrokerConfig } from "../testing/shared-transaction-proxy-driver.js";
|
|
8
10
|
const BASE_PROCESS_TITLE = "velocious background-jobs-runner";
|
|
11
|
+
/** A shutdown observation may delay resource teardown only for this bounded IPC send. */
|
|
12
|
+
const SHUTDOWN_OBSERVATION_SEND_TIMEOUT_MS = 100;
|
|
9
13
|
/** Stable identity of this pooled child process for the life of the process. */
|
|
10
14
|
const childInstanceId = randomUUID();
|
|
11
15
|
setRunnerProcessTitle();
|
|
@@ -15,13 +19,18 @@ let shutdownPromise;
|
|
|
15
19
|
* Closes the runner's connections — releasing any advisory lock a killed-mid-pass
|
|
16
20
|
* job still holds — before exiting, instead of leaving a half-open session that
|
|
17
21
|
* keeps the lock until the DB server's `wait_timeout`.
|
|
18
|
-
* @param {
|
|
22
|
+
* @param {object} args - Shutdown observation.
|
|
23
|
+
* @param {number} args.exitCode - Process exit code.
|
|
24
|
+
* @param {import("./types.js").PooledChildShutdownReason} args.reason - Exact shutdown reason observed by the child.
|
|
25
|
+
* @param {number | null} [args.shutdownRequestedAtMs] - Parent request timestamp when supplied over IPC.
|
|
26
|
+
* @param {import("node:child_process").ChildProcess["signalCode"]} [args.signal] - Requested or observed signal.
|
|
19
27
|
* @returns {Promise<void>}
|
|
20
28
|
*/
|
|
21
|
-
function shutdownRunner(exitCode) {
|
|
29
|
+
function shutdownRunner({ exitCode, reason, shutdownRequestedAtMs = null, signal = null }) {
|
|
22
30
|
if (shutdownPromise)
|
|
23
31
|
return shutdownPromise;
|
|
24
32
|
shutdownPromise = (async () => {
|
|
33
|
+
await sendShutdownObservation({ reason, shutdownRequestedAtMs, signal });
|
|
25
34
|
await closeRunnerConnections(currentConfigurationOrNull());
|
|
26
35
|
process.exit(exitCode);
|
|
27
36
|
})();
|
|
@@ -50,6 +59,53 @@ function updateProcessTitle() {
|
|
|
50
59
|
const count = runningJobIds.size;
|
|
51
60
|
process.title = count > 0 ? `${BASE_PROCESS_TITLE}: ${count} ${count === 1 ? "job" : "jobs"}` : BASE_PROCESS_TITLE;
|
|
52
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Sends one bounded lifecycle observation before application/framework teardown.
|
|
64
|
+
* A closed IPC channel is expected for `ipc_disconnect`; other send failures are
|
|
65
|
+
* surfaced on stderr but never hold connection cleanup past the fixed bound.
|
|
66
|
+
* @param {object} args - Shutdown observation.
|
|
67
|
+
* @param {import("./types.js").PooledChildShutdownReason} args.reason - Shutdown reason.
|
|
68
|
+
* @param {number | null} args.shutdownRequestedAtMs - Parent request timestamp.
|
|
69
|
+
* @param {import("node:child_process").ChildProcess["signalCode"]} args.signal - Requested or observed signal.
|
|
70
|
+
* @returns {Promise<void>} - Resolves after IPC accepts the observation or the bound expires.
|
|
71
|
+
*/
|
|
72
|
+
async function sendShutdownObservation({ reason, shutdownRequestedAtMs, signal }) {
|
|
73
|
+
if (!process.send || !process.connected)
|
|
74
|
+
return;
|
|
75
|
+
const boundedInflight = boundedPooledRunnerInflightJobIds(runningJobIds);
|
|
76
|
+
/** @type {import("./types.js").PooledChildShutdownObservation & {type: "shutdown-observation"}} */
|
|
77
|
+
const message = {
|
|
78
|
+
childInstanceId,
|
|
79
|
+
...boundedInflight,
|
|
80
|
+
reason,
|
|
81
|
+
shutdownObservedAtMs: Date.now(),
|
|
82
|
+
shutdownRequestedAtMs,
|
|
83
|
+
signal,
|
|
84
|
+
type: "shutdown-observation"
|
|
85
|
+
};
|
|
86
|
+
try {
|
|
87
|
+
await timeout({ timeout: SHUTDOWN_OBSERVATION_SEND_TIMEOUT_MS }, async () => {
|
|
88
|
+
await new Promise((resolve, reject) => {
|
|
89
|
+
try {
|
|
90
|
+
process.send?.(message, (error) => {
|
|
91
|
+
if (error) {
|
|
92
|
+
reject(error);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
resolve(undefined);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
reject(error);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
console.error("Pooled background job runner could not send its shutdown observation:", error);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
53
109
|
/**
|
|
54
110
|
* Reports one acceptance observation (job received / perform started) to the
|
|
55
111
|
* worker over IPC. The message carries the job's exact handoff lease so the
|
|
@@ -93,6 +149,21 @@ function isJobMessage(message) {
|
|
|
93
149
|
const record = /** @type {{type?: ReturnType<typeof JSON.parse>, payload?: ReturnType<typeof JSON.parse>, sharedTransactionBroker?: ReturnType<typeof JSON.parse>}} */ (message);
|
|
94
150
|
return record.type === "job" && !!record.payload && typeof record.payload === "object" && typeof record.payload.id === "string";
|
|
95
151
|
}
|
|
152
|
+
/**
|
|
153
|
+
* Checks whether an IPC value requests a typed pooled-child shutdown.
|
|
154
|
+
* @param {ReturnType<typeof JSON.parse>} message - IPC message.
|
|
155
|
+
* @returns {message is {type: "shutdown-request", reason: import("./types.js").PooledChildShutdownReason, shutdownRequestedAtMs: number, signal: import("node:child_process").ChildProcess["signalCode"]}} - Whether this is a valid parent shutdown request.
|
|
156
|
+
*/
|
|
157
|
+
function isShutdownRequestMessage(message) {
|
|
158
|
+
if (!message || typeof message !== "object")
|
|
159
|
+
return false;
|
|
160
|
+
const record = /** @type {{type?: ReturnType<typeof JSON.parse>, reason?: ReturnType<typeof JSON.parse>, shutdownRequestedAtMs?: ReturnType<typeof JSON.parse>, signal?: ReturnType<typeof JSON.parse>}} */ (message);
|
|
161
|
+
return record.type === "shutdown-request"
|
|
162
|
+
&& isPooledChildShutdownReason(record.reason)
|
|
163
|
+
&& typeof record.shutdownRequestedAtMs === "number"
|
|
164
|
+
&& Number.isFinite(record.shutdownRequestedAtMs)
|
|
165
|
+
&& isPooledChildShutdownSignal(record.signal);
|
|
166
|
+
}
|
|
96
167
|
/**
|
|
97
168
|
* Sends the terminal outcome after the main/DB report has been acknowledged or rejected.
|
|
98
169
|
* @param {object} args - Outcome.
|
|
@@ -164,6 +235,15 @@ async function runJob(payload, sharedTransactionBroker) {
|
|
|
164
235
|
* @returns {void}
|
|
165
236
|
*/
|
|
166
237
|
function handleMessage(message) {
|
|
238
|
+
if (isShutdownRequestMessage(message)) {
|
|
239
|
+
void shutdownRunner({
|
|
240
|
+
exitCode: message.reason === "parent_retire_drained" ? 0 : 1,
|
|
241
|
+
reason: message.reason,
|
|
242
|
+
shutdownRequestedAtMs: message.shutdownRequestedAtMs,
|
|
243
|
+
signal: message.signal
|
|
244
|
+
});
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
167
247
|
if (!isJobMessage(message) || runningJobIds.has(message.payload.id))
|
|
168
248
|
return;
|
|
169
249
|
runningJobIds.add(message.payload.id);
|
|
@@ -172,9 +252,9 @@ function handleMessage(message) {
|
|
|
172
252
|
void runJob(message.payload, message.sharedTransactionBroker || { expected: false });
|
|
173
253
|
}
|
|
174
254
|
process.on("message", (message) => handleMessage(message));
|
|
175
|
-
process.once("disconnect", () => void shutdownRunner(0));
|
|
176
|
-
|
|
177
|
-
|
|
255
|
+
process.once("disconnect", () => void shutdownRunner({ exitCode: 0, reason: "ipc_disconnect" }));
|
|
256
|
+
process.once("SIGTERM", () => void shutdownRunner({ exitCode: 1, reason: "signal_sigterm", signal: "SIGTERM" }));
|
|
257
|
+
process.once("SIGINT", () => void shutdownRunner({ exitCode: 1, reason: "signal_sigint", signal: "SIGINT" }));
|
|
178
258
|
if (process.send)
|
|
179
|
-
process.send({ type: "ready" });
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9vbGVkLXJ1bm5lci1jaGlsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvcG9vbGVkLXJ1bm5lci1jaGlsZC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN4QyxPQUFPLGFBQWEsRUFBRSxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLCtCQUErQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDbkksT0FBTyxxQkFBcUIsTUFBTSwyQkFBMkIsQ0FBQTtBQUM3RCxPQUFPLDBCQUEwQixNQUFNLG9DQUFvQyxDQUFBO0FBQzNFLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLCtDQUErQyxDQUFBO0FBRXBHLE1BQU0sa0JBQWtCLEdBQUcsa0NBQWtDLENBQUE7QUFDN0QsZ0ZBQWdGO0FBQ2hGLE1BQU0sZUFBZSxHQUFHLFVBQVUsRUFBRSxDQUFBO0FBRXBDLHFCQUFxQixFQUFFLENBQUE7QUFFdkIsd0NBQXdDO0FBQ3hDLElBQUksZUFBZSxDQUFBO0FBRW5COzs7Ozs7R0FNRztBQUNILFNBQVMsY0FBYyxDQUFDLFFBQVE7SUFDOUIsSUFBSSxlQUFlO1FBQUUsT0FBTyxlQUFlLENBQUE7SUFFM0MsZUFBZSxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDNUIsTUFBTSxzQkFBc0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUE7UUFDMUQsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUN4QixDQUFDLENBQUMsRUFBRSxDQUFBO0lBRUosT0FBTyxlQUFlLENBQUE7QUFDeEIsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7QUFDL0IsTUFB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LE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCJcbmltcG9ydCBydW5Kb2JQYXlsb2FkLCB7IEJhY2tncm91bmRKb2JQZXJmb3JtZWRGYWlsdXJlIH0gZnJvbSBcIi4vam9iLXJ1bm5lci5qc1wiXG5pbXBvcnQgeyBjbG9zZVJ1bm5lckNvbm5lY3Rpb25zLCBjbG9zZVJ1bm5lckZyYW1ld29ya0Nvbm5lY3Rpb25zLCBjdXJyZW50Q29uZmlndXJhdGlvbk9yTnVsbCB9IGZyb20gXCIuL3J1bm5lci1ncmFjZWZ1bC1zaHV0ZG93bi5qc1wiXG5pbXBvcnQgc2V0UnVubmVyUHJvY2Vzc1RpdGxlIGZyb20gXCIuL3J1bm5lci1wcm9jZXNzLXRpdGxlLmpzXCJcbmltcG9ydCBQb29sZWRSdW5uZXJCcm9rZXJJZGVudGl0eSBmcm9tIFwiLi9wb29sZWQtcnVubmVyLWJyb2tlci1pZGVudGl0eS5qc1wiXG5pbXBvcnQgeyBydW5XaXRoU2hhcmVkVHJhbnNhY3Rpb25Ccm9rZXJDb25maWcgfSBmcm9tIFwiLi4vdGVzdGluZy9zaGFyZWQtdHJhbnNhY3Rpb24tcHJveHktZHJpdmVyLmpzXCJcblxuY29uc3QgQkFTRV9QUk9DRVNTX1RJVExFID0gXCJ2ZWxvY2lvdXMgYmFja2dyb3VuZC1qb2JzLXJ1bm5lclwiXG4vKiogU3RhYmxlIGlkZW50aXR5IG9mIHRoaXMgcG9vbGVkIGNoaWxkIHByb2Nlc3MgZm9yIHRoZSBsaWZlIG9mIHRoZSBwcm9jZXNzLiAqL1xuY29uc3QgY2hpbGRJbnN0YW5jZUlkID0gcmFuZG9tVVVJRCgpXG5cbnNldFJ1bm5lclByb2Nlc3NUaXRsZSgpXG5cbi8qKiBAdHlwZSB7UHJvbWlzZTx2b2lkPiB8IHVuZGVmaW5lZH0gKi9cbmxldCBzaHV0ZG93blByb21pc2VcblxuLyoqXG4gKiBDbG9zZXMgdGhlIHJ1bm5lcidzIGNvbm5lY3Rpb25zIOKAlCByZWxlYXNpbmcgYW55IGFkdmlzb3J5IGxvY2sgYSBraWxsZWQtbWlkLXBhc3NcbiAqIGpvYiBzdGlsbCBob2xkcyDigJQgYmVmb3JlIGV4aXRpbmcsIGluc3RlYWQgb2YgbGVhdmluZyBhIGhhbGYtb3BlbiBzZXNzaW9uIHRoYXRcbiAqIGtlZXBzIHRoZSBsb2NrIHVudGlsIHRoZSBEQiBzZXJ2ZXIncyBgd2FpdF90aW1lb3V0YC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBleGl0Q29kZSAtIFByb2Nlc3MgZXhpdCBjb2RlLlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gKi9cbmZ1bmN0aW9uIHNodXRkb3duUnVubmVyKGV4aXRDb2RlKSB7XG4gIGlmIChzaHV0ZG93blByb21pc2UpIHJldHVybiBzaHV0ZG93blByb21pc2VcblxuICBzaHV0ZG93blByb21pc2UgPSAoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGNsb3NlUnVubmVyQ29ubmVjdGlvbnMoY3VycmVudENvbmZpZ3VyYXRpb25Pck51bGwoKSlcbiAgICBwcm9jZXNzLmV4aXQoZXhpdENvZGUpXG4gIH0pKClcblxuICByZXR1cm4gc2h1dGRvd25Qcm9taXNlXG59XG5cbi8qKlxuICogSWRzIG9mIGpvYnMgY3VycmVudGx5IHJ1bm5pbmcgaW4gdGhpcyBjaGlsZC4gQSBwb29sZWQgY2hpbGQgcnVucyB1cCB0b1xuICogYHBvb2xlZFJ1bm5lckNvbmN1cnJlbmN5YCBqb2JzIGF0IG9uY2UgKHRoZSB3b3JrZXIgb25seSBkaXNwYXRjaGVzIHdpdGhpbiB0aGF0XG4gKiBib3VuZCk7IHRoZSBzZXQgZGVkdXBlcyBhIHJlZGVsaXZlcmVkIGpvYiBpZCBhbmQgbGV0cyBlYWNoIGpvYiBzZXR0bGVcbiAqIGluZGVwZW5kZW50bHkuXG4gKiBAdHlwZSB7U2V0PHN0cmluZz59XG4gKi9cbmNvbnN0IHJ1bm5pbmdKb2JJZHMgPSBuZXcgU2V0KClcbmNvbnN0IGJyb2tlcklkZW50aXR5ID0gbmV3IFBvb2xlZFJ1bm5lckJyb2tlcklkZW50aXR5KHtcbiAgY2xvc2VDb25uZWN0aW9uczogYXN5bmMgKCkgPT4gYXdhaXQgY2xvc2VSdW5uZXJGcmFtZXdvcmtDb25uZWN0aW9ucyhjdXJyZW50Q29uZmlndXJhdGlvbk9yTnVsbCgpKVxufSlcblxuLyoqXG4gKiBTZXRzIGFuIGFnZ3JlZ2F0ZSBwcm9jZXNzIHRpdGxlIGZyb20gdGhlIGN1cnJlbnQgaW4tZmxpZ2h0IGNvdW50LiBBIGNoaWxkIHJ1bnNcbiAqIGpvYnMgY29uY3VycmVudGx5LCBzbyBhIHBlci1qb2IgdGl0bGUgKHdoaWNoIGBydW5Kb2JQYXlsb2FkYCB3b3VsZCBzbmFwc2hvdCBhbmRcbiAqIHJlc3RvcmUgYXJvdW5kIGEgc2luZ2xlIGpvYikgY2Fubm90IHJlcHJlc2VudCB0aGUgcHJvY2VzcyDigJQgaW50ZXJsZWF2ZWRcbiAqIGNvbXBsZXRpb25zIHdvdWxkIGxlYXZlIGEgc3RhbGUgbGFiZWwuIFJlY29tcHV0aW5nIGZyb20gYHJ1bm5pbmdKb2JJZHMuc2l6ZWAgaXNcbiAqIGNvbmN1cnJlbmN5LXNhZmUgYW5kIGhvbmVzdDogYHBzYC9gdG9wYCBzaG93IGhvdyBtYW55IGpvYnMgdGhlIGNoaWxkIGlzIHJ1bm5pbmcuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gdXBkYXRlUHJvY2Vzc1RpdGxlKCkge1xuICBjb25zdCBjb3VudCA9IHJ1bm5pbmdKb2JJZHMuc2l6ZVxuXG4gIHByb2Nlc3MudGl0bGUgPSBjb3VudCA+IDAgPyBgJHtCQVNFX1BST0NFU1NfVElUTEV9OiAke2NvdW50fSAke2NvdW50ID09PSAxID8gXCJqb2JcIiA6IFwiam9ic1wifWAgOiBCQVNFX1BST0NFU1NfVElUTEVcbn1cblxuLyoqXG4gKiBSZXBvcnRzIG9uZSBhY2NlcHRhbmNlIG9ic2VydmF0aW9uIChqb2IgcmVjZWl2ZWQgLyBwZXJmb3JtIHN0YXJ0ZWQpIHRvIHRoZVxuICogd29ya2VyIG92ZXIgSVBDLiBUaGUgbWVzc2FnZSBjYXJyaWVzIHRoZSBqb2IncyBleGFjdCBoYW5kb2ZmIGxlYXNlIHNvIHRoZVxuICogd29ya2VyIGNhbiBwZXJzaXN0IGl0IGZlbmNlZCB3aXRob3V0IGFueSBvdGhlciBsb29rdXAuIFNlbmQgZmFpbHVyZXMgYXJlXG4gKiBzd2FsbG93ZWQ6IGEgZGVhZCBJUEMgY2hhbm5lbCBpcyB0ZXJtaW5hbCBmb3IgdGhpcyBjaGlsZCAodGhlIGRpc2Nvbm5lY3RcbiAqIGhhbmRsZXIgb3ducyBzaHV0ZG93biksIGFuZCBsb3NpbmcgYWNjZXB0YW5jZSBldmlkZW5jZSBtdXN0IG5ldmVyIGZhaWwgdGhlXG4gKiBqb2IgaXRzZWxmLlxuICogQHBhcmFtIHtcImpvYi1yZWNlaXZlZFwiIHwgXCJqb2Itc3RhcnRlZFwifSB0eXBlIC0gT2JzZXJ2YXRpb24ga2luZC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUGF5bG9hZCAmIHtpZDogc3RyaW5nfX0gcGF5bG9hZCAtIEpvYiBwYXlsb2FkIGNhcnJ5aW5nIHRoZSBoYW5kb2ZmIGxlYXNlLlxuICogQHBhcmFtIHtudW1iZXJ9IG9ic2VydmVkQXRNcyAtIEVwb2NoIG1zIG9mIHRoZSBvYnNlcnZhdGlvbi5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBzZW5kQ2hpbGRBY2NlcHRhbmNlKHR5cGUsIHBheWxvYWQsIG9ic2VydmVkQXRNcykge1xuICBpZiAoIXByb2Nlc3Muc2VuZCkgcmV0dXJuXG5cbiAgY29uc3QgbWVzc2FnZSA9IHtcbiAgICBjaGlsZEluc3RhbmNlSWQsXG4gICAgY2hpbGRQaWQ6IHByb2Nlc3MucGlkLFxuICAgIGhhbmRlZE9mZkF0TXM6IHBheWxvYWQuaGFuZGVkT2ZmQXRNcyxcbiAgICBoYW5kb2ZmSWQ6IHBheWxvYWQuaGFuZG9mZklkLFxuICAgIGpvYklkOiBwYXlsb2FkLmlkLFxuICAgIHR5cGUsXG4gICAgd29ya2VySWQ6IHBheWxvYWQud29ya2VySWQsXG4gICAgLi4uKHR5cGUgPT09IFwiam9iLXJlY2VpdmVkXCIgPyB7cmVjZWl2ZWRBdE1zOiBvYnNlcnZlZEF0TXN9IDoge3N0YXJ0ZWRBdE1zOiBvYnNlcnZlZEF0TXN9KVxuICB9XG5cbiAgdHJ5IHtcbiAgICBwcm9jZXNzLnNlbmQobWVzc2FnZSlcbiAgfSBjYXRjaCB7XG4gICAgLy8gVGhlIElQQyBjaGFubmVsIGlzIGFscmVhZHkgZ29uZTsgdGhlIGRpc2Nvbm5lY3QgaGFuZGxlciBvd25zIHNodXRkb3duLlxuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYW4gSVBDIHZhbHVlIGlzIGEgcnVubmFibGUgcG9vbGVkIGpvYiBtZXNzYWdlLlxuICogQHBhcmFtIHtSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPn0gbWVzc2FnZSAtIElQQyBtZXNzYWdlLlxuICogQHJldHVybnMge21lc3NhZ2UgaXMge3R5cGU6IFwiam9iXCIsIHBheWxvYWQ6IGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlBheWxvYWQgJiB7aWQ6IHN0cmluZ30sIHNoYXJlZFRyYW5zYWN0aW9uQnJva2VyPzogaW1wb3J0KFwiLi4vdGVzdGluZy9zaGFyZWQtdHJhbnNhY3Rpb24tcHJveHktZHJpdmVyLmpzXCIpLlNoYXJlZFRyYW5zYWN0aW9uQnJva2VySm9iQ29uZmlnfX0gLSBXaGV0aGVyIHRoaXMgaXMgYSB2YWxpZCBqb2IgbWVzc2FnZS5cbiAqL1xuZnVuY3Rpb24gaXNKb2JNZXNzYWdlKG1lc3NhZ2UpIHtcbiAgaWYgKCFtZXNzYWdlIHx8IHR5cGVvZiBtZXNzYWdlICE9PSBcIm9iamVjdFwiKSByZXR1cm4gZmFsc2VcbiAgY29uc3QgcmVjb3JkID0gLyoqIEB0eXBlIHt7dHlwZT86IFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+LCBwYXlsb2FkPzogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4sIHNoYXJlZFRyYW5zYWN0aW9uQnJva2VyPzogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59fSAqLyAobWVzc2FnZSlcblxuICByZXR1cm4gcmVjb3JkLnR5cGUgPT09IFwiam9iXCIgJiYgISFyZWNvcmQucGF5bG9hZCAmJiB0eXBlb2YgcmVjb3JkLnBheWxvYWQgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY29yZC5wYXlsb2FkLmlkID09PSBcInN0cmluZ1wiXG59XG5cbi8qKlxuICogU2VuZHMgdGhlIHRlcm1pbmFsIG91dGNvbWUgYWZ0ZXIgdGhlIG1haW4vREIgcmVwb3J0IGhhcyBiZWVuIGFja25vd2xlZGdlZCBvciByZWplY3RlZC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3V0Y29tZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmpvYklkIC0gSm9iIGlkLlxuICogQHBhcmFtIHtib29sZWFufSBhcmdzLmFja25vd2xlZGdlZCAtIFdoZXRoZXIgdGhlIHRlcm1pbmFsIHJlcG9ydCB3YXMgYWNrbm93bGVkZ2VkLlxuICogQHBhcmFtIHtcImNvbXBsZXRlZFwiIHwgXCJmYWlsZWRcIiB8IFwicmVzY2hlZHVsZWRcIn0gW2FyZ3Muc3RhdHVzXSAtIEFja25vd2xlZGdlZCBvdXRjb21lLlxuICogQHBhcmFtIHtFcnJvcn0gW2FyZ3MuZXJyb3JdIC0gUmVwb3J0aW5nIGVycm9yIHdoZW4gYWNrbm93bGVkZ2VtZW50IHdhcyBub3Qgb2J0YWluZWQuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyBhZnRlciBJUEMgYWNjZXB0cyB0aGUgbWVzc2FnZS5cbiAqL1xuZnVuY3Rpb24gc2VuZE91dGNvbWUoe2pvYklkLCBhY2tub3dsZWRnZWQsIHN0YXR1cywgZXJyb3J9KSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGlmICghcHJvY2Vzcy5zZW5kKSB7XG4gICAgICByZXNvbHZlKHVuZGVmaW5lZClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHByb2Nlc3Muc2VuZCh7XG4gICAgICB0eXBlOiBcImpvYi1vdXRjb21lXCIsXG4gICAgICBqb2JJZCxcbiAgICAgIGFja25vd2xlZGdlZCxcbiAgICAgIHN0YXR1cyxcbiAgICAgIHJzc0J5dGVzOiBwcm9jZXNzLm1lbW9yeVVzYWdlKCkucnNzLFxuICAgICAgZXJyb3I6IGVycm9yPy5tZXNzYWdlXG4gICAgfSwgKCkgPT4gcmVzb2x2ZSh1bmRlZmluZWQpKVxuICB9KVxufVxuXG4vKipcbiAqIFJ1bnMgb25lIGpvYiBjb25jdXJyZW50bHkgd2l0aCBhbnkgc2libGluZ3MgYW5kIHJlcG9ydHMgaXRzIG93biB0ZXJtaW5hbFxuICogb3V0Y29tZS4gQSBzaW5nbGUgam9iJ3MgdW5leHBlY3RlZCBmYWlsdXJlIHJlcG9ydHMgdGhhdCBqb2IgZm9yIHJlY2xhbWF0aW9uXG4gKiAoYGFja25vd2xlZGdlZDogZmFsc2VgKSBidXQgZG9lcyBOT1QgdGFrZSBkb3duIHRoZSBjaGlsZCDigJQgaXRzIGNvbmN1cnJlbnRcbiAqIHNpYmxpbmdzIGtlZXAgcnVubmluZy4gT25seSBhIHByb2Nlc3MtbGV2ZWwgZmF1bHQgKHdoaWNoIGVzY2FwZXMgZXZlcnlcbiAqIHBlci1qb2IgdHJ5L2NhdGNoKSBlbmRzIHRoZSBjaGlsZCwgd2hpY2ggdGhlIHdvcmtlciBzZWVzIGFzIGFuIGV4aXQgYW5kXG4gKiByZWNsYWltcyBmb3IgdGhlIHdob2xlIGluLWZsaWdodCBzZXQuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlBheWxvYWQgJiB7aWQ6IHN0cmluZ319IHBheWxvYWQgLSBKb2IgcGF5bG9hZC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vdGVzdGluZy9zaGFyZWQtdHJhbnNhY3Rpb24tcHJveHktZHJpdmVyLmpzXCIpLlNoYXJlZFRyYW5zYWN0aW9uQnJva2VySm9iQ29uZmlnfSBzaGFyZWRUcmFuc2FjdGlvbkJyb2tlciAtIFBlci1qb2IgYnJva2VyIGNvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyBhZnRlciByZXBvcnRpbmcuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJ1bkpvYihwYXlsb2FkLCBzaGFyZWRUcmFuc2FjdGlvbkJyb2tlcikge1xuICB0cnkge1xuICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHJ1bldpdGhTaGFyZWRUcmFuc2FjdGlvbkJyb2tlckNvbmZpZyhzaGFyZWRUcmFuc2FjdGlvbkJyb2tlciwgYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJyb2tlcklkZW50aXR5LnJ1bihzaGFyZWRUcmFuc2FjdGlvbkJyb2tlciwgYXN5bmMgKCkgPT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgcnVuSm9iUGF5bG9hZChwYXlsb2FkLCB7XG4gICAgICAgICAgY2xvc2VDb25uZWN0aW9uczogZmFsc2UsXG4gICAgICAgICAgbWFuYWdlUHJvY2Vzc1RpdGxlOiBmYWxzZSxcbiAgICAgICAgICBvblBlcmZvcm1TdGFydDogKCkgPT4gc2VuZENoaWxkQWNjZXB0YW5jZShcImpvYi1zdGFydGVkXCIsIHBheWxvYWQsIERhdGUubm93KCkpLFxuICAgICAgICAgIHByb2Nlc3NUeXBlOiBcImJhY2tncm91bmQtam9icy1wb29sZWQtcnVubmVyXCJcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfSlcbiAgICBhd2FpdCBzZW5kT3V0Y29tZSh7am9iSWQ6IHBheWxvYWQuaWQsIGFja25vd2xlZGdlZDogdHJ1ZSwgc3RhdHVzfSlcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBCYWNrZ3JvdW5kSm9iUGVyZm9ybWVkRmFpbHVyZSkge1xuICAgICAgYXdhaXQgc2VuZE91dGNvbWUoe2pvYklkOiBwYXlsb2FkLmlkLCBhY2tub3dsZWRnZWQ6IHRydWUsIHN0YXR1czogXCJmYWlsZWRcIn0pXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlcG9ydEVycm9yID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpXG4gICAgICBjb25zb2xlLmVycm9yKFwiUG9vbGVkIGJhY2tncm91bmQgam9iIHJ1bm5lciBmYWlsZWQgYmVmb3JlIHRlcm1pbmFsIGFja25vd2xlZGdlbWVudDpcIiwgcmVwb3J0RXJyb3IpXG4gICAgICBhd2FpdCBzZW5kT3V0Y29tZSh7am9iSWQ6IHBheWxvYWQuaWQsIGFja25vd2xlZGdlZDogZmFsc2UsIGVycm9yOiByZXBvcnRFcnJvcn0pXG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIHJ1bm5pbmdKb2JJZHMuZGVsZXRlKHBheWxvYWQuaWQpXG4gICAgdXBkYXRlUHJvY2Vzc1RpdGxlKClcbiAgfVxufVxuXG4vKipcbiAqIEhhbmRsZXMgYSBqb2IgbWVzc2FnZSwgc3RhcnRpbmcgaXQgYWxvbmdzaWRlIGFueSBjb25jdXJyZW50IHNpYmxpbmdzLlxuICogQHBhcmFtIHtSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPn0gbWVzc2FnZSAtIElQQyBtZXNzYWdlLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIGhhbmRsZU1lc3NhZ2UobWVzc2FnZSkge1xuICBpZiAoIWlzSm9iTWVzc2FnZShtZXNzYWdlKSB8fCBydW5uaW5nSm9iSWRzLmhhcyhtZXNzYWdlLnBheWxvYWQuaWQpKSByZXR1cm5cblxuICBydW5uaW5nSm9iSWRzLmFkZChtZXNzYWdlLnBheWxvYWQuaWQpXG4gIHVwZGF0ZVByb2Nlc3NUaXRsZSgpXG4gIHNlbmRDaGlsZEFjY2VwdGFuY2UoXCJqb2ItcmVjZWl2ZWRcIiwgbWVzc2FnZS5wYXlsb2FkLCBEYXRlLm5vdygpKVxuICB2b2lkIHJ1bkpvYihtZXNzYWdlLnBheWxvYWQsIG1lc3NhZ2Uuc2hhcmVkVHJhbnNhY3Rpb25Ccm9rZXIgfHwge2V4cGVjdGVkOiBmYWxzZX0pXG59XG5cbnByb2Nlc3Mub24oXCJtZXNzYWdlXCIsIChtZXNzYWdlKSA9PiBoYW5kbGVNZXNzYWdlKG1lc3NhZ2UpKVxucHJvY2Vzcy5vbmNlKFwiZGlzY29ubmVjdFwiLCAoKSA9PiB2b2lkIHNodXRkb3duUnVubmVyKDApKVxuZm9yIChjb25zdCBzaWduYWwgb2YgW1wiU0lHVEVSTVwiLCBcIlNJR0lOVFwiXSkgcHJvY2Vzcy5vbmNlKHNpZ25hbCwgKCkgPT4gdm9pZCBzaHV0ZG93blJ1bm5lcigxKSlcbmlmIChwcm9jZXNzLnNlbmQpIHByb2Nlc3Muc2VuZCh7dHlwZTogXCJyZWFkeVwifSlcbiJdfQ==
|
|
259
|
+
process.send({ childInstanceId, childPid: process.pid, type: "ready" });
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9vbGVkLXJ1bm5lci1jaGlsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvcG9vbGVkLXJ1bm5lci1jaGlsZC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN4QyxPQUFPLE9BQU8sTUFBTSwyQkFBMkIsQ0FBQTtBQUMvQyxPQUFPLGFBQWEsRUFBRSxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLDJCQUEyQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDekksT0FBTyxFQUFFLHNCQUFzQixFQUFFLCtCQUErQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDbkksT0FBTyxxQkFBcUIsTUFBTSwyQkFBMkIsQ0FBQTtBQUM3RCxPQUFPLDBCQUEwQixNQUFNLG9DQUFvQyxDQUFBO0FBQzNFLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLCtDQUErQyxDQUFBO0FBRXBHLE1BQU0sa0JBQWtCLEdBQUcsa0NBQWtDLENBQUE7QUFDN0QseUZBQXlGO0FBQ3pGLE1BQU0sb0NBQW9DLEdBQUcsR0FBRyxDQUFBO0FBQ2hELGdGQUFnRjtBQUNoRixNQUFNLGVBQWUsR0FBRyxVQUFVLEVBQUUsQ0FBQTtBQUVwQyxxQkFBcUIsRUFBRSxDQUFBO0FBRXZCLHdDQUF3QztBQUN4QyxJQUFJLGVBQWUsQ0FBQTtBQUVuQjs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBUyxjQUFjLENBQUMsRUFBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixHQUFHLElBQUksRUFBRSxNQUFNLEdBQUcsSUFBSSxFQUFDO0lBQ3JGLElBQUksZUFBZTtRQUFFLE9BQU8sZUFBZSxDQUFBO0lBRTNDLGVBQWUsR0FBRyxDQUFDLEtBQUssSUFB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RyxFQUFFLENBQUMsS0FBSyxjQUFjLENBQUMsRUFBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQyxDQUFBO0FBQzlHLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssY0FBYyxDQUFDLEVBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUE7QUFDM0csSUFBSSxPQUFPLENBQUMsSUFBSTtJQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQyxlQUFlLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gXCJub2RlOmNyeXB0b1wiXG5pbXBvcnQgdGltZW91dCBmcm9tIFwiYXdhaXRlcnkvYnVpbGQvdGltZW91dC5qc1wiXG5pbXBvcnQgcnVuSm9iUGF5bG9hZCwgeyBCYWNrZ3JvdW5kSm9iUGVyZm9ybWVkRmFpbHVyZSB9IGZyb20gXCIuL2pvYi1ydW5uZXIuanNcIlxuaW1wb3J0IHsgYm91bmRlZFBvb2xlZFJ1bm5lckluZmxpZ2h0Sm9iSWRzLCBpc1Bvb2xlZENoaWxkU2h1dGRvd25SZWFzb24sIGlzUG9vbGVkQ2hpbGRTaHV0ZG93blNpZ25hbCB9IGZyb20gXCIuL3Bvb2xlZC1ydW5uZXItc2h1dGRvd24uanNcIlxuaW1wb3J0IHsgY2xvc2VSdW5uZXJDb25uZWN0aW9ucywgY2xvc2VSdW5uZXJGcmFtZXdvcmtDb25uZWN0aW9ucywgY3VycmVudENvbmZpZ3VyYXRpb25Pck51bGwgfSBmcm9tIFwiLi9ydW5uZXItZ3JhY2VmdWwtc2h1dGRvd24uanNcIlxuaW1wb3J0IHNldFJ1bm5lclByb2Nlc3NUaXRsZSBmcm9tIFwiLi9ydW5uZXItcHJvY2Vzcy10aXRsZS5qc1wiXG5pbXBvcnQgUG9vbGVkUnVubmVyQnJva2VySWRlbnRpdHkgZnJvbSBcIi4vcG9vbGVkLXJ1bm5lci1icm9rZXItaWRlbnRpdHkuanNcIlxuaW1wb3J0IHsgcnVuV2l0aFNoYXJlZFRyYW5zYWN0aW9uQnJva2VyQ29uZmlnIH0gZnJvbSBcIi4uL3Rlc3Rpbmcvc2hhcmVkLXRyYW5zYWN0aW9uLXByb3h5LWRyaXZlci5qc1wiXG5cbmNvbnN0IEJBU0VfUFJPQ0VTU19USVRMRSA9IFwidmVsb2Npb3VzIGJhY2tncm91bmQtam9icy1ydW5uZXJcIlxuLyoqIEEgc2h1dGRvd24gb2JzZXJ2YXRpb24gbWF5IGRlbGF5IHJlc291cmNlIHRlYXJkb3duIG9ubHkgZm9yIHRoaXMgYm91bmRlZCBJUEMgc2VuZC4gKi9cbmNvbnN0IFNIVVRET1dOX09CU0VSVkFUSU9OX1NFTkRfVElNRU9VVF9NUyA9IDEwMFxuLyoqIFN0YWJsZSBpZGVudGl0eSBvZiB0aGlzIHBvb2xlZCBjaGlsZCBwcm9jZXNzIGZvciB0aGUgbGlmZSBvZiB0aGUgcHJvY2Vzcy4gKi9cbmNvbnN0IGNoaWxkSW5zdGFuY2VJZCA9IHJhbmRvbVVVSUQoKVxuXG5zZXRSdW5uZXJQcm9jZXNzVGl0bGUoKVxuXG4vKiogQHR5cGUge1Byb21pc2U8dm9pZD4gfCB1bmRlZmluZWR9ICovXG5sZXQgc2h1dGRvd25Qcm9taXNlXG5cbi8qKlxuICogQ2xvc2VzIHRoZSBydW5uZXIncyBjb25uZWN0aW9ucyDigJQgcmVsZWFzaW5nIGFueSBhZHZpc29yeSBsb2NrIGEga2lsbGVkLW1pZC1wYXNzXG4gKiBqb2Igc3RpbGwgaG9sZHMg4oCUIGJlZm9yZSBleGl0aW5nLCBpbnN0ZWFkIG9mIGxlYXZpbmcgYSBoYWxmLW9wZW4gc2Vzc2lvbiB0aGF0XG4gKiBrZWVwcyB0aGUgbG9jayB1bnRpbCB0aGUgREIgc2VydmVyJ3MgYHdhaXRfdGltZW91dGAuXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIFNodXRkb3duIG9ic2VydmF0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IGFyZ3MuZXhpdENvZGUgLSBQcm9jZXNzIGV4aXQgY29kZS5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5Qb29sZWRDaGlsZFNodXRkb3duUmVhc29ufSBhcmdzLnJlYXNvbiAtIEV4YWN0IHNodXRkb3duIHJlYXNvbiBvYnNlcnZlZCBieSB0aGUgY2hpbGQuXG4gKiBAcGFyYW0ge251bWJlciB8IG51bGx9IFthcmdzLnNodXRkb3duUmVxdWVzdGVkQXRNc10gLSBQYXJlbnQgcmVxdWVzdCB0aW1lc3RhbXAgd2hlbiBzdXBwbGllZCBvdmVyIElQQy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwibm9kZTpjaGlsZF9wcm9jZXNzXCIpLkNoaWxkUHJvY2Vzc1tcInNpZ25hbENvZGVcIl19IFthcmdzLnNpZ25hbF0gLSBSZXF1ZXN0ZWQgb3Igb2JzZXJ2ZWQgc2lnbmFsLlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gKi9cbmZ1bmN0aW9uIHNodXRkb3duUnVubmVyKHtleGl0Q29kZSwgcmVhc29uLCBzaHV0ZG93blJlcXVlc3RlZEF0TXMgPSBudWxsLCBzaWduYWwgPSBudWxsfSkge1xuICBpZiAoc2h1dGRvd25Qcm9taXNlKSByZXR1cm4gc2h1dGRvd25Qcm9taXNlXG5cbiAgc2h1dGRvd25Qcm9taXNlID0gKGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBzZW5kU2h1dGRvd25PYnNlcnZhdGlvbih7cmVhc29uLCBzaHV0ZG93blJlcXVlc3RlZEF0TXMsIHNpZ25hbH0pXG4gICAgYXdhaXQgY2xvc2VSdW5uZXJDb25uZWN0aW9ucyhjdXJyZW50Q29uZmlndXJhdGlvbk9yTnVsbCgpKVxuICAgIHByb2Nlc3MuZXhpdChleGl0Q29kZSlcbiAgfSkoKVxuXG4gIHJldHVybiBzaHV0ZG93blByb21pc2Vcbn1cblxuLyoqXG4gKiBJZHMgb2Ygam9icyBjdXJyZW50bHkgcnVubmluZyBpbiB0aGlzIGNoaWxkLiBBIHBvb2xlZCBjaGlsZCBydW5zIHVwIHRvXG4gKiBgcG9vbGVkUnVubmVyQ29uY3VycmVuY3lgIGpvYnMgYXQgb25jZSAodGhlIHdvcmtlciBvbmx5IGRpc3BhdGNoZXMgd2l0aGluIHRoYXRcbiAqIGJvdW5kKTsgdGhlIHNldCBkZWR1cGVzIGEgcmVkZWxpdmVyZWQgam9iIGlkIGFuZCBsZXRzIGVhY2ggam9iIHNldHRsZVxuICogaW5kZXBlbmRlbnRseS5cbiAqIEB0eXBlIHtTZXQ8c3RyaW5nPn1cbiAqL1xuY29uc3QgcnVubmluZ0pvYklkcyA9IG5ldyBTZXQoKVxuY29uc3QgYnJva2VySWRlbnRpdHkgPSBuZXcgUG9vbGVkUnVubmVyQnJva2VySWRlbnRpdHkoe1xuICBjbG9zZUNvbm5lY3Rpb25zOiBhc3luYyAoKSA9PiBhd2FpdCBjbG9zZVJ1bm5lckZyYW1ld29ya0Nvbm5lY3Rpb25zKGN1cnJlbnRDb25maWd1cmF0aW9uT3JOdWxsKCkpXG59KVxuXG4vKipcbiAqIFNldHMgYW4gYWdncmVnYXRlIHByb2Nlc3MgdGl0bGUgZnJvbSB0aGUgY3VycmVudCBpbi1mbGlnaHQgY291bnQuIEEgY2hpbGQgcnVuc1xuICogam9icyBjb25jdXJyZW50bHksIHNvIGEgcGVyLWpvYiB0aXRsZSAod2hpY2ggYHJ1bkpvYlBheWxvYWRgIHdvdWxkIHNuYXBzaG90IGFuZFxuICogcmVzdG9yZSBhcm91bmQgYSBzaW5nbGUgam9iKSBjYW5ub3QgcmVwcmVzZW50IHRoZSBwcm9jZXNzIOKAlCBpbnRlcmxlYXZlZFxuICogY29tcGxldGlvbnMgd291bGQgbGVhdmUgYSBzdGFsZSBsYWJlbC4gUmVjb21wdXRpbmcgZnJvbSBgcnVubmluZ0pvYklkcy5zaXplYCBpc1xuICogY29uY3VycmVuY3ktc2FmZSBhbmQgaG9uZXN0OiBgcHNgL2B0b3BgIHNob3cgaG93IG1hbnkgam9icyB0aGUgY2hpbGQgaXMgcnVubmluZy5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiB1cGRhdGVQcm9jZXNzVGl0bGUoKSB7XG4gIGNvbnN0IGNvdW50ID0gcnVubmluZ0pvYklkcy5zaXplXG5cbiAgcHJvY2Vzcy50aXRsZSA9IGNvdW50ID4gMCA/IGAke0JBU0VfUFJPQ0VTU19USVRMRX06ICR7Y291bnR9ICR7Y291bnQgPT09IDEgPyBcImpvYlwiIDogXCJqb2JzXCJ9YCA6IEJBU0VfUFJPQ0VTU19USVRMRVxufVxuXG4vKipcbiAqIFNlbmRzIG9uZSBib3VuZGVkIGxpZmVjeWNsZSBvYnNlcnZhdGlvbiBiZWZvcmUgYXBwbGljYXRpb24vZnJhbWV3b3JrIHRlYXJkb3duLlxuICogQSBjbG9zZWQgSVBDIGNoYW5uZWwgaXMgZXhwZWN0ZWQgZm9yIGBpcGNfZGlzY29ubmVjdGA7IG90aGVyIHNlbmQgZmFpbHVyZXMgYXJlXG4gKiBzdXJmYWNlZCBvbiBzdGRlcnIgYnV0IG5ldmVyIGhvbGQgY29ubmVjdGlvbiBjbGVhbnVwIHBhc3QgdGhlIGZpeGVkIGJvdW5kLlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBTaHV0ZG93biBvYnNlcnZhdGlvbi5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5Qb29sZWRDaGlsZFNodXRkb3duUmVhc29ufSBhcmdzLnJlYXNvbiAtIFNodXRkb3duIHJlYXNvbi5cbiAqIEBwYXJhbSB7bnVtYmVyIHwgbnVsbH0gYXJncy5zaHV0ZG93blJlcXVlc3RlZEF0TXMgLSBQYXJlbnQgcmVxdWVzdCB0aW1lc3RhbXAuXG4gKiBAcGFyYW0ge2ltcG9ydChcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiKS5DaGlsZFByb2Nlc3NbXCJzaWduYWxDb2RlXCJdfSBhcmdzLnNpZ25hbCAtIFJlcXVlc3RlZCBvciBvYnNlcnZlZCBzaWduYWwuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyBhZnRlciBJUEMgYWNjZXB0cyB0aGUgb2JzZXJ2YXRpb24gb3IgdGhlIGJvdW5kIGV4cGlyZXMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNlbmRTaHV0ZG93bk9ic2VydmF0aW9uKHtyZWFzb24sIHNodXRkb3duUmVxdWVzdGVkQXRNcywgc2lnbmFsfSkge1xuICBpZiAoIXByb2Nlc3Muc2VuZCB8fCAhcHJvY2Vzcy5jb25uZWN0ZWQpIHJldHVyblxuXG4gIGNvbnN0IGJvdW5kZWRJbmZsaWdodCA9IGJvdW5kZWRQb29sZWRSdW5uZXJJbmZsaWdodEpvYklkcyhydW5uaW5nSm9iSWRzKVxuICAvKiogQHR5cGUge2ltcG9ydChcIi4vdHlwZXMuanNcIikuUG9vbGVkQ2hpbGRTaHV0ZG93bk9ic2VydmF0aW9uICYge3R5cGU6IFwic2h1dGRvd24tb2JzZXJ2YXRpb25cIn19ICovXG4gIGNvbnN0IG1lc3NhZ2UgPSB7XG4gICAgY2hpbGRJbnN0YW5jZUlkLFxuICAgIC4uLmJvdW5kZWRJbmZsaWdodCxcbiAgICByZWFzb24sXG4gICAgc2h1dGRvd25PYnNlcnZlZEF0TXM6IERhdGUubm93KCksXG4gICAgc2h1dGRvd25SZXF1ZXN0ZWRBdE1zLFxuICAgIHNpZ25hbCxcbiAgICB0eXBlOiBcInNodXRkb3duLW9ic2VydmF0aW9uXCJcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgdGltZW91dCh7dGltZW91dDogU0hVVERPV05fT0JTRVJWQVRJT05fU0VORF9USU1FT1VUX01TfSwgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHByb2Nlc3Muc2VuZD8uKG1lc3NhZ2UsIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUodW5kZWZpbmVkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcIlBvb2xlZCBiYWNrZ3JvdW5kIGpvYiBydW5uZXIgY291bGQgbm90IHNlbmQgaXRzIHNodXRkb3duIG9ic2VydmF0aW9uOlwiLCBlcnJvcilcbiAgfVxufVxuXG4vKipcbiAqIFJlcG9ydHMgb25lIGFjY2VwdGFuY2Ugb2JzZXJ2YXRpb24gKGpvYiByZWNlaXZlZCAvIHBlcmZvcm0gc3RhcnRlZCkgdG8gdGhlXG4gKiB3b3JrZXIgb3ZlciBJUEMuIFRoZSBtZXNzYWdlIGNhcnJpZXMgdGhlIGpvYidzIGV4YWN0IGhhbmRvZmYgbGVhc2Ugc28gdGhlXG4gKiB3b3JrZXIgY2FuIHBlcnNpc3QgaXQgZmVuY2VkIHdpdGhvdXQgYW55IG90aGVyIGxvb2t1cC4gU2VuZCBmYWlsdXJlcyBhcmVcbiAqIHN3YWxsb3dlZDogYSBkZWFkIElQQyBjaGFubmVsIGlzIHRlcm1pbmFsIGZvciB0aGlzIGNoaWxkICh0aGUgZGlzY29ubmVjdFxuICogaGFuZGxlciBvd25zIHNodXRkb3duKSwgYW5kIGxvc2luZyBhY2NlcHRhbmNlIGV2aWRlbmNlIG11c3QgbmV2ZXIgZmFpbCB0aGVcbiAqIGpvYiBpdHNlbGYuXG4gKiBAcGFyYW0ge1wiam9iLXJlY2VpdmVkXCIgfCBcImpvYi1zdGFydGVkXCJ9IHR5cGUgLSBPYnNlcnZhdGlvbiBraW5kLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JQYXlsb2FkICYge2lkOiBzdHJpbmd9fSBwYXlsb2FkIC0gSm9iIHBheWxvYWQgY2FycnlpbmcgdGhlIGhhbmRvZmYgbGVhc2UuXG4gKiBAcGFyYW0ge251bWJlcn0gb2JzZXJ2ZWRBdE1zIC0gRXBvY2ggbXMgb2YgdGhlIG9ic2VydmF0aW9uLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHNlbmRDaGlsZEFjY2VwdGFuY2UodHlwZSwgcGF5bG9hZCwgb2JzZXJ2ZWRBdE1zKSB7XG4gIGlmICghcHJvY2Vzcy5zZW5kKSByZXR1cm5cblxuICBjb25zdCBtZXNzYWdlID0ge1xuICAgIGNoaWxkSW5zdGFuY2VJZCxcbiAgICBjaGlsZFBpZDogcHJvY2Vzcy5waWQsXG4gICAgaGFuZGVkT2ZmQXRNczogcGF5bG9hZC5oYW5kZWRPZmZBdE1zLFxuICAgIGhhbmRvZmZJZDogcGF5bG9hZC5oYW5kb2ZmSWQsXG4gICAgam9iSWQ6IHBheWxvYWQuaWQsXG4gICAgdHlwZSxcbiAgICB3b3JrZXJJZDogcGF5bG9hZC53b3JrZXJJZCxcbiAgICAuLi4odHlwZSA9PT0gXCJqb2ItcmVjZWl2ZWRcIiA/IHtyZWNlaXZlZEF0TXM6IG9ic2VydmVkQXRNc30gOiB7c3RhcnRlZEF0TXM6IG9ic2VydmVkQXRNc30pXG4gIH1cblxuICB0cnkge1xuICAgIHByb2Nlc3Muc2VuZChtZXNzYWdlKVxuICB9IGNhdGNoIHtcbiAgICAvLyBUaGUgSVBDIGNoYW5uZWwgaXMgYWxyZWFkeSBnb25lOyB0aGUgZGlzY29ubmVjdCBoYW5kbGVyIG93bnMgc2h1dGRvd24uXG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhbiBJUEMgdmFsdWUgaXMgYSBydW5uYWJsZSBwb29sZWQgam9iIG1lc3NhZ2UuXG4gKiBAcGFyYW0ge1JldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+fSBtZXNzYWdlIC0gSVBDIG1lc3NhZ2UuXG4gKiBAcmV0dXJucyB7bWVzc2FnZSBpcyB7dHlwZTogXCJqb2JcIiwgcGF5bG9hZDogaW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUGF5bG9hZCAmIHtpZDogc3RyaW5nfSwgc2hhcmVkVHJhbnNhY3Rpb25Ccm9rZXI/OiBpbXBvcnQoXCIuLi90ZXN0aW5nL3NoYXJlZC10cmFuc2FjdGlvbi1wcm94eS1kcml2ZXIuanNcIikuU2hhcmVkVHJhbnNhY3Rpb25Ccm9rZXJKb2JDb25maWd9fSAtIFdoZXRoZXIgdGhpcyBpcyBhIHZhbGlkIGpvYiBtZXNzYWdlLlxuICovXG5mdW5jdGlvbiBpc0pvYk1lc3NhZ2UobWVzc2FnZSkge1xuICBpZiAoIW1lc3NhZ2UgfHwgdHlwZW9mIG1lc3NhZ2UgIT09IFwib2JqZWN0XCIpIHJldHVybiBmYWxzZVxuICBjb25zdCByZWNvcmQgPSAvKiogQHR5cGUge3t0eXBlPzogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4sIHBheWxvYWQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPiwgc2hhcmVkVHJhbnNhY3Rpb25Ccm9rZXI/OiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPn19ICovIChtZXNzYWdlKVxuXG4gIHJldHVybiByZWNvcmQudHlwZSA9PT0gXCJqb2JcIiAmJiAhIXJlY29yZC5wYXlsb2FkICYmIHR5cGVvZiByZWNvcmQucGF5bG9hZCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgcmVjb3JkLnBheWxvYWQuaWQgPT09IFwic3RyaW5nXCJcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhbiBJUEMgdmFsdWUgcmVxdWVzdHMgYSB0eXBlZCBwb29sZWQtY2hpbGQgc2h1dGRvd24uXG4gKiBAcGFyYW0ge1JldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+fSBtZXNzYWdlIC0gSVBDIG1lc3NhZ2UuXG4gKiBAcmV0dXJucyB7bWVzc2FnZSBpcyB7dHlwZTogXCJzaHV0ZG93bi1yZXF1ZXN0XCIsIHJlYXNvbjogaW1wb3J0KFwiLi90eXBlcy5qc1wiKS5Qb29sZWRDaGlsZFNodXRkb3duUmVhc29uLCBzaHV0ZG93blJlcXVlc3RlZEF0TXM6IG51bWJlciwgc2lnbmFsOiBpbXBvcnQoXCJub2RlOmNoaWxkX3Byb2Nlc3NcIikuQ2hpbGRQcm9jZXNzW1wic2lnbmFsQ29kZVwiXX19IC0gV2hldGhlciB0aGlzIGlzIGEgdmFsaWQgcGFyZW50IHNodXRkb3duIHJlcXVlc3QuXG4gKi9cbmZ1bmN0aW9uIGlzU2h1dGRvd25SZXF1ZXN0TWVzc2FnZShtZXNzYWdlKSB7XG4gIGlmICghbWVzc2FnZSB8fCB0eXBlb2YgbWVzc2FnZSAhPT0gXCJvYmplY3RcIikgcmV0dXJuIGZhbHNlXG4gIGNvbnN0IHJlY29yZCA9IC8qKiBAdHlwZSB7e3R5cGU/OiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPiwgcmVhc29uPzogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4sIHNodXRkb3duUmVxdWVzdGVkQXRNcz86IFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+LCBzaWduYWw/OiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPn19ICovIChtZXNzYWdlKVxuXG4gIHJldHVybiByZWNvcmQudHlwZSA9PT0gXCJzaHV0ZG93bi1yZXF1ZXN0XCJcbiAgICAmJiBpc1Bvb2xlZENoaWxkU2h1dGRvd25SZWFzb24ocmVjb3JkLnJlYXNvbilcbiAgICAmJiB0eXBlb2YgcmVjb3JkLnNodXRkb3duUmVxdWVzdGVkQXRNcyA9PT0gXCJudW1iZXJcIlxuICAgICYmIE51bWJlci5pc0Zpbml0ZShyZWNvcmQuc2h1dGRvd25SZXF1ZXN0ZWRBdE1zKVxuICAgICYmIGlzUG9vbGVkQ2hpbGRTaHV0ZG93blNpZ25hbChyZWNvcmQuc2lnbmFsKVxufVxuXG4vKipcbiAqIFNlbmRzIHRoZSB0ZXJtaW5hbCBvdXRjb21lIGFmdGVyIHRoZSBtYWluL0RCIHJlcG9ydCBoYXMgYmVlbiBhY2tub3dsZWRnZWQgb3IgcmVqZWN0ZWQuXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE91dGNvbWUuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5qb2JJZCAtIEpvYiBpZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYXJncy5hY2tub3dsZWRnZWQgLSBXaGV0aGVyIHRoZSB0ZXJtaW5hbCByZXBvcnQgd2FzIGFja25vd2xlZGdlZC5cbiAqIEBwYXJhbSB7XCJjb21wbGV0ZWRcIiB8IFwiZmFpbGVkXCIgfCBcInJlc2NoZWR1bGVkXCJ9IFthcmdzLnN0YXR1c10gLSBBY2tub3dsZWRnZWQgb3V0Y29tZS5cbiAqIEBwYXJhbSB7RXJyb3J9IFthcmdzLmVycm9yXSAtIFJlcG9ydGluZyBlcnJvciB3aGVuIGFja25vd2xlZGdlbWVudCB3YXMgbm90IG9idGFpbmVkLlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgYWZ0ZXIgSVBDIGFjY2VwdHMgdGhlIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIHNlbmRPdXRjb21lKHtqb2JJZCwgYWNrbm93bGVkZ2VkLCBzdGF0dXMsIGVycm9yfSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBpZiAoIXByb2Nlc3Muc2VuZCkge1xuICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBwcm9jZXNzLnNlbmQoe1xuICAgICAgdHlwZTogXCJqb2Itb3V0Y29tZVwiLFxuICAgICAgam9iSWQsXG4gICAgICBhY2tub3dsZWRnZWQsXG4gICAgICBzdGF0dXMsXG4gICAgICByc3NCeXRlczogcHJvY2Vzcy5tZW1vcnlVc2FnZSgpLnJzcyxcbiAgICAgIGVycm9yOiBlcnJvcj8ubWVzc2FnZVxuICAgIH0sICgpID0+IHJlc29sdmUodW5kZWZpbmVkKSlcbiAgfSlcbn1cblxuLyoqXG4gKiBSdW5zIG9uZSBqb2IgY29uY3VycmVudGx5IHdpdGggYW55IHNpYmxpbmdzIGFuZCByZXBvcnRzIGl0cyBvd24gdGVybWluYWxcbiAqIG91dGNvbWUuIEEgc2luZ2xlIGpvYidzIHVuZXhwZWN0ZWQgZmFpbHVyZSByZXBvcnRzIHRoYXQgam9iIGZvciByZWNsYW1hdGlvblxuICogKGBhY2tub3dsZWRnZWQ6IGZhbHNlYCkgYnV0IGRvZXMgTk9UIHRha2UgZG93biB0aGUgY2hpbGQg4oCUIGl0cyBjb25jdXJyZW50XG4gKiBzaWJsaW5ncyBrZWVwIHJ1bm5pbmcuIE9ubHkgYSBwcm9jZXNzLWxldmVsIGZhdWx0ICh3aGljaCBlc2NhcGVzIGV2ZXJ5XG4gKiBwZXItam9iIHRyeS9jYXRjaCkgZW5kcyB0aGUgY2hpbGQsIHdoaWNoIHRoZSB3b3JrZXIgc2VlcyBhcyBhbiBleGl0IGFuZFxuICogcmVjbGFpbXMgZm9yIHRoZSB3aG9sZSBpbi1mbGlnaHQgc2V0LlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JQYXlsb2FkICYge2lkOiBzdHJpbmd9fSBwYXlsb2FkIC0gSm9iIHBheWxvYWQuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL3Rlc3Rpbmcvc2hhcmVkLXRyYW5zYWN0aW9uLXByb3h5LWRyaXZlci5qc1wiKS5TaGFyZWRUcmFuc2FjdGlvbkJyb2tlckpvYkNvbmZpZ30gc2hhcmVkVHJhbnNhY3Rpb25Ccm9rZXIgLSBQZXItam9iIGJyb2tlciBjb25maWd1cmF0aW9uLlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgYWZ0ZXIgcmVwb3J0aW5nLlxuICovXG5hc3luYyBmdW5jdGlvbiBydW5Kb2IocGF5bG9hZCwgc2hhcmVkVHJhbnNhY3Rpb25Ccm9rZXIpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCBydW5XaXRoU2hhcmVkVHJhbnNhY3Rpb25Ccm9rZXJDb25maWcoc2hhcmVkVHJhbnNhY3Rpb25Ccm9rZXIsIGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBicm9rZXJJZGVudGl0eS5ydW4oc2hhcmVkVHJhbnNhY3Rpb25Ccm9rZXIsIGFzeW5jICgpID0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJ1bkpvYlBheWxvYWQocGF5bG9hZCwge1xuICAgICAgICAgIGNsb3NlQ29ubmVjdGlvbnM6IGZhbHNlLFxuICAgICAgICAgIG1hbmFnZVByb2Nlc3NUaXRsZTogZmFsc2UsXG4gICAgICAgICAgb25QZXJmb3JtU3RhcnQ6ICgpID0+IHNlbmRDaGlsZEFjY2VwdGFuY2UoXCJqb2Itc3RhcnRlZFwiLCBwYXlsb2FkLCBEYXRlLm5vdygpKSxcbiAgICAgICAgICBwcm9jZXNzVHlwZTogXCJiYWNrZ3JvdW5kLWpvYnMtcG9vbGVkLXJ1bm5lclwiXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH0pXG4gICAgYXdhaXQgc2VuZE91dGNvbWUoe2pvYklkOiBwYXlsb2FkLmlkLCBhY2tub3dsZWRnZWQ6IHRydWUsIHN0YXR1c30pXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQmFja2dyb3VuZEpvYlBlcmZvcm1lZEZhaWx1cmUpIHtcbiAgICAgIGF3YWl0IHNlbmRPdXRjb21lKHtqb2JJZDogcGF5bG9hZC5pZCwgYWNrbm93bGVkZ2VkOiB0cnVlLCBzdGF0dXM6IFwiZmFpbGVkXCJ9KVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZXBvcnRFcnJvciA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKVxuICAgICAgY29uc29sZS5lcnJvcihcIlBvb2xlZCBiYWNrZ3JvdW5kIGpvYiBydW5uZXIgZmFpbGVkIGJlZm9yZSB0ZXJtaW5hbCBhY2tub3dsZWRnZW1lbnQ6XCIsIHJlcG9ydEVycm9yKVxuICAgICAgYXdhaXQgc2VuZE91dGNvbWUoe2pvYklkOiBwYXlsb2FkLmlkLCBhY2tub3dsZWRnZWQ6IGZhbHNlLCBlcnJvcjogcmVwb3J0RXJyb3J9KVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBydW5uaW5nSm9iSWRzLmRlbGV0ZShwYXlsb2FkLmlkKVxuICAgIHVwZGF0ZVByb2Nlc3NUaXRsZSgpXG4gIH1cbn1cblxuLyoqXG4gKiBIYW5kbGVzIGEgam9iIG1lc3NhZ2UsIHN0YXJ0aW5nIGl0IGFsb25nc2lkZSBhbnkgY29uY3VycmVudCBzaWJsaW5ncy5cbiAqIEBwYXJhbSB7UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59IG1lc3NhZ2UgLSBJUEMgbWVzc2FnZS5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlKG1lc3NhZ2UpIHtcbiAgaWYgKGlzU2h1dGRvd25SZXF1ZXN0TWVzc2FnZShtZXNzYWdlKSkge1xuICAgIHZvaWQgc2h1dGRvd25SdW5uZXIoe1xuICAgICAgZXhpdENvZGU6IG1lc3NhZ2UucmVhc29uID09PSBcInBhcmVudF9yZXRpcmVfZHJhaW5lZFwiID8gMCA6IDEsXG4gICAgICByZWFzb246IG1lc3NhZ2UucmVhc29uLFxuICAgICAgc2h1dGRvd25SZXF1ZXN0ZWRBdE1zOiBtZXNzYWdlLnNodXRkb3duUmVxdWVzdGVkQXRNcyxcbiAgICAgIHNpZ25hbDogbWVzc2FnZS5zaWduYWxcbiAgICB9KVxuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKCFpc0pvYk1lc3NhZ2UobWVzc2FnZSkgfHwgcnVubmluZ0pvYklkcy5oYXMobWVzc2FnZS5wYXlsb2FkLmlkKSkgcmV0dXJuXG5cbiAgcnVubmluZ0pvYklkcy5hZGQobWVzc2FnZS5wYXlsb2FkLmlkKVxuICB1cGRhdGVQcm9jZXNzVGl0bGUoKVxuICBzZW5kQ2hpbGRBY2NlcHRhbmNlKFwiam9iLXJlY2VpdmVkXCIsIG1lc3NhZ2UucGF5bG9hZCwgRGF0ZS5ub3coKSlcbiAgdm9pZCBydW5Kb2IobWVzc2FnZS5wYXlsb2FkLCBtZXNzYWdlLnNoYXJlZFRyYW5zYWN0aW9uQnJva2VyIHx8IHtleHBlY3RlZDogZmFsc2V9KVxufVxuXG5wcm9jZXNzLm9uKFwibWVzc2FnZVwiLCAobWVzc2FnZSkgPT4gaGFuZGxlTWVzc2FnZShtZXNzYWdlKSlcbnByb2Nlc3Mub25jZShcImRpc2Nvbm5lY3RcIiwgKCkgPT4gdm9pZCBzaHV0ZG93blJ1bm5lcih7ZXhpdENvZGU6IDAsIHJlYXNvbjogXCJpcGNfZGlzY29ubmVjdFwifSkpXG5wcm9jZXNzLm9uY2UoXCJTSUdURVJNXCIsICgpID0+IHZvaWQgc2h1dGRvd25SdW5uZXIoe2V4aXRDb2RlOiAxLCByZWFzb246IFwic2lnbmFsX3NpZ3Rlcm1cIiwgc2lnbmFsOiBcIlNJR1RFUk1cIn0pKVxucHJvY2Vzcy5vbmNlKFwiU0lHSU5UXCIsICgpID0+IHZvaWQgc2h1dGRvd25SdW5uZXIoe2V4aXRDb2RlOiAxLCByZWFzb246IFwic2lnbmFsX3NpZ2ludFwiLCBzaWduYWw6IFwiU0lHSU5UXCJ9KSlcbmlmIChwcm9jZXNzLnNlbmQpIHByb2Nlc3Muc2VuZCh7Y2hpbGRJbnN0YW5jZUlkLCBjaGlsZFBpZDogcHJvY2Vzcy5waWQsIHR5cGU6IFwicmVhZHlcIn0pXG4iXX0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Maximum job ids copied into a pooled-child shutdown observation or failure snapshot. */
|
|
2
|
+
export declare const POOLED_RUNNER_INFLIGHT_JOB_ID_LIMIT = 100;
|
|
3
|
+
/** @type {readonly import("./types.js").PooledChildShutdownReason[]} */
|
|
4
|
+
export declare const POOLED_CHILD_SHUTDOWN_REASONS: readonly import("./types.js").PooledChildShutdownReason[];
|
|
5
|
+
/**
|
|
6
|
+
* Checks one dynamic IPC reason against the complete shutdown contract.
|
|
7
|
+
* @param {ReturnType<typeof JSON.parse>} value - Candidate shutdown reason.
|
|
8
|
+
* @returns {value is import("./types.js").PooledChildShutdownReason} - Whether the value is a known reason.
|
|
9
|
+
*/
|
|
10
|
+
export declare function isPooledChildShutdownReason(value: ReturnType<typeof JSON.parse>): value is import("./types.js").PooledChildShutdownReason;
|
|
11
|
+
/**
|
|
12
|
+
* Checks one dynamic IPC value against Node's named process signals.
|
|
13
|
+
* @param {ReturnType<typeof JSON.parse>} value - Candidate signal.
|
|
14
|
+
* @returns {value is import("node:child_process").ChildProcess["signalCode"]} - Whether the value is null or a named signal.
|
|
15
|
+
*/
|
|
16
|
+
export declare function isPooledChildShutdownSignal(value: ReturnType<typeof JSON.parse>): value is import("node:child_process").ChildProcess["signalCode"];
|
|
17
|
+
/**
|
|
18
|
+
* Sorts, deduplicates, and bounds job ids before they cross IPC/report boundaries.
|
|
19
|
+
* @param {Iterable<string>} jobIds - In-flight durable job ids.
|
|
20
|
+
* @returns {{inflightJobIds: string[], inflightJobIdsTruncatedCount: number}} - Bounded snapshot.
|
|
21
|
+
*/
|
|
22
|
+
export declare function boundedPooledRunnerInflightJobIds(jobIds: Iterable<string>): {
|
|
23
|
+
inflightJobIds: string[];
|
|
24
|
+
inflightJobIdsTruncatedCount: number;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=pooled-runner-shutdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pooled-runner-shutdown.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/pooled-runner-shutdown.js"],"names":[],"mappings":"AAIA,2FAA2F;AAC3F,eAAO,MAAM,mCAAmC,MAAM,CAAA;AAEtD,wEAAwE;AACxE,eAAO,MAAM,6BAA6B,EAD/B,SAAS,OAAO,YAAY,EAAE,yBAAyB,EAYhE,CAAA;AAEF;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAHtC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAGU,GAFpC,KAAK,IAAI,OAAO,YAAY,EAAE,yBAAyB,CAMnE;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAHtC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAGU,GAFpC,KAAK,IAAI,OAAO,oBAAoB,EAAE,YAAY,CAAC,YAAY,CAAC,CAI5E;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,MAAM,EAH7C,QAAQ,CAAC,MAAM,CAG8B,GAF3C;IAAC,cAAc,EAAE,MAAM,EAAE,CAAC;IAAC,4BAA4B,EAAE,MAAM,CAAA;CAAC,CAU5E"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
import { constants } from "node:os";
|
|
3
|
+
/** Maximum job ids copied into a pooled-child shutdown observation or failure snapshot. */
|
|
4
|
+
export const POOLED_RUNNER_INFLIGHT_JOB_ID_LIMIT = 100;
|
|
5
|
+
/** @type {readonly import("./types.js").PooledChildShutdownReason[]} */
|
|
6
|
+
export const POOLED_CHILD_SHUTDOWN_REASONS = Object.freeze([
|
|
7
|
+
"parent_retire_drained",
|
|
8
|
+
"job_timeout",
|
|
9
|
+
"worker_stop",
|
|
10
|
+
"signal_sigterm",
|
|
11
|
+
"signal_sigint",
|
|
12
|
+
"signal_sigkill",
|
|
13
|
+
"signal_other",
|
|
14
|
+
"ipc_disconnect",
|
|
15
|
+
"process_error",
|
|
16
|
+
"unexpected_exit"
|
|
17
|
+
]);
|
|
18
|
+
/**
|
|
19
|
+
* Checks one dynamic IPC reason against the complete shutdown contract.
|
|
20
|
+
* @param {ReturnType<typeof JSON.parse>} value - Candidate shutdown reason.
|
|
21
|
+
* @returns {value is import("./types.js").PooledChildShutdownReason} - Whether the value is a known reason.
|
|
22
|
+
*/
|
|
23
|
+
export function isPooledChildShutdownReason(value) {
|
|
24
|
+
if (typeof value !== "string")
|
|
25
|
+
return false;
|
|
26
|
+
return POOLED_CHILD_SHUTDOWN_REASONS.some((reason) => reason === value);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Checks one dynamic IPC value against Node's named process signals.
|
|
30
|
+
* @param {ReturnType<typeof JSON.parse>} value - Candidate signal.
|
|
31
|
+
* @returns {value is import("node:child_process").ChildProcess["signalCode"]} - Whether the value is null or a named signal.
|
|
32
|
+
*/
|
|
33
|
+
export function isPooledChildShutdownSignal(value) {
|
|
34
|
+
return value === null || (typeof value === "string" && Object.hasOwn(constants.signals, value));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Sorts, deduplicates, and bounds job ids before they cross IPC/report boundaries.
|
|
38
|
+
* @param {Iterable<string>} jobIds - In-flight durable job ids.
|
|
39
|
+
* @returns {{inflightJobIds: string[], inflightJobIdsTruncatedCount: number}} - Bounded snapshot.
|
|
40
|
+
*/
|
|
41
|
+
export function boundedPooledRunnerInflightJobIds(jobIds) {
|
|
42
|
+
const sortedJobIds = [...new Set(jobIds)].sort((left, right) => left.localeCompare(right));
|
|
43
|
+
const inflightJobIds = sortedJobIds.slice(0, POOLED_RUNNER_INFLIGHT_JOB_ID_LIMIT);
|
|
44
|
+
return {
|
|
45
|
+
inflightJobIds,
|
|
46
|
+
inflightJobIdsTruncatedCount: sortedJobIds.length - inflightJobIds.length
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9vbGVkLXJ1bm5lci1zaHV0ZG93bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvcG9vbGVkLXJ1bm5lci1zaHV0ZG93bi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUVuQywyRkFBMkY7QUFDM0YsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsR0FBRyxDQUFBO0FBRXRELHdFQUF3RTtBQUN4RSxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3pELHVCQUF1QjtJQUN2QixhQUFhO0lBQ2IsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGlCQUFpQjtDQUNsQixDQUFDLENBQUE7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLDJCQUEyQixDQUFDLEtBQUs7SUFDL0MsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFFM0MsT0FBTyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsQ0FBQTtBQUN6RSxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxLQUFLO0lBQy9DLE9BQU8sS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQTtBQUNqRyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxpQ0FBaUMsQ0FBQyxNQUFNO0lBQ3RELE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUMxRixNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxtQ0FBbUMsQ0FBQyxDQUFBO0lBRWpGLE9BQU87UUFDTCxjQUFjO1FBQ2QsNEJBQTRCLEVBQUUsWUFBWSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsTUFBTTtLQUMxRSxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tIFwibm9kZTpvc1wiXG5cbi8qKiBNYXhpbXVtIGpvYiBpZHMgY29waWVkIGludG8gYSBwb29sZWQtY2hpbGQgc2h1dGRvd24gb2JzZXJ2YXRpb24gb3IgZmFpbHVyZSBzbmFwc2hvdC4gKi9cbmV4cG9ydCBjb25zdCBQT09MRURfUlVOTkVSX0lORkxJR0hUX0pPQl9JRF9MSU1JVCA9IDEwMFxuXG4vKiogQHR5cGUge3JlYWRvbmx5IGltcG9ydChcIi4vdHlwZXMuanNcIikuUG9vbGVkQ2hpbGRTaHV0ZG93blJlYXNvbltdfSAqL1xuZXhwb3J0IGNvbnN0IFBPT0xFRF9DSElMRF9TSFVURE9XTl9SRUFTT05TID0gT2JqZWN0LmZyZWV6ZShbXG4gIFwicGFyZW50X3JldGlyZV9kcmFpbmVkXCIsXG4gIFwiam9iX3RpbWVvdXRcIixcbiAgXCJ3b3JrZXJfc3RvcFwiLFxuICBcInNpZ25hbF9zaWd0ZXJtXCIsXG4gIFwic2lnbmFsX3NpZ2ludFwiLFxuICBcInNpZ25hbF9zaWdraWxsXCIsXG4gIFwic2lnbmFsX290aGVyXCIsXG4gIFwiaXBjX2Rpc2Nvbm5lY3RcIixcbiAgXCJwcm9jZXNzX2Vycm9yXCIsXG4gIFwidW5leHBlY3RlZF9leGl0XCJcbl0pXG5cbi8qKlxuICogQ2hlY2tzIG9uZSBkeW5hbWljIElQQyByZWFzb24gYWdhaW5zdCB0aGUgY29tcGxldGUgc2h1dGRvd24gY29udHJhY3QuXG4gKiBAcGFyYW0ge1JldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+fSB2YWx1ZSAtIENhbmRpZGF0ZSBzaHV0ZG93biByZWFzb24uXG4gKiBAcmV0dXJucyB7dmFsdWUgaXMgaW1wb3J0KFwiLi90eXBlcy5qc1wiKS5Qb29sZWRDaGlsZFNodXRkb3duUmVhc29ufSAtIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEga25vd24gcmVhc29uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQb29sZWRDaGlsZFNodXRkb3duUmVhc29uKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHJldHVybiBmYWxzZVxuXG4gIHJldHVybiBQT09MRURfQ0hJTERfU0hVVERPV05fUkVBU09OUy5zb21lKChyZWFzb24pID0+IHJlYXNvbiA9PT0gdmFsdWUpXG59XG5cbi8qKlxuICogQ2hlY2tzIG9uZSBkeW5hbWljIElQQyB2YWx1ZSBhZ2FpbnN0IE5vZGUncyBuYW1lZCBwcm9jZXNzIHNpZ25hbHMuXG4gKiBAcGFyYW0ge1JldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+fSB2YWx1ZSAtIENhbmRpZGF0ZSBzaWduYWwuXG4gKiBAcmV0dXJucyB7dmFsdWUgaXMgaW1wb3J0KFwibm9kZTpjaGlsZF9wcm9jZXNzXCIpLkNoaWxkUHJvY2Vzc1tcInNpZ25hbENvZGVcIl19IC0gV2hldGhlciB0aGUgdmFsdWUgaXMgbnVsbCBvciBhIG5hbWVkIHNpZ25hbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUG9vbGVkQ2hpbGRTaHV0ZG93blNpZ25hbCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiBPYmplY3QuaGFzT3duKGNvbnN0YW50cy5zaWduYWxzLCB2YWx1ZSkpXG59XG5cbi8qKlxuICogU29ydHMsIGRlZHVwbGljYXRlcywgYW5kIGJvdW5kcyBqb2IgaWRzIGJlZm9yZSB0aGV5IGNyb3NzIElQQy9yZXBvcnQgYm91bmRhcmllcy5cbiAqIEBwYXJhbSB7SXRlcmFibGU8c3RyaW5nPn0gam9iSWRzIC0gSW4tZmxpZ2h0IGR1cmFibGUgam9iIGlkcy5cbiAqIEByZXR1cm5zIHt7aW5mbGlnaHRKb2JJZHM6IHN0cmluZ1tdLCBpbmZsaWdodEpvYklkc1RydW5jYXRlZENvdW50OiBudW1iZXJ9fSAtIEJvdW5kZWQgc25hcHNob3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBib3VuZGVkUG9vbGVkUnVubmVySW5mbGlnaHRKb2JJZHMoam9iSWRzKSB7XG4gIGNvbnN0IHNvcnRlZEpvYklkcyA9IFsuLi5uZXcgU2V0KGpvYklkcyldLnNvcnQoKGxlZnQsIHJpZ2h0KSA9PiBsZWZ0LmxvY2FsZUNvbXBhcmUocmlnaHQpKVxuICBjb25zdCBpbmZsaWdodEpvYklkcyA9IHNvcnRlZEpvYklkcy5zbGljZSgwLCBQT09MRURfUlVOTkVSX0lORkxJR0hUX0pPQl9JRF9MSU1JVClcblxuICByZXR1cm4ge1xuICAgIGluZmxpZ2h0Sm9iSWRzLFxuICAgIGluZmxpZ2h0Sm9iSWRzVHJ1bmNhdGVkQ291bnQ6IHNvcnRlZEpvYklkcy5sZW5ndGggLSBpbmZsaWdodEpvYklkcy5sZW5ndGhcbiAgfVxufVxuIl19
|
|
@@ -7,6 +7,7 @@ export type BackgroundJobTerminalStatus = "cancelled" | "completed" | "failed" |
|
|
|
7
7
|
export type BackgroundJobStatus = BackgroundJobActiveStatus | BackgroundJobTerminalStatus;
|
|
8
8
|
export type PooledRunnerFailureOrigin = "exit" | "process-error" | "ipc-send";
|
|
9
9
|
export type PooledRunnerLifecycleState = "starting" | "running" | "retiring";
|
|
10
|
+
export type PooledChildShutdownReason = "parent_retire_drained" | "job_timeout" | "worker_stop" | "signal_sigterm" | "signal_sigint" | "signal_sigkill" | "signal_other" | "ipc_disconnect" | "process_error" | "unexpected_exit";
|
|
10
11
|
export type PooledRunnerTerminationReason = "unexpected" | "job-timeout" | "worker-shutdown-timeout";
|
|
11
12
|
export type BackgroundJobsWorkerLifecycleState = "running" | "retiring" | "stopping";
|
|
12
13
|
export type BackgroundJobProducerProof = {
|
|
@@ -54,6 +55,10 @@ export type PooledRunnerFailure = {
|
|
|
54
55
|
* - Jobs that were in flight when the child failed, ordered by job id.
|
|
55
56
|
*/
|
|
56
57
|
activeJobs: PooledRunnerActiveJob[];
|
|
58
|
+
/**
|
|
59
|
+
* - Stable pooled-child identity when its startup or shutdown observation arrived.
|
|
60
|
+
*/
|
|
61
|
+
childInstanceId: string | null;
|
|
57
62
|
/**
|
|
58
63
|
* - Child exit code, or null for signal/process errors.
|
|
59
64
|
*/
|
|
@@ -62,6 +67,14 @@ export type PooledRunnerFailure = {
|
|
|
62
67
|
* - Release generation identity, or null in legacy mode.
|
|
63
68
|
*/
|
|
64
69
|
generationId: string | null;
|
|
70
|
+
/**
|
|
71
|
+
* - Bounded job ids in flight when failure handling started.
|
|
72
|
+
*/
|
|
73
|
+
inflightJobIds: string[];
|
|
74
|
+
/**
|
|
75
|
+
* - In-flight ids omitted from the bounded snapshot.
|
|
76
|
+
*/
|
|
77
|
+
inflightJobIdsTruncatedCount: number;
|
|
65
78
|
/**
|
|
66
79
|
* - False when the observed exit rules OOM out; null when an unexpected SIGKILL cannot be distinguished from an OOM kill without supervisor/kernel evidence.
|
|
67
80
|
*/
|
|
@@ -99,7 +112,23 @@ export type PooledRunnerFailure = {
|
|
|
99
112
|
*/
|
|
100
113
|
signal: import("node:child_process").ChildProcess["signalCode"];
|
|
101
114
|
/**
|
|
102
|
-
* -
|
|
115
|
+
* - Time the child or parent observed shutdown beginning.
|
|
116
|
+
*/
|
|
117
|
+
shutdownObservedAtMs: number | null;
|
|
118
|
+
/**
|
|
119
|
+
* - Exact parent request timestamp, or null for external/unrequested shutdown.
|
|
120
|
+
*/
|
|
121
|
+
shutdownRequestedAtMs: number | null;
|
|
122
|
+
/**
|
|
123
|
+
* - Exact recorded parent request or observed child shutdown cause.
|
|
124
|
+
*/
|
|
125
|
+
shutdownReason: PooledChildShutdownReason;
|
|
126
|
+
/**
|
|
127
|
+
* - Parent-requested or child-observed shutdown signal when available.
|
|
128
|
+
*/
|
|
129
|
+
shutdownSignal: import("node:child_process").ChildProcess["signalCode"];
|
|
130
|
+
/**
|
|
131
|
+
* - Deprecated compatibility category; use shutdownReason for exact provenance.
|
|
103
132
|
*/
|
|
104
133
|
terminationReason: PooledRunnerTerminationReason;
|
|
105
134
|
/**
|
|
@@ -119,6 +148,36 @@ export type PooledRunnerFailure = {
|
|
|
119
148
|
*/
|
|
120
149
|
workerPid: number;
|
|
121
150
|
};
|
|
151
|
+
export type PooledChildShutdownObservation = {
|
|
152
|
+
/**
|
|
153
|
+
* - Stable pooled-child identity.
|
|
154
|
+
*/
|
|
155
|
+
childInstanceId: string;
|
|
156
|
+
/**
|
|
157
|
+
* - Bounded in-flight durable job ids.
|
|
158
|
+
*/
|
|
159
|
+
inflightJobIds: string[];
|
|
160
|
+
/**
|
|
161
|
+
* - In-flight ids omitted from the bounded snapshot.
|
|
162
|
+
*/
|
|
163
|
+
inflightJobIdsTruncatedCount: number;
|
|
164
|
+
/**
|
|
165
|
+
* - Shutdown reason observed by the child.
|
|
166
|
+
*/
|
|
167
|
+
reason: PooledChildShutdownReason;
|
|
168
|
+
/**
|
|
169
|
+
* - Child observation timestamp.
|
|
170
|
+
*/
|
|
171
|
+
shutdownObservedAtMs: number;
|
|
172
|
+
/**
|
|
173
|
+
* - Parent request timestamp when supplied over IPC.
|
|
174
|
+
*/
|
|
175
|
+
shutdownRequestedAtMs: number | null;
|
|
176
|
+
/**
|
|
177
|
+
* - Requested or observed signal when available.
|
|
178
|
+
*/
|
|
179
|
+
signal: import("node:child_process").ChildProcess["signalCode"];
|
|
180
|
+
};
|
|
122
181
|
export type LocalBackgroundJobsClock = {
|
|
123
182
|
/**
|
|
124
183
|
* - Current epoch milliseconds.
|
|
@@ -765,7 +824,11 @@ export type BackgroundJobSocketMessage = BackgroundJobHelloMessage | BackgroundJ
|
|
|
765
824
|
/** @typedef {BackgroundJobActiveStatus | BackgroundJobTerminalStatus} BackgroundJobStatus */
|
|
766
825
|
/** @typedef {"exit" | "process-error" | "ipc-send"} PooledRunnerFailureOrigin */
|
|
767
826
|
/** @typedef {"starting" | "running" | "retiring"} PooledRunnerLifecycleState */
|
|
768
|
-
/** @typedef {"
|
|
827
|
+
/** @typedef {"parent_retire_drained" | "job_timeout" | "worker_stop" | "signal_sigterm" | "signal_sigint" | "signal_sigkill" | "signal_other" | "ipc_disconnect" | "process_error" | "unexpected_exit"} PooledChildShutdownReason */
|
|
828
|
+
/**
|
|
829
|
+
* @deprecated Use PooledChildShutdownReason for exact shutdown provenance.
|
|
830
|
+
* @typedef {"unexpected" | "job-timeout" | "worker-shutdown-timeout"} PooledRunnerTerminationReason
|
|
831
|
+
*/
|
|
769
832
|
/** @typedef {"running" | "retiring" | "stopping"} BackgroundJobsWorkerLifecycleState */
|
|
770
833
|
/**
|
|
771
834
|
* Exact durable handoff ownership carried by an executing job when it produces
|
|
@@ -788,8 +851,11 @@ export type BackgroundJobSocketMessage = BackgroundJobHelloMessage | BackgroundJ
|
|
|
788
851
|
* One process-failure snapshot shared by every job lost with a pooled child.
|
|
789
852
|
* @typedef {object} PooledRunnerFailure
|
|
790
853
|
* @property {PooledRunnerActiveJob[]} activeJobs - Jobs that were in flight when the child failed, ordered by job id.
|
|
854
|
+
* @property {string | null} childInstanceId - Stable pooled-child identity when its startup or shutdown observation arrived.
|
|
791
855
|
* @property {number | null} exitCode - Child exit code, or null for signal/process errors.
|
|
792
856
|
* @property {string | null} generationId - Release generation identity, or null in legacy mode.
|
|
857
|
+
* @property {string[]} inflightJobIds - Bounded job ids in flight when failure handling started.
|
|
858
|
+
* @property {number} inflightJobIdsTruncatedCount - In-flight ids omitted from the bounded snapshot.
|
|
793
859
|
* @property {boolean | null} oomKilled - False when the observed exit rules OOM out; null when an unexpected SIGKILL cannot be distinguished from an OOM kill without supervisor/kernel evidence.
|
|
794
860
|
* @property {PooledRunnerFailureOrigin} origin - Worker observation that initiated failure handling.
|
|
795
861
|
* @property {number} runnerAgeMs - Child age when failure handling started.
|
|
@@ -799,12 +865,27 @@ export type BackgroundJobSocketMessage = BackgroundJobHelloMessage | BackgroundJ
|
|
|
799
865
|
* @property {PooledRunnerLifecycleState} runnerLifecycle - Child lifecycle immediately before recovery.
|
|
800
866
|
* @property {number | null} runnerPid - Child process id when available.
|
|
801
867
|
* @property {import("node:child_process").ChildProcess["signalCode"]} signal - Child termination signal when available.
|
|
802
|
-
* @property {
|
|
868
|
+
* @property {number | null} shutdownObservedAtMs - Time the child or parent observed shutdown beginning.
|
|
869
|
+
* @property {number | null} shutdownRequestedAtMs - Exact parent request timestamp, or null for external/unrequested shutdown.
|
|
870
|
+
* @property {PooledChildShutdownReason} shutdownReason - Exact recorded parent request or observed child shutdown cause.
|
|
871
|
+
* @property {import("node:child_process").ChildProcess["signalCode"]} shutdownSignal - Parent-requested or child-observed shutdown signal when available.
|
|
872
|
+
* @property {PooledRunnerTerminationReason} terminationReason - Deprecated compatibility category; use shutdownReason for exact provenance.
|
|
803
873
|
* @property {string | null} timeoutJobId - Job whose timeout initiated child termination, or null.
|
|
804
874
|
* @property {string} workerId - Stable generation-qualified worker id.
|
|
805
875
|
* @property {BackgroundJobsWorkerLifecycleState} workerLifecycle - Parent worker lifecycle immediately before recovery.
|
|
806
876
|
* @property {number} workerPid - Parent worker process id.
|
|
807
877
|
*/
|
|
878
|
+
/**
|
|
879
|
+
* Best-effort observation sent before a pooled child closes its resources.
|
|
880
|
+
* @typedef {object} PooledChildShutdownObservation
|
|
881
|
+
* @property {string} childInstanceId - Stable pooled-child identity.
|
|
882
|
+
* @property {string[]} inflightJobIds - Bounded in-flight durable job ids.
|
|
883
|
+
* @property {number} inflightJobIdsTruncatedCount - In-flight ids omitted from the bounded snapshot.
|
|
884
|
+
* @property {PooledChildShutdownReason} reason - Shutdown reason observed by the child.
|
|
885
|
+
* @property {number} shutdownObservedAtMs - Child observation timestamp.
|
|
886
|
+
* @property {number | null} shutdownRequestedAtMs - Parent request timestamp when supplied over IPC.
|
|
887
|
+
* @property {import("node:child_process").ChildProcess["signalCode"]} signal - Requested or observed signal when available.
|
|
888
|
+
*/
|
|
808
889
|
/**
|
|
809
890
|
* @typedef {object} LocalBackgroundJobsClock
|
|
810
891
|
* @property {() => number} now - Current epoch milliseconds.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/types.js"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/types.js"],"names":[],"mappings":"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"}
|