diff --git a/.github/local-actions/branch-manager/main.js b/.github/local-actions/branch-manager/main.js index ff1e1490c..bab2b9f5f 100644 --- a/.github/local-actions/branch-manager/main.js +++ b/.github/local-actions/branch-manager/main.js @@ -40596,7 +40596,7 @@ var require_client_h1 = __commonJS({ function writeH1(client, request2) { const { method, path: path4, host, upgrade, blocking, reset: reset2 } = request2; let { body, headers, contentLength } = request2; - const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH"; if (util.isFormDataLike(body)) { if (!extractBody) { extractBody = require_body2().extractBody; @@ -40804,7 +40804,7 @@ upgrade: ${upgrade}\r socket.write(body); socket.uncork(); request2.onBodySent(body); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } } @@ -40829,7 +40829,7 @@ upgrade: ${upgrade}\r socket.uncork(); request2.onBodySent(buffer); request2.onRequestSent(); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } client[kResume](); @@ -40905,7 +40905,7 @@ upgrade: ${upgrade}\r } socket.cork(); if (bytesWritten === 0) { - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } if (contentLength === null) { @@ -41012,7 +41012,9 @@ var require_client_h2 = __commonJS({ kOnError, kMaxConcurrentStreams, kHTTP2Session, - kResume + kResume, + kSize, + kHTTPContext } = require_symbols6(); var kOpenStreams = Symbol("open streams"); var h2ExperimentalWarned = false; @@ -41109,9 +41111,10 @@ var require_client_h2 = __commonJS({ version: "h2", defaultPipelining: Infinity, write(...args) { - writeH2(client, ...args); + return writeH2(client, ...args); }, resume() { + resumeH2(client); }, destroy(err, callback) { if (closed) { @@ -41128,6 +41131,18 @@ var require_client_h2 = __commonJS({ } }; } + function resumeH2(client) { + const socket = client[kSocket]; + if ((socket == null ? void 0 : socket.destroyed) === false) { + if (client[kSize] === 0 && client[kMaxConcurrentStreams] === 0) { + socket.unref(); + client[kHTTP2Session].unref(); + } else { + socket.ref(); + client[kHTTP2Session].ref(); + } + } + } function onHttp2SessionError(err) { assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); this[kSocket][kError] = err; @@ -41146,11 +41161,22 @@ var require_client_h2 = __commonJS({ util.destroy(this[kSocket], err); } function onHTTP2GoAway(code) { - const err = new RequestAbortedError(`HTTP/2: "GOAWAY" frame received with code ${code}`); - this[kSocket][kError] = err; - this[kClient][kOnError](err); - this.unref(); + const err = this[kError] || new SocketError(`HTTP/2: "GOAWAY" frame received with code ${code}`, util.getSocketInfo(this)); + const client = this[kClient]; + client[kSocket] = null; + client[kHTTPContext] = null; + if (this[kHTTP2Session] != null) { + this[kHTTP2Session].destroy(err); + this[kHTTP2Session] = null; + } util.destroy(this[kSocket], err); + const request2 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + util.errorRequest(client, request2, err); + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit("disconnect", client[kUrl], [client], err); + client[kResume](); } function shouldSendContentLength(method) { return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT"; @@ -41162,9 +41188,6 @@ var require_client_h2 = __commonJS({ util.errorRequest(client, request2, new Error("Upgrade not supported for H2")); return false; } - if (request2.aborted) { - return false; - } const headers = {}; for (let n = 0; n < reqHeaders.length; n += 2) { const key = reqHeaders[n + 0]; @@ -41195,22 +41218,29 @@ var require_client_h2 = __commonJS({ util.destroy(stream, err); } util.destroy(body, err); + client[kQueue][client[kRunningIdx]++] = null; + client[kResume](); }; try { request2.onConnect(abort); } catch (err) { util.errorRequest(client, request2, err); } + if (request2.aborted) { + return false; + } if (method === "CONNECT") { session.ref(); stream = session.request(headers, { endStream: false, signal }); if (stream.id && !stream.pending) { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; } else { stream.once("ready", () => { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; }); } stream.once("close", () => { @@ -41280,12 +41310,14 @@ var require_client_h2 = __commonJS({ var _a2; if (((_a2 = stream.state) == null ? void 0 : _a2.state) == null || stream.state.state < 6) { request2.onComplete([]); - return; } if (session[kOpenStreams] === 0) { session.unref(); } abort(new InformationalError("HTTP/2: stream half-closed (remote)")); + client[kQueue][client[kRunningIdx]++] = null; + client[kPendingIdx] = client[kRunningIdx]; + client[kResume](); }); stream.once("close", () => { session[kOpenStreams] -= 1; @@ -41728,6 +41760,8 @@ var require_client2 = __commonJS({ var connectH2 = require_client_h2(); var deprecatedInterceptorWarned = false; var kClosedResolve = Symbol("kClosedResolve"); + var noop2 = () => { + }; function getPipelining(client) { var _a2; return client[kPipelining] ?? ((_a2 = client[kHTTPContext]) == null ? void 0 : _a2.defaultPipelining) ?? 1; @@ -42012,16 +42046,14 @@ var require_client2 = __commonJS({ }); }); if (client.destroyed) { - util.destroy(socket.on("error", () => { - }), new ClientDestroyedError()); + util.destroy(socket.on("error", noop2), new ClientDestroyedError()); return; } assert(socket); try { client[kHTTPContext] = socket.alpnProtocol === "h2" ? await connectH2(client, socket) : await connectH1(client, socket); } catch (err) { - socket.destroy().on("error", () => { - }); + socket.destroy().on("error", noop2); throw err; } client[kConnecting] = false; @@ -42344,9 +42376,9 @@ var require_pool_base2 = __commonJS({ } async [kClose]() { if (this[kQueue].isEmpty()) { - return Promise.all(this[kClients].map((c) => c.close())); + await Promise.all(this[kClients].map((c) => c.close())); } else { - return new Promise((resolve) => { + await new Promise((resolve) => { this[kClosedResolve] = resolve; }); } @@ -42359,7 +42391,7 @@ var require_pool_base2 = __commonJS({ } item.handler.onError(err); } - return Promise.all(this[kClients].map((c) => c.destroy(err))); + await Promise.all(this[kClients].map((c) => c.destroy(err))); } [kDispatch](opts, handler2) { const dispatcher = this[kGetDispatcher](); @@ -42757,6 +42789,8 @@ var require_proxy_agent2 = __commonJS({ function defaultFactory(origin, opts) { return new Pool(origin, opts); } + var noop2 = () => { + }; var ProxyAgent = class extends DispatcherBase { constructor(opts) { var _a2; @@ -42808,8 +42842,7 @@ var require_proxy_agent2 = __commonJS({ servername: ((_a3 = this[kProxyTls]) == null ? void 0 : _a3.servername) || proxyHostname }); if (statusCode !== 200) { - socket.on("error", () => { - }).destroy(); + socket.on("error", noop2).destroy(); callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)); } if (opts2.protocol !== "https:") { @@ -43440,6 +43473,9 @@ var require_readable2 = __commonJS({ async blob() { return consume(this, "blob"); } + async bytes() { + return consume(this, "bytes"); + } async arrayBuffer() { return consume(this, "arrayBuffer"); } @@ -43571,6 +43607,22 @@ var require_readable2 = __commonJS({ const start = bufferLength > 2 && buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191 ? 3 : 0; return buffer.utf8Slice(start, bufferLength); } + function chunksConcat(chunks, length) { + if (chunks.length === 0 || length === 0) { + return new Uint8Array(0); + } + if (chunks.length === 1) { + return new Uint8Array(chunks[0]); + } + const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer); + let offset = 0; + for (let i = 0; i < chunks.length; ++i) { + const chunk = chunks[i]; + buffer.set(chunk, offset); + offset += chunk.length; + } + return buffer; + } function consumeEnd(consume2) { const { type, body, resolve, stream, length } = consume2; try { @@ -43579,15 +43631,11 @@ var require_readable2 = __commonJS({ } else if (type === "json") { resolve(JSON.parse(chunksDecode(body, length))); } else if (type === "arrayBuffer") { - const dst = new Uint8Array(length); - let pos = 0; - for (const buf of body) { - dst.set(buf, pos); - pos += buf.byteLength; - } - resolve(dst.buffer); + resolve(chunksConcat(body, length).buffer); } else if (type === "blob") { resolve(new Blob(body, { type: stream[kContentType] })); + } else if (type === "bytes") { + resolve(chunksConcat(body, length)); } consumeFinish(consume2); } catch (err) { diff --git a/.github/local-actions/changelog/main.js b/.github/local-actions/changelog/main.js index 9ee39e547..8add4ca03 100644 --- a/.github/local-actions/changelog/main.js +++ b/.github/local-actions/changelog/main.js @@ -25123,7 +25123,7 @@ var require_client_h1 = __commonJS({ function writeH1(client, request2) { const { method, path: path2, host, upgrade, blocking, reset: reset2 } = request2; let { body, headers, contentLength } = request2; - const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH"; if (util.isFormDataLike(body)) { if (!extractBody) { extractBody = require_body2().extractBody; @@ -25331,7 +25331,7 @@ upgrade: ${upgrade}\r socket.write(body); socket.uncork(); request2.onBodySent(body); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } } @@ -25356,7 +25356,7 @@ upgrade: ${upgrade}\r socket.uncork(); request2.onBodySent(buffer); request2.onRequestSent(); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } client[kResume](); @@ -25432,7 +25432,7 @@ upgrade: ${upgrade}\r } socket.cork(); if (bytesWritten === 0) { - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } if (contentLength === null) { @@ -25539,7 +25539,9 @@ var require_client_h2 = __commonJS({ kOnError, kMaxConcurrentStreams, kHTTP2Session, - kResume + kResume, + kSize, + kHTTPContext } = require_symbols6(); var kOpenStreams = Symbol("open streams"); var h2ExperimentalWarned = false; @@ -25636,9 +25638,10 @@ var require_client_h2 = __commonJS({ version: "h2", defaultPipelining: Infinity, write(...args) { - writeH2(client, ...args); + return writeH2(client, ...args); }, resume() { + resumeH2(client); }, destroy(err, callback) { if (closed) { @@ -25655,6 +25658,18 @@ var require_client_h2 = __commonJS({ } }; } + function resumeH2(client) { + const socket = client[kSocket]; + if ((socket == null ? void 0 : socket.destroyed) === false) { + if (client[kSize] === 0 && client[kMaxConcurrentStreams] === 0) { + socket.unref(); + client[kHTTP2Session].unref(); + } else { + socket.ref(); + client[kHTTP2Session].ref(); + } + } + } function onHttp2SessionError(err) { assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); this[kSocket][kError] = err; @@ -25673,11 +25688,22 @@ var require_client_h2 = __commonJS({ util.destroy(this[kSocket], err); } function onHTTP2GoAway(code) { - const err = new RequestAbortedError(`HTTP/2: "GOAWAY" frame received with code ${code}`); - this[kSocket][kError] = err; - this[kClient][kOnError](err); - this.unref(); + const err = this[kError] || new SocketError(`HTTP/2: "GOAWAY" frame received with code ${code}`, util.getSocketInfo(this)); + const client = this[kClient]; + client[kSocket] = null; + client[kHTTPContext] = null; + if (this[kHTTP2Session] != null) { + this[kHTTP2Session].destroy(err); + this[kHTTP2Session] = null; + } util.destroy(this[kSocket], err); + const request2 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + util.errorRequest(client, request2, err); + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit("disconnect", client[kUrl], [client], err); + client[kResume](); } function shouldSendContentLength(method) { return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT"; @@ -25689,9 +25715,6 @@ var require_client_h2 = __commonJS({ util.errorRequest(client, request2, new Error("Upgrade not supported for H2")); return false; } - if (request2.aborted) { - return false; - } const headers = {}; for (let n = 0; n < reqHeaders.length; n += 2) { const key = reqHeaders[n + 0]; @@ -25722,22 +25745,29 @@ var require_client_h2 = __commonJS({ util.destroy(stream, err); } util.destroy(body, err); + client[kQueue][client[kRunningIdx]++] = null; + client[kResume](); }; try { request2.onConnect(abort); } catch (err) { util.errorRequest(client, request2, err); } + if (request2.aborted) { + return false; + } if (method === "CONNECT") { session.ref(); stream = session.request(headers, { endStream: false, signal }); if (stream.id && !stream.pending) { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; } else { stream.once("ready", () => { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; }); } stream.once("close", () => { @@ -25807,12 +25837,14 @@ var require_client_h2 = __commonJS({ var _a2; if (((_a2 = stream.state) == null ? void 0 : _a2.state) == null || stream.state.state < 6) { request2.onComplete([]); - return; } if (session[kOpenStreams] === 0) { session.unref(); } abort(new InformationalError("HTTP/2: stream half-closed (remote)")); + client[kQueue][client[kRunningIdx]++] = null; + client[kPendingIdx] = client[kRunningIdx]; + client[kResume](); }); stream.once("close", () => { session[kOpenStreams] -= 1; @@ -26255,6 +26287,8 @@ var require_client2 = __commonJS({ var connectH2 = require_client_h2(); var deprecatedInterceptorWarned = false; var kClosedResolve = Symbol("kClosedResolve"); + var noop2 = () => { + }; function getPipelining(client) { var _a2; return client[kPipelining] ?? ((_a2 = client[kHTTPContext]) == null ? void 0 : _a2.defaultPipelining) ?? 1; @@ -26539,16 +26573,14 @@ var require_client2 = __commonJS({ }); }); if (client.destroyed) { - util.destroy(socket.on("error", () => { - }), new ClientDestroyedError()); + util.destroy(socket.on("error", noop2), new ClientDestroyedError()); return; } assert(socket); try { client[kHTTPContext] = socket.alpnProtocol === "h2" ? await connectH2(client, socket) : await connectH1(client, socket); } catch (err) { - socket.destroy().on("error", () => { - }); + socket.destroy().on("error", noop2); throw err; } client[kConnecting] = false; @@ -26871,9 +26903,9 @@ var require_pool_base2 = __commonJS({ } async [kClose]() { if (this[kQueue].isEmpty()) { - return Promise.all(this[kClients].map((c) => c.close())); + await Promise.all(this[kClients].map((c) => c.close())); } else { - return new Promise((resolve) => { + await new Promise((resolve) => { this[kClosedResolve] = resolve; }); } @@ -26886,7 +26918,7 @@ var require_pool_base2 = __commonJS({ } item.handler.onError(err); } - return Promise.all(this[kClients].map((c) => c.destroy(err))); + await Promise.all(this[kClients].map((c) => c.destroy(err))); } [kDispatch](opts, handler2) { const dispatcher = this[kGetDispatcher](); @@ -27284,6 +27316,8 @@ var require_proxy_agent2 = __commonJS({ function defaultFactory(origin, opts) { return new Pool(origin, opts); } + var noop2 = () => { + }; var ProxyAgent = class extends DispatcherBase { constructor(opts) { var _a2; @@ -27335,8 +27369,7 @@ var require_proxy_agent2 = __commonJS({ servername: ((_a3 = this[kProxyTls]) == null ? void 0 : _a3.servername) || proxyHostname }); if (statusCode !== 200) { - socket.on("error", () => { - }).destroy(); + socket.on("error", noop2).destroy(); callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)); } if (opts2.protocol !== "https:") { @@ -27967,6 +28000,9 @@ var require_readable2 = __commonJS({ async blob() { return consume(this, "blob"); } + async bytes() { + return consume(this, "bytes"); + } async arrayBuffer() { return consume(this, "arrayBuffer"); } @@ -28098,6 +28134,22 @@ var require_readable2 = __commonJS({ const start = bufferLength > 2 && buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191 ? 3 : 0; return buffer.utf8Slice(start, bufferLength); } + function chunksConcat(chunks, length) { + if (chunks.length === 0 || length === 0) { + return new Uint8Array(0); + } + if (chunks.length === 1) { + return new Uint8Array(chunks[0]); + } + const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer); + let offset = 0; + for (let i = 0; i < chunks.length; ++i) { + const chunk = chunks[i]; + buffer.set(chunk, offset); + offset += chunk.length; + } + return buffer; + } function consumeEnd(consume2) { const { type, body, resolve, stream, length } = consume2; try { @@ -28106,15 +28158,11 @@ var require_readable2 = __commonJS({ } else if (type === "json") { resolve(JSON.parse(chunksDecode(body, length))); } else if (type === "arrayBuffer") { - const dst = new Uint8Array(length); - let pos = 0; - for (const buf of body) { - dst.set(buf, pos); - pos += buf.byteLength; - } - resolve(dst.buffer); + resolve(chunksConcat(body, length).buffer); } else if (type === "blob") { resolve(new Blob(body, { type: stream[kContentType] })); + } else if (type === "bytes") { + resolve(chunksConcat(body, length)); } consumeFinish(consume2); } catch (err) { diff --git a/.github/local-actions/labels-sync/main.js b/.github/local-actions/labels-sync/main.js index 744658eb7..44cbceb2c 100644 --- a/.github/local-actions/labels-sync/main.js +++ b/.github/local-actions/labels-sync/main.js @@ -25119,7 +25119,7 @@ var require_client_h1 = __commonJS({ function writeH1(client, request2) { const { method, path, host, upgrade, blocking, reset } = request2; let { body, headers, contentLength } = request2; - const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH"; if (util.isFormDataLike(body)) { if (!extractBody) { extractBody = require_body2().extractBody; @@ -25327,7 +25327,7 @@ upgrade: ${upgrade}\r socket.write(body); socket.uncork(); request2.onBodySent(body); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } } @@ -25352,7 +25352,7 @@ upgrade: ${upgrade}\r socket.uncork(); request2.onBodySent(buffer); request2.onRequestSent(); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } client[kResume](); @@ -25428,7 +25428,7 @@ upgrade: ${upgrade}\r } socket.cork(); if (bytesWritten === 0) { - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } if (contentLength === null) { @@ -25535,7 +25535,9 @@ var require_client_h2 = __commonJS({ kOnError, kMaxConcurrentStreams, kHTTP2Session, - kResume + kResume, + kSize, + kHTTPContext } = require_symbols6(); var kOpenStreams = Symbol("open streams"); var h2ExperimentalWarned = false; @@ -25632,9 +25634,10 @@ var require_client_h2 = __commonJS({ version: "h2", defaultPipelining: Infinity, write(...args) { - writeH2(client, ...args); + return writeH2(client, ...args); }, resume() { + resumeH2(client); }, destroy(err, callback) { if (closed) { @@ -25651,6 +25654,18 @@ var require_client_h2 = __commonJS({ } }; } + function resumeH2(client) { + const socket = client[kSocket]; + if ((socket == null ? void 0 : socket.destroyed) === false) { + if (client[kSize] === 0 && client[kMaxConcurrentStreams] === 0) { + socket.unref(); + client[kHTTP2Session].unref(); + } else { + socket.ref(); + client[kHTTP2Session].ref(); + } + } + } function onHttp2SessionError(err) { assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); this[kSocket][kError] = err; @@ -25669,11 +25684,22 @@ var require_client_h2 = __commonJS({ util.destroy(this[kSocket], err); } function onHTTP2GoAway(code) { - const err = new RequestAbortedError(`HTTP/2: "GOAWAY" frame received with code ${code}`); - this[kSocket][kError] = err; - this[kClient][kOnError](err); - this.unref(); + const err = this[kError] || new SocketError(`HTTP/2: "GOAWAY" frame received with code ${code}`, util.getSocketInfo(this)); + const client = this[kClient]; + client[kSocket] = null; + client[kHTTPContext] = null; + if (this[kHTTP2Session] != null) { + this[kHTTP2Session].destroy(err); + this[kHTTP2Session] = null; + } util.destroy(this[kSocket], err); + const request2 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + util.errorRequest(client, request2, err); + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit("disconnect", client[kUrl], [client], err); + client[kResume](); } function shouldSendContentLength(method) { return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT"; @@ -25685,9 +25711,6 @@ var require_client_h2 = __commonJS({ util.errorRequest(client, request2, new Error("Upgrade not supported for H2")); return false; } - if (request2.aborted) { - return false; - } const headers = {}; for (let n = 0; n < reqHeaders.length; n += 2) { const key = reqHeaders[n + 0]; @@ -25718,22 +25741,29 @@ var require_client_h2 = __commonJS({ util.destroy(stream, err); } util.destroy(body, err); + client[kQueue][client[kRunningIdx]++] = null; + client[kResume](); }; try { request2.onConnect(abort); } catch (err) { util.errorRequest(client, request2, err); } + if (request2.aborted) { + return false; + } if (method === "CONNECT") { session.ref(); stream = session.request(headers, { endStream: false, signal }); if (stream.id && !stream.pending) { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; } else { stream.once("ready", () => { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; }); } stream.once("close", () => { @@ -25803,12 +25833,14 @@ var require_client_h2 = __commonJS({ var _a2; if (((_a2 = stream.state) == null ? void 0 : _a2.state) == null || stream.state.state < 6) { request2.onComplete([]); - return; } if (session[kOpenStreams] === 0) { session.unref(); } abort(new InformationalError("HTTP/2: stream half-closed (remote)")); + client[kQueue][client[kRunningIdx]++] = null; + client[kPendingIdx] = client[kRunningIdx]; + client[kResume](); }); stream.once("close", () => { session[kOpenStreams] -= 1; @@ -26251,6 +26283,8 @@ var require_client2 = __commonJS({ var connectH2 = require_client_h2(); var deprecatedInterceptorWarned = false; var kClosedResolve = Symbol("kClosedResolve"); + var noop2 = () => { + }; function getPipelining(client) { var _a2; return client[kPipelining] ?? ((_a2 = client[kHTTPContext]) == null ? void 0 : _a2.defaultPipelining) ?? 1; @@ -26535,16 +26569,14 @@ var require_client2 = __commonJS({ }); }); if (client.destroyed) { - util.destroy(socket.on("error", () => { - }), new ClientDestroyedError()); + util.destroy(socket.on("error", noop2), new ClientDestroyedError()); return; } assert(socket); try { client[kHTTPContext] = socket.alpnProtocol === "h2" ? await connectH2(client, socket) : await connectH1(client, socket); } catch (err) { - socket.destroy().on("error", () => { - }); + socket.destroy().on("error", noop2); throw err; } client[kConnecting] = false; @@ -26867,9 +26899,9 @@ var require_pool_base2 = __commonJS({ } async [kClose]() { if (this[kQueue].isEmpty()) { - return Promise.all(this[kClients].map((c) => c.close())); + await Promise.all(this[kClients].map((c) => c.close())); } else { - return new Promise((resolve) => { + await new Promise((resolve) => { this[kClosedResolve] = resolve; }); } @@ -26882,7 +26914,7 @@ var require_pool_base2 = __commonJS({ } item.handler.onError(err); } - return Promise.all(this[kClients].map((c) => c.destroy(err))); + await Promise.all(this[kClients].map((c) => c.destroy(err))); } [kDispatch](opts, handler2) { const dispatcher = this[kGetDispatcher](); @@ -27280,6 +27312,8 @@ var require_proxy_agent2 = __commonJS({ function defaultFactory(origin, opts) { return new Pool(origin, opts); } + var noop2 = () => { + }; var ProxyAgent = class extends DispatcherBase { constructor(opts) { var _a2; @@ -27331,8 +27365,7 @@ var require_proxy_agent2 = __commonJS({ servername: ((_a3 = this[kProxyTls]) == null ? void 0 : _a3.servername) || proxyHostname }); if (statusCode !== 200) { - socket.on("error", () => { - }).destroy(); + socket.on("error", noop2).destroy(); callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)); } if (opts2.protocol !== "https:") { @@ -27963,6 +27996,9 @@ var require_readable2 = __commonJS({ async blob() { return consume(this, "blob"); } + async bytes() { + return consume(this, "bytes"); + } async arrayBuffer() { return consume(this, "arrayBuffer"); } @@ -28094,6 +28130,22 @@ var require_readable2 = __commonJS({ const start = bufferLength > 2 && buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191 ? 3 : 0; return buffer.utf8Slice(start, bufferLength); } + function chunksConcat(chunks, length) { + if (chunks.length === 0 || length === 0) { + return new Uint8Array(0); + } + if (chunks.length === 1) { + return new Uint8Array(chunks[0]); + } + const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer); + let offset = 0; + for (let i = 0; i < chunks.length; ++i) { + const chunk = chunks[i]; + buffer.set(chunk, offset); + offset += chunk.length; + } + return buffer; + } function consumeEnd(consume2) { const { type, body, resolve, stream, length } = consume2; try { @@ -28102,15 +28154,11 @@ var require_readable2 = __commonJS({ } else if (type === "json") { resolve(JSON.parse(chunksDecode(body, length))); } else if (type === "arrayBuffer") { - const dst = new Uint8Array(length); - let pos = 0; - for (const buf of body) { - dst.set(buf, pos); - pos += buf.byteLength; - } - resolve(dst.buffer); + resolve(chunksConcat(body, length).buffer); } else if (type === "blob") { resolve(new Blob(body, { type: stream[kContentType] })); + } else if (type === "bytes") { + resolve(chunksConcat(body, length)); } consumeFinish(consume2); } catch (err) { diff --git a/.github/local-actions/lock-closed/main.js b/.github/local-actions/lock-closed/main.js index 41613824f..32b45c28b 100644 --- a/.github/local-actions/lock-closed/main.js +++ b/.github/local-actions/lock-closed/main.js @@ -25119,7 +25119,7 @@ var require_client_h1 = __commonJS({ function writeH1(client, request2) { const { method, path, host, upgrade, blocking, reset } = request2; let { body, headers, contentLength } = request2; - const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH"; if (util.isFormDataLike(body)) { if (!extractBody) { extractBody = require_body2().extractBody; @@ -25327,7 +25327,7 @@ upgrade: ${upgrade}\r socket.write(body); socket.uncork(); request2.onBodySent(body); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } } @@ -25352,7 +25352,7 @@ upgrade: ${upgrade}\r socket.uncork(); request2.onBodySent(buffer); request2.onRequestSent(); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } client[kResume](); @@ -25428,7 +25428,7 @@ upgrade: ${upgrade}\r } socket.cork(); if (bytesWritten === 0) { - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } if (contentLength === null) { @@ -25535,7 +25535,9 @@ var require_client_h2 = __commonJS({ kOnError, kMaxConcurrentStreams, kHTTP2Session, - kResume + kResume, + kSize, + kHTTPContext } = require_symbols6(); var kOpenStreams = Symbol("open streams"); var h2ExperimentalWarned = false; @@ -25632,9 +25634,10 @@ var require_client_h2 = __commonJS({ version: "h2", defaultPipelining: Infinity, write(...args) { - writeH2(client, ...args); + return writeH2(client, ...args); }, resume() { + resumeH2(client); }, destroy(err, callback) { if (closed) { @@ -25651,6 +25654,18 @@ var require_client_h2 = __commonJS({ } }; } + function resumeH2(client) { + const socket = client[kSocket]; + if ((socket == null ? void 0 : socket.destroyed) === false) { + if (client[kSize] === 0 && client[kMaxConcurrentStreams] === 0) { + socket.unref(); + client[kHTTP2Session].unref(); + } else { + socket.ref(); + client[kHTTP2Session].ref(); + } + } + } function onHttp2SessionError(err) { assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); this[kSocket][kError] = err; @@ -25669,11 +25684,22 @@ var require_client_h2 = __commonJS({ util.destroy(this[kSocket], err); } function onHTTP2GoAway(code) { - const err = new RequestAbortedError(`HTTP/2: "GOAWAY" frame received with code ${code}`); - this[kSocket][kError] = err; - this[kClient][kOnError](err); - this.unref(); + const err = this[kError] || new SocketError(`HTTP/2: "GOAWAY" frame received with code ${code}`, util.getSocketInfo(this)); + const client = this[kClient]; + client[kSocket] = null; + client[kHTTPContext] = null; + if (this[kHTTP2Session] != null) { + this[kHTTP2Session].destroy(err); + this[kHTTP2Session] = null; + } util.destroy(this[kSocket], err); + const request2 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + util.errorRequest(client, request2, err); + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit("disconnect", client[kUrl], [client], err); + client[kResume](); } function shouldSendContentLength(method) { return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT"; @@ -25685,9 +25711,6 @@ var require_client_h2 = __commonJS({ util.errorRequest(client, request2, new Error("Upgrade not supported for H2")); return false; } - if (request2.aborted) { - return false; - } const headers = {}; for (let n = 0; n < reqHeaders.length; n += 2) { const key = reqHeaders[n + 0]; @@ -25718,22 +25741,29 @@ var require_client_h2 = __commonJS({ util.destroy(stream, err); } util.destroy(body, err); + client[kQueue][client[kRunningIdx]++] = null; + client[kResume](); }; try { request2.onConnect(abort); } catch (err) { util.errorRequest(client, request2, err); } + if (request2.aborted) { + return false; + } if (method === "CONNECT") { session.ref(); stream = session.request(headers, { endStream: false, signal }); if (stream.id && !stream.pending) { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; } else { stream.once("ready", () => { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; }); } stream.once("close", () => { @@ -25803,12 +25833,14 @@ var require_client_h2 = __commonJS({ var _a2; if (((_a2 = stream.state) == null ? void 0 : _a2.state) == null || stream.state.state < 6) { request2.onComplete([]); - return; } if (session[kOpenStreams] === 0) { session.unref(); } abort(new InformationalError("HTTP/2: stream half-closed (remote)")); + client[kQueue][client[kRunningIdx]++] = null; + client[kPendingIdx] = client[kRunningIdx]; + client[kResume](); }); stream.once("close", () => { session[kOpenStreams] -= 1; @@ -26251,6 +26283,8 @@ var require_client2 = __commonJS({ var connectH2 = require_client_h2(); var deprecatedInterceptorWarned = false; var kClosedResolve = Symbol("kClosedResolve"); + var noop2 = () => { + }; function getPipelining(client) { var _a2; return client[kPipelining] ?? ((_a2 = client[kHTTPContext]) == null ? void 0 : _a2.defaultPipelining) ?? 1; @@ -26535,16 +26569,14 @@ var require_client2 = __commonJS({ }); }); if (client.destroyed) { - util.destroy(socket.on("error", () => { - }), new ClientDestroyedError()); + util.destroy(socket.on("error", noop2), new ClientDestroyedError()); return; } assert(socket); try { client[kHTTPContext] = socket.alpnProtocol === "h2" ? await connectH2(client, socket) : await connectH1(client, socket); } catch (err) { - socket.destroy().on("error", () => { - }); + socket.destroy().on("error", noop2); throw err; } client[kConnecting] = false; @@ -26867,9 +26899,9 @@ var require_pool_base2 = __commonJS({ } async [kClose]() { if (this[kQueue].isEmpty()) { - return Promise.all(this[kClients].map((c) => c.close())); + await Promise.all(this[kClients].map((c) => c.close())); } else { - return new Promise((resolve) => { + await new Promise((resolve) => { this[kClosedResolve] = resolve; }); } @@ -26882,7 +26914,7 @@ var require_pool_base2 = __commonJS({ } item.handler.onError(err); } - return Promise.all(this[kClients].map((c) => c.destroy(err))); + await Promise.all(this[kClients].map((c) => c.destroy(err))); } [kDispatch](opts, handler2) { const dispatcher = this[kGetDispatcher](); @@ -27280,6 +27312,8 @@ var require_proxy_agent2 = __commonJS({ function defaultFactory(origin, opts) { return new Pool(origin, opts); } + var noop2 = () => { + }; var ProxyAgent = class extends DispatcherBase { constructor(opts) { var _a2; @@ -27331,8 +27365,7 @@ var require_proxy_agent2 = __commonJS({ servername: ((_a3 = this[kProxyTls]) == null ? void 0 : _a3.servername) || proxyHostname }); if (statusCode !== 200) { - socket.on("error", () => { - }).destroy(); + socket.on("error", noop2).destroy(); callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)); } if (opts2.protocol !== "https:") { @@ -27963,6 +27996,9 @@ var require_readable2 = __commonJS({ async blob() { return consume(this, "blob"); } + async bytes() { + return consume(this, "bytes"); + } async arrayBuffer() { return consume(this, "arrayBuffer"); } @@ -28094,6 +28130,22 @@ var require_readable2 = __commonJS({ const start = bufferLength > 2 && buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191 ? 3 : 0; return buffer.utf8Slice(start, bufferLength); } + function chunksConcat(chunks, length) { + if (chunks.length === 0 || length === 0) { + return new Uint8Array(0); + } + if (chunks.length === 1) { + return new Uint8Array(chunks[0]); + } + const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer); + let offset = 0; + for (let i = 0; i < chunks.length; ++i) { + const chunk = chunks[i]; + buffer.set(chunk, offset); + offset += chunk.length; + } + return buffer; + } function consumeEnd(consume2) { const { type, body, resolve, stream, length } = consume2; try { @@ -28102,15 +28154,11 @@ var require_readable2 = __commonJS({ } else if (type === "json") { resolve(JSON.parse(chunksDecode(body, length))); } else if (type === "arrayBuffer") { - const dst = new Uint8Array(length); - let pos = 0; - for (const buf of body) { - dst.set(buf, pos); - pos += buf.byteLength; - } - resolve(dst.buffer); + resolve(chunksConcat(body, length).buffer); } else if (type === "blob") { resolve(new Blob(body, { type: stream[kContentType] })); + } else if (type === "bytes") { + resolve(chunksConcat(body, length)); } consumeFinish(consume2); } catch (err) { diff --git a/.github/ng-renovate/package.json b/.github/ng-renovate/package.json index a10e8e236..64f4164af 100644 --- a/.github/ng-renovate/package.json +++ b/.github/ng-renovate/package.json @@ -3,6 +3,6 @@ "packageManager": "yarn@4.5.0", "type": "commonjs", "dependencies": { - "renovate": "38.119.0" + "renovate": "38.124.0" } } diff --git a/.github/ng-renovate/yarn.lock b/.github/ng-renovate/yarn.lock index 7926d68cb..9db3246fb 100644 --- a/.github/ng-renovate/yarn.lock +++ b/.github/ng-renovate/yarn.lock @@ -5793,7 +5793,7 @@ __metadata: version: 0.0.0-use.local resolution: "ng-renovate@workspace:." dependencies: - renovate: "npm:38.119.0" + renovate: "npm:38.124.0" languageName: unknown linkType: soft @@ -6528,9 +6528,9 @@ __metadata: languageName: node linkType: hard -"renovate@npm:38.119.0": - version: 38.119.0 - resolution: "renovate@npm:38.119.0" +"renovate@npm:38.124.0": + version: 38.124.0 + resolution: "renovate@npm:38.124.0" dependencies: "@aws-sdk/client-codecommit": "npm:3.658.1" "@aws-sdk/client-ec2": "npm:3.658.1" @@ -6652,7 +6652,7 @@ __metadata: bin: renovate: dist/renovate.js renovate-config-validator: dist/config-validator.js - checksum: 10c0/c4fa9dbdd3471393caddd8d37a3c4f286935592ebdd368fd62b7ff7a6fd72b960c3a38dadd6e461c816125edd3ce082362b3e46e618c4fc4ee2300d7e60d2ea7 + checksum: 10c0/29a5677eccd4d6074ff97abf2166149b8c0fb0155df8d341781027562b83abc34e0fa2f7d48a1351093c850066c1550d1d3ed5686d6f3b6b25d5a8361448608f languageName: node linkType: hard diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 3ce81e4e8..99cb363e4 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -27,10 +27,10 @@ jobs: - name: Checkout repository uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: Initialize CodeQL - uses: github/codeql-action/init@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 + uses: github/codeql-action/init@f779452ac5af1c261dce0346a8f964149f49322b # v3.26.13 with: languages: ${{ matrix.language }} - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 + uses: github/codeql-action/analyze@f779452ac5af1c261dce0346a8f964149f49322b # v3.26.13 with: category: '/language:${{matrix.language}}' diff --git a/github-actions/branch-manager/main.js b/github-actions/branch-manager/main.js index 95dbbc669..cb7d27389 100644 --- a/github-actions/branch-manager/main.js +++ b/github-actions/branch-manager/main.js @@ -25119,7 +25119,7 @@ var require_client_h1 = __commonJS({ function writeH1(client, request2) { const { method, path, host, upgrade, blocking, reset } = request2; let { body, headers, contentLength } = request2; - const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH"; if (util.isFormDataLike(body)) { if (!extractBody) { extractBody = require_body2().extractBody; @@ -25327,7 +25327,7 @@ upgrade: ${upgrade}\r socket.write(body); socket.uncork(); request2.onBodySent(body); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } } @@ -25352,7 +25352,7 @@ upgrade: ${upgrade}\r socket.uncork(); request2.onBodySent(buffer); request2.onRequestSent(); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } client[kResume](); @@ -25428,7 +25428,7 @@ upgrade: ${upgrade}\r } socket.cork(); if (bytesWritten === 0) { - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } if (contentLength === null) { @@ -25535,7 +25535,9 @@ var require_client_h2 = __commonJS({ kOnError, kMaxConcurrentStreams, kHTTP2Session, - kResume + kResume, + kSize, + kHTTPContext } = require_symbols6(); var kOpenStreams = Symbol("open streams"); var h2ExperimentalWarned = false; @@ -25632,9 +25634,10 @@ var require_client_h2 = __commonJS({ version: "h2", defaultPipelining: Infinity, write(...args) { - writeH2(client, ...args); + return writeH2(client, ...args); }, resume() { + resumeH2(client); }, destroy(err, callback) { if (closed) { @@ -25651,6 +25654,18 @@ var require_client_h2 = __commonJS({ } }; } + function resumeH2(client) { + const socket = client[kSocket]; + if ((socket == null ? void 0 : socket.destroyed) === false) { + if (client[kSize] === 0 && client[kMaxConcurrentStreams] === 0) { + socket.unref(); + client[kHTTP2Session].unref(); + } else { + socket.ref(); + client[kHTTP2Session].ref(); + } + } + } function onHttp2SessionError(err) { assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); this[kSocket][kError] = err; @@ -25669,11 +25684,22 @@ var require_client_h2 = __commonJS({ util.destroy(this[kSocket], err); } function onHTTP2GoAway(code) { - const err = new RequestAbortedError(`HTTP/2: "GOAWAY" frame received with code ${code}`); - this[kSocket][kError] = err; - this[kClient][kOnError](err); - this.unref(); + const err = this[kError] || new SocketError(`HTTP/2: "GOAWAY" frame received with code ${code}`, util.getSocketInfo(this)); + const client = this[kClient]; + client[kSocket] = null; + client[kHTTPContext] = null; + if (this[kHTTP2Session] != null) { + this[kHTTP2Session].destroy(err); + this[kHTTP2Session] = null; + } util.destroy(this[kSocket], err); + const request2 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + util.errorRequest(client, request2, err); + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit("disconnect", client[kUrl], [client], err); + client[kResume](); } function shouldSendContentLength(method) { return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT"; @@ -25685,9 +25711,6 @@ var require_client_h2 = __commonJS({ util.errorRequest(client, request2, new Error("Upgrade not supported for H2")); return false; } - if (request2.aborted) { - return false; - } const headers = {}; for (let n = 0; n < reqHeaders.length; n += 2) { const key = reqHeaders[n + 0]; @@ -25718,22 +25741,29 @@ var require_client_h2 = __commonJS({ util.destroy(stream, err); } util.destroy(body, err); + client[kQueue][client[kRunningIdx]++] = null; + client[kResume](); }; try { request2.onConnect(abort); } catch (err) { util.errorRequest(client, request2, err); } + if (request2.aborted) { + return false; + } if (method === "CONNECT") { session.ref(); stream = session.request(headers, { endStream: false, signal }); if (stream.id && !stream.pending) { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; } else { stream.once("ready", () => { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; }); } stream.once("close", () => { @@ -25803,12 +25833,14 @@ var require_client_h2 = __commonJS({ var _a2; if (((_a2 = stream.state) == null ? void 0 : _a2.state) == null || stream.state.state < 6) { request2.onComplete([]); - return; } if (session[kOpenStreams] === 0) { session.unref(); } abort(new InformationalError("HTTP/2: stream half-closed (remote)")); + client[kQueue][client[kRunningIdx]++] = null; + client[kPendingIdx] = client[kRunningIdx]; + client[kResume](); }); stream.once("close", () => { session[kOpenStreams] -= 1; @@ -26251,6 +26283,8 @@ var require_client2 = __commonJS({ var connectH2 = require_client_h2(); var deprecatedInterceptorWarned = false; var kClosedResolve = Symbol("kClosedResolve"); + var noop2 = () => { + }; function getPipelining(client) { var _a2; return client[kPipelining] ?? ((_a2 = client[kHTTPContext]) == null ? void 0 : _a2.defaultPipelining) ?? 1; @@ -26535,16 +26569,14 @@ var require_client2 = __commonJS({ }); }); if (client.destroyed) { - util.destroy(socket.on("error", () => { - }), new ClientDestroyedError()); + util.destroy(socket.on("error", noop2), new ClientDestroyedError()); return; } assert(socket); try { client[kHTTPContext] = socket.alpnProtocol === "h2" ? await connectH2(client, socket) : await connectH1(client, socket); } catch (err) { - socket.destroy().on("error", () => { - }); + socket.destroy().on("error", noop2); throw err; } client[kConnecting] = false; @@ -26867,9 +26899,9 @@ var require_pool_base2 = __commonJS({ } async [kClose]() { if (this[kQueue].isEmpty()) { - return Promise.all(this[kClients].map((c) => c.close())); + await Promise.all(this[kClients].map((c) => c.close())); } else { - return new Promise((resolve) => { + await new Promise((resolve) => { this[kClosedResolve] = resolve; }); } @@ -26882,7 +26914,7 @@ var require_pool_base2 = __commonJS({ } item.handler.onError(err); } - return Promise.all(this[kClients].map((c) => c.destroy(err))); + await Promise.all(this[kClients].map((c) => c.destroy(err))); } [kDispatch](opts, handler2) { const dispatcher = this[kGetDispatcher](); @@ -27280,6 +27312,8 @@ var require_proxy_agent2 = __commonJS({ function defaultFactory(origin, opts) { return new Pool(origin, opts); } + var noop2 = () => { + }; var ProxyAgent = class extends DispatcherBase { constructor(opts) { var _a2; @@ -27331,8 +27365,7 @@ var require_proxy_agent2 = __commonJS({ servername: ((_a3 = this[kProxyTls]) == null ? void 0 : _a3.servername) || proxyHostname }); if (statusCode !== 200) { - socket.on("error", () => { - }).destroy(); + socket.on("error", noop2).destroy(); callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)); } if (opts2.protocol !== "https:") { @@ -27963,6 +27996,9 @@ var require_readable2 = __commonJS({ async blob() { return consume(this, "blob"); } + async bytes() { + return consume(this, "bytes"); + } async arrayBuffer() { return consume(this, "arrayBuffer"); } @@ -28094,6 +28130,22 @@ var require_readable2 = __commonJS({ const start = bufferLength > 2 && buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191 ? 3 : 0; return buffer.utf8Slice(start, bufferLength); } + function chunksConcat(chunks, length) { + if (chunks.length === 0 || length === 0) { + return new Uint8Array(0); + } + if (chunks.length === 1) { + return new Uint8Array(chunks[0]); + } + const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer); + let offset = 0; + for (let i = 0; i < chunks.length; ++i) { + const chunk = chunks[i]; + buffer.set(chunk, offset); + offset += chunk.length; + } + return buffer; + } function consumeEnd(consume2) { const { type, body, resolve, stream, length } = consume2; try { @@ -28102,15 +28154,11 @@ var require_readable2 = __commonJS({ } else if (type === "json") { resolve(JSON.parse(chunksDecode(body, length))); } else if (type === "arrayBuffer") { - const dst = new Uint8Array(length); - let pos = 0; - for (const buf of body) { - dst.set(buf, pos); - pos += buf.byteLength; - } - resolve(dst.buffer); + resolve(chunksConcat(body, length).buffer); } else if (type === "blob") { resolve(new Blob(body, { type: stream[kContentType] })); + } else if (type === "bytes") { + resolve(chunksConcat(body, length)); } consumeFinish(consume2); } catch (err) { diff --git a/github-actions/commit-message-based-labels/main.js b/github-actions/commit-message-based-labels/main.js index bb8fab2e7..82a71ebea 100644 --- a/github-actions/commit-message-based-labels/main.js +++ b/github-actions/commit-message-based-labels/main.js @@ -25119,7 +25119,7 @@ var require_client_h1 = __commonJS({ function writeH1(client, request2) { const { method, path, host, upgrade, blocking, reset } = request2; let { body, headers, contentLength } = request2; - const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH"; if (util.isFormDataLike(body)) { if (!extractBody) { extractBody = require_body2().extractBody; @@ -25327,7 +25327,7 @@ upgrade: ${upgrade}\r socket.write(body); socket.uncork(); request2.onBodySent(body); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } } @@ -25352,7 +25352,7 @@ upgrade: ${upgrade}\r socket.uncork(); request2.onBodySent(buffer); request2.onRequestSent(); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } client[kResume](); @@ -25428,7 +25428,7 @@ upgrade: ${upgrade}\r } socket.cork(); if (bytesWritten === 0) { - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } if (contentLength === null) { @@ -25535,7 +25535,9 @@ var require_client_h2 = __commonJS({ kOnError, kMaxConcurrentStreams, kHTTP2Session, - kResume + kResume, + kSize, + kHTTPContext } = require_symbols6(); var kOpenStreams = Symbol("open streams"); var h2ExperimentalWarned = false; @@ -25632,9 +25634,10 @@ var require_client_h2 = __commonJS({ version: "h2", defaultPipelining: Infinity, write(...args) { - writeH2(client, ...args); + return writeH2(client, ...args); }, resume() { + resumeH2(client); }, destroy(err, callback) { if (closed) { @@ -25651,6 +25654,18 @@ var require_client_h2 = __commonJS({ } }; } + function resumeH2(client) { + const socket = client[kSocket]; + if ((socket == null ? void 0 : socket.destroyed) === false) { + if (client[kSize] === 0 && client[kMaxConcurrentStreams] === 0) { + socket.unref(); + client[kHTTP2Session].unref(); + } else { + socket.ref(); + client[kHTTP2Session].ref(); + } + } + } function onHttp2SessionError(err) { assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); this[kSocket][kError] = err; @@ -25669,11 +25684,22 @@ var require_client_h2 = __commonJS({ util.destroy(this[kSocket], err); } function onHTTP2GoAway(code) { - const err = new RequestAbortedError(`HTTP/2: "GOAWAY" frame received with code ${code}`); - this[kSocket][kError] = err; - this[kClient][kOnError](err); - this.unref(); + const err = this[kError] || new SocketError(`HTTP/2: "GOAWAY" frame received with code ${code}`, util.getSocketInfo(this)); + const client = this[kClient]; + client[kSocket] = null; + client[kHTTPContext] = null; + if (this[kHTTP2Session] != null) { + this[kHTTP2Session].destroy(err); + this[kHTTP2Session] = null; + } util.destroy(this[kSocket], err); + const request2 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + util.errorRequest(client, request2, err); + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit("disconnect", client[kUrl], [client], err); + client[kResume](); } function shouldSendContentLength(method) { return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT"; @@ -25685,9 +25711,6 @@ var require_client_h2 = __commonJS({ util.errorRequest(client, request2, new Error("Upgrade not supported for H2")); return false; } - if (request2.aborted) { - return false; - } const headers = {}; for (let n = 0; n < reqHeaders.length; n += 2) { const key = reqHeaders[n + 0]; @@ -25718,22 +25741,29 @@ var require_client_h2 = __commonJS({ util.destroy(stream, err); } util.destroy(body, err); + client[kQueue][client[kRunningIdx]++] = null; + client[kResume](); }; try { request2.onConnect(abort); } catch (err) { util.errorRequest(client, request2, err); } + if (request2.aborted) { + return false; + } if (method === "CONNECT") { session.ref(); stream = session.request(headers, { endStream: false, signal }); if (stream.id && !stream.pending) { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; } else { stream.once("ready", () => { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; }); } stream.once("close", () => { @@ -25803,12 +25833,14 @@ var require_client_h2 = __commonJS({ var _a3; if (((_a3 = stream.state) == null ? void 0 : _a3.state) == null || stream.state.state < 6) { request2.onComplete([]); - return; } if (session[kOpenStreams] === 0) { session.unref(); } abort(new InformationalError("HTTP/2: stream half-closed (remote)")); + client[kQueue][client[kRunningIdx]++] = null; + client[kPendingIdx] = client[kRunningIdx]; + client[kResume](); }); stream.once("close", () => { session[kOpenStreams] -= 1; @@ -26251,6 +26283,8 @@ var require_client2 = __commonJS({ var connectH2 = require_client_h2(); var deprecatedInterceptorWarned = false; var kClosedResolve = Symbol("kClosedResolve"); + var noop2 = () => { + }; function getPipelining(client) { var _a3; return client[kPipelining] ?? ((_a3 = client[kHTTPContext]) == null ? void 0 : _a3.defaultPipelining) ?? 1; @@ -26535,16 +26569,14 @@ var require_client2 = __commonJS({ }); }); if (client.destroyed) { - util.destroy(socket.on("error", () => { - }), new ClientDestroyedError()); + util.destroy(socket.on("error", noop2), new ClientDestroyedError()); return; } assert(socket); try { client[kHTTPContext] = socket.alpnProtocol === "h2" ? await connectH2(client, socket) : await connectH1(client, socket); } catch (err) { - socket.destroy().on("error", () => { - }); + socket.destroy().on("error", noop2); throw err; } client[kConnecting] = false; @@ -26867,9 +26899,9 @@ var require_pool_base2 = __commonJS({ } async [kClose]() { if (this[kQueue].isEmpty()) { - return Promise.all(this[kClients].map((c) => c.close())); + await Promise.all(this[kClients].map((c) => c.close())); } else { - return new Promise((resolve) => { + await new Promise((resolve) => { this[kClosedResolve] = resolve; }); } @@ -26882,7 +26914,7 @@ var require_pool_base2 = __commonJS({ } item.handler.onError(err); } - return Promise.all(this[kClients].map((c) => c.destroy(err))); + await Promise.all(this[kClients].map((c) => c.destroy(err))); } [kDispatch](opts, handler2) { const dispatcher = this[kGetDispatcher](); @@ -27280,6 +27312,8 @@ var require_proxy_agent2 = __commonJS({ function defaultFactory(origin, opts) { return new Pool(origin, opts); } + var noop2 = () => { + }; var ProxyAgent = class extends DispatcherBase { constructor(opts) { var _a3; @@ -27331,8 +27365,7 @@ var require_proxy_agent2 = __commonJS({ servername: ((_a4 = this[kProxyTls]) == null ? void 0 : _a4.servername) || proxyHostname }); if (statusCode !== 200) { - socket.on("error", () => { - }).destroy(); + socket.on("error", noop2).destroy(); callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)); } if (opts2.protocol !== "https:") { @@ -27963,6 +27996,9 @@ var require_readable2 = __commonJS({ async blob() { return consume(this, "blob"); } + async bytes() { + return consume(this, "bytes"); + } async arrayBuffer() { return consume(this, "arrayBuffer"); } @@ -28094,6 +28130,22 @@ var require_readable2 = __commonJS({ const start = bufferLength > 2 && buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191 ? 3 : 0; return buffer.utf8Slice(start, bufferLength); } + function chunksConcat(chunks, length) { + if (chunks.length === 0 || length === 0) { + return new Uint8Array(0); + } + if (chunks.length === 1) { + return new Uint8Array(chunks[0]); + } + const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer); + let offset = 0; + for (let i = 0; i < chunks.length; ++i) { + const chunk = chunks[i]; + buffer.set(chunk, offset); + offset += chunk.length; + } + return buffer; + } function consumeEnd(consume2) { const { type, body, resolve, stream, length } = consume2; try { @@ -28102,15 +28154,11 @@ var require_readable2 = __commonJS({ } else if (type === "json") { resolve(JSON.parse(chunksDecode(body, length))); } else if (type === "arrayBuffer") { - const dst = new Uint8Array(length); - let pos = 0; - for (const buf of body) { - dst.set(buf, pos); - pos += buf.byteLength; - } - resolve(dst.buffer); + resolve(chunksConcat(body, length).buffer); } else if (type === "blob") { resolve(new Blob(body, { type: stream[kContentType] })); + } else if (type === "bytes") { + resolve(chunksConcat(body, length)); } consumeFinish(consume2); } catch (err) { diff --git a/github-actions/create-pr-for-changes/main.js b/github-actions/create-pr-for-changes/main.js index 58c32b0d2..b09007631 100644 --- a/github-actions/create-pr-for-changes/main.js +++ b/github-actions/create-pr-for-changes/main.js @@ -25114,7 +25114,7 @@ var require_client_h1 = __commonJS({ function writeH1(client, request2) { const { method, path, host, upgrade, blocking, reset: reset2 } = request2; let { body, headers, contentLength } = request2; - const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH"; if (util.isFormDataLike(body)) { if (!extractBody) { extractBody = require_body2().extractBody; @@ -25322,7 +25322,7 @@ upgrade: ${upgrade}\r socket.write(body); socket.uncork(); request2.onBodySent(body); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } } @@ -25347,7 +25347,7 @@ upgrade: ${upgrade}\r socket.uncork(); request2.onBodySent(buffer); request2.onRequestSent(); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } client[kResume](); @@ -25423,7 +25423,7 @@ upgrade: ${upgrade}\r } socket.cork(); if (bytesWritten === 0) { - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } if (contentLength === null) { @@ -25530,7 +25530,9 @@ var require_client_h2 = __commonJS({ kOnError, kMaxConcurrentStreams, kHTTP2Session, - kResume + kResume, + kSize, + kHTTPContext } = require_symbols6(); var kOpenStreams = Symbol("open streams"); var h2ExperimentalWarned = false; @@ -25627,9 +25629,10 @@ var require_client_h2 = __commonJS({ version: "h2", defaultPipelining: Infinity, write(...args) { - writeH2(client, ...args); + return writeH2(client, ...args); }, resume() { + resumeH2(client); }, destroy(err, callback) { if (closed) { @@ -25646,6 +25649,18 @@ var require_client_h2 = __commonJS({ } }; } + function resumeH2(client) { + const socket = client[kSocket]; + if ((socket == null ? void 0 : socket.destroyed) === false) { + if (client[kSize] === 0 && client[kMaxConcurrentStreams] === 0) { + socket.unref(); + client[kHTTP2Session].unref(); + } else { + socket.ref(); + client[kHTTP2Session].ref(); + } + } + } function onHttp2SessionError(err) { assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); this[kSocket][kError] = err; @@ -25664,11 +25679,22 @@ var require_client_h2 = __commonJS({ util.destroy(this[kSocket], err); } function onHTTP2GoAway(code) { - const err = new RequestAbortedError(`HTTP/2: "GOAWAY" frame received with code ${code}`); - this[kSocket][kError] = err; - this[kClient][kOnError](err); - this.unref(); + const err = this[kError] || new SocketError(`HTTP/2: "GOAWAY" frame received with code ${code}`, util.getSocketInfo(this)); + const client = this[kClient]; + client[kSocket] = null; + client[kHTTPContext] = null; + if (this[kHTTP2Session] != null) { + this[kHTTP2Session].destroy(err); + this[kHTTP2Session] = null; + } util.destroy(this[kSocket], err); + const request2 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + util.errorRequest(client, request2, err); + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit("disconnect", client[kUrl], [client], err); + client[kResume](); } function shouldSendContentLength(method) { return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT"; @@ -25680,9 +25706,6 @@ var require_client_h2 = __commonJS({ util.errorRequest(client, request2, new Error("Upgrade not supported for H2")); return false; } - if (request2.aborted) { - return false; - } const headers = {}; for (let n = 0; n < reqHeaders.length; n += 2) { const key = reqHeaders[n + 0]; @@ -25713,22 +25736,29 @@ var require_client_h2 = __commonJS({ util.destroy(stream, err); } util.destroy(body, err); + client[kQueue][client[kRunningIdx]++] = null; + client[kResume](); }; try { request2.onConnect(abort); } catch (err) { util.errorRequest(client, request2, err); } + if (request2.aborted) { + return false; + } if (method === "CONNECT") { session.ref(); stream = session.request(headers, { endStream: false, signal }); if (stream.id && !stream.pending) { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; } else { stream.once("ready", () => { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; }); } stream.once("close", () => { @@ -25798,12 +25828,14 @@ var require_client_h2 = __commonJS({ var _a; if (((_a = stream.state) == null ? void 0 : _a.state) == null || stream.state.state < 6) { request2.onComplete([]); - return; } if (session[kOpenStreams] === 0) { session.unref(); } abort(new InformationalError("HTTP/2: stream half-closed (remote)")); + client[kQueue][client[kRunningIdx]++] = null; + client[kPendingIdx] = client[kRunningIdx]; + client[kResume](); }); stream.once("close", () => { session[kOpenStreams] -= 1; @@ -26246,6 +26278,8 @@ var require_client2 = __commonJS({ var connectH2 = require_client_h2(); var deprecatedInterceptorWarned = false; var kClosedResolve = Symbol("kClosedResolve"); + var noop2 = () => { + }; function getPipelining(client) { var _a; return client[kPipelining] ?? ((_a = client[kHTTPContext]) == null ? void 0 : _a.defaultPipelining) ?? 1; @@ -26530,16 +26564,14 @@ var require_client2 = __commonJS({ }); }); if (client.destroyed) { - util.destroy(socket.on("error", () => { - }), new ClientDestroyedError()); + util.destroy(socket.on("error", noop2), new ClientDestroyedError()); return; } assert(socket); try { client[kHTTPContext] = socket.alpnProtocol === "h2" ? await connectH2(client, socket) : await connectH1(client, socket); } catch (err) { - socket.destroy().on("error", () => { - }); + socket.destroy().on("error", noop2); throw err; } client[kConnecting] = false; @@ -26862,9 +26894,9 @@ var require_pool_base2 = __commonJS({ } async [kClose]() { if (this[kQueue].isEmpty()) { - return Promise.all(this[kClients].map((c) => c.close())); + await Promise.all(this[kClients].map((c) => c.close())); } else { - return new Promise((resolve) => { + await new Promise((resolve) => { this[kClosedResolve] = resolve; }); } @@ -26877,7 +26909,7 @@ var require_pool_base2 = __commonJS({ } item.handler.onError(err); } - return Promise.all(this[kClients].map((c) => c.destroy(err))); + await Promise.all(this[kClients].map((c) => c.destroy(err))); } [kDispatch](opts, handler2) { const dispatcher = this[kGetDispatcher](); @@ -27275,6 +27307,8 @@ var require_proxy_agent2 = __commonJS({ function defaultFactory(origin, opts) { return new Pool(origin, opts); } + var noop2 = () => { + }; var ProxyAgent = class extends DispatcherBase { constructor(opts) { var _a; @@ -27326,8 +27360,7 @@ var require_proxy_agent2 = __commonJS({ servername: ((_a2 = this[kProxyTls]) == null ? void 0 : _a2.servername) || proxyHostname }); if (statusCode !== 200) { - socket.on("error", () => { - }).destroy(); + socket.on("error", noop2).destroy(); callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)); } if (opts2.protocol !== "https:") { @@ -27958,6 +27991,9 @@ var require_readable2 = __commonJS({ async blob() { return consume(this, "blob"); } + async bytes() { + return consume(this, "bytes"); + } async arrayBuffer() { return consume(this, "arrayBuffer"); } @@ -28089,6 +28125,22 @@ var require_readable2 = __commonJS({ const start = bufferLength > 2 && buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191 ? 3 : 0; return buffer.utf8Slice(start, bufferLength); } + function chunksConcat(chunks, length) { + if (chunks.length === 0 || length === 0) { + return new Uint8Array(0); + } + if (chunks.length === 1) { + return new Uint8Array(chunks[0]); + } + const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer); + let offset = 0; + for (let i = 0; i < chunks.length; ++i) { + const chunk = chunks[i]; + buffer.set(chunk, offset); + offset += chunk.length; + } + return buffer; + } function consumeEnd(consume2) { const { type, body, resolve, stream, length } = consume2; try { @@ -28097,15 +28149,11 @@ var require_readable2 = __commonJS({ } else if (type === "json") { resolve(JSON.parse(chunksDecode(body, length))); } else if (type === "arrayBuffer") { - const dst = new Uint8Array(length); - let pos = 0; - for (const buf of body) { - dst.set(buf, pos); - pos += buf.byteLength; - } - resolve(dst.buffer); + resolve(chunksConcat(body, length).buffer); } else if (type === "blob") { resolve(new Blob(body, { type: stream[kContentType] })); + } else if (type === "bytes") { + resolve(chunksConcat(body, length)); } consumeFinish(consume2); } catch (err) { diff --git a/github-actions/feature-request/main.js b/github-actions/feature-request/main.js index eb22f3024..72f687a33 100644 --- a/github-actions/feature-request/main.js +++ b/github-actions/feature-request/main.js @@ -25119,7 +25119,7 @@ var require_client_h1 = __commonJS({ function writeH1(client, request2) { const { method, path, host, upgrade, blocking, reset } = request2; let { body, headers, contentLength } = request2; - const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH"; if (util.isFormDataLike(body)) { if (!extractBody) { extractBody = require_body2().extractBody; @@ -25327,7 +25327,7 @@ upgrade: ${upgrade}\r socket.write(body); socket.uncork(); request2.onBodySent(body); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } } @@ -25352,7 +25352,7 @@ upgrade: ${upgrade}\r socket.uncork(); request2.onBodySent(buffer); request2.onRequestSent(); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } client[kResume](); @@ -25428,7 +25428,7 @@ upgrade: ${upgrade}\r } socket.cork(); if (bytesWritten === 0) { - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } if (contentLength === null) { @@ -25535,7 +25535,9 @@ var require_client_h2 = __commonJS({ kOnError, kMaxConcurrentStreams, kHTTP2Session, - kResume + kResume, + kSize, + kHTTPContext } = require_symbols6(); var kOpenStreams = Symbol("open streams"); var h2ExperimentalWarned = false; @@ -25632,9 +25634,10 @@ var require_client_h2 = __commonJS({ version: "h2", defaultPipelining: Infinity, write(...args) { - writeH2(client, ...args); + return writeH2(client, ...args); }, resume() { + resumeH2(client); }, destroy(err, callback) { if (closed) { @@ -25651,6 +25654,18 @@ var require_client_h2 = __commonJS({ } }; } + function resumeH2(client) { + const socket = client[kSocket]; + if ((socket == null ? void 0 : socket.destroyed) === false) { + if (client[kSize] === 0 && client[kMaxConcurrentStreams] === 0) { + socket.unref(); + client[kHTTP2Session].unref(); + } else { + socket.ref(); + client[kHTTP2Session].ref(); + } + } + } function onHttp2SessionError(err) { assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); this[kSocket][kError] = err; @@ -25669,11 +25684,22 @@ var require_client_h2 = __commonJS({ util.destroy(this[kSocket], err); } function onHTTP2GoAway(code) { - const err = new RequestAbortedError(`HTTP/2: "GOAWAY" frame received with code ${code}`); - this[kSocket][kError] = err; - this[kClient][kOnError](err); - this.unref(); + const err = this[kError] || new SocketError(`HTTP/2: "GOAWAY" frame received with code ${code}`, util.getSocketInfo(this)); + const client = this[kClient]; + client[kSocket] = null; + client[kHTTPContext] = null; + if (this[kHTTP2Session] != null) { + this[kHTTP2Session].destroy(err); + this[kHTTP2Session] = null; + } util.destroy(this[kSocket], err); + const request2 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + util.errorRequest(client, request2, err); + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit("disconnect", client[kUrl], [client], err); + client[kResume](); } function shouldSendContentLength(method) { return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT"; @@ -25685,9 +25711,6 @@ var require_client_h2 = __commonJS({ util.errorRequest(client, request2, new Error("Upgrade not supported for H2")); return false; } - if (request2.aborted) { - return false; - } const headers = {}; for (let n = 0; n < reqHeaders.length; n += 2) { const key = reqHeaders[n + 0]; @@ -25718,22 +25741,29 @@ var require_client_h2 = __commonJS({ util.destroy(stream, err); } util.destroy(body, err); + client[kQueue][client[kRunningIdx]++] = null; + client[kResume](); }; try { request2.onConnect(abort); } catch (err) { util.errorRequest(client, request2, err); } + if (request2.aborted) { + return false; + } if (method === "CONNECT") { session.ref(); stream = session.request(headers, { endStream: false, signal }); if (stream.id && !stream.pending) { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; } else { stream.once("ready", () => { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; }); } stream.once("close", () => { @@ -25803,12 +25833,14 @@ var require_client_h2 = __commonJS({ var _a2; if (((_a2 = stream.state) == null ? void 0 : _a2.state) == null || stream.state.state < 6) { request2.onComplete([]); - return; } if (session[kOpenStreams] === 0) { session.unref(); } abort(new InformationalError("HTTP/2: stream half-closed (remote)")); + client[kQueue][client[kRunningIdx]++] = null; + client[kPendingIdx] = client[kRunningIdx]; + client[kResume](); }); stream.once("close", () => { session[kOpenStreams] -= 1; @@ -26251,6 +26283,8 @@ var require_client2 = __commonJS({ var connectH2 = require_client_h2(); var deprecatedInterceptorWarned = false; var kClosedResolve = Symbol("kClosedResolve"); + var noop2 = () => { + }; function getPipelining(client) { var _a2; return client[kPipelining] ?? ((_a2 = client[kHTTPContext]) == null ? void 0 : _a2.defaultPipelining) ?? 1; @@ -26535,16 +26569,14 @@ var require_client2 = __commonJS({ }); }); if (client.destroyed) { - util.destroy(socket.on("error", () => { - }), new ClientDestroyedError()); + util.destroy(socket.on("error", noop2), new ClientDestroyedError()); return; } assert(socket); try { client[kHTTPContext] = socket.alpnProtocol === "h2" ? await connectH2(client, socket) : await connectH1(client, socket); } catch (err) { - socket.destroy().on("error", () => { - }); + socket.destroy().on("error", noop2); throw err; } client[kConnecting] = false; @@ -26867,9 +26899,9 @@ var require_pool_base2 = __commonJS({ } async [kClose]() { if (this[kQueue].isEmpty()) { - return Promise.all(this[kClients].map((c) => c.close())); + await Promise.all(this[kClients].map((c) => c.close())); } else { - return new Promise((resolve) => { + await new Promise((resolve) => { this[kClosedResolve] = resolve; }); } @@ -26882,7 +26914,7 @@ var require_pool_base2 = __commonJS({ } item.handler.onError(err); } - return Promise.all(this[kClients].map((c) => c.destroy(err))); + await Promise.all(this[kClients].map((c) => c.destroy(err))); } [kDispatch](opts, handler2) { const dispatcher = this[kGetDispatcher](); @@ -27280,6 +27312,8 @@ var require_proxy_agent2 = __commonJS({ function defaultFactory(origin, opts) { return new Pool(origin, opts); } + var noop2 = () => { + }; var ProxyAgent = class extends DispatcherBase { constructor(opts) { var _a2; @@ -27331,8 +27365,7 @@ var require_proxy_agent2 = __commonJS({ servername: ((_a3 = this[kProxyTls]) == null ? void 0 : _a3.servername) || proxyHostname }); if (statusCode !== 200) { - socket.on("error", () => { - }).destroy(); + socket.on("error", noop2).destroy(); callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)); } if (opts2.protocol !== "https:") { @@ -27963,6 +27996,9 @@ var require_readable2 = __commonJS({ async blob() { return consume(this, "blob"); } + async bytes() { + return consume(this, "bytes"); + } async arrayBuffer() { return consume(this, "arrayBuffer"); } @@ -28094,6 +28130,22 @@ var require_readable2 = __commonJS({ const start = bufferLength > 2 && buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191 ? 3 : 0; return buffer.utf8Slice(start, bufferLength); } + function chunksConcat(chunks, length) { + if (chunks.length === 0 || length === 0) { + return new Uint8Array(0); + } + if (chunks.length === 1) { + return new Uint8Array(chunks[0]); + } + const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer); + let offset = 0; + for (let i = 0; i < chunks.length; ++i) { + const chunk = chunks[i]; + buffer.set(chunk, offset); + offset += chunk.length; + } + return buffer; + } function consumeEnd(consume2) { const { type, body, resolve, stream, length } = consume2; try { @@ -28102,15 +28154,11 @@ var require_readable2 = __commonJS({ } else if (type === "json") { resolve(JSON.parse(chunksDecode(body, length))); } else if (type === "arrayBuffer") { - const dst = new Uint8Array(length); - let pos = 0; - for (const buf of body) { - dst.set(buf, pos); - pos += buf.byteLength; - } - resolve(dst.buffer); + resolve(chunksConcat(body, length).buffer); } else if (type === "blob") { resolve(new Blob(body, { type: stream[kContentType] })); + } else if (type === "bytes") { + resolve(chunksConcat(body, length)); } consumeFinish(consume2); } catch (err) { diff --git a/github-actions/google-internal-tests/main.js b/github-actions/google-internal-tests/main.js index 77af23baa..46aead5a8 100644 --- a/github-actions/google-internal-tests/main.js +++ b/github-actions/google-internal-tests/main.js @@ -25118,7 +25118,7 @@ var require_client_h1 = __commonJS({ function writeH1(client, request2) { const { method, path: path3, host, upgrade, blocking, reset } = request2; let { body, headers, contentLength } = request2; - const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH"; if (util.isFormDataLike(body)) { if (!extractBody) { extractBody = require_body2().extractBody; @@ -25326,7 +25326,7 @@ upgrade: ${upgrade}\r socket.write(body); socket.uncork(); request2.onBodySent(body); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } } @@ -25351,7 +25351,7 @@ upgrade: ${upgrade}\r socket.uncork(); request2.onBodySent(buffer); request2.onRequestSent(); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } client[kResume](); @@ -25427,7 +25427,7 @@ upgrade: ${upgrade}\r } socket.cork(); if (bytesWritten === 0) { - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } if (contentLength === null) { @@ -25534,7 +25534,9 @@ var require_client_h2 = __commonJS({ kOnError, kMaxConcurrentStreams, kHTTP2Session, - kResume + kResume, + kSize, + kHTTPContext } = require_symbols6(); var kOpenStreams = Symbol("open streams"); var h2ExperimentalWarned = false; @@ -25631,9 +25633,10 @@ var require_client_h2 = __commonJS({ version: "h2", defaultPipelining: Infinity, write(...args) { - writeH2(client, ...args); + return writeH2(client, ...args); }, resume() { + resumeH2(client); }, destroy(err, callback) { if (closed) { @@ -25650,6 +25653,18 @@ var require_client_h2 = __commonJS({ } }; } + function resumeH2(client) { + const socket = client[kSocket]; + if ((socket == null ? void 0 : socket.destroyed) === false) { + if (client[kSize] === 0 && client[kMaxConcurrentStreams] === 0) { + socket.unref(); + client[kHTTP2Session].unref(); + } else { + socket.ref(); + client[kHTTP2Session].ref(); + } + } + } function onHttp2SessionError(err) { assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); this[kSocket][kError] = err; @@ -25668,11 +25683,22 @@ var require_client_h2 = __commonJS({ util.destroy(this[kSocket], err); } function onHTTP2GoAway(code) { - const err = new RequestAbortedError(`HTTP/2: "GOAWAY" frame received with code ${code}`); - this[kSocket][kError] = err; - this[kClient][kOnError](err); - this.unref(); + const err = this[kError] || new SocketError(`HTTP/2: "GOAWAY" frame received with code ${code}`, util.getSocketInfo(this)); + const client = this[kClient]; + client[kSocket] = null; + client[kHTTPContext] = null; + if (this[kHTTP2Session] != null) { + this[kHTTP2Session].destroy(err); + this[kHTTP2Session] = null; + } util.destroy(this[kSocket], err); + const request2 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + util.errorRequest(client, request2, err); + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit("disconnect", client[kUrl], [client], err); + client[kResume](); } function shouldSendContentLength(method) { return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT"; @@ -25684,9 +25710,6 @@ var require_client_h2 = __commonJS({ util.errorRequest(client, request2, new Error("Upgrade not supported for H2")); return false; } - if (request2.aborted) { - return false; - } const headers = {}; for (let n = 0; n < reqHeaders.length; n += 2) { const key = reqHeaders[n + 0]; @@ -25717,22 +25740,29 @@ var require_client_h2 = __commonJS({ util.destroy(stream, err); } util.destroy(body, err); + client[kQueue][client[kRunningIdx]++] = null; + client[kResume](); }; try { request2.onConnect(abort); } catch (err) { util.errorRequest(client, request2, err); } + if (request2.aborted) { + return false; + } if (method === "CONNECT") { session.ref(); stream = session.request(headers, { endStream: false, signal }); if (stream.id && !stream.pending) { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; } else { stream.once("ready", () => { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; }); } stream.once("close", () => { @@ -25802,12 +25832,14 @@ var require_client_h2 = __commonJS({ var _a; if (((_a = stream.state) == null ? void 0 : _a.state) == null || stream.state.state < 6) { request2.onComplete([]); - return; } if (session[kOpenStreams] === 0) { session.unref(); } abort(new InformationalError("HTTP/2: stream half-closed (remote)")); + client[kQueue][client[kRunningIdx]++] = null; + client[kPendingIdx] = client[kRunningIdx]; + client[kResume](); }); stream.once("close", () => { session[kOpenStreams] -= 1; @@ -26250,6 +26282,8 @@ var require_client2 = __commonJS({ var connectH2 = require_client_h2(); var deprecatedInterceptorWarned = false; var kClosedResolve = Symbol("kClosedResolve"); + var noop2 = () => { + }; function getPipelining(client) { var _a; return client[kPipelining] ?? ((_a = client[kHTTPContext]) == null ? void 0 : _a.defaultPipelining) ?? 1; @@ -26534,16 +26568,14 @@ var require_client2 = __commonJS({ }); }); if (client.destroyed) { - util.destroy(socket.on("error", () => { - }), new ClientDestroyedError()); + util.destroy(socket.on("error", noop2), new ClientDestroyedError()); return; } assert(socket); try { client[kHTTPContext] = socket.alpnProtocol === "h2" ? await connectH2(client, socket) : await connectH1(client, socket); } catch (err) { - socket.destroy().on("error", () => { - }); + socket.destroy().on("error", noop2); throw err; } client[kConnecting] = false; @@ -26866,9 +26898,9 @@ var require_pool_base2 = __commonJS({ } async [kClose]() { if (this[kQueue].isEmpty()) { - return Promise.all(this[kClients].map((c) => c.close())); + await Promise.all(this[kClients].map((c) => c.close())); } else { - return new Promise((resolve) => { + await new Promise((resolve) => { this[kClosedResolve] = resolve; }); } @@ -26881,7 +26913,7 @@ var require_pool_base2 = __commonJS({ } item.handler.onError(err); } - return Promise.all(this[kClients].map((c) => c.destroy(err))); + await Promise.all(this[kClients].map((c) => c.destroy(err))); } [kDispatch](opts, handler2) { const dispatcher = this[kGetDispatcher](); @@ -27279,6 +27311,8 @@ var require_proxy_agent2 = __commonJS({ function defaultFactory(origin, opts) { return new Pool(origin, opts); } + var noop2 = () => { + }; var ProxyAgent = class extends DispatcherBase { constructor(opts) { var _a; @@ -27330,8 +27364,7 @@ var require_proxy_agent2 = __commonJS({ servername: ((_a2 = this[kProxyTls]) == null ? void 0 : _a2.servername) || proxyHostname }); if (statusCode !== 200) { - socket.on("error", () => { - }).destroy(); + socket.on("error", noop2).destroy(); callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)); } if (opts2.protocol !== "https:") { @@ -27962,6 +27995,9 @@ var require_readable2 = __commonJS({ async blob() { return consume(this, "blob"); } + async bytes() { + return consume(this, "bytes"); + } async arrayBuffer() { return consume(this, "arrayBuffer"); } @@ -28093,6 +28129,22 @@ var require_readable2 = __commonJS({ const start = bufferLength > 2 && buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191 ? 3 : 0; return buffer.utf8Slice(start, bufferLength); } + function chunksConcat(chunks, length) { + if (chunks.length === 0 || length === 0) { + return new Uint8Array(0); + } + if (chunks.length === 1) { + return new Uint8Array(chunks[0]); + } + const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer); + let offset = 0; + for (let i = 0; i < chunks.length; ++i) { + const chunk = chunks[i]; + buffer.set(chunk, offset); + offset += chunk.length; + } + return buffer; + } function consumeEnd(consume2) { const { type, body, resolve, stream, length } = consume2; try { @@ -28101,15 +28153,11 @@ var require_readable2 = __commonJS({ } else if (type === "json") { resolve(JSON.parse(chunksDecode(body, length))); } else if (type === "arrayBuffer") { - const dst = new Uint8Array(length); - let pos = 0; - for (const buf of body) { - dst.set(buf, pos); - pos += buf.byteLength; - } - resolve(dst.buffer); + resolve(chunksConcat(body, length).buffer); } else if (type === "blob") { resolve(new Blob(body, { type: stream[kContentType] })); + } else if (type === "bytes") { + resolve(chunksConcat(body, length)); } consumeFinish(consume2); } catch (err) { diff --git a/github-actions/org-file-sync/main.js b/github-actions/org-file-sync/main.js index 8094403ae..4bc8dfc33 100644 --- a/github-actions/org-file-sync/main.js +++ b/github-actions/org-file-sync/main.js @@ -25119,7 +25119,7 @@ var require_client_h1 = __commonJS({ function writeH1(client, request2) { const { method, path, host, upgrade, blocking, reset } = request2; let { body, headers, contentLength } = request2; - const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH"; if (util.isFormDataLike(body)) { if (!extractBody) { extractBody = require_body2().extractBody; @@ -25327,7 +25327,7 @@ upgrade: ${upgrade}\r socket.write(body); socket.uncork(); request2.onBodySent(body); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } } @@ -25352,7 +25352,7 @@ upgrade: ${upgrade}\r socket.uncork(); request2.onBodySent(buffer); request2.onRequestSent(); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } client[kResume](); @@ -25428,7 +25428,7 @@ upgrade: ${upgrade}\r } socket.cork(); if (bytesWritten === 0) { - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } if (contentLength === null) { @@ -25535,7 +25535,9 @@ var require_client_h2 = __commonJS({ kOnError, kMaxConcurrentStreams, kHTTP2Session, - kResume + kResume, + kSize, + kHTTPContext } = require_symbols6(); var kOpenStreams = Symbol("open streams"); var h2ExperimentalWarned = false; @@ -25632,9 +25634,10 @@ var require_client_h2 = __commonJS({ version: "h2", defaultPipelining: Infinity, write(...args) { - writeH2(client, ...args); + return writeH2(client, ...args); }, resume() { + resumeH2(client); }, destroy(err, callback) { if (closed) { @@ -25651,6 +25654,18 @@ var require_client_h2 = __commonJS({ } }; } + function resumeH2(client) { + const socket = client[kSocket]; + if ((socket == null ? void 0 : socket.destroyed) === false) { + if (client[kSize] === 0 && client[kMaxConcurrentStreams] === 0) { + socket.unref(); + client[kHTTP2Session].unref(); + } else { + socket.ref(); + client[kHTTP2Session].ref(); + } + } + } function onHttp2SessionError(err) { assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); this[kSocket][kError] = err; @@ -25669,11 +25684,22 @@ var require_client_h2 = __commonJS({ util.destroy(this[kSocket], err); } function onHTTP2GoAway(code) { - const err = new RequestAbortedError(`HTTP/2: "GOAWAY" frame received with code ${code}`); - this[kSocket][kError] = err; - this[kClient][kOnError](err); - this.unref(); + const err = this[kError] || new SocketError(`HTTP/2: "GOAWAY" frame received with code ${code}`, util.getSocketInfo(this)); + const client = this[kClient]; + client[kSocket] = null; + client[kHTTPContext] = null; + if (this[kHTTP2Session] != null) { + this[kHTTP2Session].destroy(err); + this[kHTTP2Session] = null; + } util.destroy(this[kSocket], err); + const request2 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + util.errorRequest(client, request2, err); + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit("disconnect", client[kUrl], [client], err); + client[kResume](); } function shouldSendContentLength(method) { return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT"; @@ -25685,9 +25711,6 @@ var require_client_h2 = __commonJS({ util.errorRequest(client, request2, new Error("Upgrade not supported for H2")); return false; } - if (request2.aborted) { - return false; - } const headers = {}; for (let n = 0; n < reqHeaders.length; n += 2) { const key = reqHeaders[n + 0]; @@ -25718,22 +25741,29 @@ var require_client_h2 = __commonJS({ util.destroy(stream, err); } util.destroy(body, err); + client[kQueue][client[kRunningIdx]++] = null; + client[kResume](); }; try { request2.onConnect(abort); } catch (err) { util.errorRequest(client, request2, err); } + if (request2.aborted) { + return false; + } if (method === "CONNECT") { session.ref(); stream = session.request(headers, { endStream: false, signal }); if (stream.id && !stream.pending) { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; } else { stream.once("ready", () => { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; }); } stream.once("close", () => { @@ -25803,12 +25833,14 @@ var require_client_h2 = __commonJS({ var _a2; if (((_a2 = stream.state) == null ? void 0 : _a2.state) == null || stream.state.state < 6) { request2.onComplete([]); - return; } if (session[kOpenStreams] === 0) { session.unref(); } abort(new InformationalError("HTTP/2: stream half-closed (remote)")); + client[kQueue][client[kRunningIdx]++] = null; + client[kPendingIdx] = client[kRunningIdx]; + client[kResume](); }); stream.once("close", () => { session[kOpenStreams] -= 1; @@ -26251,6 +26283,8 @@ var require_client2 = __commonJS({ var connectH2 = require_client_h2(); var deprecatedInterceptorWarned = false; var kClosedResolve = Symbol("kClosedResolve"); + var noop2 = () => { + }; function getPipelining(client) { var _a2; return client[kPipelining] ?? ((_a2 = client[kHTTPContext]) == null ? void 0 : _a2.defaultPipelining) ?? 1; @@ -26535,16 +26569,14 @@ var require_client2 = __commonJS({ }); }); if (client.destroyed) { - util.destroy(socket.on("error", () => { - }), new ClientDestroyedError()); + util.destroy(socket.on("error", noop2), new ClientDestroyedError()); return; } assert(socket); try { client[kHTTPContext] = socket.alpnProtocol === "h2" ? await connectH2(client, socket) : await connectH1(client, socket); } catch (err) { - socket.destroy().on("error", () => { - }); + socket.destroy().on("error", noop2); throw err; } client[kConnecting] = false; @@ -26867,9 +26899,9 @@ var require_pool_base2 = __commonJS({ } async [kClose]() { if (this[kQueue].isEmpty()) { - return Promise.all(this[kClients].map((c) => c.close())); + await Promise.all(this[kClients].map((c) => c.close())); } else { - return new Promise((resolve) => { + await new Promise((resolve) => { this[kClosedResolve] = resolve; }); } @@ -26882,7 +26914,7 @@ var require_pool_base2 = __commonJS({ } item.handler.onError(err); } - return Promise.all(this[kClients].map((c) => c.destroy(err))); + await Promise.all(this[kClients].map((c) => c.destroy(err))); } [kDispatch](opts, handler2) { const dispatcher = this[kGetDispatcher](); @@ -27280,6 +27312,8 @@ var require_proxy_agent2 = __commonJS({ function defaultFactory(origin, opts) { return new Pool(origin, opts); } + var noop2 = () => { + }; var ProxyAgent = class extends DispatcherBase { constructor(opts) { var _a2; @@ -27331,8 +27365,7 @@ var require_proxy_agent2 = __commonJS({ servername: ((_a3 = this[kProxyTls]) == null ? void 0 : _a3.servername) || proxyHostname }); if (statusCode !== 200) { - socket.on("error", () => { - }).destroy(); + socket.on("error", noop2).destroy(); callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)); } if (opts2.protocol !== "https:") { @@ -27963,6 +27996,9 @@ var require_readable2 = __commonJS({ async blob() { return consume(this, "blob"); } + async bytes() { + return consume(this, "bytes"); + } async arrayBuffer() { return consume(this, "arrayBuffer"); } @@ -28094,6 +28130,22 @@ var require_readable2 = __commonJS({ const start = bufferLength > 2 && buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191 ? 3 : 0; return buffer.utf8Slice(start, bufferLength); } + function chunksConcat(chunks, length) { + if (chunks.length === 0 || length === 0) { + return new Uint8Array(0); + } + if (chunks.length === 1) { + return new Uint8Array(chunks[0]); + } + const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer); + let offset = 0; + for (let i = 0; i < chunks.length; ++i) { + const chunk = chunks[i]; + buffer.set(chunk, offset); + offset += chunk.length; + } + return buffer; + } function consumeEnd(consume2) { const { type, body, resolve, stream, length } = consume2; try { @@ -28102,15 +28154,11 @@ var require_readable2 = __commonJS({ } else if (type === "json") { resolve(JSON.parse(chunksDecode(body, length))); } else if (type === "arrayBuffer") { - const dst = new Uint8Array(length); - let pos = 0; - for (const buf of body) { - dst.set(buf, pos); - pos += buf.byteLength; - } - resolve(dst.buffer); + resolve(chunksConcat(body, length).buffer); } else if (type === "blob") { resolve(new Blob(body, { type: stream[kContentType] })); + } else if (type === "bytes") { + resolve(chunksConcat(body, length)); } consumeFinish(consume2); } catch (err) { diff --git a/github-actions/post-approval-changes/main.js b/github-actions/post-approval-changes/main.js index 65dadba6e..99cb9d316 100644 --- a/github-actions/post-approval-changes/main.js +++ b/github-actions/post-approval-changes/main.js @@ -25119,7 +25119,7 @@ var require_client_h1 = __commonJS({ function writeH1(client, request2) { const { method, path, host, upgrade, blocking, reset } = request2; let { body, headers, contentLength } = request2; - const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH"; if (util.isFormDataLike(body)) { if (!extractBody) { extractBody = require_body2().extractBody; @@ -25327,7 +25327,7 @@ upgrade: ${upgrade}\r socket.write(body); socket.uncork(); request2.onBodySent(body); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } } @@ -25352,7 +25352,7 @@ upgrade: ${upgrade}\r socket.uncork(); request2.onBodySent(buffer); request2.onRequestSent(); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } client[kResume](); @@ -25428,7 +25428,7 @@ upgrade: ${upgrade}\r } socket.cork(); if (bytesWritten === 0) { - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } if (contentLength === null) { @@ -25535,7 +25535,9 @@ var require_client_h2 = __commonJS({ kOnError, kMaxConcurrentStreams, kHTTP2Session, - kResume + kResume, + kSize, + kHTTPContext } = require_symbols6(); var kOpenStreams = Symbol("open streams"); var h2ExperimentalWarned = false; @@ -25632,9 +25634,10 @@ var require_client_h2 = __commonJS({ version: "h2", defaultPipelining: Infinity, write(...args) { - writeH2(client, ...args); + return writeH2(client, ...args); }, resume() { + resumeH2(client); }, destroy(err, callback) { if (closed) { @@ -25651,6 +25654,18 @@ var require_client_h2 = __commonJS({ } }; } + function resumeH2(client) { + const socket = client[kSocket]; + if ((socket == null ? void 0 : socket.destroyed) === false) { + if (client[kSize] === 0 && client[kMaxConcurrentStreams] === 0) { + socket.unref(); + client[kHTTP2Session].unref(); + } else { + socket.ref(); + client[kHTTP2Session].ref(); + } + } + } function onHttp2SessionError(err) { assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); this[kSocket][kError] = err; @@ -25669,11 +25684,22 @@ var require_client_h2 = __commonJS({ util.destroy(this[kSocket], err); } function onHTTP2GoAway(code) { - const err = new RequestAbortedError(`HTTP/2: "GOAWAY" frame received with code ${code}`); - this[kSocket][kError] = err; - this[kClient][kOnError](err); - this.unref(); + const err = this[kError] || new SocketError(`HTTP/2: "GOAWAY" frame received with code ${code}`, util.getSocketInfo(this)); + const client = this[kClient]; + client[kSocket] = null; + client[kHTTPContext] = null; + if (this[kHTTP2Session] != null) { + this[kHTTP2Session].destroy(err); + this[kHTTP2Session] = null; + } util.destroy(this[kSocket], err); + const request2 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + util.errorRequest(client, request2, err); + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit("disconnect", client[kUrl], [client], err); + client[kResume](); } function shouldSendContentLength(method) { return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT"; @@ -25685,9 +25711,6 @@ var require_client_h2 = __commonJS({ util.errorRequest(client, request2, new Error("Upgrade not supported for H2")); return false; } - if (request2.aborted) { - return false; - } const headers = {}; for (let n = 0; n < reqHeaders.length; n += 2) { const key = reqHeaders[n + 0]; @@ -25718,22 +25741,29 @@ var require_client_h2 = __commonJS({ util.destroy(stream, err); } util.destroy(body, err); + client[kQueue][client[kRunningIdx]++] = null; + client[kResume](); }; try { request2.onConnect(abort); } catch (err) { util.errorRequest(client, request2, err); } + if (request2.aborted) { + return false; + } if (method === "CONNECT") { session.ref(); stream = session.request(headers, { endStream: false, signal }); if (stream.id && !stream.pending) { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; } else { stream.once("ready", () => { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; }); } stream.once("close", () => { @@ -25803,12 +25833,14 @@ var require_client_h2 = __commonJS({ var _a2; if (((_a2 = stream.state) == null ? void 0 : _a2.state) == null || stream.state.state < 6) { request2.onComplete([]); - return; } if (session[kOpenStreams] === 0) { session.unref(); } abort(new InformationalError("HTTP/2: stream half-closed (remote)")); + client[kQueue][client[kRunningIdx]++] = null; + client[kPendingIdx] = client[kRunningIdx]; + client[kResume](); }); stream.once("close", () => { session[kOpenStreams] -= 1; @@ -26251,6 +26283,8 @@ var require_client2 = __commonJS({ var connectH2 = require_client_h2(); var deprecatedInterceptorWarned = false; var kClosedResolve = Symbol("kClosedResolve"); + var noop2 = () => { + }; function getPipelining(client) { var _a2; return client[kPipelining] ?? ((_a2 = client[kHTTPContext]) == null ? void 0 : _a2.defaultPipelining) ?? 1; @@ -26535,16 +26569,14 @@ var require_client2 = __commonJS({ }); }); if (client.destroyed) { - util.destroy(socket.on("error", () => { - }), new ClientDestroyedError()); + util.destroy(socket.on("error", noop2), new ClientDestroyedError()); return; } assert(socket); try { client[kHTTPContext] = socket.alpnProtocol === "h2" ? await connectH2(client, socket) : await connectH1(client, socket); } catch (err) { - socket.destroy().on("error", () => { - }); + socket.destroy().on("error", noop2); throw err; } client[kConnecting] = false; @@ -26867,9 +26899,9 @@ var require_pool_base2 = __commonJS({ } async [kClose]() { if (this[kQueue].isEmpty()) { - return Promise.all(this[kClients].map((c) => c.close())); + await Promise.all(this[kClients].map((c) => c.close())); } else { - return new Promise((resolve) => { + await new Promise((resolve) => { this[kClosedResolve] = resolve; }); } @@ -26882,7 +26914,7 @@ var require_pool_base2 = __commonJS({ } item.handler.onError(err); } - return Promise.all(this[kClients].map((c) => c.destroy(err))); + await Promise.all(this[kClients].map((c) => c.destroy(err))); } [kDispatch](opts, handler2) { const dispatcher = this[kGetDispatcher](); @@ -27280,6 +27312,8 @@ var require_proxy_agent2 = __commonJS({ function defaultFactory(origin, opts) { return new Pool(origin, opts); } + var noop2 = () => { + }; var ProxyAgent = class extends DispatcherBase { constructor(opts) { var _a2; @@ -27331,8 +27365,7 @@ var require_proxy_agent2 = __commonJS({ servername: ((_a3 = this[kProxyTls]) == null ? void 0 : _a3.servername) || proxyHostname }); if (statusCode !== 200) { - socket.on("error", () => { - }).destroy(); + socket.on("error", noop2).destroy(); callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)); } if (opts2.protocol !== "https:") { @@ -27963,6 +27996,9 @@ var require_readable2 = __commonJS({ async blob() { return consume(this, "blob"); } + async bytes() { + return consume(this, "bytes"); + } async arrayBuffer() { return consume(this, "arrayBuffer"); } @@ -28094,6 +28130,22 @@ var require_readable2 = __commonJS({ const start = bufferLength > 2 && buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191 ? 3 : 0; return buffer.utf8Slice(start, bufferLength); } + function chunksConcat(chunks, length) { + if (chunks.length === 0 || length === 0) { + return new Uint8Array(0); + } + if (chunks.length === 1) { + return new Uint8Array(chunks[0]); + } + const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer); + let offset = 0; + for (let i = 0; i < chunks.length; ++i) { + const chunk = chunks[i]; + buffer.set(chunk, offset); + offset += chunk.length; + } + return buffer; + } function consumeEnd(consume2) { const { type, body, resolve, stream, length } = consume2; try { @@ -28102,15 +28154,11 @@ var require_readable2 = __commonJS({ } else if (type === "json") { resolve(JSON.parse(chunksDecode(body, length))); } else if (type === "arrayBuffer") { - const dst = new Uint8Array(length); - let pos = 0; - for (const buf of body) { - dst.set(buf, pos); - pos += buf.byteLength; - } - resolve(dst.buffer); + resolve(chunksConcat(body, length).buffer); } else if (type === "blob") { resolve(new Blob(body, { type: stream[kContentType] })); + } else if (type === "bytes") { + resolve(chunksConcat(body, length)); } consumeFinish(consume2); } catch (err) { diff --git a/github-actions/slash-commands/main.js b/github-actions/slash-commands/main.js index 1826072ae..222bfd7ae 100644 --- a/github-actions/slash-commands/main.js +++ b/github-actions/slash-commands/main.js @@ -25122,7 +25122,7 @@ var require_client_h1 = __commonJS({ function writeH1(client, request2) { const { method, path, host, upgrade, blocking, reset: reset2 } = request2; let { body, headers, contentLength } = request2; - const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH"; if (util.isFormDataLike(body)) { if (!extractBody) { extractBody = require_body2().extractBody; @@ -25330,7 +25330,7 @@ upgrade: ${upgrade}\r socket.write(body); socket.uncork(); request2.onBodySent(body); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } } @@ -25355,7 +25355,7 @@ upgrade: ${upgrade}\r socket.uncork(); request2.onBodySent(buffer); request2.onRequestSent(); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } client[kResume](); @@ -25431,7 +25431,7 @@ upgrade: ${upgrade}\r } socket.cork(); if (bytesWritten === 0) { - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } if (contentLength === null) { @@ -25538,7 +25538,9 @@ var require_client_h2 = __commonJS({ kOnError, kMaxConcurrentStreams, kHTTP2Session, - kResume + kResume, + kSize, + kHTTPContext } = require_symbols6(); var kOpenStreams = Symbol("open streams"); var h2ExperimentalWarned = false; @@ -25635,9 +25637,10 @@ var require_client_h2 = __commonJS({ version: "h2", defaultPipelining: Infinity, write(...args) { - writeH2(client, ...args); + return writeH2(client, ...args); }, resume() { + resumeH2(client); }, destroy(err, callback) { if (closed) { @@ -25654,6 +25657,18 @@ var require_client_h2 = __commonJS({ } }; } + function resumeH2(client) { + const socket = client[kSocket]; + if ((socket == null ? void 0 : socket.destroyed) === false) { + if (client[kSize] === 0 && client[kMaxConcurrentStreams] === 0) { + socket.unref(); + client[kHTTP2Session].unref(); + } else { + socket.ref(); + client[kHTTP2Session].ref(); + } + } + } function onHttp2SessionError(err) { assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); this[kSocket][kError] = err; @@ -25672,11 +25687,22 @@ var require_client_h2 = __commonJS({ util.destroy(this[kSocket], err); } function onHTTP2GoAway(code) { - const err = new RequestAbortedError(`HTTP/2: "GOAWAY" frame received with code ${code}`); - this[kSocket][kError] = err; - this[kClient][kOnError](err); - this.unref(); + const err = this[kError] || new SocketError(`HTTP/2: "GOAWAY" frame received with code ${code}`, util.getSocketInfo(this)); + const client = this[kClient]; + client[kSocket] = null; + client[kHTTPContext] = null; + if (this[kHTTP2Session] != null) { + this[kHTTP2Session].destroy(err); + this[kHTTP2Session] = null; + } util.destroy(this[kSocket], err); + const request2 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + util.errorRequest(client, request2, err); + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit("disconnect", client[kUrl], [client], err); + client[kResume](); } function shouldSendContentLength(method) { return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT"; @@ -25688,9 +25714,6 @@ var require_client_h2 = __commonJS({ util.errorRequest(client, request2, new Error("Upgrade not supported for H2")); return false; } - if (request2.aborted) { - return false; - } const headers = {}; for (let n = 0; n < reqHeaders.length; n += 2) { const key = reqHeaders[n + 0]; @@ -25721,22 +25744,29 @@ var require_client_h2 = __commonJS({ util.destroy(stream, err); } util.destroy(body, err); + client[kQueue][client[kRunningIdx]++] = null; + client[kResume](); }; try { request2.onConnect(abort); } catch (err) { util.errorRequest(client, request2, err); } + if (request2.aborted) { + return false; + } if (method === "CONNECT") { session.ref(); stream = session.request(headers, { endStream: false, signal }); if (stream.id && !stream.pending) { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; } else { stream.once("ready", () => { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; }); } stream.once("close", () => { @@ -25806,12 +25836,14 @@ var require_client_h2 = __commonJS({ var _a2; if (((_a2 = stream.state) == null ? void 0 : _a2.state) == null || stream.state.state < 6) { request2.onComplete([]); - return; } if (session[kOpenStreams] === 0) { session.unref(); } abort(new InformationalError("HTTP/2: stream half-closed (remote)")); + client[kQueue][client[kRunningIdx]++] = null; + client[kPendingIdx] = client[kRunningIdx]; + client[kResume](); }); stream.once("close", () => { session[kOpenStreams] -= 1; @@ -26254,6 +26286,8 @@ var require_client2 = __commonJS({ var connectH2 = require_client_h2(); var deprecatedInterceptorWarned = false; var kClosedResolve = Symbol("kClosedResolve"); + var noop2 = () => { + }; function getPipelining(client) { var _a2; return client[kPipelining] ?? ((_a2 = client[kHTTPContext]) == null ? void 0 : _a2.defaultPipelining) ?? 1; @@ -26538,16 +26572,14 @@ var require_client2 = __commonJS({ }); }); if (client.destroyed) { - util.destroy(socket.on("error", () => { - }), new ClientDestroyedError()); + util.destroy(socket.on("error", noop2), new ClientDestroyedError()); return; } assert(socket); try { client[kHTTPContext] = socket.alpnProtocol === "h2" ? await connectH2(client, socket) : await connectH1(client, socket); } catch (err) { - socket.destroy().on("error", () => { - }); + socket.destroy().on("error", noop2); throw err; } client[kConnecting] = false; @@ -26870,9 +26902,9 @@ var require_pool_base2 = __commonJS({ } async [kClose]() { if (this[kQueue].isEmpty()) { - return Promise.all(this[kClients].map((c) => c.close())); + await Promise.all(this[kClients].map((c) => c.close())); } else { - return new Promise((resolve) => { + await new Promise((resolve) => { this[kClosedResolve] = resolve; }); } @@ -26885,7 +26917,7 @@ var require_pool_base2 = __commonJS({ } item.handler.onError(err); } - return Promise.all(this[kClients].map((c) => c.destroy(err))); + await Promise.all(this[kClients].map((c) => c.destroy(err))); } [kDispatch](opts, handler2) { const dispatcher = this[kGetDispatcher](); @@ -27283,6 +27315,8 @@ var require_proxy_agent2 = __commonJS({ function defaultFactory(origin, opts) { return new Pool(origin, opts); } + var noop2 = () => { + }; var ProxyAgent = class extends DispatcherBase { constructor(opts) { var _a2; @@ -27334,8 +27368,7 @@ var require_proxy_agent2 = __commonJS({ servername: ((_a3 = this[kProxyTls]) == null ? void 0 : _a3.servername) || proxyHostname }); if (statusCode !== 200) { - socket.on("error", () => { - }).destroy(); + socket.on("error", noop2).destroy(); callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)); } if (opts2.protocol !== "https:") { @@ -27966,6 +27999,9 @@ var require_readable2 = __commonJS({ async blob() { return consume(this, "blob"); } + async bytes() { + return consume(this, "bytes"); + } async arrayBuffer() { return consume(this, "arrayBuffer"); } @@ -28097,6 +28133,22 @@ var require_readable2 = __commonJS({ const start = bufferLength > 2 && buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191 ? 3 : 0; return buffer.utf8Slice(start, bufferLength); } + function chunksConcat(chunks, length) { + if (chunks.length === 0 || length === 0) { + return new Uint8Array(0); + } + if (chunks.length === 1) { + return new Uint8Array(chunks[0]); + } + const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer); + let offset = 0; + for (let i = 0; i < chunks.length; ++i) { + const chunk = chunks[i]; + buffer.set(chunk, offset); + offset += chunk.length; + } + return buffer; + } function consumeEnd(consume2) { const { type, body, resolve, stream, length } = consume2; try { @@ -28105,15 +28157,11 @@ var require_readable2 = __commonJS({ } else if (type === "json") { resolve(JSON.parse(chunksDecode(body, length))); } else if (type === "arrayBuffer") { - const dst = new Uint8Array(length); - let pos = 0; - for (const buf of body) { - dst.set(buf, pos); - pos += buf.byteLength; - } - resolve(dst.buffer); + resolve(chunksConcat(body, length).buffer); } else if (type === "blob") { resolve(new Blob(body, { type: stream[kContentType] })); + } else if (type === "bytes") { + resolve(chunksConcat(body, length)); } consumeFinish(consume2); } catch (err) { diff --git a/github-actions/unified-status-check/main.js b/github-actions/unified-status-check/main.js index fa9e3e28d..6021f596f 100644 --- a/github-actions/unified-status-check/main.js +++ b/github-actions/unified-status-check/main.js @@ -25119,7 +25119,7 @@ var require_client_h1 = __commonJS({ function writeH1(client, request2) { const { method, path, host, upgrade, blocking, reset } = request2; let { body, headers, contentLength } = request2; - const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH"; if (util.isFormDataLike(body)) { if (!extractBody) { extractBody = require_body2().extractBody; @@ -25327,7 +25327,7 @@ upgrade: ${upgrade}\r socket.write(body); socket.uncork(); request2.onBodySent(body); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } } @@ -25352,7 +25352,7 @@ upgrade: ${upgrade}\r socket.uncork(); request2.onBodySent(buffer); request2.onRequestSent(); - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } client[kResume](); @@ -25428,7 +25428,7 @@ upgrade: ${upgrade}\r } socket.cork(); if (bytesWritten === 0) { - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } if (contentLength === null) { @@ -25535,7 +25535,9 @@ var require_client_h2 = __commonJS({ kOnError, kMaxConcurrentStreams, kHTTP2Session, - kResume + kResume, + kSize, + kHTTPContext } = require_symbols6(); var kOpenStreams = Symbol("open streams"); var h2ExperimentalWarned = false; @@ -25632,9 +25634,10 @@ var require_client_h2 = __commonJS({ version: "h2", defaultPipelining: Infinity, write(...args) { - writeH2(client, ...args); + return writeH2(client, ...args); }, resume() { + resumeH2(client); }, destroy(err, callback) { if (closed) { @@ -25651,6 +25654,18 @@ var require_client_h2 = __commonJS({ } }; } + function resumeH2(client) { + const socket = client[kSocket]; + if ((socket == null ? void 0 : socket.destroyed) === false) { + if (client[kSize] === 0 && client[kMaxConcurrentStreams] === 0) { + socket.unref(); + client[kHTTP2Session].unref(); + } else { + socket.ref(); + client[kHTTP2Session].ref(); + } + } + } function onHttp2SessionError(err) { assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); this[kSocket][kError] = err; @@ -25669,11 +25684,22 @@ var require_client_h2 = __commonJS({ util.destroy(this[kSocket], err); } function onHTTP2GoAway(code) { - const err = new RequestAbortedError(`HTTP/2: "GOAWAY" frame received with code ${code}`); - this[kSocket][kError] = err; - this[kClient][kOnError](err); - this.unref(); + const err = this[kError] || new SocketError(`HTTP/2: "GOAWAY" frame received with code ${code}`, util.getSocketInfo(this)); + const client = this[kClient]; + client[kSocket] = null; + client[kHTTPContext] = null; + if (this[kHTTP2Session] != null) { + this[kHTTP2Session].destroy(err); + this[kHTTP2Session] = null; + } util.destroy(this[kSocket], err); + const request2 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + util.errorRequest(client, request2, err); + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit("disconnect", client[kUrl], [client], err); + client[kResume](); } function shouldSendContentLength(method) { return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT"; @@ -25685,9 +25711,6 @@ var require_client_h2 = __commonJS({ util.errorRequest(client, request2, new Error("Upgrade not supported for H2")); return false; } - if (request2.aborted) { - return false; - } const headers = {}; for (let n = 0; n < reqHeaders.length; n += 2) { const key = reqHeaders[n + 0]; @@ -25718,22 +25741,29 @@ var require_client_h2 = __commonJS({ util.destroy(stream, err); } util.destroy(body, err); + client[kQueue][client[kRunningIdx]++] = null; + client[kResume](); }; try { request2.onConnect(abort); } catch (err) { util.errorRequest(client, request2, err); } + if (request2.aborted) { + return false; + } if (method === "CONNECT") { session.ref(); stream = session.request(headers, { endStream: false, signal }); if (stream.id && !stream.pending) { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; } else { stream.once("ready", () => { request2.onUpgrade(null, null, stream); ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; }); } stream.once("close", () => { @@ -25803,12 +25833,14 @@ var require_client_h2 = __commonJS({ var _a2; if (((_a2 = stream.state) == null ? void 0 : _a2.state) == null || stream.state.state < 6) { request2.onComplete([]); - return; } if (session[kOpenStreams] === 0) { session.unref(); } abort(new InformationalError("HTTP/2: stream half-closed (remote)")); + client[kQueue][client[kRunningIdx]++] = null; + client[kPendingIdx] = client[kRunningIdx]; + client[kResume](); }); stream.once("close", () => { session[kOpenStreams] -= 1; @@ -26251,6 +26283,8 @@ var require_client2 = __commonJS({ var connectH2 = require_client_h2(); var deprecatedInterceptorWarned = false; var kClosedResolve = Symbol("kClosedResolve"); + var noop2 = () => { + }; function getPipelining(client) { var _a2; return client[kPipelining] ?? ((_a2 = client[kHTTPContext]) == null ? void 0 : _a2.defaultPipelining) ?? 1; @@ -26535,16 +26569,14 @@ var require_client2 = __commonJS({ }); }); if (client.destroyed) { - util.destroy(socket.on("error", () => { - }), new ClientDestroyedError()); + util.destroy(socket.on("error", noop2), new ClientDestroyedError()); return; } assert(socket); try { client[kHTTPContext] = socket.alpnProtocol === "h2" ? await connectH2(client, socket) : await connectH1(client, socket); } catch (err) { - socket.destroy().on("error", () => { - }); + socket.destroy().on("error", noop2); throw err; } client[kConnecting] = false; @@ -26867,9 +26899,9 @@ var require_pool_base2 = __commonJS({ } async [kClose]() { if (this[kQueue].isEmpty()) { - return Promise.all(this[kClients].map((c) => c.close())); + await Promise.all(this[kClients].map((c) => c.close())); } else { - return new Promise((resolve) => { + await new Promise((resolve) => { this[kClosedResolve] = resolve; }); } @@ -26882,7 +26914,7 @@ var require_pool_base2 = __commonJS({ } item.handler.onError(err); } - return Promise.all(this[kClients].map((c) => c.destroy(err))); + await Promise.all(this[kClients].map((c) => c.destroy(err))); } [kDispatch](opts, handler2) { const dispatcher = this[kGetDispatcher](); @@ -27280,6 +27312,8 @@ var require_proxy_agent2 = __commonJS({ function defaultFactory(origin, opts) { return new Pool(origin, opts); } + var noop2 = () => { + }; var ProxyAgent = class extends DispatcherBase { constructor(opts) { var _a2; @@ -27331,8 +27365,7 @@ var require_proxy_agent2 = __commonJS({ servername: ((_a3 = this[kProxyTls]) == null ? void 0 : _a3.servername) || proxyHostname }); if (statusCode !== 200) { - socket.on("error", () => { - }).destroy(); + socket.on("error", noop2).destroy(); callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)); } if (opts2.protocol !== "https:") { @@ -27963,6 +27996,9 @@ var require_readable2 = __commonJS({ async blob() { return consume(this, "blob"); } + async bytes() { + return consume(this, "bytes"); + } async arrayBuffer() { return consume(this, "arrayBuffer"); } @@ -28094,6 +28130,22 @@ var require_readable2 = __commonJS({ const start = bufferLength > 2 && buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191 ? 3 : 0; return buffer.utf8Slice(start, bufferLength); } + function chunksConcat(chunks, length) { + if (chunks.length === 0 || length === 0) { + return new Uint8Array(0); + } + if (chunks.length === 1) { + return new Uint8Array(chunks[0]); + } + const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer); + let offset = 0; + for (let i = 0; i < chunks.length; ++i) { + const chunk = chunks[i]; + buffer.set(chunk, offset); + offset += chunk.length; + } + return buffer; + } function consumeEnd(consume2) { const { type, body, resolve, stream, length } = consume2; try { @@ -28102,15 +28154,11 @@ var require_readable2 = __commonJS({ } else if (type === "json") { resolve(JSON.parse(chunksDecode(body, length))); } else if (type === "arrayBuffer") { - const dst = new Uint8Array(length); - let pos = 0; - for (const buf of body) { - dst.set(buf, pos); - pos += buf.byteLength; - } - resolve(dst.buffer); + resolve(chunksConcat(body, length).buffer); } else if (type === "blob") { resolve(new Blob(body, { type: stream[kContentType] })); + } else if (type === "bytes") { + resolve(chunksConcat(body, length)); } consumeFinish(consume2); } catch (err) { diff --git a/ng-dev/package.json b/ng-dev/package.json index 636e3077f..b8f80c9cf 100644 --- a/ng-dev/package.json +++ b/ng-dev/package.json @@ -24,6 +24,6 @@ "supports-color": "9.4.0", "typed-graphqlify": "^3.1.1", "typescript": "~4.9.0", - "yaml": "2.5.1" + "yaml": "2.6.0" } } diff --git a/package.json b/package.json index 57f81f1b0..7d7d105a1 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "@bazel/runfiles": "5.8.1", "@bazel/terser": "5.8.1", "@bazel/typescript": "5.8.1", - "@microsoft/api-extractor": "7.47.9", + "@microsoft/api-extractor": "7.47.10", "@types/browser-sync": "^2.26.3", "@types/minimatch": "^5.1.2", "@types/node": "^18.19.21", @@ -131,8 +131,8 @@ "gcip-cloud-functions": "0.2.0", "git-raw-commits": "^4.0.0", "husky": "^9.0.0", - "jasmine": "~5.3.0", - "jasmine-core": "~5.3.0", + "jasmine": "~5.4.0", + "jasmine-core": "~5.4.0", "jsdom": "^25.0.0", "jsonc-parser": "^3.2.0", "karma": "^6.3.15", diff --git a/yarn.lock b/yarn.lock index 96f9222e8..bb9c4b2ce 100644 --- a/yarn.lock +++ b/yarn.lock @@ -327,7 +327,7 @@ __metadata: "@lezer/common": "npm:^1.1.1" "@lezer/highlight": "npm:^1.2.0" "@lezer/javascript": "npm:^1.4.9" - "@microsoft/api-extractor": "npm:7.47.9" + "@microsoft/api-extractor": "npm:7.47.10" "@octokit/auth-app": "npm:7.1.1" "@octokit/core": "npm:6.1.2" "@octokit/graphql": "npm:8.1.1" @@ -390,8 +390,8 @@ __metadata: git-raw-commits: "npm:^4.0.0" html-entities: "npm:^2.4.0" husky: "npm:^9.0.0" - jasmine: "npm:~5.3.0" - jasmine-core: "npm:~5.3.0" + jasmine: "npm:~5.4.0" + jasmine-core: "npm:~5.4.0" jsdom: "npm:^25.0.0" jsonc-parser: "npm:^3.2.0" karma: "npm:^6.3.15" @@ -3002,7 +3002,30 @@ __metadata: languageName: node linkType: hard -"@microsoft/api-extractor@npm:7.47.9, @microsoft/api-extractor@npm:^7.24.2": +"@microsoft/api-extractor@npm:7.47.10": + version: 7.47.10 + resolution: "@microsoft/api-extractor@npm:7.47.10" + dependencies: + "@microsoft/api-extractor-model": "npm:7.29.8" + "@microsoft/tsdoc": "npm:~0.15.0" + "@microsoft/tsdoc-config": "npm:~0.17.0" + "@rushstack/node-core-library": "npm:5.9.0" + "@rushstack/rig-package": "npm:0.5.3" + "@rushstack/terminal": "npm:0.14.2" + "@rushstack/ts-command-line": "npm:4.22.8" + lodash: "npm:~4.17.15" + minimatch: "npm:~3.0.3" + resolve: "npm:~1.22.1" + semver: "npm:~7.5.4" + source-map: "npm:~0.6.1" + typescript: "npm:5.4.2" + bin: + api-extractor: bin/api-extractor + checksum: 10c0/c9b34183e8d4360d06c3093d11f49a119e42d61702d18b4852470082374eb7c3c4afca471629a791856babb5213541f8b0470888579aebbe8c57988f3d20753f + languageName: node + linkType: hard + +"@microsoft/api-extractor@npm:^7.24.2": version: 7.47.9 resolution: "@microsoft/api-extractor@npm:7.47.9" dependencies: @@ -6670,10 +6693,10 @@ __metadata: languageName: node linkType: hard -"css-functions-list@npm:^3.2.2": - version: 3.2.2 - resolution: "css-functions-list@npm:3.2.2" - checksum: 10c0/8638a63d0cf1bdc50d4a752ec1c94a57e9953c3b03eace4f5526db20bec3c061e95089f905dbb4999c44b9780ce777ba856967560f6d15119a303f6030901c10 +"css-functions-list@npm:^3.2.3": + version: 3.2.3 + resolution: "css-functions-list@npm:3.2.3" + checksum: 10c0/03f9ed34eeed310d2b1cf0e524eea02bc5f87854a4de85f8957ea432ab1036841a3fb00879590519f7bb8fda40d992ce7a72fa9b61696ca1dc53b90064858f96 languageName: node linkType: hard @@ -6690,13 +6713,13 @@ __metadata: languageName: node linkType: hard -"css-tree@npm:^2.3.1": - version: 2.3.1 - resolution: "css-tree@npm:2.3.1" +"css-tree@npm:^3.0.0": + version: 3.0.0 + resolution: "css-tree@npm:3.0.0" dependencies: - mdn-data: "npm:2.0.30" + mdn-data: "npm:2.10.0" source-map-js: "npm:^1.0.1" - checksum: 10c0/6f8c1a11d5e9b14bf02d10717fc0351b66ba12594166f65abfbd8eb8b5b490dd367f5c7721db241a3c792d935fc6751fbc09f7e1598d421477ad9fadc30f4f24 + checksum: 10c0/43d44fdf7004ae91d73d486f17894fef77efa33747a6752b9241cf0f5fb47fabc16ec34a96a993651d9014dfdeee803d7c5fcd3548214252ee19f4e5c98999b2 languageName: node linkType: hard @@ -6788,7 +6811,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6, debug@npm:~4.3.1, debug@npm:~4.3.2, debug@npm:~4.3.4": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.7, debug@npm:~4.3.1, debug@npm:~4.3.2, debug@npm:~4.3.4": version: 4.3.7 resolution: "debug@npm:4.3.7" dependencies: @@ -7973,7 +7996,7 @@ __metadata: languageName: node linkType: hard -"file-entry-cache@npm:^9.0.0": +"file-entry-cache@npm:^9.1.0": version: 9.1.0 resolution: "file-entry-cache@npm:9.1.0" dependencies: @@ -9195,13 +9218,20 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.2.0, ignore@npm:^5.3.2": +"ignore@npm:^5.2.0": version: 5.3.2 resolution: "ignore@npm:5.3.2" checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 languageName: node linkType: hard +"ignore@npm:^6.0.2": + version: 6.0.2 + resolution: "ignore@npm:6.0.2" + checksum: 10c0/9a38feac1861906a78ba0f03e8ef3cd6b0526dce2a1a84e1009324b557763afeb9c3ebcc04666b21f7bbf71adda45e76781bb9e2eaa0903d45dcaded634454f5 + languageName: node + linkType: hard + "immediate@npm:~3.0.5": version: 3.0.6 resolution: "immediate@npm:3.0.6" @@ -9882,10 +9912,10 @@ __metadata: languageName: node linkType: hard -"jasmine-core@npm:~5.3.0": - version: 5.3.0 - resolution: "jasmine-core@npm:5.3.0" - checksum: 10c0/231c8a43bcf8d4bd5cd9bab9ed5b7a895c7febc3ccc8b7e0629e6f78535826d01434b94c6edda312287752b164108bbafb0e69edba40f6905da9e37907eb6cbd +"jasmine-core@npm:~5.4.0": + version: 5.4.0 + resolution: "jasmine-core@npm:5.4.0" + checksum: 10c0/d936de0df50a69bb269c734d5efc73d124c3051037d55609c30fcc146736ae281b1c2d658e7da583eee96a4eb2c240a3b672b70375e51d6c28c5626639eda292 languageName: node linkType: hard @@ -9912,15 +9942,15 @@ __metadata: languageName: node linkType: hard -"jasmine@npm:~5.3.0": - version: 5.3.1 - resolution: "jasmine@npm:5.3.1" +"jasmine@npm:~5.4.0": + version: 5.4.0 + resolution: "jasmine@npm:5.4.0" dependencies: glob: "npm:^10.2.2" - jasmine-core: "npm:~5.3.0" + jasmine-core: "npm:~5.4.0" bin: jasmine: bin/jasmine.js - checksum: 10c0/df880bb57a1daa3c94f402411c16d186ba6d2633fd08716e134276cdf4d4511cebd206b8f809b06157397239f6af614aeb829812148fb5822ad4a00fa94a2c09 + checksum: 10c0/8169c6ee448e39769946e43cf04647826c17be0a999465441bed525063e0208ac51615d2ce4e185c35aece0224b51dd7cfa4530f13a83a7deeb1aa019d655b75 languageName: node linkType: hard @@ -10924,10 +10954,10 @@ __metadata: languageName: node linkType: hard -"mdn-data@npm:2.0.30": - version: 2.0.30 - resolution: "mdn-data@npm:2.0.30" - checksum: 10c0/a2c472ea16cee3911ae742593715aa4c634eb3d4b9f1e6ada0902aa90df13dcbb7285d19435f3ff213ebaa3b2e0c0265c1eb0e3fb278fda7f8919f046a410cd9 +"mdn-data@npm:2.10.0": + version: 2.10.0 + resolution: "mdn-data@npm:2.10.0" + checksum: 10c0/f6f1a6a6eb092bab250d06f6f6c7cb1733a77a17e7119aac829ad67d4322bbf6a30df3c6d88686e71942e66bd49274b2ddfede22a1d3df0d6c49a56fbd09eb7c languageName: node linkType: hard @@ -12358,7 +12388,7 @@ __metadata: languageName: node linkType: hard -"postcss-safe-parser@npm:^7.0.0": +"postcss-safe-parser@npm:^7.0.1": version: 7.0.1 resolution: "postcss-safe-parser@npm:7.0.1" peerDependencies: @@ -12384,7 +12414,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.23, postcss@npm:^8.4.41, postcss@npm:^8.4.43": +"postcss@npm:^8.4.23, postcss@npm:^8.4.43, postcss@npm:^8.4.47": version: 8.4.47 resolution: "postcss@npm:8.4.47" dependencies: @@ -14220,8 +14250,8 @@ __metadata: linkType: hard "stylelint@npm:^16.0.0": - version: 16.9.0 - resolution: "stylelint@npm:16.9.0" + version: 16.10.0 + resolution: "stylelint@npm:16.10.0" dependencies: "@csstools/css-parser-algorithms": "npm:^3.0.1" "@csstools/css-tokenizer": "npm:^3.0.1" @@ -14231,17 +14261,17 @@ __metadata: balanced-match: "npm:^2.0.0" colord: "npm:^2.9.3" cosmiconfig: "npm:^9.0.0" - css-functions-list: "npm:^3.2.2" - css-tree: "npm:^2.3.1" - debug: "npm:^4.3.6" + css-functions-list: "npm:^3.2.3" + css-tree: "npm:^3.0.0" + debug: "npm:^4.3.7" fast-glob: "npm:^3.3.2" fastest-levenshtein: "npm:^1.0.16" - file-entry-cache: "npm:^9.0.0" + file-entry-cache: "npm:^9.1.0" global-modules: "npm:^2.0.0" globby: "npm:^11.1.0" globjoin: "npm:^0.1.4" html-tags: "npm:^3.3.1" - ignore: "npm:^5.3.2" + ignore: "npm:^6.0.2" imurmurhash: "npm:^0.1.4" is-plain-object: "npm:^5.0.0" known-css-properties: "npm:^0.34.0" @@ -14250,21 +14280,20 @@ __metadata: micromatch: "npm:^4.0.8" normalize-path: "npm:^3.0.0" picocolors: "npm:^1.0.1" - postcss: "npm:^8.4.41" + postcss: "npm:^8.4.47" postcss-resolve-nested-selector: "npm:^0.1.6" - postcss-safe-parser: "npm:^7.0.0" + postcss-safe-parser: "npm:^7.0.1" postcss-selector-parser: "npm:^6.1.2" postcss-value-parser: "npm:^4.2.0" resolve-from: "npm:^5.0.0" string-width: "npm:^4.2.3" - strip-ansi: "npm:^7.1.0" supports-hyperlinks: "npm:^3.1.0" svg-tags: "npm:^1.0.0" table: "npm:^6.8.2" write-file-atomic: "npm:^5.0.1" bin: stylelint: bin/stylelint.mjs - checksum: 10c0/d3ff9c8945c56b04a2fa16ec33d163325496d5db94b6fcb5adf74c76f7f794ac992888273f9a3317652ba8b6195168b2ffff382ca2a667a241e2ace8c9505ae2 + checksum: 10c0/d07dd156c225d16c740995daacd78090f7fc317602e87bda2fca323a4ae427a8526d724f3089df3b2185df4520f987547668ceea9b30985988ccbc514034aa21 languageName: node linkType: hard @@ -14962,9 +14991,9 @@ __metadata: linkType: hard "undici@npm:^6.19.8": - version: 6.20.0 - resolution: "undici@npm:6.20.0" - checksum: 10c0/b74a6e4dcdfc3a6e7f5eab77c24f598c5a8664091797dc4940f86e1ed27e5dc9bef390aa1ecf53f20c7ec0e8809bc3d1518a8c3c560fa5972a6a325d628765be + version: 6.20.1 + resolution: "undici@npm:6.20.1" + checksum: 10c0/b2c8d5adcd226c53d02f9270e4cac277256a7147cf310af319369ec6f87651ca46b2960366cb1339a6dac84d937e01e8cdbec5cb468f1f1ce5e9490e438d7222 languageName: node linkType: hard @@ -15763,11 +15792,11 @@ __metadata: linkType: hard "yaml@npm:^2.0.0, yaml@npm:^2.2.1, yaml@npm:^2.4.1": - version: 2.5.1 - resolution: "yaml@npm:2.5.1" + version: 2.6.0 + resolution: "yaml@npm:2.6.0" bin: yaml: bin.mjs - checksum: 10c0/40fba5682898dbeeb3319e358a968fe886509fab6f58725732a15f8dda3abac509f91e76817c708c9959a15f786f38ff863c1b88062d7c1162c5334a7d09cb4a + checksum: 10c0/9e74cdb91cc35512a1c41f5ce509b0e93cc1d00eff0901e4ba831ee75a71ddf0845702adcd6f4ee6c811319eb9b59653248462ab94fa021ab855543a75396ceb languageName: node linkType: hard