@@ -13168,8 +13168,6 @@ var require_util = __commonJS({
1316813168 return tree.lookup(value) ?? value.toString("latin1").toLowerCase();
1316913169 }
1317013170 function parseHeaders(headers, obj) {
13171- if (!Array.isArray(headers))
13172- return headers;
1317313171 if (obj === void 0)
1317413172 obj = {};
1317513173 for (let i = 0; i < headers.length; i += 2) {
@@ -14962,9 +14960,9 @@ var require_data_url = __commonJS({
1496214960 var assert = require("node:assert");
1496314961 var encoder = new TextEncoder();
1496414962 var HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/;
14965- var HTTP_WHITESPACE_REGEX = /[\u000A| \u000D| \u0009| \u0020]/;
14963+ var HTTP_WHITESPACE_REGEX = /[\u000A\u000D\u0009\u0020]/;
1496614964 var ASCII_WHITESPACE_REPLACE_REGEX = /[\u0009\u000A\u000C\u000D\u0020]/g;
14967- var HTTP_QUOTED_STRING_TOKENS = /[\u0009| \u0020-\u007E| \u0080-\u00FF]/;
14965+ var HTTP_QUOTED_STRING_TOKENS = /[\u0009\u0020-\u007E\u0080-\u00FF]/;
1496814966 function dataURLProcessor(dataURL) {
1496914967 assert(dataURL.protocol === "data:");
1497014968 let input = URLSerializer(dataURL, true);
@@ -15726,9 +15724,12 @@ var require_util2 = __commonJS({
1572615724 var assert = require("node:assert");
1572715725 var { isUint8Array } = require("node:util/types");
1572815726 var { webidl } = require_webidl();
15727+ var supportedHashes = [];
1572915728 var crypto4;
1573015729 try {
1573115730 crypto4 = require("node:crypto");
15731+ const possibleRelevantHashes = ["sha256", "sha384", "sha512"];
15732+ supportedHashes = crypto4.getHashes().filter((hash) => possibleRelevantHashes.includes(hash));
1573215733 } catch {
1573315734 }
1573415735 function responseURL(response) {
@@ -16009,45 +16010,37 @@ var require_util2 = __commonJS({
1600916010 if (parsedMetadata.length === 0) {
1601016011 return true;
1601116012 }
16012- const list = parsedMetadata.sort((c, d) => d.algo.localeCompare(c.algo));
16013- const strongest = list[0].algo;
16014- const metadata = list.filter((item) => item.algo === strongest);
16013+ const strongest = getStrongestMetadata(parsedMetadata);
16014+ const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest);
1601516015 for (const item of metadata) {
1601616016 const algorithm = item.algo;
16017- let expectedValue = item.hash;
16018- if (expectedValue.endsWith("==")) {
16019- expectedValue = expectedValue.slice(0, -2);
16020- }
16017+ const expectedValue = item.hash;
1602116018 let actualValue = crypto4.createHash(algorithm).update(bytes).digest("base64");
16022- if (actualValue.endsWith("==")) {
16023- actualValue = actualValue.slice(0, -2);
16024- }
16025- if (actualValue === expectedValue) {
16026- return true;
16027- }
16028- let actualBase64URL = crypto4.createHash(algorithm).update(bytes).digest("base64url");
16029- if (actualBase64URL.endsWith("==")) {
16030- actualBase64URL = actualBase64URL.slice(0, -2);
16019+ if (actualValue[actualValue.length - 1] === "=") {
16020+ if (actualValue[actualValue.length - 2] === "=") {
16021+ actualValue = actualValue.slice(0, -2);
16022+ } else {
16023+ actualValue = actualValue.slice(0, -1);
16024+ }
1603116025 }
16032- if (actualBase64URL === expectedValue) {
16026+ if (compareBase64Mixed(actualValue, expectedValue) ) {
1603316027 return true;
1603416028 }
1603516029 }
1603616030 return false;
1603716031 }
16038- var parseHashWithOptions = /(?<algo>sha256|sha384|sha512)-(?<hash>[A-Za-z0-9+/]+={0,2}(?= \s|$)) ( +[!-~]*)?/i;
16032+ var parseHashWithOptions = /(?<algo>sha256|sha384|sha512)-(( ?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+) ={0,2}(?: \s|$)( +[!-~]*)? )?/i;
1603916033 function parseMetadata(metadata) {
1604016034 const result = [];
1604116035 let empty = true;
16042- const supportedHashes = crypto4.getHashes();
1604316036 for (const token of metadata.split(" ")) {
1604416037 empty = false;
1604516038 const parsedToken = parseHashWithOptions.exec(token);
16046- if (parsedToken === null || parsedToken.groups === void 0) {
16039+ if (parsedToken === null || parsedToken.groups === void 0 || parsedToken.groups.algo === void 0 ) {
1604716040 continue;
1604816041 }
16049- const algorithm = parsedToken.groups.algo;
16050- if (supportedHashes.includes(algorithm.toLowerCase() )) {
16042+ const algorithm = parsedToken.groups.algo.toLowerCase() ;
16043+ if (supportedHashes.includes(algorithm)) {
1605116044 result.push(parsedToken.groups);
1605216045 }
1605316046 }
@@ -16056,6 +16049,51 @@ var require_util2 = __commonJS({
1605616049 }
1605716050 return result;
1605816051 }
16052+ function getStrongestMetadata(metadataList) {
16053+ let algorithm = metadataList[0].algo;
16054+ if (algorithm[3] === "5") {
16055+ return algorithm;
16056+ }
16057+ for (let i = 1; i < metadataList.length; ++i) {
16058+ const metadata = metadataList[i];
16059+ if (metadata.algo[3] === "5") {
16060+ algorithm = "sha512";
16061+ break;
16062+ } else if (algorithm[3] === "3") {
16063+ continue;
16064+ } else if (metadata.algo[3] === "3") {
16065+ algorithm = "sha384";
16066+ }
16067+ }
16068+ return algorithm;
16069+ }
16070+ function filterMetadataListByAlgorithm(metadataList, algorithm) {
16071+ if (metadataList.length === 1) {
16072+ return metadataList;
16073+ }
16074+ let pos = 0;
16075+ for (let i = 0; i < metadataList.length; ++i) {
16076+ if (metadataList[i].algo === algorithm) {
16077+ metadataList[pos++] = metadataList[i];
16078+ }
16079+ }
16080+ metadataList.length = pos;
16081+ return metadataList;
16082+ }
16083+ function compareBase64Mixed(actualValue, expectedValue) {
16084+ if (actualValue.length !== expectedValue.length) {
16085+ return false;
16086+ }
16087+ for (let i = 0; i < actualValue.length; ++i) {
16088+ if (actualValue[i] !== expectedValue[i]) {
16089+ if (actualValue[i] === "+" && expectedValue[i] === "-" || actualValue[i] === "/" && expectedValue[i] === "_") {
16090+ continue;
16091+ }
16092+ return false;
16093+ }
16094+ }
16095+ return true;
16096+ }
1605916097 function tryUpgradeRequestToAPotentiallyTrustworthyURL(request2) {
1606016098 }
1606116099 function sameOrigin(A, B) {
@@ -18499,6 +18537,14 @@ var require_client_h2 = __commonJS({
1849918537 HTTP2_HEADER_STATUS
1850018538 }
1850118539 } = http2;
18540+ function parseH2Headers(headers) {
18541+ headers = Object.entries(headers).flat(2);
18542+ const result = [];
18543+ for (const header of headers) {
18544+ result.push(Buffer.from(header));
18545+ }
18546+ return result;
18547+ }
1850218548 async function connectH2(client, socket) {
1850318549 client[kSocket] = socket;
1850418550 if (!h2ExperimentalWarned) {
@@ -18734,7 +18780,13 @@ var require_client_h2 = __commonJS({
1873418780 stream.once("response", (headers2) => {
1873518781 const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers2;
1873618782 request2.onResponseStarted();
18737- if (request2.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), "") === false) {
18783+ if (request2.aborted || request2.completed) {
18784+ const err = new RequestAbortedError();
18785+ errorRequest(client, request2, err);
18786+ util.destroy(stream, err);
18787+ return;
18788+ }
18789+ if (request2.onHeaders(Number(statusCode), parseH2Headers(realHeaders), stream.resume.bind(stream), "") === false) {
1873818790 stream.pause();
1873918791 }
1874018792 stream.on("data", (chunk) => {
@@ -19054,9 +19106,9 @@ var require_redirect_handler = __commonJS({
1905419106 if (removeContent && util.headerNameToString(header).startsWith("content-")) {
1905519107 return true;
1905619108 }
19057- if (unknownOrigin && (header.length === 13 || header.length === 6)) {
19109+ if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19 )) {
1905819110 const name = util.headerNameToString(header);
19059- return name === "authorization" || name === "cookie";
19111+ return name === "authorization" || name === "cookie" || name === "proxy-authorization" ;
1906019112 }
1906119113 return false;
1906219114 }
@@ -22379,6 +22431,8 @@ var require_pending_interceptors_formatter = __commonJS({
2237922431 "use strict";
2238022432 var { Transform } = require("node:stream");
2238122433 var { Console } = require("node:console");
22434+ var PERSISTENT = process.versions.icu ? "\u2705" : "Y ";
22435+ var NOT_PERSISTENT = process.versions.icu ? "\u274C" : "N ";
2238222436 module2.exports = class PendingInterceptorsFormatter {
2238322437 constructor({ disableColors } = {}) {
2238422438 this.transform = new Transform({
@@ -22400,7 +22454,7 @@ var require_pending_interceptors_formatter = __commonJS({
2240022454 Origin: origin,
2240122455 Path: path,
2240222456 "Status code": statusCode,
22403- Persistent: persist ? "\u2705" : "\u274C" ,
22457+ Persistent: persist ? PERSISTENT : NOT_PERSISTENT ,
2240422458 Invocations: timesInvoked,
2240522459 Remaining: persist ? Infinity : times - timesInvoked
2240622460 })
@@ -22670,7 +22724,7 @@ var require_headers = __commonJS({
2267022724 } = require_util2();
2267122725 var { webidl } = require_webidl();
2267222726 var assert = require("node:assert");
22673- var util = require("util");
22727+ var util = require("node: util");
2267422728 var kHeadersMap = Symbol("headers map");
2267522729 var kHeadersSortedMap = Symbol("headers map sorted");
2267622730 function isHTTPWhiteSpaceCharCode(code) {
@@ -25161,24 +25215,6 @@ var require_fetch = __commonJS({
2516125215 codings = contentEncoding.toLowerCase().split(",").map((x) => x.trim());
2516225216 }
2516325217 location = headersList.get("location", true);
25164- } else {
25165- const keys = Object.keys(rawHeaders);
25166- for (let i = 0; i < keys.length; ++i) {
25167- const key = keys[i];
25168- const value = rawHeaders[key];
25169- if (key === "set-cookie") {
25170- for (let j = 0; j < value.length; ++j) {
25171- headersList.append(key, value[j], true);
25172- }
25173- } else {
25174- headersList.append(key, value, true);
25175- }
25176- }
25177- const contentEncoding = rawHeaders["content-encoding"];
25178- if (contentEncoding) {
25179- codings = contentEncoding.toLowerCase().split(",").map((x) => x.trim()).reverse();
25180- }
25181- location = rawHeaders.location;
2518225218 }
2518325219 this.body = new Readable({ read: resume });
2518425220 const decoders = [];
0 commit comments