modelstat 0.13.0 → 0.14.0
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/dist/cli.mjs +979 -599
- package/dist/cli.mjs.map +1 -1
- package/package.json +3 -3
package/dist/cli.mjs
CHANGED
|
@@ -10742,10 +10742,10 @@ var require_util = __commonJS({
|
|
|
10742
10742
|
}
|
|
10743
10743
|
return obj;
|
|
10744
10744
|
}
|
|
10745
|
-
function errorRequest(client,
|
|
10745
|
+
function errorRequest(client, request4, err) {
|
|
10746
10746
|
try {
|
|
10747
|
-
|
|
10748
|
-
assert(
|
|
10747
|
+
request4.onError(err);
|
|
10748
|
+
assert(request4.aborted);
|
|
10749
10749
|
} catch (err2) {
|
|
10750
10750
|
client.emit("error", err2);
|
|
10751
10751
|
}
|
|
@@ -11407,7 +11407,7 @@ var require_request = __commonJS({
|
|
|
11407
11407
|
return this;
|
|
11408
11408
|
}
|
|
11409
11409
|
};
|
|
11410
|
-
function processHeader(
|
|
11410
|
+
function processHeader(request4, key, val) {
|
|
11411
11411
|
if (val && (typeof val === "object" && !Array.isArray(val))) {
|
|
11412
11412
|
throw new InvalidArgumentError(`invalid ${key} header`);
|
|
11413
11413
|
} else if (val === void 0) {
|
|
@@ -11447,24 +11447,24 @@ var require_request = __commonJS({
|
|
|
11447
11447
|
val = `${val}`;
|
|
11448
11448
|
}
|
|
11449
11449
|
if (headerName === "host") {
|
|
11450
|
-
if (
|
|
11450
|
+
if (request4.host !== null) {
|
|
11451
11451
|
throw new InvalidArgumentError("duplicate host header");
|
|
11452
11452
|
}
|
|
11453
11453
|
if (typeof val !== "string") {
|
|
11454
11454
|
throw new InvalidArgumentError("invalid host header");
|
|
11455
11455
|
}
|
|
11456
|
-
|
|
11456
|
+
request4.host = val;
|
|
11457
11457
|
} else if (headerName === "content-length") {
|
|
11458
|
-
if (
|
|
11458
|
+
if (request4.contentLength !== null) {
|
|
11459
11459
|
throw new InvalidArgumentError("duplicate content-length header");
|
|
11460
11460
|
}
|
|
11461
|
-
|
|
11462
|
-
if (!Number.isFinite(
|
|
11461
|
+
request4.contentLength = parseInt(val, 10);
|
|
11462
|
+
if (!Number.isFinite(request4.contentLength)) {
|
|
11463
11463
|
throw new InvalidArgumentError("invalid content-length header");
|
|
11464
11464
|
}
|
|
11465
|
-
} else if (
|
|
11466
|
-
|
|
11467
|
-
|
|
11465
|
+
} else if (request4.contentType === null && headerName === "content-type") {
|
|
11466
|
+
request4.contentType = val;
|
|
11467
|
+
request4.headers.push(key, val);
|
|
11468
11468
|
} else if (headerName === "transfer-encoding" || headerName === "keep-alive" || headerName === "upgrade") {
|
|
11469
11469
|
throw new InvalidArgumentError(`invalid ${headerName} header`);
|
|
11470
11470
|
} else if (headerName === "connection") {
|
|
@@ -11478,13 +11478,13 @@ var require_request = __commonJS({
|
|
|
11478
11478
|
throw new InvalidArgumentError("invalid connection header");
|
|
11479
11479
|
}
|
|
11480
11480
|
if (trimmed === "close") {
|
|
11481
|
-
|
|
11481
|
+
request4.reset = true;
|
|
11482
11482
|
}
|
|
11483
11483
|
}
|
|
11484
11484
|
} else if (headerName === "expect") {
|
|
11485
11485
|
throw new NotSupportedError("expect header not supported");
|
|
11486
11486
|
} else {
|
|
11487
|
-
|
|
11487
|
+
request4.headers.push(key, val);
|
|
11488
11488
|
}
|
|
11489
11489
|
}
|
|
11490
11490
|
module.exports = Request;
|
|
@@ -11732,9 +11732,9 @@ var require_dispatcher_base = __commonJS({
|
|
|
11732
11732
|
}
|
|
11733
11733
|
close(callback) {
|
|
11734
11734
|
if (callback === void 0) {
|
|
11735
|
-
return new Promise((
|
|
11735
|
+
return new Promise((resolve7, reject) => {
|
|
11736
11736
|
this.close((err, data) => {
|
|
11737
|
-
return err ? reject(err) :
|
|
11737
|
+
return err ? reject(err) : resolve7(data);
|
|
11738
11738
|
});
|
|
11739
11739
|
});
|
|
11740
11740
|
}
|
|
@@ -11772,9 +11772,9 @@ var require_dispatcher_base = __commonJS({
|
|
|
11772
11772
|
err = null;
|
|
11773
11773
|
}
|
|
11774
11774
|
if (callback === void 0) {
|
|
11775
|
-
return new Promise((
|
|
11775
|
+
return new Promise((resolve7, reject) => {
|
|
11776
11776
|
this.destroy(err, (err2, data) => {
|
|
11777
|
-
return err2 ? reject(err2) :
|
|
11777
|
+
return err2 ? reject(err2) : resolve7(data);
|
|
11778
11778
|
});
|
|
11779
11779
|
});
|
|
11780
11780
|
}
|
|
@@ -14040,11 +14040,11 @@ var require_util2 = __commonJS({
|
|
|
14040
14040
|
function normalizeBinaryStringToUtf8(value) {
|
|
14041
14041
|
return Buffer.from(value, "binary").toString("utf8");
|
|
14042
14042
|
}
|
|
14043
|
-
function requestCurrentURL(
|
|
14044
|
-
return
|
|
14043
|
+
function requestCurrentURL(request4) {
|
|
14044
|
+
return request4.urlList[request4.urlList.length - 1];
|
|
14045
14045
|
}
|
|
14046
|
-
function requestBadPort(
|
|
14047
|
-
const url = requestCurrentURL(
|
|
14046
|
+
function requestBadPort(request4) {
|
|
14047
|
+
const url = requestCurrentURL(request4);
|
|
14048
14048
|
if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {
|
|
14049
14049
|
return "blocked";
|
|
14050
14050
|
}
|
|
@@ -14082,10 +14082,10 @@ var require_util2 = __commonJS({
|
|
|
14082
14082
|
}
|
|
14083
14083
|
return policy;
|
|
14084
14084
|
}
|
|
14085
|
-
function setRequestReferrerPolicyOnRedirect(
|
|
14085
|
+
function setRequestReferrerPolicyOnRedirect(request4, actualResponse) {
|
|
14086
14086
|
const policy = parseReferrerPolicy(actualResponse);
|
|
14087
14087
|
if (policy !== "") {
|
|
14088
|
-
|
|
14088
|
+
request4.referrerPolicy = policy;
|
|
14089
14089
|
}
|
|
14090
14090
|
}
|
|
14091
14091
|
function crossOriginResourcePolicyCheck() {
|
|
@@ -14102,33 +14102,33 @@ var require_util2 = __commonJS({
|
|
|
14102
14102
|
header = httpRequest.mode;
|
|
14103
14103
|
httpRequest.headersList.set("sec-fetch-mode", header, true);
|
|
14104
14104
|
}
|
|
14105
|
-
function appendRequestOriginHeader(
|
|
14106
|
-
let serializedOrigin =
|
|
14105
|
+
function appendRequestOriginHeader(request4) {
|
|
14106
|
+
let serializedOrigin = request4.origin;
|
|
14107
14107
|
if (serializedOrigin === "client" || serializedOrigin === void 0) {
|
|
14108
14108
|
return;
|
|
14109
14109
|
}
|
|
14110
|
-
if (
|
|
14111
|
-
|
|
14112
|
-
} else if (
|
|
14113
|
-
switch (
|
|
14110
|
+
if (request4.responseTainting === "cors" || request4.mode === "websocket") {
|
|
14111
|
+
request4.headersList.append("origin", serializedOrigin, true);
|
|
14112
|
+
} else if (request4.method !== "GET" && request4.method !== "HEAD") {
|
|
14113
|
+
switch (request4.referrerPolicy) {
|
|
14114
14114
|
case "no-referrer":
|
|
14115
14115
|
serializedOrigin = null;
|
|
14116
14116
|
break;
|
|
14117
14117
|
case "no-referrer-when-downgrade":
|
|
14118
14118
|
case "strict-origin":
|
|
14119
14119
|
case "strict-origin-when-cross-origin":
|
|
14120
|
-
if (
|
|
14120
|
+
if (request4.origin && urlHasHttpsScheme(request4.origin) && !urlHasHttpsScheme(requestCurrentURL(request4))) {
|
|
14121
14121
|
serializedOrigin = null;
|
|
14122
14122
|
}
|
|
14123
14123
|
break;
|
|
14124
14124
|
case "same-origin":
|
|
14125
|
-
if (!sameOrigin(
|
|
14125
|
+
if (!sameOrigin(request4, requestCurrentURL(request4))) {
|
|
14126
14126
|
serializedOrigin = null;
|
|
14127
14127
|
}
|
|
14128
14128
|
break;
|
|
14129
14129
|
default:
|
|
14130
14130
|
}
|
|
14131
|
-
|
|
14131
|
+
request4.headersList.append("origin", serializedOrigin, true);
|
|
14132
14132
|
}
|
|
14133
14133
|
}
|
|
14134
14134
|
function coarsenTime(timestamp, crossOriginIsolatedCapability) {
|
|
@@ -14182,18 +14182,18 @@ var require_util2 = __commonJS({
|
|
|
14182
14182
|
referrerPolicy: policyContainer.referrerPolicy
|
|
14183
14183
|
};
|
|
14184
14184
|
}
|
|
14185
|
-
function determineRequestsReferrer(
|
|
14186
|
-
const policy =
|
|
14185
|
+
function determineRequestsReferrer(request4) {
|
|
14186
|
+
const policy = request4.referrerPolicy;
|
|
14187
14187
|
assert(policy);
|
|
14188
14188
|
let referrerSource = null;
|
|
14189
|
-
if (
|
|
14189
|
+
if (request4.referrer === "client") {
|
|
14190
14190
|
const globalOrigin = getGlobalOrigin();
|
|
14191
14191
|
if (!globalOrigin || globalOrigin.origin === "null") {
|
|
14192
14192
|
return "no-referrer";
|
|
14193
14193
|
}
|
|
14194
14194
|
referrerSource = new URL(globalOrigin);
|
|
14195
|
-
} else if (webidl.is.URL(
|
|
14196
|
-
referrerSource =
|
|
14195
|
+
} else if (webidl.is.URL(request4.referrer)) {
|
|
14196
|
+
referrerSource = request4.referrer;
|
|
14197
14197
|
}
|
|
14198
14198
|
let referrerURL = stripURLForReferrer(referrerSource);
|
|
14199
14199
|
const referrerOrigin = stripURLForReferrer(referrerSource, true);
|
|
@@ -14211,14 +14211,14 @@ var require_util2 = __commonJS({
|
|
|
14211
14211
|
case "unsafe-url":
|
|
14212
14212
|
return referrerURL;
|
|
14213
14213
|
case "strict-origin": {
|
|
14214
|
-
const currentURL = requestCurrentURL(
|
|
14214
|
+
const currentURL = requestCurrentURL(request4);
|
|
14215
14215
|
if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {
|
|
14216
14216
|
return "no-referrer";
|
|
14217
14217
|
}
|
|
14218
14218
|
return referrerOrigin;
|
|
14219
14219
|
}
|
|
14220
14220
|
case "strict-origin-when-cross-origin": {
|
|
14221
|
-
const currentURL = requestCurrentURL(
|
|
14221
|
+
const currentURL = requestCurrentURL(request4);
|
|
14222
14222
|
if (sameOrigin(referrerURL, currentURL)) {
|
|
14223
14223
|
return referrerURL;
|
|
14224
14224
|
}
|
|
@@ -14228,17 +14228,17 @@ var require_util2 = __commonJS({
|
|
|
14228
14228
|
return referrerOrigin;
|
|
14229
14229
|
}
|
|
14230
14230
|
case "same-origin":
|
|
14231
|
-
if (sameOrigin(
|
|
14231
|
+
if (sameOrigin(request4, referrerURL)) {
|
|
14232
14232
|
return referrerURL;
|
|
14233
14233
|
}
|
|
14234
14234
|
return "no-referrer";
|
|
14235
14235
|
case "origin-when-cross-origin":
|
|
14236
|
-
if (sameOrigin(
|
|
14236
|
+
if (sameOrigin(request4, referrerURL)) {
|
|
14237
14237
|
return referrerURL;
|
|
14238
14238
|
}
|
|
14239
14239
|
return referrerOrigin;
|
|
14240
14240
|
case "no-referrer-when-downgrade": {
|
|
14241
|
-
const currentURL = requestCurrentURL(
|
|
14241
|
+
const currentURL = requestCurrentURL(request4);
|
|
14242
14242
|
if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {
|
|
14243
14243
|
return "no-referrer";
|
|
14244
14244
|
}
|
|
@@ -14305,7 +14305,7 @@ var require_util2 = __commonJS({
|
|
|
14305
14305
|
if (url.protocol === "blob:") return true;
|
|
14306
14306
|
return isOriginPotentiallyTrustworthy(url.origin);
|
|
14307
14307
|
}
|
|
14308
|
-
function tryUpgradeRequestToAPotentiallyTrustworthyURL(
|
|
14308
|
+
function tryUpgradeRequestToAPotentiallyTrustworthyURL(request4) {
|
|
14309
14309
|
}
|
|
14310
14310
|
function sameOrigin(A, B) {
|
|
14311
14311
|
if (A.origin === B.origin && A.origin === "null") {
|
|
@@ -14684,7 +14684,7 @@ var require_util2 = __commonJS({
|
|
|
14684
14684
|
}
|
|
14685
14685
|
return gettingDecodingSplitting(value);
|
|
14686
14686
|
}
|
|
14687
|
-
function hasAuthenticationEntry(
|
|
14687
|
+
function hasAuthenticationEntry(request4) {
|
|
14688
14688
|
return false;
|
|
14689
14689
|
}
|
|
14690
14690
|
function includesCredentials(url) {
|
|
@@ -15251,8 +15251,8 @@ var require_promise = __commonJS({
|
|
|
15251
15251
|
function createDeferredPromise() {
|
|
15252
15252
|
let res;
|
|
15253
15253
|
let rej;
|
|
15254
|
-
const promise = new Promise((
|
|
15255
|
-
res =
|
|
15254
|
+
const promise = new Promise((resolve7, reject) => {
|
|
15255
|
+
res = resolve7;
|
|
15256
15256
|
rej = reject;
|
|
15257
15257
|
});
|
|
15258
15258
|
return { promise, resolve: res, reject: rej };
|
|
@@ -15869,11 +15869,11 @@ var require_client_h1 = __commonJS({
|
|
|
15869
15869
|
if (socket.destroyed) {
|
|
15870
15870
|
return -1;
|
|
15871
15871
|
}
|
|
15872
|
-
const
|
|
15873
|
-
if (!
|
|
15872
|
+
const request4 = client[kQueue][client[kRunningIdx]];
|
|
15873
|
+
if (!request4) {
|
|
15874
15874
|
return -1;
|
|
15875
15875
|
}
|
|
15876
|
-
|
|
15876
|
+
request4.onResponseStarted();
|
|
15877
15877
|
return 0;
|
|
15878
15878
|
}
|
|
15879
15879
|
/**
|
|
@@ -15935,9 +15935,9 @@ var require_client_h1 = __commonJS({
|
|
|
15935
15935
|
assert(!socket.destroyed);
|
|
15936
15936
|
assert(!this.paused);
|
|
15937
15937
|
assert((headers.length & 1) === 0);
|
|
15938
|
-
const
|
|
15939
|
-
assert(
|
|
15940
|
-
assert(
|
|
15938
|
+
const request4 = client[kQueue][client[kRunningIdx]];
|
|
15939
|
+
assert(request4);
|
|
15940
|
+
assert(request4.upgrade || request4.method === "CONNECT");
|
|
15941
15941
|
this.statusCode = 0;
|
|
15942
15942
|
this.statusText = "";
|
|
15943
15943
|
this.shouldKeepAlive = false;
|
|
@@ -15954,7 +15954,7 @@ var require_client_h1 = __commonJS({
|
|
|
15954
15954
|
client[kQueue][client[kRunningIdx]++] = null;
|
|
15955
15955
|
client.emit("disconnect", client[kUrl], [client], new InformationalError("upgrade"));
|
|
15956
15956
|
try {
|
|
15957
|
-
|
|
15957
|
+
request4.onUpgrade(statusCode, headers, socket);
|
|
15958
15958
|
} catch (err) {
|
|
15959
15959
|
util2.destroy(socket, err);
|
|
15960
15960
|
}
|
|
@@ -15971,8 +15971,8 @@ var require_client_h1 = __commonJS({
|
|
|
15971
15971
|
if (socket.destroyed) {
|
|
15972
15972
|
return -1;
|
|
15973
15973
|
}
|
|
15974
|
-
const
|
|
15975
|
-
if (!
|
|
15974
|
+
const request4 = client[kQueue][client[kRunningIdx]];
|
|
15975
|
+
if (!request4) {
|
|
15976
15976
|
return -1;
|
|
15977
15977
|
}
|
|
15978
15978
|
assert(!this.upgrade);
|
|
@@ -15981,23 +15981,23 @@ var require_client_h1 = __commonJS({
|
|
|
15981
15981
|
util2.destroy(socket, new SocketError("bad response", util2.getSocketInfo(socket)));
|
|
15982
15982
|
return -1;
|
|
15983
15983
|
}
|
|
15984
|
-
if (upgrade && !
|
|
15984
|
+
if (upgrade && !request4.upgrade) {
|
|
15985
15985
|
util2.destroy(socket, new SocketError("bad upgrade", util2.getSocketInfo(socket)));
|
|
15986
15986
|
return -1;
|
|
15987
15987
|
}
|
|
15988
15988
|
assert(this.timeoutType === TIMEOUT_HEADERS);
|
|
15989
15989
|
this.statusCode = statusCode;
|
|
15990
15990
|
this.shouldKeepAlive = shouldKeepAlive || // Override llhttp value which does not allow keepAlive for HEAD.
|
|
15991
|
-
|
|
15991
|
+
request4.method === "HEAD" && !socket[kReset] && this.connection.toLowerCase() === "keep-alive";
|
|
15992
15992
|
if (this.statusCode >= 200) {
|
|
15993
|
-
const bodyTimeout =
|
|
15993
|
+
const bodyTimeout = request4.bodyTimeout != null ? request4.bodyTimeout : client[kBodyTimeout];
|
|
15994
15994
|
this.setTimeout(bodyTimeout, TIMEOUT_BODY);
|
|
15995
15995
|
} else if (this.timeout) {
|
|
15996
15996
|
if (this.timeout.refresh) {
|
|
15997
15997
|
this.timeout.refresh();
|
|
15998
15998
|
}
|
|
15999
15999
|
}
|
|
16000
|
-
if (
|
|
16000
|
+
if (request4.method === "CONNECT") {
|
|
16001
16001
|
assert(client[kRunning] === 1);
|
|
16002
16002
|
this.upgrade = true;
|
|
16003
16003
|
return 2;
|
|
@@ -16028,11 +16028,11 @@ var require_client_h1 = __commonJS({
|
|
|
16028
16028
|
} else {
|
|
16029
16029
|
socket[kReset] = true;
|
|
16030
16030
|
}
|
|
16031
|
-
const pause =
|
|
16032
|
-
if (
|
|
16031
|
+
const pause = request4.onHeaders(statusCode, headers, this.resume, statusText) === false;
|
|
16032
|
+
if (request4.aborted) {
|
|
16033
16033
|
return -1;
|
|
16034
16034
|
}
|
|
16035
|
-
if (
|
|
16035
|
+
if (request4.method === "HEAD") {
|
|
16036
16036
|
return 1;
|
|
16037
16037
|
}
|
|
16038
16038
|
if (statusCode < 200) {
|
|
@@ -16053,8 +16053,8 @@ var require_client_h1 = __commonJS({
|
|
|
16053
16053
|
if (socket.destroyed) {
|
|
16054
16054
|
return -1;
|
|
16055
16055
|
}
|
|
16056
|
-
const
|
|
16057
|
-
assert(
|
|
16056
|
+
const request4 = client[kQueue][client[kRunningIdx]];
|
|
16057
|
+
assert(request4);
|
|
16058
16058
|
assert(this.timeoutType === TIMEOUT_BODY);
|
|
16059
16059
|
if (this.timeout) {
|
|
16060
16060
|
if (this.timeout.refresh) {
|
|
@@ -16067,7 +16067,7 @@ var require_client_h1 = __commonJS({
|
|
|
16067
16067
|
return -1;
|
|
16068
16068
|
}
|
|
16069
16069
|
this.bytesRead += buf.length;
|
|
16070
|
-
if (
|
|
16070
|
+
if (request4.onData(buf) === false) {
|
|
16071
16071
|
return constants.ERROR.PAUSED;
|
|
16072
16072
|
}
|
|
16073
16073
|
return 0;
|
|
@@ -16085,8 +16085,8 @@ var require_client_h1 = __commonJS({
|
|
|
16085
16085
|
}
|
|
16086
16086
|
assert(statusCode >= 100);
|
|
16087
16087
|
assert((this.headers.length & 1) === 0);
|
|
16088
|
-
const
|
|
16089
|
-
assert(
|
|
16088
|
+
const request4 = client[kQueue][client[kRunningIdx]];
|
|
16089
|
+
assert(request4);
|
|
16090
16090
|
this.statusCode = 0;
|
|
16091
16091
|
this.statusText = "";
|
|
16092
16092
|
this.bytesRead = 0;
|
|
@@ -16098,11 +16098,11 @@ var require_client_h1 = __commonJS({
|
|
|
16098
16098
|
if (statusCode < 200) {
|
|
16099
16099
|
return 0;
|
|
16100
16100
|
}
|
|
16101
|
-
if (
|
|
16101
|
+
if (request4.method !== "HEAD" && contentLength && bytesRead !== parseInt(contentLength, 10)) {
|
|
16102
16102
|
util2.destroy(socket, new ResponseContentLengthMismatchError());
|
|
16103
16103
|
return -1;
|
|
16104
16104
|
}
|
|
16105
|
-
|
|
16105
|
+
request4.onComplete(headers);
|
|
16106
16106
|
client[kQueue][client[kRunningIdx]++] = null;
|
|
16107
16107
|
if (socket[kWriting]) {
|
|
16108
16108
|
assert(client[kRunning] === 0);
|
|
@@ -16167,8 +16167,8 @@ var require_client_h1 = __commonJS({
|
|
|
16167
16167
|
return {
|
|
16168
16168
|
version: "h1",
|
|
16169
16169
|
defaultPipelining: 1,
|
|
16170
|
-
write(
|
|
16171
|
-
return writeH1(client,
|
|
16170
|
+
write(request4) {
|
|
16171
|
+
return writeH1(client, request4);
|
|
16172
16172
|
},
|
|
16173
16173
|
resume() {
|
|
16174
16174
|
resumeH1(client);
|
|
@@ -16195,18 +16195,18 @@ var require_client_h1 = __commonJS({
|
|
|
16195
16195
|
* @param {import('../core/request.js')} request
|
|
16196
16196
|
* @returns {boolean}
|
|
16197
16197
|
*/
|
|
16198
|
-
busy(
|
|
16198
|
+
busy(request4) {
|
|
16199
16199
|
if (socket[kWriting] || socket[kReset] || socket[kBlocking]) {
|
|
16200
16200
|
return true;
|
|
16201
16201
|
}
|
|
16202
|
-
if (
|
|
16203
|
-
if (client[kRunning] > 0 && !
|
|
16202
|
+
if (request4) {
|
|
16203
|
+
if (client[kRunning] > 0 && !request4.idempotent) {
|
|
16204
16204
|
return true;
|
|
16205
16205
|
}
|
|
16206
|
-
if (client[kRunning] > 0 && (
|
|
16206
|
+
if (client[kRunning] > 0 && (request4.upgrade || request4.method === "CONNECT")) {
|
|
16207
16207
|
return true;
|
|
16208
16208
|
}
|
|
16209
|
-
if (client[kRunning] > 0 && util2.bodyLength(
|
|
16209
|
+
if (client[kRunning] > 0 && util2.bodyLength(request4.body) !== 0 && (util2.isStream(request4.body) || util2.isAsyncIterable(request4.body) || util2.isFormDataLike(request4.body))) {
|
|
16210
16210
|
return true;
|
|
16211
16211
|
}
|
|
16212
16212
|
}
|
|
@@ -16252,13 +16252,13 @@ var require_client_h1 = __commonJS({
|
|
|
16252
16252
|
assert(client[kPending] === 0);
|
|
16253
16253
|
const requests = client[kQueue].splice(client[kRunningIdx]);
|
|
16254
16254
|
for (let i = 0; i < requests.length; i++) {
|
|
16255
|
-
const
|
|
16256
|
-
util2.errorRequest(client,
|
|
16255
|
+
const request4 = requests[i];
|
|
16256
|
+
util2.errorRequest(client, request4, err);
|
|
16257
16257
|
}
|
|
16258
16258
|
} else if (client[kRunning] > 0 && err.code !== "UND_ERR_INFO") {
|
|
16259
|
-
const
|
|
16259
|
+
const request4 = client[kQueue][client[kRunningIdx]];
|
|
16260
16260
|
client[kQueue][client[kRunningIdx]++] = null;
|
|
16261
|
-
util2.errorRequest(client,
|
|
16261
|
+
util2.errorRequest(client, request4, err);
|
|
16262
16262
|
}
|
|
16263
16263
|
client[kPendingIdx] = client[kRunningIdx];
|
|
16264
16264
|
assert(client[kRunning] === 0);
|
|
@@ -16286,8 +16286,8 @@ var require_client_h1 = __commonJS({
|
|
|
16286
16286
|
}
|
|
16287
16287
|
} else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {
|
|
16288
16288
|
if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {
|
|
16289
|
-
const
|
|
16290
|
-
const headersTimeout =
|
|
16289
|
+
const request4 = client[kQueue][client[kRunningIdx]];
|
|
16290
|
+
const headersTimeout = request4.headersTimeout != null ? request4.headersTimeout : client[kHeadersTimeout];
|
|
16291
16291
|
socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS);
|
|
16292
16292
|
}
|
|
16293
16293
|
}
|
|
@@ -16296,21 +16296,21 @@ var require_client_h1 = __commonJS({
|
|
|
16296
16296
|
function shouldSendContentLength(method) {
|
|
16297
16297
|
return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT";
|
|
16298
16298
|
}
|
|
16299
|
-
function writeH1(client,
|
|
16300
|
-
const { method, path, host, upgrade, blocking, reset } =
|
|
16301
|
-
let { body, headers, contentLength } =
|
|
16299
|
+
function writeH1(client, request4) {
|
|
16300
|
+
const { method, path, host, upgrade, blocking, reset } = request4;
|
|
16301
|
+
let { body, headers, contentLength } = request4;
|
|
16302
16302
|
const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH";
|
|
16303
16303
|
if (util2.isFormDataLike(body)) {
|
|
16304
16304
|
if (!extractBody) {
|
|
16305
16305
|
extractBody = require_body().extractBody;
|
|
16306
16306
|
}
|
|
16307
16307
|
const [bodyStream, contentType] = extractBody(body);
|
|
16308
|
-
if (
|
|
16308
|
+
if (request4.contentType == null) {
|
|
16309
16309
|
headers.push("content-type", contentType);
|
|
16310
16310
|
}
|
|
16311
16311
|
body = bodyStream.stream;
|
|
16312
16312
|
contentLength = bodyStream.length;
|
|
16313
|
-
} else if (util2.isBlobLike(body) &&
|
|
16313
|
+
} else if (util2.isBlobLike(body) && request4.contentType == null && body.type) {
|
|
16314
16314
|
headers.push("content-type", body.type);
|
|
16315
16315
|
}
|
|
16316
16316
|
if (body && typeof body.read === "function") {
|
|
@@ -16319,33 +16319,33 @@ var require_client_h1 = __commonJS({
|
|
|
16319
16319
|
const bodyLength = util2.bodyLength(body);
|
|
16320
16320
|
contentLength = bodyLength ?? contentLength;
|
|
16321
16321
|
if (contentLength === null) {
|
|
16322
|
-
contentLength =
|
|
16322
|
+
contentLength = request4.contentLength;
|
|
16323
16323
|
}
|
|
16324
16324
|
if (contentLength === 0 && !expectsPayload) {
|
|
16325
16325
|
contentLength = null;
|
|
16326
16326
|
}
|
|
16327
|
-
if (shouldSendContentLength(method) && contentLength > 0 &&
|
|
16327
|
+
if (shouldSendContentLength(method) && contentLength > 0 && request4.contentLength !== null && request4.contentLength !== contentLength) {
|
|
16328
16328
|
if (client[kStrictContentLength]) {
|
|
16329
|
-
util2.errorRequest(client,
|
|
16329
|
+
util2.errorRequest(client, request4, new RequestContentLengthMismatchError());
|
|
16330
16330
|
return false;
|
|
16331
16331
|
}
|
|
16332
16332
|
process.emitWarning(new RequestContentLengthMismatchError());
|
|
16333
16333
|
}
|
|
16334
16334
|
const socket = client[kSocket];
|
|
16335
16335
|
const abort = (err) => {
|
|
16336
|
-
if (
|
|
16336
|
+
if (request4.aborted || request4.completed) {
|
|
16337
16337
|
return;
|
|
16338
16338
|
}
|
|
16339
|
-
util2.errorRequest(client,
|
|
16339
|
+
util2.errorRequest(client, request4, err || new RequestAbortedError());
|
|
16340
16340
|
util2.destroy(body);
|
|
16341
16341
|
util2.destroy(socket, new InformationalError("aborted"));
|
|
16342
16342
|
};
|
|
16343
16343
|
try {
|
|
16344
|
-
|
|
16344
|
+
request4.onConnect(abort);
|
|
16345
16345
|
} catch (err) {
|
|
16346
|
-
util2.errorRequest(client,
|
|
16346
|
+
util2.errorRequest(client, request4, err);
|
|
16347
16347
|
}
|
|
16348
|
-
if (
|
|
16348
|
+
if (request4.aborted) {
|
|
16349
16349
|
return false;
|
|
16350
16350
|
}
|
|
16351
16351
|
if (method === "HEAD") {
|
|
@@ -16364,7 +16364,7 @@ var require_client_h1 = __commonJS({
|
|
|
16364
16364
|
socket[kBlocking] = true;
|
|
16365
16365
|
}
|
|
16366
16366
|
if (socket.setTypeOfService) {
|
|
16367
|
-
socket.setTypeOfService(
|
|
16367
|
+
socket.setTypeOfService(request4.typeOfService);
|
|
16368
16368
|
}
|
|
16369
16369
|
let header = `${method} ${path} HTTP/1.1\r
|
|
16370
16370
|
`;
|
|
@@ -16399,31 +16399,31 @@ upgrade: ${upgrade}\r
|
|
|
16399
16399
|
}
|
|
16400
16400
|
}
|
|
16401
16401
|
if (channels.sendHeaders.hasSubscribers) {
|
|
16402
|
-
channels.sendHeaders.publish({ request:
|
|
16402
|
+
channels.sendHeaders.publish({ request: request4, headers: header, socket });
|
|
16403
16403
|
}
|
|
16404
16404
|
if (!body || bodyLength === 0) {
|
|
16405
|
-
writeBuffer(abort, null, client,
|
|
16405
|
+
writeBuffer(abort, null, client, request4, socket, contentLength, header, expectsPayload);
|
|
16406
16406
|
} else if (util2.isBuffer(body)) {
|
|
16407
|
-
writeBuffer(abort, body, client,
|
|
16407
|
+
writeBuffer(abort, body, client, request4, socket, contentLength, header, expectsPayload);
|
|
16408
16408
|
} else if (util2.isBlobLike(body)) {
|
|
16409
16409
|
if (typeof body.stream === "function") {
|
|
16410
|
-
writeIterable(abort, body.stream(), client,
|
|
16410
|
+
writeIterable(abort, body.stream(), client, request4, socket, contentLength, header, expectsPayload);
|
|
16411
16411
|
} else {
|
|
16412
|
-
writeBlob(abort, body, client,
|
|
16412
|
+
writeBlob(abort, body, client, request4, socket, contentLength, header, expectsPayload);
|
|
16413
16413
|
}
|
|
16414
16414
|
} else if (util2.isStream(body)) {
|
|
16415
|
-
writeStream(abort, body, client,
|
|
16415
|
+
writeStream(abort, body, client, request4, socket, contentLength, header, expectsPayload);
|
|
16416
16416
|
} else if (util2.isIterable(body)) {
|
|
16417
|
-
writeIterable(abort, body, client,
|
|
16417
|
+
writeIterable(abort, body, client, request4, socket, contentLength, header, expectsPayload);
|
|
16418
16418
|
} else {
|
|
16419
16419
|
assert(false);
|
|
16420
16420
|
}
|
|
16421
16421
|
return true;
|
|
16422
16422
|
}
|
|
16423
|
-
function writeStream(abort, body, client,
|
|
16423
|
+
function writeStream(abort, body, client, request4, socket, contentLength, header, expectsPayload) {
|
|
16424
16424
|
assert(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined");
|
|
16425
16425
|
let finished = false;
|
|
16426
|
-
const writer = new AsyncWriter({ abort, socket, request:
|
|
16426
|
+
const writer = new AsyncWriter({ abort, socket, request: request4, contentLength, client, expectsPayload, header });
|
|
16427
16427
|
const onData = function(chunk) {
|
|
16428
16428
|
if (finished) {
|
|
16429
16429
|
return;
|
|
@@ -16489,7 +16489,7 @@ upgrade: ${upgrade}\r
|
|
|
16489
16489
|
setImmediate(onClose);
|
|
16490
16490
|
}
|
|
16491
16491
|
}
|
|
16492
|
-
function writeBuffer(abort, body, client,
|
|
16492
|
+
function writeBuffer(abort, body, client, request4, socket, contentLength, header, expectsPayload) {
|
|
16493
16493
|
try {
|
|
16494
16494
|
if (!body) {
|
|
16495
16495
|
if (contentLength === 0) {
|
|
@@ -16509,18 +16509,18 @@ upgrade: ${upgrade}\r
|
|
|
16509
16509
|
`, "latin1");
|
|
16510
16510
|
socket.write(body);
|
|
16511
16511
|
socket.uncork();
|
|
16512
|
-
|
|
16513
|
-
if (!expectsPayload &&
|
|
16512
|
+
request4.onBodySent(body);
|
|
16513
|
+
if (!expectsPayload && request4.reset !== false) {
|
|
16514
16514
|
socket[kReset] = true;
|
|
16515
16515
|
}
|
|
16516
16516
|
}
|
|
16517
|
-
|
|
16517
|
+
request4.onRequestSent();
|
|
16518
16518
|
client[kResume]();
|
|
16519
16519
|
} catch (err) {
|
|
16520
16520
|
abort(err);
|
|
16521
16521
|
}
|
|
16522
16522
|
}
|
|
16523
|
-
async function writeBlob(abort, body, client,
|
|
16523
|
+
async function writeBlob(abort, body, client, request4, socket, contentLength, header, expectsPayload) {
|
|
16524
16524
|
assert(contentLength === body.size, "blob body must have content length");
|
|
16525
16525
|
try {
|
|
16526
16526
|
if (contentLength != null && contentLength !== body.size) {
|
|
@@ -16533,9 +16533,9 @@ upgrade: ${upgrade}\r
|
|
|
16533
16533
|
`, "latin1");
|
|
16534
16534
|
socket.write(buffer);
|
|
16535
16535
|
socket.uncork();
|
|
16536
|
-
|
|
16537
|
-
|
|
16538
|
-
if (!expectsPayload &&
|
|
16536
|
+
request4.onBodySent(buffer);
|
|
16537
|
+
request4.onRequestSent();
|
|
16538
|
+
if (!expectsPayload && request4.reset !== false) {
|
|
16539
16539
|
socket[kReset] = true;
|
|
16540
16540
|
}
|
|
16541
16541
|
client[kResume]();
|
|
@@ -16543,7 +16543,7 @@ upgrade: ${upgrade}\r
|
|
|
16543
16543
|
abort(err);
|
|
16544
16544
|
}
|
|
16545
16545
|
}
|
|
16546
|
-
async function writeIterable(abort, body, client,
|
|
16546
|
+
async function writeIterable(abort, body, client, request4, socket, contentLength, header, expectsPayload) {
|
|
16547
16547
|
assert(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined");
|
|
16548
16548
|
let callback = null;
|
|
16549
16549
|
function onDrain() {
|
|
@@ -16553,16 +16553,16 @@ upgrade: ${upgrade}\r
|
|
|
16553
16553
|
cb();
|
|
16554
16554
|
}
|
|
16555
16555
|
}
|
|
16556
|
-
const waitForDrain = () => new Promise((
|
|
16556
|
+
const waitForDrain = () => new Promise((resolve7, reject) => {
|
|
16557
16557
|
assert(callback === null);
|
|
16558
16558
|
if (socket[kError]) {
|
|
16559
16559
|
reject(socket[kError]);
|
|
16560
16560
|
} else {
|
|
16561
|
-
callback =
|
|
16561
|
+
callback = resolve7;
|
|
16562
16562
|
}
|
|
16563
16563
|
});
|
|
16564
16564
|
socket.on("close", onDrain).on("drain", onDrain);
|
|
16565
|
-
const writer = new AsyncWriter({ abort, socket, request:
|
|
16565
|
+
const writer = new AsyncWriter({ abort, socket, request: request4, contentLength, client, expectsPayload, header });
|
|
16566
16566
|
try {
|
|
16567
16567
|
for await (const chunk of body) {
|
|
16568
16568
|
if (socket[kError]) {
|
|
@@ -16591,9 +16591,9 @@ upgrade: ${upgrade}\r
|
|
|
16591
16591
|
* @param {boolean} arg.expectsPayload
|
|
16592
16592
|
* @param {string} arg.header
|
|
16593
16593
|
*/
|
|
16594
|
-
constructor({ abort, socket, request:
|
|
16594
|
+
constructor({ abort, socket, request: request4, contentLength, client, expectsPayload, header }) {
|
|
16595
16595
|
this.socket = socket;
|
|
16596
|
-
this.request =
|
|
16596
|
+
this.request = request4;
|
|
16597
16597
|
this.contentLength = contentLength;
|
|
16598
16598
|
this.client = client;
|
|
16599
16599
|
this.bytesWritten = 0;
|
|
@@ -16607,7 +16607,7 @@ upgrade: ${upgrade}\r
|
|
|
16607
16607
|
* @returns
|
|
16608
16608
|
*/
|
|
16609
16609
|
write(chunk) {
|
|
16610
|
-
const { socket, request:
|
|
16610
|
+
const { socket, request: request4, contentLength, client, bytesWritten, expectsPayload, header } = this;
|
|
16611
16611
|
if (socket[kError]) {
|
|
16612
16612
|
throw socket[kError];
|
|
16613
16613
|
}
|
|
@@ -16626,7 +16626,7 @@ upgrade: ${upgrade}\r
|
|
|
16626
16626
|
}
|
|
16627
16627
|
socket.cork();
|
|
16628
16628
|
if (bytesWritten === 0) {
|
|
16629
|
-
if (!expectsPayload &&
|
|
16629
|
+
if (!expectsPayload && request4.reset !== false) {
|
|
16630
16630
|
socket[kReset] = true;
|
|
16631
16631
|
}
|
|
16632
16632
|
if (contentLength === null) {
|
|
@@ -16646,7 +16646,7 @@ ${len.toString(16)}\r
|
|
|
16646
16646
|
this.bytesWritten += len;
|
|
16647
16647
|
const ret = socket.write(chunk);
|
|
16648
16648
|
socket.uncork();
|
|
16649
|
-
|
|
16649
|
+
request4.onBodySent(chunk);
|
|
16650
16650
|
if (!ret) {
|
|
16651
16651
|
if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {
|
|
16652
16652
|
if (socket[kParser].timeout.refresh) {
|
|
@@ -16660,8 +16660,8 @@ ${len.toString(16)}\r
|
|
|
16660
16660
|
* @returns {void}
|
|
16661
16661
|
*/
|
|
16662
16662
|
end() {
|
|
16663
|
-
const { socket, contentLength, client, bytesWritten, expectsPayload, header, request:
|
|
16664
|
-
|
|
16663
|
+
const { socket, contentLength, client, bytesWritten, expectsPayload, header, request: request4 } = this;
|
|
16664
|
+
request4.onRequestSent();
|
|
16665
16665
|
socket[kWriting] = false;
|
|
16666
16666
|
if (socket[kError]) {
|
|
16667
16667
|
throw socket[kError];
|
|
@@ -16838,8 +16838,8 @@ var require_client_h2 = __commonJS({
|
|
|
16838
16838
|
* @param {import('../core/request.js')} request
|
|
16839
16839
|
* @returns {boolean}
|
|
16840
16840
|
*/
|
|
16841
|
-
write(
|
|
16842
|
-
return writeH2(client,
|
|
16841
|
+
write(request4) {
|
|
16842
|
+
return writeH2(client, request4);
|
|
16843
16843
|
},
|
|
16844
16844
|
/**
|
|
16845
16845
|
* @returns {void}
|
|
@@ -16868,14 +16868,14 @@ var require_client_h2 = __commonJS({
|
|
|
16868
16868
|
* @param {import('../core/request.js')} request
|
|
16869
16869
|
* @returns {boolean}
|
|
16870
16870
|
*/
|
|
16871
|
-
busy(
|
|
16872
|
-
if (
|
|
16871
|
+
busy(request4) {
|
|
16872
|
+
if (request4 != null) {
|
|
16873
16873
|
if (client[kRunning] > 0) {
|
|
16874
|
-
if (
|
|
16875
|
-
if ((
|
|
16876
|
-
if (util2.bodyLength(
|
|
16874
|
+
if (request4.idempotent === false) return true;
|
|
16875
|
+
if ((request4.upgrade === "websocket" || request4.method === "CONNECT") && session[kRemoteSettings] === false) return true;
|
|
16876
|
+
if (util2.bodyLength(request4.body) !== 0 && (util2.isStream(request4.body) || util2.isAsyncIterable(request4.body) || util2.isFormDataLike(request4.body))) return true;
|
|
16877
16877
|
} else {
|
|
16878
|
-
return (
|
|
16878
|
+
return (request4.upgrade === "websocket" || request4.method === "CONNECT") && session[kRemoteSettings] === false;
|
|
16879
16879
|
}
|
|
16880
16880
|
}
|
|
16881
16881
|
return false;
|
|
@@ -16960,9 +16960,9 @@ var require_client_h2 = __commonJS({
|
|
|
16960
16960
|
this[kHTTP2Session] = null;
|
|
16961
16961
|
util2.destroy(this[kSocket], err);
|
|
16962
16962
|
if (client[kRunningIdx] < client[kQueue].length) {
|
|
16963
|
-
const
|
|
16963
|
+
const request4 = client[kQueue][client[kRunningIdx]];
|
|
16964
16964
|
client[kQueue][client[kRunningIdx]++] = null;
|
|
16965
|
-
util2.errorRequest(client,
|
|
16965
|
+
util2.errorRequest(client, request4, err);
|
|
16966
16966
|
client[kPendingIdx] = client[kRunningIdx];
|
|
16967
16967
|
}
|
|
16968
16968
|
assert(client[kRunning] === 0);
|
|
@@ -16984,8 +16984,8 @@ var require_client_h2 = __commonJS({
|
|
|
16984
16984
|
assert(client[kPending] === 0);
|
|
16985
16985
|
const requests = client[kQueue].splice(client[kRunningIdx]);
|
|
16986
16986
|
for (let i = 0; i < requests.length; i++) {
|
|
16987
|
-
const
|
|
16988
|
-
util2.errorRequest(client,
|
|
16987
|
+
const request4 = requests[i];
|
|
16988
|
+
util2.errorRequest(client, request4, err);
|
|
16989
16989
|
}
|
|
16990
16990
|
}
|
|
16991
16991
|
}
|
|
@@ -17016,13 +17016,13 @@ var require_client_h2 = __commonJS({
|
|
|
17016
17016
|
function shouldSendContentLength(method) {
|
|
17017
17017
|
return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT";
|
|
17018
17018
|
}
|
|
17019
|
-
function writeH2(client,
|
|
17020
|
-
const requestTimeout =
|
|
17019
|
+
function writeH2(client, request4) {
|
|
17020
|
+
const requestTimeout = request4.bodyTimeout ?? client[kBodyTimeout];
|
|
17021
17021
|
const session = client[kHTTP2Session];
|
|
17022
|
-
const { method, path, host, upgrade, expectContinue, signal, protocol, headers: reqHeaders } =
|
|
17023
|
-
let { body } =
|
|
17022
|
+
const { method, path, host, upgrade, expectContinue, signal, protocol, headers: reqHeaders } = request4;
|
|
17023
|
+
let { body } = request4;
|
|
17024
17024
|
if (upgrade != null && upgrade !== "websocket") {
|
|
17025
|
-
util2.errorRequest(client,
|
|
17025
|
+
util2.errorRequest(client, request4, new InvalidArgumentError(`Custom upgrade "${upgrade}" not supported over HTTP/2`));
|
|
17026
17026
|
return false;
|
|
17027
17027
|
}
|
|
17028
17028
|
const headers = {};
|
|
@@ -17056,11 +17056,11 @@ var require_client_h2 = __commonJS({
|
|
|
17056
17056
|
headers[HTTP2_HEADER_AUTHORITY] = host || `${hostname3}${port ? `:${port}` : ""}`;
|
|
17057
17057
|
headers[HTTP2_HEADER_METHOD] = method;
|
|
17058
17058
|
const abort = (err) => {
|
|
17059
|
-
if (
|
|
17059
|
+
if (request4.aborted || request4.completed) {
|
|
17060
17060
|
return;
|
|
17061
17061
|
}
|
|
17062
17062
|
err = err || new RequestAbortedError();
|
|
17063
|
-
util2.errorRequest(client,
|
|
17063
|
+
util2.errorRequest(client, request4, err);
|
|
17064
17064
|
if (stream != null) {
|
|
17065
17065
|
stream.removeAllListeners("data");
|
|
17066
17066
|
stream.close();
|
|
@@ -17070,18 +17070,18 @@ var require_client_h2 = __commonJS({
|
|
|
17070
17070
|
util2.destroy(body, err);
|
|
17071
17071
|
};
|
|
17072
17072
|
try {
|
|
17073
|
-
|
|
17073
|
+
request4.onConnect(abort);
|
|
17074
17074
|
} catch (err) {
|
|
17075
|
-
util2.errorRequest(client,
|
|
17075
|
+
util2.errorRequest(client, request4, err);
|
|
17076
17076
|
}
|
|
17077
|
-
if (
|
|
17077
|
+
if (request4.aborted) {
|
|
17078
17078
|
return false;
|
|
17079
17079
|
}
|
|
17080
17080
|
if (upgrade || method === "CONNECT") {
|
|
17081
17081
|
session.ref();
|
|
17082
17082
|
if (upgrade === "websocket") {
|
|
17083
17083
|
if (session[kEnableConnectProtocol] === false) {
|
|
17084
|
-
util2.errorRequest(client,
|
|
17084
|
+
util2.errorRequest(client, request4, new InformationalError("HTTP/2: Extended CONNECT protocol not supported by server"));
|
|
17085
17085
|
session.unref();
|
|
17086
17086
|
return false;
|
|
17087
17087
|
}
|
|
@@ -17097,7 +17097,7 @@ var require_client_h2 = __commonJS({
|
|
|
17097
17097
|
stream[kHTTP2Stream] = true;
|
|
17098
17098
|
stream.once("response", (headers2, _flags) => {
|
|
17099
17099
|
const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers2;
|
|
17100
|
-
|
|
17100
|
+
request4.onUpgrade(statusCode, parseH2Headers(realHeaders), stream);
|
|
17101
17101
|
++session[kOpenStreams];
|
|
17102
17102
|
client[kQueue][client[kRunningIdx]++] = null;
|
|
17103
17103
|
});
|
|
@@ -17117,7 +17117,7 @@ var require_client_h2 = __commonJS({
|
|
|
17117
17117
|
stream[kHTTP2Stream] = true;
|
|
17118
17118
|
stream.on("response", (headers2) => {
|
|
17119
17119
|
const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers2;
|
|
17120
|
-
|
|
17120
|
+
request4.onUpgrade(statusCode, parseH2Headers(realHeaders), stream);
|
|
17121
17121
|
++session[kOpenStreams];
|
|
17122
17122
|
client[kQueue][client[kRunningIdx]++] = null;
|
|
17123
17123
|
});
|
|
@@ -17143,14 +17143,14 @@ var require_client_h2 = __commonJS({
|
|
|
17143
17143
|
contentLength = bodyStream.length;
|
|
17144
17144
|
}
|
|
17145
17145
|
if (contentLength == null) {
|
|
17146
|
-
contentLength =
|
|
17146
|
+
contentLength = request4.contentLength;
|
|
17147
17147
|
}
|
|
17148
17148
|
if (!expectsPayload) {
|
|
17149
17149
|
contentLength = null;
|
|
17150
17150
|
}
|
|
17151
|
-
if (shouldSendContentLength(method) && contentLength > 0 &&
|
|
17151
|
+
if (shouldSendContentLength(method) && contentLength > 0 && request4.contentLength != null && request4.contentLength !== contentLength) {
|
|
17152
17152
|
if (client[kStrictContentLength]) {
|
|
17153
|
-
util2.errorRequest(client,
|
|
17153
|
+
util2.errorRequest(client, request4, new RequestContentLengthMismatchError());
|
|
17154
17154
|
return false;
|
|
17155
17155
|
}
|
|
17156
17156
|
process.emitWarning(new RequestContentLengthMismatchError());
|
|
@@ -17166,7 +17166,7 @@ var require_client_h2 = __commonJS({
|
|
|
17166
17166
|
header += `${key}: ${headers[key]}\r
|
|
17167
17167
|
`;
|
|
17168
17168
|
}
|
|
17169
|
-
channels.sendHeaders.publish({ request:
|
|
17169
|
+
channels.sendHeaders.publish({ request: request4, headers: header, socket: session[kSocket] });
|
|
17170
17170
|
}
|
|
17171
17171
|
const shouldEndStream = method === "GET" || method === "HEAD" || body === null;
|
|
17172
17172
|
if (expectContinue) {
|
|
@@ -17187,20 +17187,20 @@ var require_client_h2 = __commonJS({
|
|
|
17187
17187
|
let responseReceived = false;
|
|
17188
17188
|
stream.once("response", (headers2) => {
|
|
17189
17189
|
const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers2;
|
|
17190
|
-
|
|
17190
|
+
request4.onResponseStarted();
|
|
17191
17191
|
responseReceived = true;
|
|
17192
|
-
if (
|
|
17192
|
+
if (request4.aborted) {
|
|
17193
17193
|
stream.removeAllListeners("data");
|
|
17194
17194
|
return;
|
|
17195
17195
|
}
|
|
17196
|
-
if (
|
|
17196
|
+
if (request4.onHeaders(Number(statusCode), parseH2Headers(realHeaders), stream.resume.bind(stream), "") === false) {
|
|
17197
17197
|
stream.pause();
|
|
17198
17198
|
}
|
|
17199
17199
|
stream.on("data", (chunk) => {
|
|
17200
|
-
if (
|
|
17200
|
+
if (request4.aborted || request4.completed) {
|
|
17201
17201
|
return;
|
|
17202
17202
|
}
|
|
17203
|
-
if (
|
|
17203
|
+
if (request4.onData(chunk) === false) {
|
|
17204
17204
|
stream.pause();
|
|
17205
17205
|
}
|
|
17206
17206
|
});
|
|
@@ -17208,8 +17208,8 @@ var require_client_h2 = __commonJS({
|
|
|
17208
17208
|
stream.once("end", () => {
|
|
17209
17209
|
stream.removeAllListeners("data");
|
|
17210
17210
|
if (responseReceived) {
|
|
17211
|
-
if (!
|
|
17212
|
-
|
|
17211
|
+
if (!request4.aborted && !request4.completed) {
|
|
17212
|
+
request4.onComplete({});
|
|
17213
17213
|
}
|
|
17214
17214
|
client[kQueue][client[kRunningIdx]++] = null;
|
|
17215
17215
|
client[kResume]();
|
|
@@ -17248,11 +17248,11 @@ var require_client_h2 = __commonJS({
|
|
|
17248
17248
|
abort(err);
|
|
17249
17249
|
});
|
|
17250
17250
|
stream.once("trailers", (trailers) => {
|
|
17251
|
-
if (
|
|
17251
|
+
if (request4.aborted || request4.completed) {
|
|
17252
17252
|
return;
|
|
17253
17253
|
}
|
|
17254
17254
|
stream.removeAllListeners("data");
|
|
17255
|
-
|
|
17255
|
+
request4.onComplete(trailers);
|
|
17256
17256
|
});
|
|
17257
17257
|
return true;
|
|
17258
17258
|
function writeBodyH2() {
|
|
@@ -17262,7 +17262,7 @@ var require_client_h2 = __commonJS({
|
|
|
17262
17262
|
stream,
|
|
17263
17263
|
null,
|
|
17264
17264
|
client,
|
|
17265
|
-
|
|
17265
|
+
request4,
|
|
17266
17266
|
client[kSocket],
|
|
17267
17267
|
contentLength,
|
|
17268
17268
|
expectsPayload
|
|
@@ -17273,7 +17273,7 @@ var require_client_h2 = __commonJS({
|
|
|
17273
17273
|
stream,
|
|
17274
17274
|
body,
|
|
17275
17275
|
client,
|
|
17276
|
-
|
|
17276
|
+
request4,
|
|
17277
17277
|
client[kSocket],
|
|
17278
17278
|
contentLength,
|
|
17279
17279
|
expectsPayload
|
|
@@ -17285,7 +17285,7 @@ var require_client_h2 = __commonJS({
|
|
|
17285
17285
|
stream,
|
|
17286
17286
|
body.stream(),
|
|
17287
17287
|
client,
|
|
17288
|
-
|
|
17288
|
+
request4,
|
|
17289
17289
|
client[kSocket],
|
|
17290
17290
|
contentLength,
|
|
17291
17291
|
expectsPayload
|
|
@@ -17296,7 +17296,7 @@ var require_client_h2 = __commonJS({
|
|
|
17296
17296
|
stream,
|
|
17297
17297
|
body,
|
|
17298
17298
|
client,
|
|
17299
|
-
|
|
17299
|
+
request4,
|
|
17300
17300
|
client[kSocket],
|
|
17301
17301
|
contentLength,
|
|
17302
17302
|
expectsPayload
|
|
@@ -17310,7 +17310,7 @@ var require_client_h2 = __commonJS({
|
|
|
17310
17310
|
stream,
|
|
17311
17311
|
body,
|
|
17312
17312
|
client,
|
|
17313
|
-
|
|
17313
|
+
request4,
|
|
17314
17314
|
contentLength
|
|
17315
17315
|
);
|
|
17316
17316
|
} else if (util2.isIterable(body)) {
|
|
@@ -17319,7 +17319,7 @@ var require_client_h2 = __commonJS({
|
|
|
17319
17319
|
stream,
|
|
17320
17320
|
body,
|
|
17321
17321
|
client,
|
|
17322
|
-
|
|
17322
|
+
request4,
|
|
17323
17323
|
client[kSocket],
|
|
17324
17324
|
contentLength,
|
|
17325
17325
|
expectsPayload
|
|
@@ -17329,7 +17329,7 @@ var require_client_h2 = __commonJS({
|
|
|
17329
17329
|
}
|
|
17330
17330
|
}
|
|
17331
17331
|
}
|
|
17332
|
-
function writeBuffer(abort, h2stream, body, client,
|
|
17332
|
+
function writeBuffer(abort, h2stream, body, client, request4, socket, contentLength, expectsPayload) {
|
|
17333
17333
|
try {
|
|
17334
17334
|
if (body != null && util2.isBuffer(body)) {
|
|
17335
17335
|
assert(contentLength === body.byteLength, "buffer body must have content length");
|
|
@@ -17337,18 +17337,18 @@ var require_client_h2 = __commonJS({
|
|
|
17337
17337
|
h2stream.write(body);
|
|
17338
17338
|
h2stream.uncork();
|
|
17339
17339
|
h2stream.end();
|
|
17340
|
-
|
|
17340
|
+
request4.onBodySent(body);
|
|
17341
17341
|
}
|
|
17342
17342
|
if (!expectsPayload) {
|
|
17343
17343
|
socket[kReset] = true;
|
|
17344
17344
|
}
|
|
17345
|
-
|
|
17345
|
+
request4.onRequestSent();
|
|
17346
17346
|
client[kResume]();
|
|
17347
17347
|
} catch (error) {
|
|
17348
17348
|
abort(error);
|
|
17349
17349
|
}
|
|
17350
17350
|
}
|
|
17351
|
-
function writeStream(abort, socket, expectsPayload, h2stream, body, client,
|
|
17351
|
+
function writeStream(abort, socket, expectsPayload, h2stream, body, client, request4, contentLength) {
|
|
17352
17352
|
assert(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined");
|
|
17353
17353
|
const pipe = pipeline2(
|
|
17354
17354
|
body,
|
|
@@ -17359,7 +17359,7 @@ var require_client_h2 = __commonJS({
|
|
|
17359
17359
|
abort(err);
|
|
17360
17360
|
} else {
|
|
17361
17361
|
util2.removeAllListeners(pipe);
|
|
17362
|
-
|
|
17362
|
+
request4.onRequestSent();
|
|
17363
17363
|
if (!expectsPayload) {
|
|
17364
17364
|
socket[kReset] = true;
|
|
17365
17365
|
}
|
|
@@ -17369,10 +17369,10 @@ var require_client_h2 = __commonJS({
|
|
|
17369
17369
|
);
|
|
17370
17370
|
util2.addListener(pipe, "data", onPipeData);
|
|
17371
17371
|
function onPipeData(chunk) {
|
|
17372
|
-
|
|
17372
|
+
request4.onBodySent(chunk);
|
|
17373
17373
|
}
|
|
17374
17374
|
}
|
|
17375
|
-
async function writeBlob(abort, h2stream, body, client,
|
|
17375
|
+
async function writeBlob(abort, h2stream, body, client, request4, socket, contentLength, expectsPayload) {
|
|
17376
17376
|
assert(contentLength === body.size, "blob body must have content length");
|
|
17377
17377
|
try {
|
|
17378
17378
|
if (contentLength != null && contentLength !== body.size) {
|
|
@@ -17383,8 +17383,8 @@ var require_client_h2 = __commonJS({
|
|
|
17383
17383
|
h2stream.write(buffer);
|
|
17384
17384
|
h2stream.uncork();
|
|
17385
17385
|
h2stream.end();
|
|
17386
|
-
|
|
17387
|
-
|
|
17386
|
+
request4.onBodySent(buffer);
|
|
17387
|
+
request4.onRequestSent();
|
|
17388
17388
|
if (!expectsPayload) {
|
|
17389
17389
|
socket[kReset] = true;
|
|
17390
17390
|
}
|
|
@@ -17393,7 +17393,7 @@ var require_client_h2 = __commonJS({
|
|
|
17393
17393
|
abort(err);
|
|
17394
17394
|
}
|
|
17395
17395
|
}
|
|
17396
|
-
async function writeIterable(abort, h2stream, body, client,
|
|
17396
|
+
async function writeIterable(abort, h2stream, body, client, request4, socket, contentLength, expectsPayload) {
|
|
17397
17397
|
assert(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined");
|
|
17398
17398
|
let callback = null;
|
|
17399
17399
|
function onDrain() {
|
|
@@ -17403,12 +17403,12 @@ var require_client_h2 = __commonJS({
|
|
|
17403
17403
|
cb();
|
|
17404
17404
|
}
|
|
17405
17405
|
}
|
|
17406
|
-
const waitForDrain = () => new Promise((
|
|
17406
|
+
const waitForDrain = () => new Promise((resolve7, reject) => {
|
|
17407
17407
|
assert(callback === null);
|
|
17408
17408
|
if (socket[kError]) {
|
|
17409
17409
|
reject(socket[kError]);
|
|
17410
17410
|
} else {
|
|
17411
|
-
callback =
|
|
17411
|
+
callback = resolve7;
|
|
17412
17412
|
}
|
|
17413
17413
|
});
|
|
17414
17414
|
h2stream.on("close", onDrain).on("drain", onDrain);
|
|
@@ -17418,13 +17418,13 @@ var require_client_h2 = __commonJS({
|
|
|
17418
17418
|
throw socket[kError];
|
|
17419
17419
|
}
|
|
17420
17420
|
const res = h2stream.write(chunk);
|
|
17421
|
-
|
|
17421
|
+
request4.onBodySent(chunk);
|
|
17422
17422
|
if (!res) {
|
|
17423
17423
|
await waitForDrain();
|
|
17424
17424
|
}
|
|
17425
17425
|
}
|
|
17426
17426
|
h2stream.end();
|
|
17427
|
-
|
|
17427
|
+
request4.onRequestSent();
|
|
17428
17428
|
if (!expectsPayload) {
|
|
17429
17429
|
socket[kReset] = true;
|
|
17430
17430
|
}
|
|
@@ -17704,10 +17704,10 @@ var require_client = __commonJS({
|
|
|
17704
17704
|
this.once("connect", cb);
|
|
17705
17705
|
}
|
|
17706
17706
|
[kDispatch](opts, handler) {
|
|
17707
|
-
const
|
|
17708
|
-
this[kQueue].push(
|
|
17707
|
+
const request4 = new Request(this[kUrl].origin, opts, handler);
|
|
17708
|
+
this[kQueue].push(request4);
|
|
17709
17709
|
if (this[kResuming]) {
|
|
17710
|
-
} else if (util2.bodyLength(
|
|
17710
|
+
} else if (util2.bodyLength(request4.body) == null && util2.isIterable(request4.body)) {
|
|
17711
17711
|
this[kResuming] = 1;
|
|
17712
17712
|
queueMicrotask(() => resume(this));
|
|
17713
17713
|
} else {
|
|
@@ -17719,27 +17719,27 @@ var require_client = __commonJS({
|
|
|
17719
17719
|
return this[kNeedDrain] < 2;
|
|
17720
17720
|
}
|
|
17721
17721
|
[kClose]() {
|
|
17722
|
-
return new Promise((
|
|
17722
|
+
return new Promise((resolve7) => {
|
|
17723
17723
|
if (this[kSize]) {
|
|
17724
|
-
this[kClosedResolve] =
|
|
17724
|
+
this[kClosedResolve] = resolve7;
|
|
17725
17725
|
} else {
|
|
17726
|
-
|
|
17726
|
+
resolve7(null);
|
|
17727
17727
|
}
|
|
17728
17728
|
});
|
|
17729
17729
|
}
|
|
17730
17730
|
[kDestroy](err) {
|
|
17731
|
-
return new Promise((
|
|
17731
|
+
return new Promise((resolve7) => {
|
|
17732
17732
|
const requests = this[kQueue].splice(this[kPendingIdx]);
|
|
17733
17733
|
for (let i = 0; i < requests.length; i++) {
|
|
17734
|
-
const
|
|
17735
|
-
util2.errorRequest(this,
|
|
17734
|
+
const request4 = requests[i];
|
|
17735
|
+
util2.errorRequest(this, request4, err);
|
|
17736
17736
|
}
|
|
17737
17737
|
const callback = () => {
|
|
17738
17738
|
if (this[kClosedResolve]) {
|
|
17739
17739
|
this[kClosedResolve]();
|
|
17740
17740
|
this[kClosedResolve] = null;
|
|
17741
17741
|
}
|
|
17742
|
-
|
|
17742
|
+
resolve7(null);
|
|
17743
17743
|
};
|
|
17744
17744
|
if (this[kHTTPContext]) {
|
|
17745
17745
|
this[kHTTPContext].destroy(err, callback);
|
|
@@ -17756,8 +17756,8 @@ var require_client = __commonJS({
|
|
|
17756
17756
|
assert(client[kPendingIdx] === client[kRunningIdx]);
|
|
17757
17757
|
const requests = client[kQueue].splice(client[kRunningIdx]);
|
|
17758
17758
|
for (let i = 0; i < requests.length; i++) {
|
|
17759
|
-
const
|
|
17760
|
-
util2.errorRequest(client,
|
|
17759
|
+
const request4 = requests[i];
|
|
17760
|
+
util2.errorRequest(client, request4, err);
|
|
17761
17761
|
}
|
|
17762
17762
|
assert(client[kSize] === 0);
|
|
17763
17763
|
}
|
|
@@ -17867,8 +17867,8 @@ var require_client = __commonJS({
|
|
|
17867
17867
|
if (err.code === "ERR_TLS_CERT_ALTNAME_INVALID") {
|
|
17868
17868
|
assert(client[kRunning] === 0);
|
|
17869
17869
|
while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {
|
|
17870
|
-
const
|
|
17871
|
-
util2.errorRequest(client,
|
|
17870
|
+
const request4 = client[kQueue][client[kPendingIdx]++];
|
|
17871
|
+
util2.errorRequest(client, request4, err);
|
|
17872
17872
|
}
|
|
17873
17873
|
} else {
|
|
17874
17874
|
onError(client, err);
|
|
@@ -17923,15 +17923,15 @@ var require_client = __commonJS({
|
|
|
17923
17923
|
if (client[kRunning] >= (getPipelining(client) || 1)) {
|
|
17924
17924
|
return;
|
|
17925
17925
|
}
|
|
17926
|
-
const
|
|
17927
|
-
if (
|
|
17926
|
+
const request4 = client[kQueue][client[kPendingIdx]];
|
|
17927
|
+
if (request4 === null) {
|
|
17928
17928
|
return;
|
|
17929
17929
|
}
|
|
17930
|
-
if (client[kUrl].protocol === "https:" && client[kServerName] !==
|
|
17930
|
+
if (client[kUrl].protocol === "https:" && client[kServerName] !== request4.servername) {
|
|
17931
17931
|
if (client[kRunning] > 0) {
|
|
17932
17932
|
return;
|
|
17933
17933
|
}
|
|
17934
|
-
client[kServerName] =
|
|
17934
|
+
client[kServerName] = request4.servername;
|
|
17935
17935
|
client[kHTTPContext]?.destroy(new InformationalError("servername changed"), () => {
|
|
17936
17936
|
client[kHTTPContext] = null;
|
|
17937
17937
|
resume(client);
|
|
@@ -17947,10 +17947,10 @@ var require_client = __commonJS({
|
|
|
17947
17947
|
if (client[kHTTPContext].destroyed) {
|
|
17948
17948
|
return;
|
|
17949
17949
|
}
|
|
17950
|
-
if (client[kHTTPContext].busy(
|
|
17950
|
+
if (client[kHTTPContext].busy(request4)) {
|
|
17951
17951
|
return;
|
|
17952
17952
|
}
|
|
17953
|
-
if (!
|
|
17953
|
+
if (!request4.aborted && client[kHTTPContext].write(request4)) {
|
|
17954
17954
|
client[kPendingIdx]++;
|
|
17955
17955
|
} else {
|
|
17956
17956
|
client[kQueue].splice(client[kPendingIdx], 1);
|
|
@@ -18144,8 +18144,8 @@ var require_pool_base = __commonJS({
|
|
|
18144
18144
|
}
|
|
18145
18145
|
return Promise.all(closeAll);
|
|
18146
18146
|
} else {
|
|
18147
|
-
return new Promise((
|
|
18148
|
-
this[kClosedResolve] =
|
|
18147
|
+
return new Promise((resolve7) => {
|
|
18148
|
+
this[kClosedResolve] = resolve7;
|
|
18149
18149
|
});
|
|
18150
18150
|
}
|
|
18151
18151
|
}
|
|
@@ -18982,13 +18982,13 @@ var require_socks5_client = __commonJS({
|
|
|
18982
18982
|
}
|
|
18983
18983
|
debug("starting handshake with", this.authMethods.length, "auth methods");
|
|
18984
18984
|
this.state = STATES.HANDSHAKING;
|
|
18985
|
-
const
|
|
18986
|
-
|
|
18987
|
-
|
|
18985
|
+
const request4 = Buffer2.alloc(2 + this.authMethods.length);
|
|
18986
|
+
request4[0] = SOCKS_VERSION;
|
|
18987
|
+
request4[1] = this.authMethods.length;
|
|
18988
18988
|
this.authMethods.forEach((method, i) => {
|
|
18989
|
-
|
|
18989
|
+
request4[2 + i] = method;
|
|
18990
18990
|
});
|
|
18991
|
-
this.socket.write(
|
|
18991
|
+
this.socket.write(request4);
|
|
18992
18992
|
}
|
|
18993
18993
|
/**
|
|
18994
18994
|
* Handle handshake response from server
|
|
@@ -19030,13 +19030,13 @@ var require_socks5_client = __commonJS({
|
|
|
19030
19030
|
if (usernameBuffer.length > 255 || passwordBuffer.length > 255) {
|
|
19031
19031
|
throw new InvalidArgumentError("Username or password too long");
|
|
19032
19032
|
}
|
|
19033
|
-
const
|
|
19034
|
-
|
|
19035
|
-
|
|
19036
|
-
usernameBuffer.copy(
|
|
19037
|
-
|
|
19038
|
-
passwordBuffer.copy(
|
|
19039
|
-
this.socket.write(
|
|
19033
|
+
const request4 = Buffer2.alloc(3 + usernameBuffer.length + passwordBuffer.length);
|
|
19034
|
+
request4[0] = 1;
|
|
19035
|
+
request4[1] = usernameBuffer.length;
|
|
19036
|
+
usernameBuffer.copy(request4, 2);
|
|
19037
|
+
request4[2 + usernameBuffer.length] = passwordBuffer.length;
|
|
19038
|
+
passwordBuffer.copy(request4, 3 + usernameBuffer.length);
|
|
19039
|
+
this.socket.write(request4);
|
|
19040
19040
|
}
|
|
19041
19041
|
/**
|
|
19042
19042
|
* Handle authentication response
|
|
@@ -19068,22 +19068,22 @@ var require_socks5_client = __commonJS({
|
|
|
19068
19068
|
}
|
|
19069
19069
|
debug("connecting to", address, port);
|
|
19070
19070
|
this.state = STATES.CONNECTING;
|
|
19071
|
-
const
|
|
19072
|
-
this.socket.write(
|
|
19071
|
+
const request4 = this.buildConnectRequest(COMMANDS.CONNECT, address, port);
|
|
19072
|
+
this.socket.write(request4);
|
|
19073
19073
|
}
|
|
19074
19074
|
/**
|
|
19075
19075
|
* Build a SOCKS5 request
|
|
19076
19076
|
*/
|
|
19077
19077
|
buildConnectRequest(command, address, port) {
|
|
19078
19078
|
const { type: addressType, buffer: addressBuffer } = parseAddress(address);
|
|
19079
|
-
const
|
|
19080
|
-
|
|
19081
|
-
|
|
19082
|
-
|
|
19083
|
-
|
|
19084
|
-
addressBuffer.copy(
|
|
19085
|
-
|
|
19086
|
-
return
|
|
19079
|
+
const request4 = Buffer2.alloc(4 + addressBuffer.length + 2);
|
|
19080
|
+
request4[0] = SOCKS_VERSION;
|
|
19081
|
+
request4[1] = command;
|
|
19082
|
+
request4[2] = 0;
|
|
19083
|
+
request4[3] = addressType;
|
|
19084
|
+
addressBuffer.copy(request4, 4);
|
|
19085
|
+
request4.writeUInt16BE(port, 4 + addressBuffer.length);
|
|
19086
|
+
return request4;
|
|
19087
19087
|
}
|
|
19088
19088
|
/**
|
|
19089
19089
|
* Handle CONNECT response
|
|
@@ -19237,10 +19237,10 @@ var require_socks5_proxy_agent = __commonJS({
|
|
|
19237
19237
|
const proxyHost = this[kProxyUrl].hostname;
|
|
19238
19238
|
const proxyPort = parseInt(this[kProxyUrl].port) || 1080;
|
|
19239
19239
|
debug("creating SOCKS5 connection to", proxyHost, proxyPort);
|
|
19240
|
-
const socket = await new Promise((
|
|
19240
|
+
const socket = await new Promise((resolve7, reject) => {
|
|
19241
19241
|
const onConnect = () => {
|
|
19242
19242
|
socket2.removeListener("error", onError);
|
|
19243
|
-
|
|
19243
|
+
resolve7(socket2);
|
|
19244
19244
|
};
|
|
19245
19245
|
const onError = (err) => {
|
|
19246
19246
|
socket2.removeListener("connect", onConnect);
|
|
@@ -19259,14 +19259,14 @@ var require_socks5_proxy_agent = __commonJS({
|
|
|
19259
19259
|
socket.destroy();
|
|
19260
19260
|
});
|
|
19261
19261
|
await socks5Client.handshake();
|
|
19262
|
-
await new Promise((
|
|
19262
|
+
await new Promise((resolve7, reject) => {
|
|
19263
19263
|
const timeout = setTimeout(() => {
|
|
19264
19264
|
reject(new Error("SOCKS5 authentication timeout"));
|
|
19265
19265
|
}, 5e3);
|
|
19266
19266
|
const onAuthenticated = () => {
|
|
19267
19267
|
clearTimeout(timeout);
|
|
19268
19268
|
socks5Client.removeListener("error", onError);
|
|
19269
|
-
|
|
19269
|
+
resolve7();
|
|
19270
19270
|
};
|
|
19271
19271
|
const onError = (err) => {
|
|
19272
19272
|
clearTimeout(timeout);
|
|
@@ -19275,14 +19275,14 @@ var require_socks5_proxy_agent = __commonJS({
|
|
|
19275
19275
|
};
|
|
19276
19276
|
if (socks5Client.state === "authenticated") {
|
|
19277
19277
|
clearTimeout(timeout);
|
|
19278
|
-
|
|
19278
|
+
resolve7();
|
|
19279
19279
|
} else {
|
|
19280
19280
|
socks5Client.once("authenticated", onAuthenticated);
|
|
19281
19281
|
socks5Client.once("error", onError);
|
|
19282
19282
|
}
|
|
19283
19283
|
});
|
|
19284
19284
|
await socks5Client.connect(targetHost, targetPort);
|
|
19285
|
-
await new Promise((
|
|
19285
|
+
await new Promise((resolve7, reject) => {
|
|
19286
19286
|
const timeout = setTimeout(() => {
|
|
19287
19287
|
reject(new Error("SOCKS5 connection timeout"));
|
|
19288
19288
|
}, 5e3);
|
|
@@ -19290,7 +19290,7 @@ var require_socks5_proxy_agent = __commonJS({
|
|
|
19290
19290
|
debug("SOCKS5 tunnel established to", targetHost, targetPort, "via", info);
|
|
19291
19291
|
clearTimeout(timeout);
|
|
19292
19292
|
socks5Client.removeListener("error", onError);
|
|
19293
|
-
|
|
19293
|
+
resolve7();
|
|
19294
19294
|
};
|
|
19295
19295
|
const onError = (err) => {
|
|
19296
19296
|
clearTimeout(timeout);
|
|
@@ -19331,8 +19331,8 @@ var require_socks5_proxy_agent = __commonJS({
|
|
|
19331
19331
|
servername: targetHost,
|
|
19332
19332
|
...connectOpts.tls || {}
|
|
19333
19333
|
});
|
|
19334
|
-
await new Promise((
|
|
19335
|
-
finalSocket.once("secureConnect",
|
|
19334
|
+
await new Promise((resolve7, reject) => {
|
|
19335
|
+
finalSocket.once("secureConnect", resolve7);
|
|
19336
19336
|
finalSocket.once("error", reject);
|
|
19337
19337
|
});
|
|
19338
19338
|
}
|
|
@@ -20357,7 +20357,7 @@ var require_readable = __commonJS({
|
|
|
20357
20357
|
if (this._readableState.closeEmitted) {
|
|
20358
20358
|
return Promise.resolve(null);
|
|
20359
20359
|
}
|
|
20360
|
-
return new Promise((
|
|
20360
|
+
return new Promise((resolve7, reject) => {
|
|
20361
20361
|
if (this[kContentLength] && this[kContentLength] > limit || this[kBytesRead] > limit) {
|
|
20362
20362
|
this.destroy(new AbortError());
|
|
20363
20363
|
}
|
|
@@ -20371,11 +20371,11 @@ var require_readable = __commonJS({
|
|
|
20371
20371
|
if (signal.aborted) {
|
|
20372
20372
|
reject(signal.reason ?? new AbortError());
|
|
20373
20373
|
} else {
|
|
20374
|
-
|
|
20374
|
+
resolve7(null);
|
|
20375
20375
|
}
|
|
20376
20376
|
});
|
|
20377
20377
|
} else {
|
|
20378
|
-
this.on("close",
|
|
20378
|
+
this.on("close", resolve7);
|
|
20379
20379
|
}
|
|
20380
20380
|
this.on("error", noop).on("data", () => {
|
|
20381
20381
|
if (this[kBytesRead] > limit) {
|
|
@@ -20403,7 +20403,7 @@ var require_readable = __commonJS({
|
|
|
20403
20403
|
}
|
|
20404
20404
|
function consume(stream, type) {
|
|
20405
20405
|
assert(!stream[kConsume]);
|
|
20406
|
-
return new Promise((
|
|
20406
|
+
return new Promise((resolve7, reject) => {
|
|
20407
20407
|
if (isUnusable(stream)) {
|
|
20408
20408
|
const rState = stream._readableState;
|
|
20409
20409
|
if (rState.destroyed && rState.closeEmitted === false) {
|
|
@@ -20418,7 +20418,7 @@ var require_readable = __commonJS({
|
|
|
20418
20418
|
stream[kConsume] = {
|
|
20419
20419
|
type,
|
|
20420
20420
|
stream,
|
|
20421
|
-
resolve:
|
|
20421
|
+
resolve: resolve7,
|
|
20422
20422
|
reject,
|
|
20423
20423
|
length: 0,
|
|
20424
20424
|
body: []
|
|
@@ -20492,18 +20492,18 @@ var require_readable = __commonJS({
|
|
|
20492
20492
|
return buffer;
|
|
20493
20493
|
}
|
|
20494
20494
|
function consumeEnd(consume2, encoding) {
|
|
20495
|
-
const { type, body, resolve:
|
|
20495
|
+
const { type, body, resolve: resolve7, stream, length } = consume2;
|
|
20496
20496
|
try {
|
|
20497
20497
|
if (type === "text") {
|
|
20498
|
-
|
|
20498
|
+
resolve7(chunksDecode(body, length, encoding));
|
|
20499
20499
|
} else if (type === "json") {
|
|
20500
|
-
|
|
20500
|
+
resolve7(JSON.parse(chunksDecode(body, length, encoding)));
|
|
20501
20501
|
} else if (type === "arrayBuffer") {
|
|
20502
|
-
|
|
20502
|
+
resolve7(chunksConcat(body, length).buffer);
|
|
20503
20503
|
} else if (type === "blob") {
|
|
20504
|
-
|
|
20504
|
+
resolve7(new Blob(body, { type: stream[kContentType] }));
|
|
20505
20505
|
} else if (type === "bytes") {
|
|
20506
|
-
|
|
20506
|
+
resolve7(chunksConcat(body, length));
|
|
20507
20507
|
}
|
|
20508
20508
|
consumeFinish(consume2);
|
|
20509
20509
|
} catch (err) {
|
|
@@ -20691,11 +20691,11 @@ var require_api_request = __commonJS({
|
|
|
20691
20691
|
}
|
|
20692
20692
|
}
|
|
20693
20693
|
};
|
|
20694
|
-
function
|
|
20694
|
+
function request4(opts, callback) {
|
|
20695
20695
|
if (callback === void 0) {
|
|
20696
|
-
return new Promise((
|
|
20697
|
-
|
|
20698
|
-
return err ? reject(err) :
|
|
20696
|
+
return new Promise((resolve7, reject) => {
|
|
20697
|
+
request4.call(this, opts, (err, data) => {
|
|
20698
|
+
return err ? reject(err) : resolve7(data);
|
|
20699
20699
|
});
|
|
20700
20700
|
});
|
|
20701
20701
|
}
|
|
@@ -20710,7 +20710,7 @@ var require_api_request = __commonJS({
|
|
|
20710
20710
|
queueMicrotask(() => callback(err, { opaque }));
|
|
20711
20711
|
}
|
|
20712
20712
|
}
|
|
20713
|
-
module.exports =
|
|
20713
|
+
module.exports = request4;
|
|
20714
20714
|
module.exports.RequestHandler = RequestHandler;
|
|
20715
20715
|
}
|
|
20716
20716
|
});
|
|
@@ -20907,9 +20907,9 @@ var require_api_stream = __commonJS({
|
|
|
20907
20907
|
};
|
|
20908
20908
|
function stream(opts, factory, callback) {
|
|
20909
20909
|
if (callback === void 0) {
|
|
20910
|
-
return new Promise((
|
|
20910
|
+
return new Promise((resolve7, reject) => {
|
|
20911
20911
|
stream.call(this, opts, factory, (err, data) => {
|
|
20912
|
-
return err ? reject(err) :
|
|
20912
|
+
return err ? reject(err) : resolve7(data);
|
|
20913
20913
|
});
|
|
20914
20914
|
});
|
|
20915
20915
|
}
|
|
@@ -21197,9 +21197,9 @@ var require_api_upgrade = __commonJS({
|
|
|
21197
21197
|
};
|
|
21198
21198
|
function upgrade(opts, callback) {
|
|
21199
21199
|
if (callback === void 0) {
|
|
21200
|
-
return new Promise((
|
|
21200
|
+
return new Promise((resolve7, reject) => {
|
|
21201
21201
|
upgrade.call(this, opts, (err, data) => {
|
|
21202
|
-
return err ? reject(err) :
|
|
21202
|
+
return err ? reject(err) : resolve7(data);
|
|
21203
21203
|
});
|
|
21204
21204
|
});
|
|
21205
21205
|
}
|
|
@@ -21292,9 +21292,9 @@ var require_api_connect = __commonJS({
|
|
|
21292
21292
|
};
|
|
21293
21293
|
function connect(opts, callback) {
|
|
21294
21294
|
if (callback === void 0) {
|
|
21295
|
-
return new Promise((
|
|
21295
|
+
return new Promise((resolve7, reject) => {
|
|
21296
21296
|
connect.call(this, opts, (err, data) => {
|
|
21297
|
-
return err ? reject(err) :
|
|
21297
|
+
return err ? reject(err) : resolve7(data);
|
|
21298
21298
|
});
|
|
21299
21299
|
});
|
|
21300
21300
|
}
|
|
@@ -22567,8 +22567,8 @@ var require_snapshot_utils = __commonJS({
|
|
|
22567
22567
|
var require_snapshot_recorder = __commonJS({
|
|
22568
22568
|
"../../node_modules/.pnpm/undici@7.25.0/node_modules/undici/lib/mock/snapshot-recorder.js"(exports, module) {
|
|
22569
22569
|
"use strict";
|
|
22570
|
-
var { writeFile:
|
|
22571
|
-
var { dirname: dirname9, resolve:
|
|
22570
|
+
var { writeFile: writeFile3, readFile: readFile2, mkdir: mkdir4 } = __require("fs/promises");
|
|
22571
|
+
var { dirname: dirname9, resolve: resolve7 } = __require("path");
|
|
22572
22572
|
var { setTimeout: setTimeout2, clearTimeout: clearTimeout2 } = __require("timers");
|
|
22573
22573
|
var { InvalidArgumentError, UndiciError } = require_errors();
|
|
22574
22574
|
var { hashId, isUrlExcludedFactory, normalizeHeaders, createHeaderFilters } = require_snapshot_utils();
|
|
@@ -22693,8 +22693,8 @@ var require_snapshot_recorder = __commonJS({
|
|
|
22693
22693
|
if (this.isUrlExcluded(requestOpts)) {
|
|
22694
22694
|
return;
|
|
22695
22695
|
}
|
|
22696
|
-
const
|
|
22697
|
-
const hash = createRequestHash(
|
|
22696
|
+
const request4 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
|
|
22697
|
+
const hash = createRequestHash(request4);
|
|
22698
22698
|
const normalizedHeaders = normalizeHeaders(response.headers);
|
|
22699
22699
|
const responseData = {
|
|
22700
22700
|
statusCode: response.statusCode,
|
|
@@ -22712,7 +22712,7 @@ var require_snapshot_recorder = __commonJS({
|
|
|
22712
22712
|
existingSnapshot.timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
22713
22713
|
} else {
|
|
22714
22714
|
this.#snapshots.set(hash, {
|
|
22715
|
-
request:
|
|
22715
|
+
request: request4,
|
|
22716
22716
|
responses: [responseData],
|
|
22717
22717
|
// Always store as array for consistency
|
|
22718
22718
|
callCount: 0,
|
|
@@ -22746,8 +22746,8 @@ var require_snapshot_recorder = __commonJS({
|
|
|
22746
22746
|
if (this.isUrlExcluded(requestOpts)) {
|
|
22747
22747
|
return void 0;
|
|
22748
22748
|
}
|
|
22749
|
-
const
|
|
22750
|
-
const hash = createRequestHash(
|
|
22749
|
+
const request4 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
|
|
22750
|
+
const hash = createRequestHash(request4);
|
|
22751
22751
|
const snapshot = this.#snapshots.get(hash);
|
|
22752
22752
|
if (!snapshot) return void 0;
|
|
22753
22753
|
const currentCallCount = snapshot.callCount || 0;
|
|
@@ -22769,7 +22769,7 @@ var require_snapshot_recorder = __commonJS({
|
|
|
22769
22769
|
throw new InvalidArgumentError("Snapshot path is required");
|
|
22770
22770
|
}
|
|
22771
22771
|
try {
|
|
22772
|
-
const data = await readFile2(
|
|
22772
|
+
const data = await readFile2(resolve7(path), "utf8");
|
|
22773
22773
|
const parsed = JSON.parse(data);
|
|
22774
22774
|
if (Array.isArray(parsed)) {
|
|
22775
22775
|
this.#snapshots.clear();
|
|
@@ -22798,13 +22798,13 @@ var require_snapshot_recorder = __commonJS({
|
|
|
22798
22798
|
if (!path) {
|
|
22799
22799
|
throw new InvalidArgumentError("Snapshot path is required");
|
|
22800
22800
|
}
|
|
22801
|
-
const resolvedPath =
|
|
22802
|
-
await
|
|
22801
|
+
const resolvedPath = resolve7(path);
|
|
22802
|
+
await mkdir4(dirname9(resolvedPath), { recursive: true });
|
|
22803
22803
|
const data = Array.from(this.#snapshots.entries()).map(([hash, snapshot]) => ({
|
|
22804
22804
|
hash,
|
|
22805
22805
|
snapshot
|
|
22806
22806
|
}));
|
|
22807
|
-
await
|
|
22807
|
+
await writeFile3(resolvedPath, JSON.stringify(data, null, 2), { flush: true });
|
|
22808
22808
|
}
|
|
22809
22809
|
/**
|
|
22810
22810
|
* Clears all recorded snapshots
|
|
@@ -22842,8 +22842,8 @@ var require_snapshot_recorder = __commonJS({
|
|
|
22842
22842
|
* @returns {boolean} - True if snapshot was deleted, false if not found
|
|
22843
22843
|
*/
|
|
22844
22844
|
deleteSnapshot(requestOpts) {
|
|
22845
|
-
const
|
|
22846
|
-
const hash = createRequestHash(
|
|
22845
|
+
const request4 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
|
|
22846
|
+
const hash = createRequestHash(request4);
|
|
22847
22847
|
return this.#snapshots.delete(hash);
|
|
22848
22848
|
}
|
|
22849
22849
|
/**
|
|
@@ -22852,8 +22852,8 @@ var require_snapshot_recorder = __commonJS({
|
|
|
22852
22852
|
* @returns {SnapshotInfo|null} - Snapshot information or null if not found
|
|
22853
22853
|
*/
|
|
22854
22854
|
getSnapshotInfo(requestOpts) {
|
|
22855
|
-
const
|
|
22856
|
-
const hash = createRequestHash(
|
|
22855
|
+
const request4 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
|
|
22856
|
+
const hash = createRequestHash(request4);
|
|
22857
22857
|
const snapshot = this.#snapshots.get(hash);
|
|
22858
22858
|
if (!snapshot) return null;
|
|
22859
22859
|
return {
|
|
@@ -23144,16 +23144,16 @@ var require_snapshot_agent = __commonJS({
|
|
|
23144
23144
|
*/
|
|
23145
23145
|
#setupMockInterceptors() {
|
|
23146
23146
|
for (const snapshot of this[kSnapshotRecorder].getSnapshots()) {
|
|
23147
|
-
const { request:
|
|
23148
|
-
const url = new URL(
|
|
23147
|
+
const { request: request4, responses, response } = snapshot;
|
|
23148
|
+
const url = new URL(request4.url);
|
|
23149
23149
|
const mockPool = this.get(url.origin);
|
|
23150
23150
|
const responseData = responses ? responses[0] : response;
|
|
23151
23151
|
if (!responseData) continue;
|
|
23152
23152
|
mockPool.intercept({
|
|
23153
23153
|
path: url.pathname + url.search,
|
|
23154
|
-
method:
|
|
23155
|
-
headers:
|
|
23156
|
-
body:
|
|
23154
|
+
method: request4.method,
|
|
23155
|
+
headers: request4.headers,
|
|
23156
|
+
body: request4.body
|
|
23157
23157
|
}).reply(responseData.statusCode, responseData.body, {
|
|
23158
23158
|
headers: responseData.headers,
|
|
23159
23159
|
trailers: responseData.trailers
|
|
@@ -27870,7 +27870,7 @@ var require_request2 = __commonJS({
|
|
|
27870
27870
|
webidl.argumentLengthCheck(arguments, 1, prefix);
|
|
27871
27871
|
input = webidl.converters.RequestInfo(input);
|
|
27872
27872
|
init = webidl.converters.RequestInit(init);
|
|
27873
|
-
let
|
|
27873
|
+
let request4 = null;
|
|
27874
27874
|
let fallbackMode = null;
|
|
27875
27875
|
const baseUrl = environmentSettingsObject.settingsObject.baseUrl;
|
|
27876
27876
|
let signal = null;
|
|
@@ -27887,18 +27887,18 @@ var require_request2 = __commonJS({
|
|
|
27887
27887
|
"Request cannot be constructed from a URL that includes credentials: " + input
|
|
27888
27888
|
);
|
|
27889
27889
|
}
|
|
27890
|
-
|
|
27890
|
+
request4 = makeRequest({ urlList: [parsedURL] });
|
|
27891
27891
|
fallbackMode = "cors";
|
|
27892
27892
|
} else {
|
|
27893
27893
|
assert(webidl.is.Request(input));
|
|
27894
|
-
|
|
27894
|
+
request4 = input.#state;
|
|
27895
27895
|
signal = input.#signal;
|
|
27896
27896
|
this.#dispatcher = init.dispatcher || input.#dispatcher;
|
|
27897
27897
|
}
|
|
27898
27898
|
const origin = environmentSettingsObject.settingsObject.origin;
|
|
27899
27899
|
let window2 = "client";
|
|
27900
|
-
if (
|
|
27901
|
-
window2 =
|
|
27900
|
+
if (request4.window?.constructor?.name === "EnvironmentSettingsObject" && sameOrigin(request4.window, origin)) {
|
|
27901
|
+
window2 = request4.window;
|
|
27902
27902
|
}
|
|
27903
27903
|
if (init.window != null) {
|
|
27904
27904
|
throw new TypeError(`'window' option '${window2}' must be null`);
|
|
@@ -27906,66 +27906,66 @@ var require_request2 = __commonJS({
|
|
|
27906
27906
|
if ("window" in init) {
|
|
27907
27907
|
window2 = "no-window";
|
|
27908
27908
|
}
|
|
27909
|
-
|
|
27909
|
+
request4 = makeRequest({
|
|
27910
27910
|
// URL request’s URL.
|
|
27911
27911
|
// undici implementation note: this is set as the first item in request's urlList in makeRequest
|
|
27912
27912
|
// method request’s method.
|
|
27913
|
-
method:
|
|
27913
|
+
method: request4.method,
|
|
27914
27914
|
// header list A copy of request’s header list.
|
|
27915
27915
|
// undici implementation note: headersList is cloned in makeRequest
|
|
27916
|
-
headersList:
|
|
27916
|
+
headersList: request4.headersList,
|
|
27917
27917
|
// unsafe-request flag Set.
|
|
27918
|
-
unsafeRequest:
|
|
27918
|
+
unsafeRequest: request4.unsafeRequest,
|
|
27919
27919
|
// client This’s relevant settings object.
|
|
27920
27920
|
client: environmentSettingsObject.settingsObject,
|
|
27921
27921
|
// window window.
|
|
27922
27922
|
window: window2,
|
|
27923
27923
|
// priority request’s priority.
|
|
27924
|
-
priority:
|
|
27924
|
+
priority: request4.priority,
|
|
27925
27925
|
// origin request’s origin. The propagation of the origin is only significant for navigation requests
|
|
27926
27926
|
// being handled by a service worker. In this scenario a request can have an origin that is different
|
|
27927
27927
|
// from the current client.
|
|
27928
|
-
origin:
|
|
27928
|
+
origin: request4.origin,
|
|
27929
27929
|
// referrer request’s referrer.
|
|
27930
|
-
referrer:
|
|
27930
|
+
referrer: request4.referrer,
|
|
27931
27931
|
// referrer policy request’s referrer policy.
|
|
27932
|
-
referrerPolicy:
|
|
27932
|
+
referrerPolicy: request4.referrerPolicy,
|
|
27933
27933
|
// mode request’s mode.
|
|
27934
|
-
mode:
|
|
27934
|
+
mode: request4.mode,
|
|
27935
27935
|
// credentials mode request’s credentials mode.
|
|
27936
|
-
credentials:
|
|
27936
|
+
credentials: request4.credentials,
|
|
27937
27937
|
// cache mode request’s cache mode.
|
|
27938
|
-
cache:
|
|
27938
|
+
cache: request4.cache,
|
|
27939
27939
|
// redirect mode request’s redirect mode.
|
|
27940
|
-
redirect:
|
|
27940
|
+
redirect: request4.redirect,
|
|
27941
27941
|
// integrity metadata request’s integrity metadata.
|
|
27942
|
-
integrity:
|
|
27942
|
+
integrity: request4.integrity,
|
|
27943
27943
|
// keepalive request’s keepalive.
|
|
27944
|
-
keepalive:
|
|
27944
|
+
keepalive: request4.keepalive,
|
|
27945
27945
|
// reload-navigation flag request’s reload-navigation flag.
|
|
27946
|
-
reloadNavigation:
|
|
27946
|
+
reloadNavigation: request4.reloadNavigation,
|
|
27947
27947
|
// history-navigation flag request’s history-navigation flag.
|
|
27948
|
-
historyNavigation:
|
|
27948
|
+
historyNavigation: request4.historyNavigation,
|
|
27949
27949
|
// URL list A clone of request’s URL list.
|
|
27950
|
-
urlList: [...
|
|
27950
|
+
urlList: [...request4.urlList]
|
|
27951
27951
|
});
|
|
27952
27952
|
const initHasKey = Object.keys(init).length !== 0;
|
|
27953
27953
|
if (initHasKey) {
|
|
27954
|
-
if (
|
|
27955
|
-
|
|
27954
|
+
if (request4.mode === "navigate") {
|
|
27955
|
+
request4.mode = "same-origin";
|
|
27956
27956
|
}
|
|
27957
|
-
|
|
27958
|
-
|
|
27959
|
-
|
|
27960
|
-
|
|
27961
|
-
|
|
27962
|
-
|
|
27963
|
-
|
|
27957
|
+
request4.reloadNavigation = false;
|
|
27958
|
+
request4.historyNavigation = false;
|
|
27959
|
+
request4.origin = "client";
|
|
27960
|
+
request4.referrer = "client";
|
|
27961
|
+
request4.referrerPolicy = "";
|
|
27962
|
+
request4.url = request4.urlList[request4.urlList.length - 1];
|
|
27963
|
+
request4.urlList = [request4.url];
|
|
27964
27964
|
}
|
|
27965
27965
|
if (init.referrer !== void 0) {
|
|
27966
27966
|
const referrer = init.referrer;
|
|
27967
27967
|
if (referrer === "") {
|
|
27968
|
-
|
|
27968
|
+
request4.referrer = "no-referrer";
|
|
27969
27969
|
} else {
|
|
27970
27970
|
let parsedReferrer;
|
|
27971
27971
|
try {
|
|
@@ -27974,14 +27974,14 @@ var require_request2 = __commonJS({
|
|
|
27974
27974
|
throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { cause: err });
|
|
27975
27975
|
}
|
|
27976
27976
|
if (parsedReferrer.protocol === "about:" && parsedReferrer.hostname === "client" || origin && !sameOrigin(parsedReferrer, environmentSettingsObject.settingsObject.baseUrl)) {
|
|
27977
|
-
|
|
27977
|
+
request4.referrer = "client";
|
|
27978
27978
|
} else {
|
|
27979
|
-
|
|
27979
|
+
request4.referrer = parsedReferrer;
|
|
27980
27980
|
}
|
|
27981
27981
|
}
|
|
27982
27982
|
}
|
|
27983
27983
|
if (init.referrerPolicy !== void 0) {
|
|
27984
|
-
|
|
27984
|
+
request4.referrerPolicy = init.referrerPolicy;
|
|
27985
27985
|
}
|
|
27986
27986
|
let mode;
|
|
27987
27987
|
if (init.mode !== void 0) {
|
|
@@ -27996,33 +27996,33 @@ var require_request2 = __commonJS({
|
|
|
27996
27996
|
});
|
|
27997
27997
|
}
|
|
27998
27998
|
if (mode != null) {
|
|
27999
|
-
|
|
27999
|
+
request4.mode = mode;
|
|
28000
28000
|
}
|
|
28001
28001
|
if (init.credentials !== void 0) {
|
|
28002
|
-
|
|
28002
|
+
request4.credentials = init.credentials;
|
|
28003
28003
|
}
|
|
28004
28004
|
if (init.cache !== void 0) {
|
|
28005
|
-
|
|
28005
|
+
request4.cache = init.cache;
|
|
28006
28006
|
}
|
|
28007
|
-
if (
|
|
28007
|
+
if (request4.cache === "only-if-cached" && request4.mode !== "same-origin") {
|
|
28008
28008
|
throw new TypeError(
|
|
28009
28009
|
"'only-if-cached' can be set only with 'same-origin' mode"
|
|
28010
28010
|
);
|
|
28011
28011
|
}
|
|
28012
28012
|
if (init.redirect !== void 0) {
|
|
28013
|
-
|
|
28013
|
+
request4.redirect = init.redirect;
|
|
28014
28014
|
}
|
|
28015
28015
|
if (init.integrity != null) {
|
|
28016
|
-
|
|
28016
|
+
request4.integrity = String(init.integrity);
|
|
28017
28017
|
}
|
|
28018
28018
|
if (init.keepalive !== void 0) {
|
|
28019
|
-
|
|
28019
|
+
request4.keepalive = Boolean(init.keepalive);
|
|
28020
28020
|
}
|
|
28021
28021
|
if (init.method !== void 0) {
|
|
28022
28022
|
let method = init.method;
|
|
28023
28023
|
const mayBeNormalized = normalizedMethodRecords[method];
|
|
28024
28024
|
if (mayBeNormalized !== void 0) {
|
|
28025
|
-
|
|
28025
|
+
request4.method = mayBeNormalized;
|
|
28026
28026
|
} else {
|
|
28027
28027
|
if (!isValidHTTPToken(method)) {
|
|
28028
28028
|
throw new TypeError(`'${method}' is not a valid HTTP method.`);
|
|
@@ -28032,9 +28032,9 @@ var require_request2 = __commonJS({
|
|
|
28032
28032
|
throw new TypeError(`'${method}' HTTP method is unsupported.`);
|
|
28033
28033
|
}
|
|
28034
28034
|
method = normalizedMethodRecordsBase[upperCase] ?? method;
|
|
28035
|
-
|
|
28035
|
+
request4.method = method;
|
|
28036
28036
|
}
|
|
28037
|
-
if (!patchMethodWarning &&
|
|
28037
|
+
if (!patchMethodWarning && request4.method === "patch") {
|
|
28038
28038
|
process.emitWarning("Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.", {
|
|
28039
28039
|
code: "UNDICI-FETCH-patch"
|
|
28040
28040
|
});
|
|
@@ -28044,7 +28044,7 @@ var require_request2 = __commonJS({
|
|
|
28044
28044
|
if (init.signal !== void 0) {
|
|
28045
28045
|
signal = init.signal;
|
|
28046
28046
|
}
|
|
28047
|
-
this.#state =
|
|
28047
|
+
this.#state = request4;
|
|
28048
28048
|
const ac = new AbortController();
|
|
28049
28049
|
this.#signal = ac.signal;
|
|
28050
28050
|
if (signal != null) {
|
|
@@ -28062,12 +28062,12 @@ var require_request2 = __commonJS({
|
|
|
28062
28062
|
}
|
|
28063
28063
|
}
|
|
28064
28064
|
this.#headers = new Headers(kConstruct);
|
|
28065
|
-
setHeadersList(this.#headers,
|
|
28065
|
+
setHeadersList(this.#headers, request4.headersList);
|
|
28066
28066
|
setHeadersGuard(this.#headers, "request");
|
|
28067
28067
|
if (mode === "no-cors") {
|
|
28068
|
-
if (!corsSafeListedMethodsSet.has(
|
|
28068
|
+
if (!corsSafeListedMethodsSet.has(request4.method)) {
|
|
28069
28069
|
throw new TypeError(
|
|
28070
|
-
`'${
|
|
28070
|
+
`'${request4.method} is unsupported in no-cors mode.`
|
|
28071
28071
|
);
|
|
28072
28072
|
}
|
|
28073
28073
|
setHeadersGuard(this.#headers, "request-no-cors");
|
|
@@ -28086,14 +28086,14 @@ var require_request2 = __commonJS({
|
|
|
28086
28086
|
}
|
|
28087
28087
|
}
|
|
28088
28088
|
const inputBody = webidl.is.Request(input) ? input.#state.body : null;
|
|
28089
|
-
if ((init.body != null || inputBody != null) && (
|
|
28089
|
+
if ((init.body != null || inputBody != null) && (request4.method === "GET" || request4.method === "HEAD")) {
|
|
28090
28090
|
throw new TypeError("Request with GET/HEAD method cannot have body.");
|
|
28091
28091
|
}
|
|
28092
28092
|
let initBody = null;
|
|
28093
28093
|
if (init.body != null) {
|
|
28094
28094
|
const [extractedBody, contentType] = extractBody(
|
|
28095
28095
|
init.body,
|
|
28096
|
-
|
|
28096
|
+
request4.keepalive
|
|
28097
28097
|
);
|
|
28098
28098
|
initBody = extractedBody;
|
|
28099
28099
|
if (contentType && !getHeadersList(this.#headers).contains("content-type", true)) {
|
|
@@ -28105,12 +28105,12 @@ var require_request2 = __commonJS({
|
|
|
28105
28105
|
if (initBody != null && init.duplex == null) {
|
|
28106
28106
|
throw new TypeError("RequestInit: duplex option is required when sending a body.");
|
|
28107
28107
|
}
|
|
28108
|
-
if (
|
|
28108
|
+
if (request4.mode !== "same-origin" && request4.mode !== "cors") {
|
|
28109
28109
|
throw new TypeError(
|
|
28110
28110
|
'If request is made from ReadableStream, mode should be "same-origin" or "cors"'
|
|
28111
28111
|
);
|
|
28112
28112
|
}
|
|
28113
|
-
|
|
28113
|
+
request4.useCORSPreflightFlag = true;
|
|
28114
28114
|
}
|
|
28115
28115
|
let finalBody = inputOrInitBody;
|
|
28116
28116
|
if (initBody == null && inputBody != null) {
|
|
@@ -28300,42 +28300,42 @@ var require_request2 = __commonJS({
|
|
|
28300
28300
|
* @param {Request} request
|
|
28301
28301
|
* @param {AbortSignal} newSignal
|
|
28302
28302
|
*/
|
|
28303
|
-
static setRequestSignal(
|
|
28304
|
-
|
|
28305
|
-
return
|
|
28303
|
+
static setRequestSignal(request4, newSignal) {
|
|
28304
|
+
request4.#signal = newSignal;
|
|
28305
|
+
return request4;
|
|
28306
28306
|
}
|
|
28307
28307
|
/**
|
|
28308
28308
|
* @param {Request} request
|
|
28309
28309
|
*/
|
|
28310
|
-
static getRequestDispatcher(
|
|
28311
|
-
return
|
|
28310
|
+
static getRequestDispatcher(request4) {
|
|
28311
|
+
return request4.#dispatcher;
|
|
28312
28312
|
}
|
|
28313
28313
|
/**
|
|
28314
28314
|
* @param {Request} request
|
|
28315
28315
|
* @param {import('../../dispatcher/dispatcher')} newDispatcher
|
|
28316
28316
|
*/
|
|
28317
|
-
static setRequestDispatcher(
|
|
28318
|
-
|
|
28317
|
+
static setRequestDispatcher(request4, newDispatcher) {
|
|
28318
|
+
request4.#dispatcher = newDispatcher;
|
|
28319
28319
|
}
|
|
28320
28320
|
/**
|
|
28321
28321
|
* @param {Request} request
|
|
28322
28322
|
* @param {Headers} newHeaders
|
|
28323
28323
|
*/
|
|
28324
|
-
static setRequestHeaders(
|
|
28325
|
-
|
|
28324
|
+
static setRequestHeaders(request4, newHeaders) {
|
|
28325
|
+
request4.#headers = newHeaders;
|
|
28326
28326
|
}
|
|
28327
28327
|
/**
|
|
28328
28328
|
* @param {Request} request
|
|
28329
28329
|
*/
|
|
28330
|
-
static getRequestState(
|
|
28331
|
-
return
|
|
28330
|
+
static getRequestState(request4) {
|
|
28331
|
+
return request4.#state;
|
|
28332
28332
|
}
|
|
28333
28333
|
/**
|
|
28334
28334
|
* @param {Request} request
|
|
28335
28335
|
* @param {any} newState
|
|
28336
28336
|
*/
|
|
28337
|
-
static setRequestState(
|
|
28338
|
-
|
|
28337
|
+
static setRequestState(request4, newState) {
|
|
28338
|
+
request4.#state = newState;
|
|
28339
28339
|
}
|
|
28340
28340
|
};
|
|
28341
28341
|
var { setRequestSignal, getRequestDispatcher, setRequestDispatcher, setRequestHeaders, getRequestState, setRequestState } = Request;
|
|
@@ -28390,23 +28390,23 @@ var require_request2 = __commonJS({
|
|
|
28390
28390
|
headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList()
|
|
28391
28391
|
};
|
|
28392
28392
|
}
|
|
28393
|
-
function cloneRequest(
|
|
28394
|
-
const newRequest = makeRequest({ ...
|
|
28395
|
-
if (
|
|
28396
|
-
newRequest.body = cloneBody(
|
|
28393
|
+
function cloneRequest(request4) {
|
|
28394
|
+
const newRequest = makeRequest({ ...request4, body: null });
|
|
28395
|
+
if (request4.body != null) {
|
|
28396
|
+
newRequest.body = cloneBody(request4.body);
|
|
28397
28397
|
}
|
|
28398
28398
|
return newRequest;
|
|
28399
28399
|
}
|
|
28400
28400
|
function fromInnerRequest(innerRequest, dispatcher, signal, guard) {
|
|
28401
|
-
const
|
|
28402
|
-
setRequestState(
|
|
28403
|
-
setRequestDispatcher(
|
|
28404
|
-
setRequestSignal(
|
|
28401
|
+
const request4 = new Request(kConstruct);
|
|
28402
|
+
setRequestState(request4, innerRequest);
|
|
28403
|
+
setRequestDispatcher(request4, dispatcher);
|
|
28404
|
+
setRequestSignal(request4, signal);
|
|
28405
28405
|
const headers = new Headers(kConstruct);
|
|
28406
|
-
setRequestHeaders(
|
|
28406
|
+
setRequestHeaders(request4, headers);
|
|
28407
28407
|
setHeadersList(headers, innerRequest.headersList);
|
|
28408
28408
|
setHeadersGuard(headers, guard);
|
|
28409
|
-
return
|
|
28409
|
+
return request4;
|
|
28410
28410
|
}
|
|
28411
28411
|
Object.defineProperties(Request.prototype, {
|
|
28412
28412
|
method: kEnumerableProperty,
|
|
@@ -28798,14 +28798,14 @@ var require_fetch = __commonJS({
|
|
|
28798
28798
|
p.reject(e);
|
|
28799
28799
|
return p.promise;
|
|
28800
28800
|
}
|
|
28801
|
-
const
|
|
28801
|
+
const request4 = getRequestState(requestObject);
|
|
28802
28802
|
if (requestObject.signal.aborted) {
|
|
28803
|
-
abortFetch(p,
|
|
28803
|
+
abortFetch(p, request4, null, requestObject.signal.reason, null);
|
|
28804
28804
|
return p.promise;
|
|
28805
28805
|
}
|
|
28806
|
-
const globalObject =
|
|
28806
|
+
const globalObject = request4.client.globalObject;
|
|
28807
28807
|
if (globalObject?.constructor?.name === "ServiceWorkerGlobalScope") {
|
|
28808
|
-
|
|
28808
|
+
request4.serviceWorkers = "none";
|
|
28809
28809
|
}
|
|
28810
28810
|
let responseObject = null;
|
|
28811
28811
|
let locallyAborted = false;
|
|
@@ -28817,7 +28817,7 @@ var require_fetch = __commonJS({
|
|
|
28817
28817
|
assert(controller != null);
|
|
28818
28818
|
controller.abort(requestObject.signal.reason);
|
|
28819
28819
|
const realResponse = responseObject?.deref();
|
|
28820
|
-
abortFetch(p,
|
|
28820
|
+
abortFetch(p, request4, realResponse, requestObject.signal.reason, controller.controller);
|
|
28821
28821
|
}
|
|
28822
28822
|
);
|
|
28823
28823
|
const processResponse = (response) => {
|
|
@@ -28825,7 +28825,7 @@ var require_fetch = __commonJS({
|
|
|
28825
28825
|
return;
|
|
28826
28826
|
}
|
|
28827
28827
|
if (response.aborted) {
|
|
28828
|
-
abortFetch(p,
|
|
28828
|
+
abortFetch(p, request4, responseObject, controller.serializedAbortReason, controller.controller);
|
|
28829
28829
|
return;
|
|
28830
28830
|
}
|
|
28831
28831
|
if (response.type === "error") {
|
|
@@ -28837,7 +28837,7 @@ var require_fetch = __commonJS({
|
|
|
28837
28837
|
p = null;
|
|
28838
28838
|
};
|
|
28839
28839
|
controller = fetching({
|
|
28840
|
-
request:
|
|
28840
|
+
request: request4,
|
|
28841
28841
|
processResponseEndOfBody: handleFetchDone,
|
|
28842
28842
|
processResponse,
|
|
28843
28843
|
dispatcher: getRequestDispatcher(requestObject),
|
|
@@ -28884,12 +28884,12 @@ var require_fetch = __commonJS({
|
|
|
28884
28884
|
);
|
|
28885
28885
|
}
|
|
28886
28886
|
var markResourceTiming = performance.markResourceTiming;
|
|
28887
|
-
function abortFetch(p,
|
|
28887
|
+
function abortFetch(p, request4, responseObject, error, controller) {
|
|
28888
28888
|
if (p) {
|
|
28889
28889
|
p.reject(error);
|
|
28890
28890
|
}
|
|
28891
|
-
if (
|
|
28892
|
-
|
|
28891
|
+
if (request4.body?.stream != null && isReadable(request4.body.stream)) {
|
|
28892
|
+
request4.body.stream.cancel(error).catch((err) => {
|
|
28893
28893
|
if (err.code === "ERR_INVALID_STATE") {
|
|
28894
28894
|
return;
|
|
28895
28895
|
}
|
|
@@ -28905,7 +28905,7 @@ var require_fetch = __commonJS({
|
|
|
28905
28905
|
}
|
|
28906
28906
|
}
|
|
28907
28907
|
function fetching({
|
|
28908
|
-
request:
|
|
28908
|
+
request: request4,
|
|
28909
28909
|
processRequestBodyChunkLength,
|
|
28910
28910
|
processRequestEndOfBody,
|
|
28911
28911
|
processResponse,
|
|
@@ -28920,9 +28920,9 @@ var require_fetch = __commonJS({
|
|
|
28920
28920
|
assert(dispatcher);
|
|
28921
28921
|
let taskDestination = null;
|
|
28922
28922
|
let crossOriginIsolatedCapability = false;
|
|
28923
|
-
if (
|
|
28924
|
-
taskDestination =
|
|
28925
|
-
crossOriginIsolatedCapability =
|
|
28923
|
+
if (request4.client != null) {
|
|
28924
|
+
taskDestination = request4.client.globalObject;
|
|
28925
|
+
crossOriginIsolatedCapability = request4.client.crossOriginIsolatedCapability;
|
|
28926
28926
|
}
|
|
28927
28927
|
const currentTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability);
|
|
28928
28928
|
const timingInfo = createOpaqueTimingInfo({
|
|
@@ -28930,7 +28930,7 @@ var require_fetch = __commonJS({
|
|
|
28930
28930
|
});
|
|
28931
28931
|
const fetchParams = {
|
|
28932
28932
|
controller: new Fetch(dispatcher),
|
|
28933
|
-
request:
|
|
28933
|
+
request: request4,
|
|
28934
28934
|
timingInfo,
|
|
28935
28935
|
processRequestBodyChunkLength,
|
|
28936
28936
|
processRequestEndOfBody,
|
|
@@ -28942,79 +28942,79 @@ var require_fetch = __commonJS({
|
|
|
28942
28942
|
// Keep requestObject alive to prevent its AbortController from being GC'd
|
|
28943
28943
|
requestObject
|
|
28944
28944
|
};
|
|
28945
|
-
assert(!
|
|
28946
|
-
if (
|
|
28947
|
-
|
|
28945
|
+
assert(!request4.body || request4.body.stream);
|
|
28946
|
+
if (request4.window === "client") {
|
|
28947
|
+
request4.window = request4.client?.globalObject?.constructor?.name === "Window" ? request4.client : "no-window";
|
|
28948
28948
|
}
|
|
28949
|
-
if (
|
|
28950
|
-
|
|
28949
|
+
if (request4.origin === "client") {
|
|
28950
|
+
request4.origin = request4.client.origin;
|
|
28951
28951
|
}
|
|
28952
|
-
if (
|
|
28953
|
-
if (
|
|
28954
|
-
|
|
28955
|
-
|
|
28952
|
+
if (request4.policyContainer === "client") {
|
|
28953
|
+
if (request4.client != null) {
|
|
28954
|
+
request4.policyContainer = clonePolicyContainer(
|
|
28955
|
+
request4.client.policyContainer
|
|
28956
28956
|
);
|
|
28957
28957
|
} else {
|
|
28958
|
-
|
|
28958
|
+
request4.policyContainer = makePolicyContainer();
|
|
28959
28959
|
}
|
|
28960
28960
|
}
|
|
28961
|
-
if (!
|
|
28961
|
+
if (!request4.headersList.contains("accept", true)) {
|
|
28962
28962
|
const value = "*/*";
|
|
28963
|
-
|
|
28963
|
+
request4.headersList.append("accept", value, true);
|
|
28964
28964
|
}
|
|
28965
|
-
if (!
|
|
28966
|
-
|
|
28965
|
+
if (!request4.headersList.contains("accept-language", true)) {
|
|
28966
|
+
request4.headersList.append("accept-language", "*", true);
|
|
28967
28967
|
}
|
|
28968
|
-
if (
|
|
28968
|
+
if (request4.priority === null) {
|
|
28969
28969
|
}
|
|
28970
|
-
if (subresourceSet.has(
|
|
28970
|
+
if (subresourceSet.has(request4.destination)) {
|
|
28971
28971
|
}
|
|
28972
28972
|
mainFetch(fetchParams, false);
|
|
28973
28973
|
return fetchParams.controller;
|
|
28974
28974
|
}
|
|
28975
28975
|
async function mainFetch(fetchParams, recursive) {
|
|
28976
28976
|
try {
|
|
28977
|
-
const
|
|
28977
|
+
const request4 = fetchParams.request;
|
|
28978
28978
|
let response = null;
|
|
28979
|
-
if (
|
|
28979
|
+
if (request4.localURLsOnly && !urlIsLocal(requestCurrentURL(request4))) {
|
|
28980
28980
|
response = makeNetworkError("local URLs only");
|
|
28981
28981
|
}
|
|
28982
|
-
tryUpgradeRequestToAPotentiallyTrustworthyURL(
|
|
28983
|
-
if (requestBadPort(
|
|
28982
|
+
tryUpgradeRequestToAPotentiallyTrustworthyURL(request4);
|
|
28983
|
+
if (requestBadPort(request4) === "blocked") {
|
|
28984
28984
|
response = makeNetworkError("bad port");
|
|
28985
28985
|
}
|
|
28986
|
-
if (
|
|
28987
|
-
|
|
28986
|
+
if (request4.referrerPolicy === "") {
|
|
28987
|
+
request4.referrerPolicy = request4.policyContainer.referrerPolicy;
|
|
28988
28988
|
}
|
|
28989
|
-
if (
|
|
28990
|
-
|
|
28989
|
+
if (request4.referrer !== "no-referrer") {
|
|
28990
|
+
request4.referrer = determineRequestsReferrer(request4);
|
|
28991
28991
|
}
|
|
28992
28992
|
if (response === null) {
|
|
28993
|
-
const currentURL = requestCurrentURL(
|
|
28993
|
+
const currentURL = requestCurrentURL(request4);
|
|
28994
28994
|
if (
|
|
28995
28995
|
// - request’s current URL’s origin is same origin with request’s origin,
|
|
28996
28996
|
// and request’s response tainting is "basic"
|
|
28997
|
-
sameOrigin(currentURL,
|
|
28997
|
+
sameOrigin(currentURL, request4.url) && request4.responseTainting === "basic" || // request’s current URL’s scheme is "data"
|
|
28998
28998
|
currentURL.protocol === "data:" || // - request’s mode is "navigate" or "websocket"
|
|
28999
|
-
(
|
|
28999
|
+
(request4.mode === "navigate" || request4.mode === "websocket")
|
|
29000
29000
|
) {
|
|
29001
|
-
|
|
29001
|
+
request4.responseTainting = "basic";
|
|
29002
29002
|
response = await schemeFetch(fetchParams);
|
|
29003
|
-
} else if (
|
|
29003
|
+
} else if (request4.mode === "same-origin") {
|
|
29004
29004
|
response = makeNetworkError('request mode cannot be "same-origin"');
|
|
29005
|
-
} else if (
|
|
29006
|
-
if (
|
|
29005
|
+
} else if (request4.mode === "no-cors") {
|
|
29006
|
+
if (request4.redirect !== "follow") {
|
|
29007
29007
|
response = makeNetworkError(
|
|
29008
29008
|
'redirect mode cannot be "follow" for "no-cors" request'
|
|
29009
29009
|
);
|
|
29010
29010
|
} else {
|
|
29011
|
-
|
|
29011
|
+
request4.responseTainting = "opaque";
|
|
29012
29012
|
response = await schemeFetch(fetchParams);
|
|
29013
29013
|
}
|
|
29014
|
-
} else if (!urlIsHttpHttpsScheme(requestCurrentURL(
|
|
29014
|
+
} else if (!urlIsHttpHttpsScheme(requestCurrentURL(request4))) {
|
|
29015
29015
|
response = makeNetworkError("URL scheme must be a HTTP(S) scheme");
|
|
29016
29016
|
} else {
|
|
29017
|
-
|
|
29017
|
+
request4.responseTainting = "cors";
|
|
29018
29018
|
response = await httpFetch(fetchParams);
|
|
29019
29019
|
}
|
|
29020
29020
|
}
|
|
@@ -29022,13 +29022,13 @@ var require_fetch = __commonJS({
|
|
|
29022
29022
|
return response;
|
|
29023
29023
|
}
|
|
29024
29024
|
if (response.status !== 0 && !response.internalResponse) {
|
|
29025
|
-
if (
|
|
29025
|
+
if (request4.responseTainting === "cors") {
|
|
29026
29026
|
}
|
|
29027
|
-
if (
|
|
29027
|
+
if (request4.responseTainting === "basic") {
|
|
29028
29028
|
response = filterResponse(response, "basic");
|
|
29029
|
-
} else if (
|
|
29029
|
+
} else if (request4.responseTainting === "cors") {
|
|
29030
29030
|
response = filterResponse(response, "cors");
|
|
29031
|
-
} else if (
|
|
29031
|
+
} else if (request4.responseTainting === "opaque") {
|
|
29032
29032
|
response = filterResponse(response, "opaque");
|
|
29033
29033
|
} else {
|
|
29034
29034
|
assert(false);
|
|
@@ -29036,26 +29036,26 @@ var require_fetch = __commonJS({
|
|
|
29036
29036
|
}
|
|
29037
29037
|
let internalResponse = response.status === 0 ? response : response.internalResponse;
|
|
29038
29038
|
if (internalResponse.urlList.length === 0) {
|
|
29039
|
-
internalResponse.urlList.push(...
|
|
29039
|
+
internalResponse.urlList.push(...request4.urlList);
|
|
29040
29040
|
}
|
|
29041
|
-
if (!
|
|
29041
|
+
if (!request4.timingAllowFailed) {
|
|
29042
29042
|
response.timingAllowPassed = true;
|
|
29043
29043
|
}
|
|
29044
|
-
if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !
|
|
29044
|
+
if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !request4.headers.contains("range", true)) {
|
|
29045
29045
|
response = internalResponse = makeNetworkError();
|
|
29046
29046
|
}
|
|
29047
|
-
if (response.status !== 0 && (
|
|
29047
|
+
if (response.status !== 0 && (request4.method === "HEAD" || request4.method === "CONNECT" || nullBodyStatus.includes(internalResponse.status))) {
|
|
29048
29048
|
internalResponse.body = null;
|
|
29049
29049
|
fetchParams.controller.dump = true;
|
|
29050
29050
|
}
|
|
29051
|
-
if (
|
|
29051
|
+
if (request4.integrity) {
|
|
29052
29052
|
const processBodyError = (reason) => fetchFinale(fetchParams, makeNetworkError(reason));
|
|
29053
|
-
if (
|
|
29053
|
+
if (request4.responseTainting === "opaque" || response.body == null) {
|
|
29054
29054
|
processBodyError(response.error);
|
|
29055
29055
|
return;
|
|
29056
29056
|
}
|
|
29057
29057
|
const processBody = (bytes) => {
|
|
29058
|
-
if (!bytesMatch(bytes,
|
|
29058
|
+
if (!bytesMatch(bytes, request4.integrity)) {
|
|
29059
29059
|
processBodyError("integrity mismatch");
|
|
29060
29060
|
return;
|
|
29061
29061
|
}
|
|
@@ -29074,8 +29074,8 @@ var require_fetch = __commonJS({
|
|
|
29074
29074
|
if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {
|
|
29075
29075
|
return Promise.resolve(makeAppropriateNetworkError(fetchParams));
|
|
29076
29076
|
}
|
|
29077
|
-
const { request:
|
|
29078
|
-
const { protocol: scheme } = requestCurrentURL(
|
|
29077
|
+
const { request: request4 } = fetchParams;
|
|
29078
|
+
const { protocol: scheme } = requestCurrentURL(request4);
|
|
29079
29079
|
switch (scheme) {
|
|
29080
29080
|
case "about:": {
|
|
29081
29081
|
return Promise.resolve(makeNetworkError("about scheme is not supported"));
|
|
@@ -29084,19 +29084,19 @@ var require_fetch = __commonJS({
|
|
|
29084
29084
|
if (!resolveObjectURL) {
|
|
29085
29085
|
resolveObjectURL = __require("buffer").resolveObjectURL;
|
|
29086
29086
|
}
|
|
29087
|
-
const blobURLEntry = requestCurrentURL(
|
|
29087
|
+
const blobURLEntry = requestCurrentURL(request4);
|
|
29088
29088
|
if (blobURLEntry.search.length !== 0) {
|
|
29089
29089
|
return Promise.resolve(makeNetworkError("NetworkError when attempting to fetch resource."));
|
|
29090
29090
|
}
|
|
29091
29091
|
const blob = resolveObjectURL(blobURLEntry.toString());
|
|
29092
|
-
if (
|
|
29092
|
+
if (request4.method !== "GET" || !webidl.is.Blob(blob)) {
|
|
29093
29093
|
return Promise.resolve(makeNetworkError("invalid method"));
|
|
29094
29094
|
}
|
|
29095
29095
|
const response = makeResponse();
|
|
29096
29096
|
const fullLength = blob.size;
|
|
29097
29097
|
const serializedFullLength = isomorphicEncode(`${fullLength}`);
|
|
29098
29098
|
const type = blob.type;
|
|
29099
|
-
if (!
|
|
29099
|
+
if (!request4.headersList.contains("range", true)) {
|
|
29100
29100
|
const bodyWithType = extractBody(blob);
|
|
29101
29101
|
response.statusText = "OK";
|
|
29102
29102
|
response.body = bodyWithType[0];
|
|
@@ -29104,7 +29104,7 @@ var require_fetch = __commonJS({
|
|
|
29104
29104
|
response.headersList.set("content-type", type, true);
|
|
29105
29105
|
} else {
|
|
29106
29106
|
response.rangeRequested = true;
|
|
29107
|
-
const rangeHeader =
|
|
29107
|
+
const rangeHeader = request4.headersList.get("range", true);
|
|
29108
29108
|
const rangeValue = simpleRangeHeaderValue(rangeHeader, true);
|
|
29109
29109
|
if (rangeValue === "failure") {
|
|
29110
29110
|
return Promise.resolve(makeNetworkError("failed to fetch the data URL"));
|
|
@@ -29135,7 +29135,7 @@ var require_fetch = __commonJS({
|
|
|
29135
29135
|
return Promise.resolve(response);
|
|
29136
29136
|
}
|
|
29137
29137
|
case "data:": {
|
|
29138
|
-
const currentURL = requestCurrentURL(
|
|
29138
|
+
const currentURL = requestCurrentURL(request4);
|
|
29139
29139
|
const dataURLStruct = dataURLProcessor(currentURL);
|
|
29140
29140
|
if (dataURLStruct === "failure") {
|
|
29141
29141
|
return Promise.resolve(makeNetworkError("failed to fetch the data URL"));
|
|
@@ -29224,41 +29224,41 @@ var require_fetch = __commonJS({
|
|
|
29224
29224
|
}
|
|
29225
29225
|
}
|
|
29226
29226
|
async function httpFetch(fetchParams) {
|
|
29227
|
-
const
|
|
29227
|
+
const request4 = fetchParams.request;
|
|
29228
29228
|
let response = null;
|
|
29229
29229
|
let actualResponse = null;
|
|
29230
29230
|
const timingInfo = fetchParams.timingInfo;
|
|
29231
|
-
if (
|
|
29231
|
+
if (request4.serviceWorkers === "all") {
|
|
29232
29232
|
}
|
|
29233
29233
|
if (response === null) {
|
|
29234
|
-
if (
|
|
29235
|
-
|
|
29234
|
+
if (request4.redirect === "follow") {
|
|
29235
|
+
request4.serviceWorkers = "none";
|
|
29236
29236
|
}
|
|
29237
29237
|
actualResponse = response = await httpNetworkOrCacheFetch(fetchParams);
|
|
29238
|
-
if (
|
|
29238
|
+
if (request4.responseTainting === "cors" && corsCheck(request4, response) === "failure") {
|
|
29239
29239
|
return makeNetworkError("cors failure");
|
|
29240
29240
|
}
|
|
29241
|
-
if (TAOCheck(
|
|
29242
|
-
|
|
29241
|
+
if (TAOCheck(request4, response) === "failure") {
|
|
29242
|
+
request4.timingAllowFailed = true;
|
|
29243
29243
|
}
|
|
29244
29244
|
}
|
|
29245
|
-
if ((
|
|
29246
|
-
|
|
29247
|
-
|
|
29248
|
-
|
|
29245
|
+
if ((request4.responseTainting === "opaque" || response.type === "opaque") && crossOriginResourcePolicyCheck(
|
|
29246
|
+
request4.origin,
|
|
29247
|
+
request4.client,
|
|
29248
|
+
request4.destination,
|
|
29249
29249
|
actualResponse
|
|
29250
29250
|
) === "blocked") {
|
|
29251
29251
|
return makeNetworkError("blocked");
|
|
29252
29252
|
}
|
|
29253
29253
|
if (redirectStatusSet.has(actualResponse.status)) {
|
|
29254
|
-
if (
|
|
29254
|
+
if (request4.redirect !== "manual") {
|
|
29255
29255
|
fetchParams.controller.connection.destroy(void 0, false);
|
|
29256
29256
|
}
|
|
29257
|
-
if (
|
|
29257
|
+
if (request4.redirect === "error") {
|
|
29258
29258
|
response = makeNetworkError("unexpected redirect");
|
|
29259
|
-
} else if (
|
|
29259
|
+
} else if (request4.redirect === "manual") {
|
|
29260
29260
|
response = actualResponse;
|
|
29261
|
-
} else if (
|
|
29261
|
+
} else if (request4.redirect === "follow") {
|
|
29262
29262
|
response = await httpRedirectFetch(fetchParams, response);
|
|
29263
29263
|
} else {
|
|
29264
29264
|
assert(false);
|
|
@@ -29268,13 +29268,13 @@ var require_fetch = __commonJS({
|
|
|
29268
29268
|
return response;
|
|
29269
29269
|
}
|
|
29270
29270
|
function httpRedirectFetch(fetchParams, response) {
|
|
29271
|
-
const
|
|
29271
|
+
const request4 = fetchParams.request;
|
|
29272
29272
|
const actualResponse = response.internalResponse ? response.internalResponse : response;
|
|
29273
29273
|
let locationURL;
|
|
29274
29274
|
try {
|
|
29275
29275
|
locationURL = responseLocationURL(
|
|
29276
29276
|
actualResponse,
|
|
29277
|
-
requestCurrentURL(
|
|
29277
|
+
requestCurrentURL(request4).hash
|
|
29278
29278
|
);
|
|
29279
29279
|
if (locationURL == null) {
|
|
29280
29280
|
return response;
|
|
@@ -29285,63 +29285,63 @@ var require_fetch = __commonJS({
|
|
|
29285
29285
|
if (!urlIsHttpHttpsScheme(locationURL)) {
|
|
29286
29286
|
return Promise.resolve(makeNetworkError("URL scheme must be a HTTP(S) scheme"));
|
|
29287
29287
|
}
|
|
29288
|
-
if (
|
|
29288
|
+
if (request4.redirectCount === 20) {
|
|
29289
29289
|
return Promise.resolve(makeNetworkError("redirect count exceeded"));
|
|
29290
29290
|
}
|
|
29291
|
-
|
|
29292
|
-
if (
|
|
29291
|
+
request4.redirectCount += 1;
|
|
29292
|
+
if (request4.mode === "cors" && (locationURL.username || locationURL.password) && !sameOrigin(request4, locationURL)) {
|
|
29293
29293
|
return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"'));
|
|
29294
29294
|
}
|
|
29295
|
-
if (
|
|
29295
|
+
if (request4.responseTainting === "cors" && (locationURL.username || locationURL.password)) {
|
|
29296
29296
|
return Promise.resolve(makeNetworkError(
|
|
29297
29297
|
'URL cannot contain credentials for request mode "cors"'
|
|
29298
29298
|
));
|
|
29299
29299
|
}
|
|
29300
|
-
if (actualResponse.status !== 303 &&
|
|
29300
|
+
if (actualResponse.status !== 303 && request4.body != null && request4.body.source == null) {
|
|
29301
29301
|
return Promise.resolve(makeNetworkError());
|
|
29302
29302
|
}
|
|
29303
|
-
if ([301, 302].includes(actualResponse.status) &&
|
|
29304
|
-
|
|
29305
|
-
|
|
29303
|
+
if ([301, 302].includes(actualResponse.status) && request4.method === "POST" || actualResponse.status === 303 && !GET_OR_HEAD.includes(request4.method)) {
|
|
29304
|
+
request4.method = "GET";
|
|
29305
|
+
request4.body = null;
|
|
29306
29306
|
for (const headerName of requestBodyHeader) {
|
|
29307
|
-
|
|
29307
|
+
request4.headersList.delete(headerName);
|
|
29308
29308
|
}
|
|
29309
29309
|
}
|
|
29310
|
-
if (!sameOrigin(requestCurrentURL(
|
|
29311
|
-
|
|
29312
|
-
|
|
29313
|
-
|
|
29314
|
-
|
|
29310
|
+
if (!sameOrigin(requestCurrentURL(request4), locationURL)) {
|
|
29311
|
+
request4.headersList.delete("authorization", true);
|
|
29312
|
+
request4.headersList.delete("proxy-authorization", true);
|
|
29313
|
+
request4.headersList.delete("cookie", true);
|
|
29314
|
+
request4.headersList.delete("host", true);
|
|
29315
29315
|
}
|
|
29316
|
-
if (
|
|
29317
|
-
assert(
|
|
29318
|
-
|
|
29316
|
+
if (request4.body != null) {
|
|
29317
|
+
assert(request4.body.source != null);
|
|
29318
|
+
request4.body = safelyExtractBody(request4.body.source)[0];
|
|
29319
29319
|
}
|
|
29320
29320
|
const timingInfo = fetchParams.timingInfo;
|
|
29321
29321
|
timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability);
|
|
29322
29322
|
if (timingInfo.redirectStartTime === 0) {
|
|
29323
29323
|
timingInfo.redirectStartTime = timingInfo.startTime;
|
|
29324
29324
|
}
|
|
29325
|
-
|
|
29326
|
-
setRequestReferrerPolicyOnRedirect(
|
|
29325
|
+
request4.urlList.push(locationURL);
|
|
29326
|
+
setRequestReferrerPolicyOnRedirect(request4, actualResponse);
|
|
29327
29327
|
return mainFetch(fetchParams, true);
|
|
29328
29328
|
}
|
|
29329
29329
|
async function httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch = false, isNewConnectionFetch = false) {
|
|
29330
|
-
const
|
|
29330
|
+
const request4 = fetchParams.request;
|
|
29331
29331
|
let httpFetchParams = null;
|
|
29332
29332
|
let httpRequest = null;
|
|
29333
29333
|
let response = null;
|
|
29334
29334
|
const httpCache = null;
|
|
29335
29335
|
const revalidatingFlag = false;
|
|
29336
|
-
if (
|
|
29336
|
+
if (request4.window === "no-window" && request4.redirect === "error") {
|
|
29337
29337
|
httpFetchParams = fetchParams;
|
|
29338
|
-
httpRequest =
|
|
29338
|
+
httpRequest = request4;
|
|
29339
29339
|
} else {
|
|
29340
|
-
httpRequest = cloneRequest(
|
|
29340
|
+
httpRequest = cloneRequest(request4);
|
|
29341
29341
|
httpFetchParams = { ...fetchParams };
|
|
29342
29342
|
httpFetchParams.request = httpRequest;
|
|
29343
29343
|
}
|
|
29344
|
-
const includeCredentials =
|
|
29344
|
+
const includeCredentials = request4.credentials === "include" || request4.credentials === "same-origin" && request4.responseTainting === "basic";
|
|
29345
29345
|
const contentLength = httpRequest.body ? httpRequest.body.length : null;
|
|
29346
29346
|
let contentLengthHeaderValue = null;
|
|
29347
29347
|
if (httpRequest.body == null && ["POST", "PUT"].includes(httpRequest.method)) {
|
|
@@ -29428,14 +29428,14 @@ var require_fetch = __commonJS({
|
|
|
29428
29428
|
response.rangeRequested = true;
|
|
29429
29429
|
}
|
|
29430
29430
|
response.requestIncludesCredentials = includeCredentials;
|
|
29431
|
-
if (response.status === 401 && httpRequest.responseTainting !== "cors" && includeCredentials && (
|
|
29432
|
-
if (
|
|
29433
|
-
if (
|
|
29431
|
+
if (response.status === 401 && httpRequest.responseTainting !== "cors" && includeCredentials && (request4.useURLCredentials !== void 0 || isTraversableNavigable(request4.traversableForUserPrompts))) {
|
|
29432
|
+
if (request4.body != null) {
|
|
29433
|
+
if (request4.body.source == null) {
|
|
29434
29434
|
return response;
|
|
29435
29435
|
}
|
|
29436
|
-
|
|
29436
|
+
request4.body = safelyExtractBody(request4.body.source)[0];
|
|
29437
29437
|
}
|
|
29438
|
-
if (
|
|
29438
|
+
if (request4.useURLCredentials === void 0 || isAuthenticationFetch) {
|
|
29439
29439
|
if (isCancelled(fetchParams)) {
|
|
29440
29440
|
return makeAppropriateNetworkError(fetchParams);
|
|
29441
29441
|
}
|
|
@@ -29445,7 +29445,7 @@ var require_fetch = __commonJS({
|
|
|
29445
29445
|
response = await httpNetworkOrCacheFetch(fetchParams, true);
|
|
29446
29446
|
}
|
|
29447
29447
|
if (response.status === 407) {
|
|
29448
|
-
if (
|
|
29448
|
+
if (request4.window === "no-window") {
|
|
29449
29449
|
return makeNetworkError();
|
|
29450
29450
|
}
|
|
29451
29451
|
if (isCancelled(fetchParams)) {
|
|
@@ -29457,7 +29457,7 @@ var require_fetch = __commonJS({
|
|
|
29457
29457
|
// response’s status is 421
|
|
29458
29458
|
response.status === 421 && // isNewConnectionFetch is false
|
|
29459
29459
|
!isNewConnectionFetch && // request’s body is null, or request’s body is non-null and request’s body’s source is non-null
|
|
29460
|
-
(
|
|
29460
|
+
(request4.body == null || request4.body.source != null)
|
|
29461
29461
|
) {
|
|
29462
29462
|
if (isCancelled(fetchParams)) {
|
|
29463
29463
|
return makeAppropriateNetworkError(fetchParams);
|
|
@@ -29487,21 +29487,21 @@ var require_fetch = __commonJS({
|
|
|
29487
29487
|
}
|
|
29488
29488
|
}
|
|
29489
29489
|
};
|
|
29490
|
-
const
|
|
29490
|
+
const request4 = fetchParams.request;
|
|
29491
29491
|
let response = null;
|
|
29492
29492
|
const timingInfo = fetchParams.timingInfo;
|
|
29493
29493
|
const httpCache = null;
|
|
29494
29494
|
if (httpCache == null) {
|
|
29495
|
-
|
|
29495
|
+
request4.cache = "no-store";
|
|
29496
29496
|
}
|
|
29497
29497
|
const newConnection = forceNewConnection ? "yes" : "no";
|
|
29498
|
-
if (
|
|
29498
|
+
if (request4.mode === "websocket") {
|
|
29499
29499
|
} else {
|
|
29500
29500
|
}
|
|
29501
29501
|
let requestBody = null;
|
|
29502
|
-
if (
|
|
29502
|
+
if (request4.body == null && fetchParams.processRequestEndOfBody) {
|
|
29503
29503
|
queueMicrotask(() => fetchParams.processRequestEndOfBody());
|
|
29504
|
-
} else if (
|
|
29504
|
+
} else if (request4.body != null) {
|
|
29505
29505
|
const processBodyChunk = async function* (bytes) {
|
|
29506
29506
|
if (isCancelled(fetchParams)) {
|
|
29507
29507
|
return;
|
|
@@ -29529,7 +29529,7 @@ var require_fetch = __commonJS({
|
|
|
29529
29529
|
};
|
|
29530
29530
|
requestBody = (async function* () {
|
|
29531
29531
|
try {
|
|
29532
|
-
for await (const bytes of
|
|
29532
|
+
for await (const bytes of request4.body.stream) {
|
|
29533
29533
|
yield* processBodyChunk(bytes);
|
|
29534
29534
|
}
|
|
29535
29535
|
processEndOfBody();
|
|
@@ -29636,19 +29636,19 @@ var require_fetch = __commonJS({
|
|
|
29636
29636
|
}
|
|
29637
29637
|
return response;
|
|
29638
29638
|
function dispatch({ body }) {
|
|
29639
|
-
const url = requestCurrentURL(
|
|
29639
|
+
const url = requestCurrentURL(request4);
|
|
29640
29640
|
const agent = fetchParams.controller.dispatcher;
|
|
29641
29641
|
const path = url.pathname + url.search;
|
|
29642
29642
|
const hasTrailingQuestionMark = url.search.length === 0 && url.href[url.href.length - url.hash.length - 1] === "?";
|
|
29643
|
-
return new Promise((
|
|
29643
|
+
return new Promise((resolve7, reject) => agent.dispatch(
|
|
29644
29644
|
{
|
|
29645
29645
|
path: hasTrailingQuestionMark ? `${path}?` : path,
|
|
29646
29646
|
origin: url.origin,
|
|
29647
|
-
method:
|
|
29648
|
-
body: agent.isMockActive ?
|
|
29649
|
-
headers:
|
|
29647
|
+
method: request4.method,
|
|
29648
|
+
body: agent.isMockActive ? request4.body && (request4.body.source || request4.body.stream) : body,
|
|
29649
|
+
headers: request4.headersList.entries,
|
|
29650
29650
|
maxRedirections: 0,
|
|
29651
|
-
upgrade:
|
|
29651
|
+
upgrade: request4.mode === "websocket" ? "websocket" : void 0
|
|
29652
29652
|
},
|
|
29653
29653
|
{
|
|
29654
29654
|
body: null,
|
|
@@ -29685,9 +29685,9 @@ var require_fetch = __commonJS({
|
|
|
29685
29685
|
}
|
|
29686
29686
|
const location = headersList.get("location", true);
|
|
29687
29687
|
this.body = new Readable2({ read: resume });
|
|
29688
|
-
const willFollow = location &&
|
|
29688
|
+
const willFollow = location && request4.redirect === "follow" && redirectStatusSet.has(status2);
|
|
29689
29689
|
const decoders = [];
|
|
29690
|
-
if (
|
|
29690
|
+
if (request4.method !== "HEAD" && request4.method !== "CONNECT" && !nullBodyStatus.includes(status2) && !willFollow) {
|
|
29691
29691
|
const contentEncoding = headersList.get("content-encoding", true);
|
|
29692
29692
|
const codings = contentEncoding ? contentEncoding.toLowerCase().split(",") : [];
|
|
29693
29693
|
const maxContentEncodings = 5;
|
|
@@ -29728,7 +29728,7 @@ var require_fetch = __commonJS({
|
|
|
29728
29728
|
}
|
|
29729
29729
|
}
|
|
29730
29730
|
const onError = this.onError.bind(this);
|
|
29731
|
-
|
|
29731
|
+
resolve7({
|
|
29732
29732
|
status: status2,
|
|
29733
29733
|
statusText,
|
|
29734
29734
|
headersList,
|
|
@@ -29781,7 +29781,7 @@ var require_fetch = __commonJS({
|
|
|
29781
29781
|
headersList.append(headerName, String(value), true);
|
|
29782
29782
|
}
|
|
29783
29783
|
}
|
|
29784
|
-
|
|
29784
|
+
resolve7({
|
|
29785
29785
|
status: status2,
|
|
29786
29786
|
statusText: STATUS_CODES[status2],
|
|
29787
29787
|
headersList,
|
|
@@ -29805,7 +29805,7 @@ var require_fetch = __commonJS({
|
|
|
29805
29805
|
headersList.append(nameStr, value.toString("latin1"), true);
|
|
29806
29806
|
}
|
|
29807
29807
|
}
|
|
29808
|
-
|
|
29808
|
+
resolve7({
|
|
29809
29809
|
status: status2,
|
|
29810
29810
|
statusText: STATUS_CODES[status2],
|
|
29811
29811
|
headersList,
|
|
@@ -29883,31 +29883,31 @@ var require_cache3 = __commonJS({
|
|
|
29883
29883
|
webidl.util.markAsUncloneable(this);
|
|
29884
29884
|
this.#relevantRequestResponseList = arguments[1];
|
|
29885
29885
|
}
|
|
29886
|
-
async match(
|
|
29886
|
+
async match(request4, options = {}) {
|
|
29887
29887
|
webidl.brandCheck(this, _Cache);
|
|
29888
29888
|
const prefix = "Cache.match";
|
|
29889
29889
|
webidl.argumentLengthCheck(arguments, 1, prefix);
|
|
29890
|
-
|
|
29890
|
+
request4 = webidl.converters.RequestInfo(request4);
|
|
29891
29891
|
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
|
|
29892
|
-
const p = this.#internalMatchAll(
|
|
29892
|
+
const p = this.#internalMatchAll(request4, options, 1);
|
|
29893
29893
|
if (p.length === 0) {
|
|
29894
29894
|
return;
|
|
29895
29895
|
}
|
|
29896
29896
|
return p[0];
|
|
29897
29897
|
}
|
|
29898
|
-
async matchAll(
|
|
29898
|
+
async matchAll(request4 = void 0, options = {}) {
|
|
29899
29899
|
webidl.brandCheck(this, _Cache);
|
|
29900
29900
|
const prefix = "Cache.matchAll";
|
|
29901
|
-
if (
|
|
29901
|
+
if (request4 !== void 0) request4 = webidl.converters.RequestInfo(request4);
|
|
29902
29902
|
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
|
|
29903
|
-
return this.#internalMatchAll(
|
|
29903
|
+
return this.#internalMatchAll(request4, options);
|
|
29904
29904
|
}
|
|
29905
|
-
async add(
|
|
29905
|
+
async add(request4) {
|
|
29906
29906
|
webidl.brandCheck(this, _Cache);
|
|
29907
29907
|
const prefix = "Cache.add";
|
|
29908
29908
|
webidl.argumentLengthCheck(arguments, 1, prefix);
|
|
29909
|
-
|
|
29910
|
-
const requests = [
|
|
29909
|
+
request4 = webidl.converters.RequestInfo(request4);
|
|
29910
|
+
const requests = [request4];
|
|
29911
29911
|
const responseArrayPromise = this.addAll(requests);
|
|
29912
29912
|
return await responseArrayPromise;
|
|
29913
29913
|
}
|
|
@@ -29917,19 +29917,19 @@ var require_cache3 = __commonJS({
|
|
|
29917
29917
|
webidl.argumentLengthCheck(arguments, 1, prefix);
|
|
29918
29918
|
const responsePromises = [];
|
|
29919
29919
|
const requestList = [];
|
|
29920
|
-
for (let
|
|
29921
|
-
if (
|
|
29920
|
+
for (let request4 of requests) {
|
|
29921
|
+
if (request4 === void 0) {
|
|
29922
29922
|
throw webidl.errors.conversionFailed({
|
|
29923
29923
|
prefix,
|
|
29924
29924
|
argument: "Argument 1",
|
|
29925
29925
|
types: ["undefined is not allowed"]
|
|
29926
29926
|
});
|
|
29927
29927
|
}
|
|
29928
|
-
|
|
29929
|
-
if (typeof
|
|
29928
|
+
request4 = webidl.converters.RequestInfo(request4);
|
|
29929
|
+
if (typeof request4 === "string") {
|
|
29930
29930
|
continue;
|
|
29931
29931
|
}
|
|
29932
|
-
const r = getRequestState(
|
|
29932
|
+
const r = getRequestState(request4);
|
|
29933
29933
|
if (!urlIsHttpHttpsScheme(r.url) || r.method !== "GET") {
|
|
29934
29934
|
throw webidl.errors.exception({
|
|
29935
29935
|
header: prefix,
|
|
@@ -29938,8 +29938,8 @@ var require_cache3 = __commonJS({
|
|
|
29938
29938
|
}
|
|
29939
29939
|
}
|
|
29940
29940
|
const fetchControllers = [];
|
|
29941
|
-
for (const
|
|
29942
|
-
const r = getRequestState(new Request(
|
|
29941
|
+
for (const request4 of requests) {
|
|
29942
|
+
const r = getRequestState(new Request(request4));
|
|
29943
29943
|
if (!urlIsHttpHttpsScheme(r.url)) {
|
|
29944
29944
|
throw webidl.errors.exception({
|
|
29945
29945
|
header: prefix,
|
|
@@ -30016,17 +30016,17 @@ var require_cache3 = __commonJS({
|
|
|
30016
30016
|
});
|
|
30017
30017
|
return cacheJobPromise.promise;
|
|
30018
30018
|
}
|
|
30019
|
-
async put(
|
|
30019
|
+
async put(request4, response) {
|
|
30020
30020
|
webidl.brandCheck(this, _Cache);
|
|
30021
30021
|
const prefix = "Cache.put";
|
|
30022
30022
|
webidl.argumentLengthCheck(arguments, 2, prefix);
|
|
30023
|
-
|
|
30023
|
+
request4 = webidl.converters.RequestInfo(request4);
|
|
30024
30024
|
response = webidl.converters.Response(response, prefix, "response");
|
|
30025
30025
|
let innerRequest = null;
|
|
30026
|
-
if (webidl.is.Request(
|
|
30027
|
-
innerRequest = getRequestState(
|
|
30026
|
+
if (webidl.is.Request(request4)) {
|
|
30027
|
+
innerRequest = getRequestState(request4);
|
|
30028
30028
|
} else {
|
|
30029
|
-
innerRequest = getRequestState(new Request(
|
|
30029
|
+
innerRequest = getRequestState(new Request(request4));
|
|
30030
30030
|
}
|
|
30031
30031
|
if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== "GET") {
|
|
30032
30032
|
throw webidl.errors.exception({
|
|
@@ -30097,21 +30097,21 @@ var require_cache3 = __commonJS({
|
|
|
30097
30097
|
});
|
|
30098
30098
|
return cacheJobPromise.promise;
|
|
30099
30099
|
}
|
|
30100
|
-
async delete(
|
|
30100
|
+
async delete(request4, options = {}) {
|
|
30101
30101
|
webidl.brandCheck(this, _Cache);
|
|
30102
30102
|
const prefix = "Cache.delete";
|
|
30103
30103
|
webidl.argumentLengthCheck(arguments, 1, prefix);
|
|
30104
|
-
|
|
30104
|
+
request4 = webidl.converters.RequestInfo(request4);
|
|
30105
30105
|
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
|
|
30106
30106
|
let r = null;
|
|
30107
|
-
if (webidl.is.Request(
|
|
30108
|
-
r = getRequestState(
|
|
30107
|
+
if (webidl.is.Request(request4)) {
|
|
30108
|
+
r = getRequestState(request4);
|
|
30109
30109
|
if (r.method !== "GET" && !options.ignoreMethod) {
|
|
30110
30110
|
return false;
|
|
30111
30111
|
}
|
|
30112
30112
|
} else {
|
|
30113
|
-
assert(typeof
|
|
30114
|
-
r = getRequestState(new Request(
|
|
30113
|
+
assert(typeof request4 === "string");
|
|
30114
|
+
r = getRequestState(new Request(request4));
|
|
30115
30115
|
}
|
|
30116
30116
|
const operations = [];
|
|
30117
30117
|
const operation = {
|
|
@@ -30143,25 +30143,25 @@ var require_cache3 = __commonJS({
|
|
|
30143
30143
|
* @param {import('../../../types/cache').CacheQueryOptions} options
|
|
30144
30144
|
* @returns {Promise<readonly Request[]>}
|
|
30145
30145
|
*/
|
|
30146
|
-
async keys(
|
|
30146
|
+
async keys(request4 = void 0, options = {}) {
|
|
30147
30147
|
webidl.brandCheck(this, _Cache);
|
|
30148
30148
|
const prefix = "Cache.keys";
|
|
30149
|
-
if (
|
|
30149
|
+
if (request4 !== void 0) request4 = webidl.converters.RequestInfo(request4);
|
|
30150
30150
|
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
|
|
30151
30151
|
let r = null;
|
|
30152
|
-
if (
|
|
30153
|
-
if (webidl.is.Request(
|
|
30154
|
-
r = getRequestState(
|
|
30152
|
+
if (request4 !== void 0) {
|
|
30153
|
+
if (webidl.is.Request(request4)) {
|
|
30154
|
+
r = getRequestState(request4);
|
|
30155
30155
|
if (r.method !== "GET" && !options.ignoreMethod) {
|
|
30156
30156
|
return [];
|
|
30157
30157
|
}
|
|
30158
|
-
} else if (typeof
|
|
30159
|
-
r = getRequestState(new Request(
|
|
30158
|
+
} else if (typeof request4 === "string") {
|
|
30159
|
+
r = getRequestState(new Request(request4));
|
|
30160
30160
|
}
|
|
30161
30161
|
}
|
|
30162
30162
|
const promise = createDeferredPromise();
|
|
30163
30163
|
const requests = [];
|
|
30164
|
-
if (
|
|
30164
|
+
if (request4 === void 0) {
|
|
30165
30165
|
for (const requestResponse of this.#relevantRequestResponseList) {
|
|
30166
30166
|
requests.push(requestResponse[0]);
|
|
30167
30167
|
}
|
|
@@ -30173,9 +30173,9 @@ var require_cache3 = __commonJS({
|
|
|
30173
30173
|
}
|
|
30174
30174
|
queueMicrotask(() => {
|
|
30175
30175
|
const requestList = [];
|
|
30176
|
-
for (const
|
|
30176
|
+
for (const request5 of requests) {
|
|
30177
30177
|
const requestObject = fromInnerRequest(
|
|
30178
|
-
|
|
30178
|
+
request5,
|
|
30179
30179
|
void 0,
|
|
30180
30180
|
new AbortController().signal,
|
|
30181
30181
|
"immutable"
|
|
@@ -30294,9 +30294,9 @@ var require_cache3 = __commonJS({
|
|
|
30294
30294
|
* @param {import('../../../types/cache').CacheQueryOptions | undefined} options
|
|
30295
30295
|
* @returns {boolean}
|
|
30296
30296
|
*/
|
|
30297
|
-
#requestMatchesCachedItem(requestQuery,
|
|
30297
|
+
#requestMatchesCachedItem(requestQuery, request4, response = null, options) {
|
|
30298
30298
|
const queryURL = new URL(requestQuery.url);
|
|
30299
|
-
const cachedURL = new URL(
|
|
30299
|
+
const cachedURL = new URL(request4.url);
|
|
30300
30300
|
if (options?.ignoreSearch) {
|
|
30301
30301
|
cachedURL.search = "";
|
|
30302
30302
|
queryURL.search = "";
|
|
@@ -30312,7 +30312,7 @@ var require_cache3 = __commonJS({
|
|
|
30312
30312
|
if (fieldValue === "*") {
|
|
30313
30313
|
return false;
|
|
30314
30314
|
}
|
|
30315
|
-
const requestValue =
|
|
30315
|
+
const requestValue = request4.headersList.get(fieldValue);
|
|
30316
30316
|
const queryValue = requestQuery.headersList.get(fieldValue);
|
|
30317
30317
|
if (requestValue !== queryValue) {
|
|
30318
30318
|
return false;
|
|
@@ -30320,20 +30320,20 @@ var require_cache3 = __commonJS({
|
|
|
30320
30320
|
}
|
|
30321
30321
|
return true;
|
|
30322
30322
|
}
|
|
30323
|
-
#internalMatchAll(
|
|
30323
|
+
#internalMatchAll(request4, options, maxResponses = Infinity) {
|
|
30324
30324
|
let r = null;
|
|
30325
|
-
if (
|
|
30326
|
-
if (webidl.is.Request(
|
|
30327
|
-
r = getRequestState(
|
|
30325
|
+
if (request4 !== void 0) {
|
|
30326
|
+
if (webidl.is.Request(request4)) {
|
|
30327
|
+
r = getRequestState(request4);
|
|
30328
30328
|
if (r.method !== "GET" && !options.ignoreMethod) {
|
|
30329
30329
|
return [];
|
|
30330
30330
|
}
|
|
30331
|
-
} else if (typeof
|
|
30332
|
-
r = getRequestState(new Request(
|
|
30331
|
+
} else if (typeof request4 === "string") {
|
|
30332
|
+
r = getRequestState(new Request(request4));
|
|
30333
30333
|
}
|
|
30334
30334
|
}
|
|
30335
30335
|
const responses = [];
|
|
30336
|
-
if (
|
|
30336
|
+
if (request4 === void 0) {
|
|
30337
30337
|
for (const requestResponse of this.#relevantRequestResponseList) {
|
|
30338
30338
|
responses.push(requestResponse[1]);
|
|
30339
30339
|
}
|
|
@@ -30425,21 +30425,21 @@ var require_cachestorage = __commonJS({
|
|
|
30425
30425
|
}
|
|
30426
30426
|
webidl.util.markAsUncloneable(this);
|
|
30427
30427
|
}
|
|
30428
|
-
async match(
|
|
30428
|
+
async match(request4, options = {}) {
|
|
30429
30429
|
webidl.brandCheck(this, _CacheStorage);
|
|
30430
30430
|
webidl.argumentLengthCheck(arguments, 1, "CacheStorage.match");
|
|
30431
|
-
|
|
30431
|
+
request4 = webidl.converters.RequestInfo(request4);
|
|
30432
30432
|
options = webidl.converters.MultiCacheQueryOptions(options);
|
|
30433
30433
|
if (options.cacheName != null) {
|
|
30434
30434
|
if (this.#caches.has(options.cacheName)) {
|
|
30435
30435
|
const cacheList = this.#caches.get(options.cacheName);
|
|
30436
30436
|
const cache3 = new Cache(kConstruct, cacheList);
|
|
30437
|
-
return await cache3.match(
|
|
30437
|
+
return await cache3.match(request4, options);
|
|
30438
30438
|
}
|
|
30439
30439
|
} else {
|
|
30440
30440
|
for (const cacheList of this.#caches.values()) {
|
|
30441
30441
|
const cache3 = new Cache(kConstruct, cacheList);
|
|
30442
|
-
const response = await cache3.match(
|
|
30442
|
+
const response = await cache3.match(request4, options);
|
|
30443
30443
|
if (response !== void 0) {
|
|
30444
30444
|
return response;
|
|
30445
30445
|
}
|
|
@@ -31598,7 +31598,7 @@ var require_connection = __commonJS({
|
|
|
31598
31598
|
function establishWebSocketConnection(url, protocols, client, handler, options) {
|
|
31599
31599
|
const requestURL = url;
|
|
31600
31600
|
requestURL.protocol = url.protocol === "ws:" ? "http:" : "https:";
|
|
31601
|
-
const
|
|
31601
|
+
const request4 = makeRequest({
|
|
31602
31602
|
urlList: [requestURL],
|
|
31603
31603
|
client,
|
|
31604
31604
|
serviceWorkers: "none",
|
|
@@ -31611,18 +31611,18 @@ var require_connection = __commonJS({
|
|
|
31611
31611
|
});
|
|
31612
31612
|
if (options.headers) {
|
|
31613
31613
|
const headersList = getHeadersList(new Headers(options.headers));
|
|
31614
|
-
|
|
31614
|
+
request4.headersList = headersList;
|
|
31615
31615
|
}
|
|
31616
31616
|
const keyValue = crypto2.randomBytes(16).toString("base64");
|
|
31617
|
-
|
|
31618
|
-
|
|
31617
|
+
request4.headersList.append("sec-websocket-key", keyValue, true);
|
|
31618
|
+
request4.headersList.append("sec-websocket-version", "13", true);
|
|
31619
31619
|
for (const protocol of protocols) {
|
|
31620
|
-
|
|
31620
|
+
request4.headersList.append("sec-websocket-protocol", protocol, true);
|
|
31621
31621
|
}
|
|
31622
31622
|
const permessageDeflate = "permessage-deflate; client_max_window_bits";
|
|
31623
|
-
|
|
31623
|
+
request4.headersList.append("sec-websocket-extensions", permessageDeflate, true);
|
|
31624
31624
|
const controller = fetching({
|
|
31625
|
-
request:
|
|
31625
|
+
request: request4,
|
|
31626
31626
|
useParallelQueue: true,
|
|
31627
31627
|
dispatcher: options.dispatcher,
|
|
31628
31628
|
processResponse(response) {
|
|
@@ -31669,7 +31669,7 @@ var require_connection = __commonJS({
|
|
|
31669
31669
|
}
|
|
31670
31670
|
const secProtocol = response.headersList.get("Sec-WebSocket-Protocol");
|
|
31671
31671
|
if (secProtocol !== null) {
|
|
31672
|
-
const requestProtocols = getDecodeSplit("sec-websocket-protocol",
|
|
31672
|
+
const requestProtocols = getDecodeSplit("sec-websocket-protocol", request4.headersList);
|
|
31673
31673
|
if (!requestProtocols.includes(secProtocol)) {
|
|
31674
31674
|
failWebsocketConnection(handler, 1002, "Protocol was not set in the opening handshake.");
|
|
31675
31675
|
return;
|
|
@@ -34816,6 +34816,21 @@ var init_config2 = __esm({
|
|
|
34816
34816
|
});
|
|
34817
34817
|
|
|
34818
34818
|
// src/api.ts
|
|
34819
|
+
var api_exports = {};
|
|
34820
|
+
__export(api_exports, {
|
|
34821
|
+
DeviceMeUnauthorized: () => DeviceMeUnauthorized,
|
|
34822
|
+
fetchBackfillDaySessions: () => fetchBackfillDaySessions,
|
|
34823
|
+
fetchBackfillDays: () => fetchBackfillDays,
|
|
34824
|
+
fetchDeviceMe: () => fetchDeviceMe,
|
|
34825
|
+
fetchDeviceViewByClaim: () => fetchDeviceViewByClaim,
|
|
34826
|
+
fetchDeviceViewJobsByClaim: () => fetchDeviceViewJobsByClaim,
|
|
34827
|
+
fetchDeviceViewLedgerByClaim: () => fetchDeviceViewLedgerByClaim,
|
|
34828
|
+
postControlScan: () => postControlScan,
|
|
34829
|
+
reportDiscovery: () => reportDiscovery,
|
|
34830
|
+
rotateDeviceSecret: () => rotateDeviceSecret,
|
|
34831
|
+
selfRegister: () => selfRegister,
|
|
34832
|
+
uploadBatch: () => uploadBatch
|
|
34833
|
+
});
|
|
34819
34834
|
async function selfRegister(input) {
|
|
34820
34835
|
const res = await (0, import_undici.request)(`${state.apiUrl}/v1/devices/self-register`, {
|
|
34821
34836
|
method: "POST",
|
|
@@ -34898,7 +34913,7 @@ async function fetchDeviceViewLedgerByClaim(claimCode) {
|
|
|
34898
34913
|
}
|
|
34899
34914
|
function ingestClient() {
|
|
34900
34915
|
if (_ingest) return _ingest;
|
|
34901
|
-
const
|
|
34916
|
+
const logger3 = createLogger("daemon.ingest");
|
|
34902
34917
|
_ingest = new IngestClient({
|
|
34903
34918
|
apiUrl: state.apiUrl,
|
|
34904
34919
|
auth: {
|
|
@@ -34914,7 +34929,7 @@ function ingestClient() {
|
|
|
34914
34929
|
}
|
|
34915
34930
|
}
|
|
34916
34931
|
},
|
|
34917
|
-
logger:
|
|
34932
|
+
logger: logger3
|
|
34918
34933
|
});
|
|
34919
34934
|
return _ingest;
|
|
34920
34935
|
}
|
|
@@ -34949,6 +34964,34 @@ function fetchBackfillDays() {
|
|
|
34949
34964
|
function fetchBackfillDaySessions(day) {
|
|
34950
34965
|
return backfillGet(`?day=${encodeURIComponent(day)}`);
|
|
34951
34966
|
}
|
|
34967
|
+
function controlPort() {
|
|
34968
|
+
return Number(process.env.MODELSTAT_LOCAL_INGEST_PORT) || 4319;
|
|
34969
|
+
}
|
|
34970
|
+
async function postControlScan(body, opts = {}) {
|
|
34971
|
+
const port = opts.port ?? controlPort();
|
|
34972
|
+
try {
|
|
34973
|
+
const res = await (0, import_undici.request)(`http://127.0.0.1:${port}/v1/control/scan`, {
|
|
34974
|
+
method: "POST",
|
|
34975
|
+
headers: { "content-type": "application/json" },
|
|
34976
|
+
body: JSON.stringify(body),
|
|
34977
|
+
// A `wait:true` scan can take a while (cold-ish summariser, big session);
|
|
34978
|
+
// give it room but don't hang forever. undici's headersTimeout/bodyTimeout
|
|
34979
|
+
// default to 30s — lift them for the waiting case.
|
|
34980
|
+
headersTimeout: body.wait ? 6e5 : 5e3,
|
|
34981
|
+
bodyTimeout: body.wait ? 6e5 : 5e3
|
|
34982
|
+
});
|
|
34983
|
+
if (res.statusCode >= 300) {
|
|
34984
|
+
const message = await res.body.text().catch(() => "");
|
|
34985
|
+
return { kind: "error", status: res.statusCode, message };
|
|
34986
|
+
}
|
|
34987
|
+
const data = await res.body.json().catch(() => ({}));
|
|
34988
|
+
return { kind: "ok", started: data.started === true, scanned: data.scanned === true };
|
|
34989
|
+
} catch (e) {
|
|
34990
|
+
const code = e.code;
|
|
34991
|
+
if (code === "ECONNREFUSED" || code === "ECONNRESET") return { kind: "no_daemon" };
|
|
34992
|
+
return { kind: "error", status: 0, message: e.message };
|
|
34993
|
+
}
|
|
34994
|
+
}
|
|
34952
34995
|
var import_undici, DeviceMeUnauthorized, _ingest;
|
|
34953
34996
|
var init_api = __esm({
|
|
34954
34997
|
"src/api.ts"() {
|
|
@@ -36248,7 +36291,7 @@ async function ensureLlamaModel(cfg = defaultLlamaConfig()) {
|
|
|
36248
36291
|
const tmp = `${cfg.modelPath}.partial`;
|
|
36249
36292
|
const { createWriteStream } = await import("fs");
|
|
36250
36293
|
const { Readable: Readable2 } = await import("stream");
|
|
36251
|
-
const { rename:
|
|
36294
|
+
const { rename: rename3 } = await import("fs/promises");
|
|
36252
36295
|
const out = createWriteStream(tmp);
|
|
36253
36296
|
const isTty = Boolean(process.stdout.isTTY);
|
|
36254
36297
|
let received = 0;
|
|
@@ -36286,15 +36329,15 @@ async function ensureLlamaModel(cfg = defaultLlamaConfig()) {
|
|
|
36286
36329
|
lastLog = now;
|
|
36287
36330
|
}
|
|
36288
36331
|
});
|
|
36289
|
-
await new Promise((
|
|
36332
|
+
await new Promise((resolve7, reject) => {
|
|
36290
36333
|
nodeStream.pipe(out);
|
|
36291
|
-
out.on("finish", () =>
|
|
36334
|
+
out.on("finish", () => resolve7());
|
|
36292
36335
|
out.on("error", reject);
|
|
36293
36336
|
nodeStream.on("error", reject);
|
|
36294
36337
|
});
|
|
36295
36338
|
renderProgress(true);
|
|
36296
36339
|
if (isTty) process.stdout.write("\n");
|
|
36297
|
-
await
|
|
36340
|
+
await rename3(tmp, cfg.modelPath);
|
|
36298
36341
|
console.log(`[modelstat] summariser model ready (${cfg.modelPath})`);
|
|
36299
36342
|
return cfg.modelPath;
|
|
36300
36343
|
}
|
|
@@ -37155,6 +37198,12 @@ var init_pipeline2 = __esm({
|
|
|
37155
37198
|
});
|
|
37156
37199
|
|
|
37157
37200
|
// src/scan.ts
|
|
37201
|
+
var scan_exports = {};
|
|
37202
|
+
__export(scan_exports, {
|
|
37203
|
+
discoverJobs: () => discoverJobs,
|
|
37204
|
+
scanAll: () => scanAll,
|
|
37205
|
+
scanSession: () => scanSession
|
|
37206
|
+
});
|
|
37158
37207
|
import { readdir, stat as stat2 } from "fs/promises";
|
|
37159
37208
|
import { homedir as homedir5 } from "os";
|
|
37160
37209
|
import { join as join7 } from "path";
|
|
@@ -37218,13 +37267,66 @@ async function scanAll(cb = {}) {
|
|
|
37218
37267
|
const deviceId = state.deviceId;
|
|
37219
37268
|
if (!deviceId) throw new Error("daemon not enrolled \u2014 run `register` first");
|
|
37220
37269
|
const jobs = await discoverJobs(deviceId);
|
|
37221
|
-
const ordered =
|
|
37270
|
+
const ordered = await orderJobsNewestFirst(jobs);
|
|
37271
|
+
return runScanOverJobs(
|
|
37272
|
+
ordered,
|
|
37273
|
+
deviceId,
|
|
37274
|
+
{ maxFiles: MAX_FILES_PER_SCAN, forceReadAll: false },
|
|
37275
|
+
cb
|
|
37276
|
+
);
|
|
37277
|
+
}
|
|
37278
|
+
async function scanSession(target = {}, cb = {}) {
|
|
37279
|
+
const deviceId = state.deviceId;
|
|
37280
|
+
if (!deviceId) throw new Error("daemon not enrolled \u2014 run `register` first");
|
|
37281
|
+
const all = await discoverJobs(deviceId);
|
|
37282
|
+
let selected;
|
|
37283
|
+
if (target.file) {
|
|
37284
|
+
const existing = all.find((j) => j.path === target.file);
|
|
37285
|
+
selected = existing ? [existing] : [jobForFile(deviceId, target.file)];
|
|
37286
|
+
} else if (target.sessionIds && target.sessionIds.length > 0) {
|
|
37287
|
+
const wanted = new Set(target.sessionIds);
|
|
37288
|
+
selected = all.filter((j) => {
|
|
37289
|
+
const sid = sessionIdForPath(j.path);
|
|
37290
|
+
return sid != null && wanted.has(sid);
|
|
37291
|
+
});
|
|
37292
|
+
} else {
|
|
37293
|
+
const ordered = await orderJobsNewestFirst(all);
|
|
37294
|
+
selected = ordered.slice(0, 1);
|
|
37295
|
+
}
|
|
37296
|
+
if (selected.length === 0) {
|
|
37297
|
+
return {
|
|
37298
|
+
filesScanned: 0,
|
|
37299
|
+
filesUnchanged: 0,
|
|
37300
|
+
batchesUploaded: 0,
|
|
37301
|
+
eventsUploaded: 0,
|
|
37302
|
+
segmentsUploaded: 0,
|
|
37303
|
+
morePending: false
|
|
37304
|
+
};
|
|
37305
|
+
}
|
|
37306
|
+
return runScanOverJobs(selected, deviceId, { maxFiles: null, forceReadAll: true }, cb);
|
|
37307
|
+
}
|
|
37308
|
+
function sessionIdForPath(path) {
|
|
37309
|
+
return deriveSessionIdFromFilename(path) ?? deriveSessionIdFromRolloutPath(path);
|
|
37310
|
+
}
|
|
37311
|
+
function jobForFile(deviceId, full) {
|
|
37312
|
+
const isCodex = full.includes("/.codex/sessions/") && /rollout-.*\.jsonl$/.test(full);
|
|
37313
|
+
return {
|
|
37314
|
+
path: full,
|
|
37315
|
+
parse: async (sink) => {
|
|
37316
|
+
const r = isCodex ? await parseCodexRollout({ deviceId, sourceFile: full, onEvents: sink }) : await parseClaudeCodeJsonl({ deviceId, sourceFile: full, onEvents: sink });
|
|
37317
|
+
return { toolCalls: r.toolCalls ?? [], scriptContexts: r.scriptContexts ?? [] };
|
|
37318
|
+
}
|
|
37319
|
+
};
|
|
37320
|
+
}
|
|
37321
|
+
async function orderJobsNewestFirst(jobs) {
|
|
37322
|
+
return (await Promise.all(
|
|
37222
37323
|
jobs.map(async (j) => ({
|
|
37223
37324
|
job: j,
|
|
37224
37325
|
mtimeMs: (await stat2(j.path).catch(() => null))?.mtimeMs ?? 0
|
|
37225
37326
|
}))
|
|
37226
37327
|
)).sort((a, b) => b.mtimeMs - a.mtimeMs).map((x) => x.job);
|
|
37227
|
-
|
|
37328
|
+
}
|
|
37329
|
+
async function runScanOverJobs(ordered, deviceId, opts, cb) {
|
|
37228
37330
|
let morePending = false;
|
|
37229
37331
|
let filesScanned = 0;
|
|
37230
37332
|
let filesUnchanged = 0;
|
|
@@ -37312,7 +37414,7 @@ async function scanAll(cb = {}) {
|
|
|
37312
37414
|
cb.onFile?.(job.path, i, ordered.length);
|
|
37313
37415
|
const cur = state.getCursor(job.path);
|
|
37314
37416
|
const cs = await quickChecksum(job.path).catch(() => null);
|
|
37315
|
-
if (cs && cur && cur.size === cs.size && cur.tailHash === cs.tailHash) {
|
|
37417
|
+
if (!opts.forceReadAll && cs && cur && cur.size === cs.size && cur.tailHash === cs.tailHash) {
|
|
37316
37418
|
filesUnchanged += 1;
|
|
37317
37419
|
continue;
|
|
37318
37420
|
}
|
|
@@ -37332,7 +37434,7 @@ async function scanAll(cb = {}) {
|
|
|
37332
37434
|
} catch (e) {
|
|
37333
37435
|
console.warn(` ! parse failed for ${job.path}:`, e.message);
|
|
37334
37436
|
}
|
|
37335
|
-
if (filesScanned >=
|
|
37437
|
+
if (opts.maxFiles !== null && filesScanned >= opts.maxFiles) {
|
|
37336
37438
|
morePending = true;
|
|
37337
37439
|
break;
|
|
37338
37440
|
}
|
|
@@ -37347,7 +37449,7 @@ async function scanAll(cb = {}) {
|
|
|
37347
37449
|
morePending
|
|
37348
37450
|
};
|
|
37349
37451
|
}
|
|
37350
|
-
var DAEMON_VERSION, BATCH_MAX_EVENTS, BATCH_MAX_TOOL_CALLS, BATCH_BUFFER_HARD_CAP, ZERO_TOKENS;
|
|
37452
|
+
var DAEMON_VERSION, BATCH_MAX_EVENTS, BATCH_MAX_TOOL_CALLS, BATCH_BUFFER_HARD_CAP, ZERO_TOKENS, MAX_FILES_PER_SCAN;
|
|
37351
37453
|
var init_scan = __esm({
|
|
37352
37454
|
"src/scan.ts"() {
|
|
37353
37455
|
"use strict";
|
|
@@ -37358,7 +37460,7 @@ var init_scan = __esm({
|
|
|
37358
37460
|
init_api();
|
|
37359
37461
|
init_config2();
|
|
37360
37462
|
init_pipeline2();
|
|
37361
|
-
DAEMON_VERSION = true ? "daemon-0.
|
|
37463
|
+
DAEMON_VERSION = true ? "daemon-0.14.0" : "daemon-dev";
|
|
37362
37464
|
BATCH_MAX_EVENTS = INGEST_BATCH_MAX_EVENTS;
|
|
37363
37465
|
BATCH_MAX_TOOL_CALLS = 2e4;
|
|
37364
37466
|
BATCH_BUFFER_HARD_CAP = BATCH_MAX_EVENTS * 2;
|
|
@@ -37369,6 +37471,7 @@ var init_scan = __esm({
|
|
|
37369
37471
|
cache_read: 0,
|
|
37370
37472
|
reasoning: 0
|
|
37371
37473
|
};
|
|
37474
|
+
MAX_FILES_PER_SCAN = 12;
|
|
37372
37475
|
}
|
|
37373
37476
|
});
|
|
37374
37477
|
|
|
@@ -37595,8 +37698,105 @@ var init_update = __esm({
|
|
|
37595
37698
|
}
|
|
37596
37699
|
});
|
|
37597
37700
|
|
|
37701
|
+
// src/insights.ts
|
|
37702
|
+
var insights_exports = {};
|
|
37703
|
+
__export(insights_exports, {
|
|
37704
|
+
cacheSessionInsights: () => cacheSessionInsights,
|
|
37705
|
+
fetchSessionInsights: () => fetchSessionInsights,
|
|
37706
|
+
refreshSessionInsights: () => refreshSessionInsights,
|
|
37707
|
+
sessionInsightsPath: () => sessionInsightsPath
|
|
37708
|
+
});
|
|
37709
|
+
import { mkdir as mkdir2, rename, writeFile } from "fs/promises";
|
|
37710
|
+
function sessionsDir() {
|
|
37711
|
+
return homePath("sessions");
|
|
37712
|
+
}
|
|
37713
|
+
function sessionInsightsPath(sessionId) {
|
|
37714
|
+
return homePath("sessions", `${encodeURIComponent(sessionId)}.json`);
|
|
37715
|
+
}
|
|
37716
|
+
async function fetchSessionInsights(sessionIds, opts = {}) {
|
|
37717
|
+
const bearer = state.bearer;
|
|
37718
|
+
if (!bearer) return null;
|
|
37719
|
+
if (sessionIds.length === 0) return null;
|
|
37720
|
+
try {
|
|
37721
|
+
const res = await (0, import_undici2.request)(`${state.apiUrl}/v1/mcp/call`, {
|
|
37722
|
+
method: "POST",
|
|
37723
|
+
headers: { "content-type": "application/json", authorization: `Bearer ${bearer}` },
|
|
37724
|
+
body: JSON.stringify({
|
|
37725
|
+
name: "session_insights",
|
|
37726
|
+
arguments: { session_ids: sessionIds, eager: opts.eager === true }
|
|
37727
|
+
})
|
|
37728
|
+
});
|
|
37729
|
+
if (res.statusCode >= 300) {
|
|
37730
|
+
await res.body.dump();
|
|
37731
|
+
return null;
|
|
37732
|
+
}
|
|
37733
|
+
const body = await res.body.json();
|
|
37734
|
+
if (body.isError) return null;
|
|
37735
|
+
const text = body.content?.find((c) => c.type === "text")?.text ?? body.content?.[0]?.text;
|
|
37736
|
+
if (!text) return null;
|
|
37737
|
+
return JSON.parse(text);
|
|
37738
|
+
} catch (e) {
|
|
37739
|
+
logger.warn(`session_insights fetch failed: ${e.message}`);
|
|
37740
|
+
return null;
|
|
37741
|
+
}
|
|
37742
|
+
}
|
|
37743
|
+
async function cacheSessionInsights(sessionId, insights) {
|
|
37744
|
+
const path = sessionInsightsPath(sessionId);
|
|
37745
|
+
const payload = { ...insights, cached_at: (/* @__PURE__ */ new Date()).toISOString() };
|
|
37746
|
+
try {
|
|
37747
|
+
await mkdir2(sessionsDir(), { recursive: true });
|
|
37748
|
+
const tmp = `${path}.tmp`;
|
|
37749
|
+
await writeFile(tmp, JSON.stringify(payload));
|
|
37750
|
+
await rename(tmp, path);
|
|
37751
|
+
} catch (e) {
|
|
37752
|
+
logger.warn(`session insights cache write failed for ${sessionId}: ${e.message}`);
|
|
37753
|
+
}
|
|
37754
|
+
}
|
|
37755
|
+
async function refreshSessionInsights(sessionIds) {
|
|
37756
|
+
if (sessionIds.length === 0) return;
|
|
37757
|
+
const cacheKey = sessionIds[0];
|
|
37758
|
+
let insights = await fetchSessionInsights(sessionIds, { eager: true });
|
|
37759
|
+
if (insights) await cacheSessionInsights(cacheKey, insights);
|
|
37760
|
+
for (const delay of POLL_DELAYS_MS) {
|
|
37761
|
+
if (!insights || insights.status !== "analyzing") break;
|
|
37762
|
+
await sleep2(delay);
|
|
37763
|
+
const next = await fetchSessionInsights(sessionIds, { eager: false });
|
|
37764
|
+
if (next) {
|
|
37765
|
+
insights = next;
|
|
37766
|
+
await cacheSessionInsights(cacheKey, next);
|
|
37767
|
+
}
|
|
37768
|
+
}
|
|
37769
|
+
}
|
|
37770
|
+
function sleep2(ms) {
|
|
37771
|
+
return new Promise((r) => setTimeout(r, ms));
|
|
37772
|
+
}
|
|
37773
|
+
var import_undici2, logger, POLL_DELAYS_MS;
|
|
37774
|
+
var init_insights = __esm({
|
|
37775
|
+
"src/insights.ts"() {
|
|
37776
|
+
"use strict";
|
|
37777
|
+
import_undici2 = __toESM(require_undici(), 1);
|
|
37778
|
+
init_logger();
|
|
37779
|
+
init_config2();
|
|
37780
|
+
init_paths();
|
|
37781
|
+
logger = createLogger("daemon.insights");
|
|
37782
|
+
POLL_DELAYS_MS = [1200, 2e3, 3e3, 4e3];
|
|
37783
|
+
}
|
|
37784
|
+
});
|
|
37785
|
+
|
|
37598
37786
|
// src/receiver.ts
|
|
37599
37787
|
import { createServer } from "http";
|
|
37788
|
+
import { homedir as homedir7 } from "os";
|
|
37789
|
+
import { resolve as resolve4, sep } from "path";
|
|
37790
|
+
function transcriptRoots() {
|
|
37791
|
+
const home2 = homedir7();
|
|
37792
|
+
return [resolve4(home2, ".claude/projects"), resolve4(home2, ".codex/sessions")];
|
|
37793
|
+
}
|
|
37794
|
+
function isAllowedTranscriptFile(file) {
|
|
37795
|
+
const target = resolve4(file);
|
|
37796
|
+
return transcriptRoots().some(
|
|
37797
|
+
(root) => target === root || target.startsWith(root + sep)
|
|
37798
|
+
);
|
|
37799
|
+
}
|
|
37600
37800
|
function queue() {
|
|
37601
37801
|
if (!store) store = new FileQueueStore(homePath("sdk-ingest-queue.json"));
|
|
37602
37802
|
return store;
|
|
@@ -37671,36 +37871,51 @@ function localQueueDepth() {
|
|
|
37671
37871
|
}
|
|
37672
37872
|
function startLocalIngestReceiver(opts = {}) {
|
|
37673
37873
|
const port = opts.port ?? (Number(process.env.MODELSTAT_LOCAL_INGEST_PORT) || DEFAULT_LOCAL_INGEST_PORT);
|
|
37674
|
-
|
|
37675
|
-
|
|
37874
|
+
const controlRunner = opts.onControlScan ? createControlRunner(opts.onControlScan) : null;
|
|
37875
|
+
return new Promise((resolve7) => {
|
|
37876
|
+
const server = createServer((req, res) => void handle(req, res, controlRunner));
|
|
37676
37877
|
let settled = false;
|
|
37677
37878
|
server.on("error", (err) => {
|
|
37678
37879
|
if (settled) return;
|
|
37679
37880
|
settled = true;
|
|
37680
|
-
|
|
37881
|
+
logger2.warn(
|
|
37681
37882
|
`local ingest receiver disabled \u2014 SDK local_daemon mode unavailable: ${err.code ?? err.message} on 127.0.0.1:${port}`
|
|
37682
37883
|
);
|
|
37683
|
-
|
|
37884
|
+
resolve7(null);
|
|
37684
37885
|
});
|
|
37685
37886
|
server.listen(port, "127.0.0.1", () => {
|
|
37686
37887
|
settled = true;
|
|
37687
37888
|
const addr = server.address();
|
|
37688
37889
|
const boundPort = typeof addr === "object" && addr ? addr.port : port;
|
|
37689
|
-
|
|
37690
|
-
|
|
37890
|
+
logger2.info(`local ingest receiver on http://127.0.0.1:${boundPort}/v1/ingest`);
|
|
37891
|
+
resolve7({
|
|
37691
37892
|
port: boundPort,
|
|
37692
37893
|
close: () => new Promise((r) => server.close(() => r()))
|
|
37693
37894
|
});
|
|
37694
37895
|
});
|
|
37695
37896
|
});
|
|
37696
37897
|
}
|
|
37697
|
-
|
|
37898
|
+
function createControlRunner(handler) {
|
|
37899
|
+
let active = null;
|
|
37900
|
+
return {
|
|
37901
|
+
run(target) {
|
|
37902
|
+
const prev = active ?? Promise.resolve();
|
|
37903
|
+
const next = prev.catch(() => void 0).then(() => handler(target));
|
|
37904
|
+
active = next.catch(() => void 0);
|
|
37905
|
+
return next;
|
|
37906
|
+
}
|
|
37907
|
+
};
|
|
37908
|
+
}
|
|
37909
|
+
async function handle(req, res, controlRunner) {
|
|
37698
37910
|
const send = (code, body) => {
|
|
37699
37911
|
res.writeHead(code, { "content-type": "application/json" });
|
|
37700
37912
|
res.end(JSON.stringify(body));
|
|
37701
37913
|
};
|
|
37702
37914
|
const path = (req.url ?? "").split("?")[0];
|
|
37703
37915
|
if (req.method === "GET" && path === "/healthz") return send(200, { ok: true });
|
|
37916
|
+
if (req.method === "POST" && path === "/v1/control/scan") {
|
|
37917
|
+
return handleControlScan(req, send, controlRunner);
|
|
37918
|
+
}
|
|
37704
37919
|
if (req.method !== "POST" || path !== "/v1/ingest" && path !== "/v1/ingest/raw") {
|
|
37705
37920
|
return send(404, { error: "not found" });
|
|
37706
37921
|
}
|
|
@@ -37731,11 +37946,56 @@ async function handle(req, res) {
|
|
|
37731
37946
|
const accepted = await enqueue(parsed);
|
|
37732
37947
|
return send(200, { accepted, queued: true });
|
|
37733
37948
|
} catch (e) {
|
|
37734
|
-
|
|
37949
|
+
logger2.warn(`local ingest enqueue failed: ${e.message}`);
|
|
37735
37950
|
return send(500, { error: "enqueue failed" });
|
|
37736
37951
|
}
|
|
37737
37952
|
}
|
|
37738
|
-
|
|
37953
|
+
async function handleControlScan(req, send, controlRunner) {
|
|
37954
|
+
if (!controlRunner) return send(503, { error: "control scan unavailable" });
|
|
37955
|
+
const chunks = [];
|
|
37956
|
+
let size = 0;
|
|
37957
|
+
try {
|
|
37958
|
+
for await (const chunk of req) {
|
|
37959
|
+
size += chunk.length;
|
|
37960
|
+
if (size > 64 * 1024) {
|
|
37961
|
+
send(413, { error: "control body too large" });
|
|
37962
|
+
req.destroy();
|
|
37963
|
+
return;
|
|
37964
|
+
}
|
|
37965
|
+
chunks.push(chunk);
|
|
37966
|
+
}
|
|
37967
|
+
} catch {
|
|
37968
|
+
return send(400, { error: "read error" });
|
|
37969
|
+
}
|
|
37970
|
+
let body;
|
|
37971
|
+
try {
|
|
37972
|
+
const raw = chunks.length ? Buffer.concat(chunks).toString("utf8") : "{}";
|
|
37973
|
+
body = JSON.parse(raw);
|
|
37974
|
+
} catch {
|
|
37975
|
+
return send(400, { error: "invalid json" });
|
|
37976
|
+
}
|
|
37977
|
+
const sessionIds = Array.isArray(body.session_ids) ? body.session_ids.filter((s) => typeof s === "string" && s.length > 0) : void 0;
|
|
37978
|
+
let file;
|
|
37979
|
+
if (body.file !== void 0) {
|
|
37980
|
+
if (typeof body.file !== "string" || !isAllowedTranscriptFile(body.file)) {
|
|
37981
|
+
return send(400, { error: "file must be under ~/.claude/projects or ~/.codex/sessions" });
|
|
37982
|
+
}
|
|
37983
|
+
file = body.file;
|
|
37984
|
+
}
|
|
37985
|
+
const target = { sessionIds, file };
|
|
37986
|
+
const run = controlRunner.run(target);
|
|
37987
|
+
if (body.wait === true) {
|
|
37988
|
+
try {
|
|
37989
|
+
await run;
|
|
37990
|
+
return send(200, { ok: true, scanned: true });
|
|
37991
|
+
} catch (e) {
|
|
37992
|
+
return send(500, { error: `scan failed: ${e.message}` });
|
|
37993
|
+
}
|
|
37994
|
+
}
|
|
37995
|
+
void run.catch((e) => logger2.warn(`control scan failed: ${e.message}`));
|
|
37996
|
+
return send(200, { ok: true, started: true });
|
|
37997
|
+
}
|
|
37998
|
+
var logger2, DEFAULT_LOCAL_INGEST_PORT, MAX_BODY_BYTES, store, pipeline, draining;
|
|
37739
37999
|
var init_receiver = __esm({
|
|
37740
38000
|
"src/receiver.ts"() {
|
|
37741
38001
|
"use strict";
|
|
@@ -37745,7 +38005,7 @@ var init_receiver = __esm({
|
|
|
37745
38005
|
init_api();
|
|
37746
38006
|
init_paths();
|
|
37747
38007
|
init_pipeline2();
|
|
37748
|
-
|
|
38008
|
+
logger2 = createLogger("daemon.local-ingest");
|
|
37749
38009
|
DEFAULT_LOCAL_INGEST_PORT = 4319;
|
|
37750
38010
|
MAX_BODY_BYTES = 16 * 1024 * 1024;
|
|
37751
38011
|
store = null;
|
|
@@ -38074,11 +38334,11 @@ var init_src4 = __esm({
|
|
|
38074
38334
|
});
|
|
38075
38335
|
|
|
38076
38336
|
// ../../packages/remote-config/src/node.ts
|
|
38077
|
-
import { chmod, mkdir as
|
|
38078
|
-
import { homedir as
|
|
38337
|
+
import { chmod, mkdir as mkdir3, readFile, rename as rename2, writeFile as writeFile2 } from "fs/promises";
|
|
38338
|
+
import { homedir as homedir8 } from "os";
|
|
38079
38339
|
import { join as join10 } from "path";
|
|
38080
38340
|
function defaultRoot() {
|
|
38081
|
-
return join10(
|
|
38341
|
+
return join10(homedir8(), ".modelstat", "config");
|
|
38082
38342
|
}
|
|
38083
38343
|
function safeKind(kind) {
|
|
38084
38344
|
if (!/^[a-z0-9_-]{1,64}$/.test(kind)) throw new Error(`unsafe config kind: ${kind}`);
|
|
@@ -38088,8 +38348,8 @@ function createNodeDiskCache(opts = {}) {
|
|
|
38088
38348
|
const dir = opts.dir ?? defaultRoot();
|
|
38089
38349
|
async function writeAtomic2(path, data) {
|
|
38090
38350
|
const tmp = `${path}.${process.pid}.tmp`;
|
|
38091
|
-
await
|
|
38092
|
-
await
|
|
38351
|
+
await writeFile2(tmp, data, { mode: 384 });
|
|
38352
|
+
await rename2(tmp, path);
|
|
38093
38353
|
try {
|
|
38094
38354
|
await chmod(path, 384);
|
|
38095
38355
|
} catch {
|
|
@@ -38107,7 +38367,7 @@ function createNodeDiskCache(opts = {}) {
|
|
|
38107
38367
|
},
|
|
38108
38368
|
async write(kind, payload) {
|
|
38109
38369
|
const k = safeKind(kind);
|
|
38110
|
-
await
|
|
38370
|
+
await mkdir3(dir, { recursive: true, mode: 448 });
|
|
38111
38371
|
await writeAtomic2(join10(dir, `${k}.json`), `${JSON.stringify(payload)}
|
|
38112
38372
|
`);
|
|
38113
38373
|
}
|
|
@@ -39031,7 +39291,7 @@ var init_handler = __esm({
|
|
|
39031
39291
|
this._addToNodeFs(path, initialAdd, wh, depth + 1);
|
|
39032
39292
|
}
|
|
39033
39293
|
}).on(EV.ERROR, this._boundHandleError);
|
|
39034
|
-
return new Promise((
|
|
39294
|
+
return new Promise((resolve7, reject) => {
|
|
39035
39295
|
if (!stream)
|
|
39036
39296
|
return reject();
|
|
39037
39297
|
stream.once(STR_END, () => {
|
|
@@ -39040,7 +39300,7 @@ var init_handler = __esm({
|
|
|
39040
39300
|
return;
|
|
39041
39301
|
}
|
|
39042
39302
|
const wasThrottled = throttler ? throttler.clear() : false;
|
|
39043
|
-
|
|
39303
|
+
resolve7(void 0);
|
|
39044
39304
|
previous.getChildren().filter((item) => {
|
|
39045
39305
|
return item !== directory && !current.has(item);
|
|
39046
39306
|
}).forEach((item) => {
|
|
@@ -39994,7 +40254,7 @@ async function sendHeartbeat() {
|
|
|
39994
40254
|
if (!bearer || !deviceId) return;
|
|
39995
40255
|
const body = { ...snapshotBody(), device_id: deviceId };
|
|
39996
40256
|
try {
|
|
39997
|
-
const res = await (0,
|
|
40257
|
+
const res = await (0, import_undici3.request)(`${state.apiUrl}/v1/daemon/heartbeat`, {
|
|
39998
40258
|
method: "POST",
|
|
39999
40259
|
headers: { "content-type": "application/json", authorization: `Bearer ${bearer}` },
|
|
40000
40260
|
body: JSON.stringify(body)
|
|
@@ -40013,10 +40273,10 @@ async function sendHeartbeat() {
|
|
|
40013
40273
|
writeLocalStatus(body).catch(() => void 0);
|
|
40014
40274
|
}
|
|
40015
40275
|
async function rotateRunawayLogs() {
|
|
40016
|
-
const { homedir:
|
|
40276
|
+
const { homedir: homedir10 } = await import("os");
|
|
40017
40277
|
const { join: join14 } = await import("path");
|
|
40018
|
-
const { open: open2, stat: stat7, truncate, writeFile:
|
|
40019
|
-
const dir = join14(
|
|
40278
|
+
const { open: open2, stat: stat7, truncate, writeFile: writeFile3 } = await import("fs/promises");
|
|
40279
|
+
const dir = join14(homedir10(), ".modelstat", "logs");
|
|
40020
40280
|
for (const name of ["out.log", "err.log"]) {
|
|
40021
40281
|
const p = join14(dir, name);
|
|
40022
40282
|
try {
|
|
@@ -40027,7 +40287,7 @@ async function rotateRunawayLogs() {
|
|
|
40027
40287
|
try {
|
|
40028
40288
|
const buf = Buffer.alloc(keep);
|
|
40029
40289
|
await fh.read(buf, 0, keep, st.size - keep);
|
|
40030
|
-
await
|
|
40290
|
+
await writeFile3(p.replace(/\.log$/, ".old.log"), buf);
|
|
40031
40291
|
} finally {
|
|
40032
40292
|
await fh.close();
|
|
40033
40293
|
}
|
|
@@ -40041,20 +40301,20 @@ async function rotateRunawayLogs() {
|
|
|
40041
40301
|
}
|
|
40042
40302
|
async function writeLocalStatus(snapshot) {
|
|
40043
40303
|
const { join: join14 } = await import("path");
|
|
40044
|
-
const { writeFile:
|
|
40304
|
+
const { writeFile: writeFile3, mkdir: mkdir4, rename: rename3 } = await import("fs/promises");
|
|
40045
40305
|
const { modelstatHome: modelstatHome2 } = await Promise.resolve().then(() => (init_paths(), paths_exports));
|
|
40046
40306
|
if (!lastStatusPath) {
|
|
40047
40307
|
const dir = modelstatHome2();
|
|
40048
40308
|
try {
|
|
40049
|
-
await
|
|
40309
|
+
await mkdir4(dir, { recursive: true });
|
|
40050
40310
|
} catch {
|
|
40051
40311
|
}
|
|
40052
40312
|
lastStatusPath = join14(dir, "last-status.json");
|
|
40053
40313
|
}
|
|
40054
40314
|
const tmp = `${lastStatusPath}.tmp`;
|
|
40055
40315
|
try {
|
|
40056
|
-
await
|
|
40057
|
-
await
|
|
40316
|
+
await writeFile3(tmp, JSON.stringify({ ...snapshot, written_at: (/* @__PURE__ */ new Date()).toISOString() }));
|
|
40317
|
+
await rename3(tmp, lastStatusPath);
|
|
40058
40318
|
} catch {
|
|
40059
40319
|
}
|
|
40060
40320
|
}
|
|
@@ -40123,6 +40383,38 @@ async function runScanCycle(reason) {
|
|
|
40123
40383
|
function requestScan(reason) {
|
|
40124
40384
|
return scanRunner.trigger(reason);
|
|
40125
40385
|
}
|
|
40386
|
+
async function runEagerSessionScan(target) {
|
|
40387
|
+
setPhase("scanning", "Eager scan (current session)");
|
|
40388
|
+
try {
|
|
40389
|
+
const r = await scanSession(target, {
|
|
40390
|
+
onProgress(p) {
|
|
40391
|
+
if (p.segment === 0) setPhase("processing", "Analyzing current session");
|
|
40392
|
+
else setPhase("processing", `Summarising segment ${p.segment}/${p.segmentTotal}`);
|
|
40393
|
+
},
|
|
40394
|
+
onUpload({ segments }) {
|
|
40395
|
+
setPhase("uploading", `Uploading ${segments} segments`);
|
|
40396
|
+
setStat("segments_sending", segments);
|
|
40397
|
+
},
|
|
40398
|
+
onUploaded({ events, segments }) {
|
|
40399
|
+
bumpStat("events_uploaded", events);
|
|
40400
|
+
setStat("segments_sent", state.bumpSegmentsSent(segments));
|
|
40401
|
+
setStat("segments_sending", 0);
|
|
40402
|
+
status.lastEventAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
40403
|
+
}
|
|
40404
|
+
});
|
|
40405
|
+
if (target.sessionIds && target.sessionIds.length > 0) {
|
|
40406
|
+
await refreshSessionInsights(target.sessionIds);
|
|
40407
|
+
}
|
|
40408
|
+
setPhase("watching", "Waiting for new events");
|
|
40409
|
+
setMessage(
|
|
40410
|
+
r.segmentsUploaded > 0 ? `Eager scan: ${r.segmentsUploaded} segments uploaded` : "Eager scan: nothing new"
|
|
40411
|
+
);
|
|
40412
|
+
} catch (e) {
|
|
40413
|
+
setStat("segments_sending", 0);
|
|
40414
|
+
setPhase("watching", `Eager scan failed: ${describeErrorWithCause(e)}`);
|
|
40415
|
+
throw e;
|
|
40416
|
+
}
|
|
40417
|
+
}
|
|
40126
40418
|
function basename4(p) {
|
|
40127
40419
|
return p.split("/").pop() ?? p;
|
|
40128
40420
|
}
|
|
@@ -40189,7 +40481,13 @@ async function runDaemon(opts = {}) {
|
|
|
40189
40481
|
console.warn(`[modelstat] summariser preflight error (continuing): ${err.message}`);
|
|
40190
40482
|
setMessage(`summariser preflight error (continuing): ${err.message}`);
|
|
40191
40483
|
}
|
|
40192
|
-
const localIngest = await startLocalIngestReceiver(
|
|
40484
|
+
const localIngest = await startLocalIngestReceiver({
|
|
40485
|
+
// Serve the loopback control endpoint so `modelstat scan --session` can
|
|
40486
|
+
// warm this running daemon (summariser already loaded) instead of
|
|
40487
|
+
// cold-spawning its own — and so the eager scan refreshes the local
|
|
40488
|
+
// insights cache the statusline reads.
|
|
40489
|
+
onControlScan: runEagerSessionScan
|
|
40490
|
+
});
|
|
40193
40491
|
const LOCAL_DRAIN_INTERVAL_MS = 5e3;
|
|
40194
40492
|
let localDrainTimer = null;
|
|
40195
40493
|
if (localIngest) {
|
|
@@ -40224,9 +40522,9 @@ async function runDaemon(opts = {}) {
|
|
|
40224
40522
|
setMessage(`policy refresh unavailable: ${err.message}`);
|
|
40225
40523
|
}
|
|
40226
40524
|
const chokidar = (await Promise.resolve().then(() => (init_esm2(), esm_exports))).default;
|
|
40227
|
-
const { homedir:
|
|
40525
|
+
const { homedir: homedir10, platform: platform7 } = await import("os");
|
|
40228
40526
|
const { join: join14 } = await import("path");
|
|
40229
|
-
const home2 =
|
|
40527
|
+
const home2 = homedir10();
|
|
40230
40528
|
const dirs = [
|
|
40231
40529
|
join14(home2, ".claude/projects"),
|
|
40232
40530
|
join14(home2, ".codex/sessions"),
|
|
@@ -40288,24 +40586,25 @@ async function runDaemon(opts = {}) {
|
|
|
40288
40586
|
await new Promise(() => {
|
|
40289
40587
|
});
|
|
40290
40588
|
}
|
|
40291
|
-
var
|
|
40589
|
+
var import_undici3, DAEMON_VERSION2, HEARTBEAT_INTERVAL_MS, SCAN_INTERVAL_MS, DISCOVERY_INTERVAL_MS, SUMMARISER_RECOVERY_MIN_INTERVAL_MS, status, LOCAL_FLUSH_THROTTLE_MS, localFlushTimer, localFlushPending, lastVerdict, LOG_MAX_BYTES, LOG_TAIL_KEEP_BYTES, lastStatusPath, scanRunner;
|
|
40292
40590
|
var init_daemon = __esm({
|
|
40293
40591
|
"src/daemon.ts"() {
|
|
40294
40592
|
"use strict";
|
|
40295
40593
|
init_logger();
|
|
40296
40594
|
init_src2();
|
|
40297
|
-
|
|
40595
|
+
import_undici3 = __toESM(require_undici(), 1);
|
|
40298
40596
|
init_api();
|
|
40299
40597
|
init_config2();
|
|
40300
40598
|
init_lock();
|
|
40301
40599
|
init_machine_key();
|
|
40600
|
+
init_insights();
|
|
40302
40601
|
init_receiver();
|
|
40303
40602
|
init_reconcile();
|
|
40304
40603
|
init_runtime_state();
|
|
40305
40604
|
init_scan();
|
|
40306
40605
|
init_single_flight();
|
|
40307
40606
|
init_update();
|
|
40308
|
-
DAEMON_VERSION2 = true ? "daemon-0.
|
|
40607
|
+
DAEMON_VERSION2 = true ? "daemon-0.14.0" : "daemon-dev";
|
|
40309
40608
|
HEARTBEAT_INTERVAL_MS = 1e4;
|
|
40310
40609
|
SCAN_INTERVAL_MS = 5 * 60 * 1e3;
|
|
40311
40610
|
DISCOVERY_INTERVAL_MS = 6e4;
|
|
@@ -40337,10 +40636,10 @@ __export(watch_exports, {
|
|
|
40337
40636
|
watchForever: () => watchForever
|
|
40338
40637
|
});
|
|
40339
40638
|
import { existsSync as existsSync12 } from "fs";
|
|
40340
|
-
import { homedir as
|
|
40639
|
+
import { homedir as homedir9, platform as platform5 } from "os";
|
|
40341
40640
|
import { join as join13 } from "path";
|
|
40342
40641
|
function resolveWatchDirs() {
|
|
40343
|
-
const home2 =
|
|
40642
|
+
const home2 = homedir9();
|
|
40344
40643
|
const xdgConfig = process.env.XDG_CONFIG_HOME ?? join13(home2, ".config");
|
|
40345
40644
|
const xdgData = process.env.XDG_DATA_HOME ?? join13(home2, ".local/share");
|
|
40346
40645
|
const candidates = [
|
|
@@ -40831,16 +41130,16 @@ function createLineSplitter(onLine) {
|
|
|
40831
41130
|
};
|
|
40832
41131
|
}
|
|
40833
41132
|
function runTrayBuild(cwd, buildScript, progress) {
|
|
40834
|
-
return new Promise((
|
|
41133
|
+
return new Promise((resolve7) => {
|
|
40835
41134
|
const child = spawn("bash", [buildScript], { cwd });
|
|
40836
41135
|
const splitter = createLineSplitter((line) => progress?.onLine?.(line));
|
|
40837
41136
|
const pump = (chunk) => splitter.push(chunk.toString("utf8"));
|
|
40838
41137
|
child.stdout?.on("data", pump);
|
|
40839
41138
|
child.stderr?.on("data", pump);
|
|
40840
|
-
child.on("error", () =>
|
|
41139
|
+
child.on("error", () => resolve7(null));
|
|
40841
41140
|
child.on("close", (code) => {
|
|
40842
41141
|
splitter.flush();
|
|
40843
|
-
|
|
41142
|
+
resolve7(code);
|
|
40844
41143
|
});
|
|
40845
41144
|
});
|
|
40846
41145
|
}
|
|
@@ -40912,7 +41211,7 @@ async function confirmPrompt(question, defaultYes) {
|
|
|
40912
41211
|
if (process.stdin.isTTY !== true) return defaultYes;
|
|
40913
41212
|
const rl = createInterface3({ input: process.stdin, output: process.stdout });
|
|
40914
41213
|
try {
|
|
40915
|
-
const raw = await new Promise((
|
|
41214
|
+
const raw = await new Promise((resolve7) => rl.question(question, resolve7));
|
|
40916
41215
|
const ans = raw.trim().toLowerCase();
|
|
40917
41216
|
if (ans === "") return defaultYes;
|
|
40918
41217
|
if (ans === "y" || ans === "yes") return true;
|
|
@@ -40937,7 +41236,7 @@ function tryOpenBrowser(url) {
|
|
|
40937
41236
|
return false;
|
|
40938
41237
|
}
|
|
40939
41238
|
}
|
|
40940
|
-
var DAEMON_VERSION3 = true ? "daemon-0.
|
|
41239
|
+
var DAEMON_VERSION3 = true ? "daemon-0.14.0" : "daemon-dev";
|
|
40941
41240
|
function osFamily() {
|
|
40942
41241
|
const p = platform6();
|
|
40943
41242
|
if (p === "darwin") return "macos";
|
|
@@ -40950,6 +41249,33 @@ function osArch() {
|
|
|
40950
41249
|
if (a === "arm64") return "arm64";
|
|
40951
41250
|
return "other";
|
|
40952
41251
|
}
|
|
41252
|
+
function flagValue(args, flag) {
|
|
41253
|
+
for (let i = 0; i < args.length; i++) {
|
|
41254
|
+
const a = args[i];
|
|
41255
|
+
if (a === flag) return args[i + 1];
|
|
41256
|
+
if (a.startsWith(`${flag}=`)) return a.slice(flag.length + 1);
|
|
41257
|
+
}
|
|
41258
|
+
return void 0;
|
|
41259
|
+
}
|
|
41260
|
+
function flagValues(args, flag) {
|
|
41261
|
+
const out = [];
|
|
41262
|
+
for (let i = 0; i < args.length; i++) {
|
|
41263
|
+
const a = args[i];
|
|
41264
|
+
if (a === flag) {
|
|
41265
|
+
const v = args[i + 1];
|
|
41266
|
+
if (v !== void 0 && !v.startsWith("--")) out.push(v);
|
|
41267
|
+
} else if (a.startsWith(`${flag}=`)) {
|
|
41268
|
+
out.push(a.slice(flag.length + 1));
|
|
41269
|
+
}
|
|
41270
|
+
}
|
|
41271
|
+
return out;
|
|
41272
|
+
}
|
|
41273
|
+
function numericFlag(args, flag) {
|
|
41274
|
+
const raw = flagValue(args, flag);
|
|
41275
|
+
if (raw === void 0) return void 0;
|
|
41276
|
+
const n = Number(raw);
|
|
41277
|
+
return Number.isFinite(n) ? n : void 0;
|
|
41278
|
+
}
|
|
40953
41279
|
function intendedDeviceUuid() {
|
|
40954
41280
|
const salt = process.env.MODELSTAT_DEVICE_SALT?.trim();
|
|
40955
41281
|
const key = salt ? `${machineKey()}:${salt}` : machineKey();
|
|
@@ -41308,7 +41634,17 @@ async function cmdDiscover() {
|
|
|
41308
41634
|
});
|
|
41309
41635
|
console.log("\u2713 reported to backend");
|
|
41310
41636
|
}
|
|
41311
|
-
async function cmdScan() {
|
|
41637
|
+
async function cmdScan(rest) {
|
|
41638
|
+
const sessionIds = flagValues(rest, "--session");
|
|
41639
|
+
const file = flagValue(rest, "--file");
|
|
41640
|
+
if (sessionIds.length > 0 || file) {
|
|
41641
|
+
return cmdScanSession({
|
|
41642
|
+
sessionIds,
|
|
41643
|
+
file,
|
|
41644
|
+
wait: rest.includes("--wait"),
|
|
41645
|
+
port: numericFlag(rest, "--port")
|
|
41646
|
+
});
|
|
41647
|
+
}
|
|
41312
41648
|
const { preflightSummariser: preflightSummariser2 } = await Promise.resolve().then(() => (init_pipeline2(), pipeline_exports));
|
|
41313
41649
|
const { label, degraded } = await preflightSummariser2();
|
|
41314
41650
|
console.log(
|
|
@@ -41332,6 +41668,47 @@ async function cmdScan() {
|
|
|
41332
41668
|
} catch {
|
|
41333
41669
|
}
|
|
41334
41670
|
}
|
|
41671
|
+
async function cmdScanSession(opts) {
|
|
41672
|
+
const { postControlScan: postControlScan2 } = await Promise.resolve().then(() => (init_api(), api_exports));
|
|
41673
|
+
const target = {
|
|
41674
|
+
...opts.sessionIds.length ? { session_ids: opts.sessionIds } : {},
|
|
41675
|
+
...opts.file ? { file: opts.file } : {}
|
|
41676
|
+
};
|
|
41677
|
+
const outcome = await postControlScan2({ ...target, wait: opts.wait }, { port: opts.port });
|
|
41678
|
+
if (outcome.kind === "ok") {
|
|
41679
|
+
console.log(
|
|
41680
|
+
opts.wait ? "\u2713 daemon force-scanned the session" : "\u2713 asked the running daemon to force-scan the session"
|
|
41681
|
+
);
|
|
41682
|
+
return;
|
|
41683
|
+
}
|
|
41684
|
+
if (outcome.kind === "error") {
|
|
41685
|
+
console.error(`\u2717 daemon control scan failed (${outcome.status}): ${outcome.message}`);
|
|
41686
|
+
process.exit(1);
|
|
41687
|
+
}
|
|
41688
|
+
console.log("no running daemon on the control port \u2014 scanning in-process\u2026");
|
|
41689
|
+
const { preflightSummariser: preflightSummariser2 } = await Promise.resolve().then(() => (init_pipeline2(), pipeline_exports));
|
|
41690
|
+
const { label, degraded } = await preflightSummariser2();
|
|
41691
|
+
console.log(
|
|
41692
|
+
degraded ? `[modelstat] \u26A0 summariser DEGRADED \u2014 ${label}; extractive fallback, ingest continues` : `[modelstat] summariser preflight ok: ${label}`
|
|
41693
|
+
);
|
|
41694
|
+
const { scanSession: scanSession2 } = await Promise.resolve().then(() => (init_scan(), scan_exports));
|
|
41695
|
+
const r = await scanSession2({
|
|
41696
|
+
...opts.sessionIds.length ? { sessionIds: opts.sessionIds } : {},
|
|
41697
|
+
...opts.file ? { file: opts.file } : {}
|
|
41698
|
+
});
|
|
41699
|
+
console.log(
|
|
41700
|
+
`Done: ${r.filesScanned} files scanned, ${r.batchesUploaded} batches, ${r.segmentsUploaded} segments, ${r.eventsUploaded} events uploaded`
|
|
41701
|
+
);
|
|
41702
|
+
if (opts.sessionIds.length > 0) {
|
|
41703
|
+
const { refreshSessionInsights: refreshSessionInsights2 } = await Promise.resolve().then(() => (init_insights(), insights_exports));
|
|
41704
|
+
await refreshSessionInsights2(opts.sessionIds);
|
|
41705
|
+
}
|
|
41706
|
+
try {
|
|
41707
|
+
const { disposeLlama: disposeLlama2 } = await Promise.resolve().then(() => (init_node(), node_exports));
|
|
41708
|
+
await disposeLlama2();
|
|
41709
|
+
} catch {
|
|
41710
|
+
}
|
|
41711
|
+
}
|
|
41335
41712
|
async function cmdRescan() {
|
|
41336
41713
|
const { PROCESSING_VERSION: PROCESSING_VERSION2 } = await Promise.resolve().then(() => (init_processing_version(), processing_version_exports));
|
|
41337
41714
|
state.wipeCursors();
|
|
@@ -41651,7 +42028,7 @@ async function main() {
|
|
|
41651
42028
|
case "discover":
|
|
41652
42029
|
return cmdDiscover();
|
|
41653
42030
|
case "scan":
|
|
41654
|
-
return cmdScan();
|
|
42031
|
+
return cmdScan(rest);
|
|
41655
42032
|
case "rescan":
|
|
41656
42033
|
return cmdRescan();
|
|
41657
42034
|
case "watch":
|
|
@@ -41702,6 +42079,9 @@ async function main() {
|
|
|
41702
42079
|
console.log();
|
|
41703
42080
|
console.log("Dev / one-shots:");
|
|
41704
42081
|
console.log(" npx modelstat@latest scan \u2014 one-shot parse + upload of local JSONL");
|
|
42082
|
+
console.log(
|
|
42083
|
+
" npx modelstat@latest scan --session <id> \u2014 eager force-scan ONE session now (--file <path>, --wait)"
|
|
42084
|
+
);
|
|
41705
42085
|
console.log(
|
|
41706
42086
|
" npx modelstat@latest rescan \u2014 wipe file cursors so the next scan re-reads & re-summarises everything"
|
|
41707
42087
|
);
|