diff --git a/CHANGELOG.md b/CHANGELOG.md index ba6ce8e2..c3c8a420 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,9 @@ ## next - feat(definePlugin): helper function to create plugins +- chore(package.json): update to httpxy@0.5.3 +- fix(ipv6): preserve credentials when normalizing bracketed IPv6 target string +- fix(ipv6): unspecified IPv6 target hostname (::)" ## [v4.0.0](https://github.com/chimurai/http-proxy-middleware/releases/tag/v4.0.0) diff --git a/package.json b/package.json index 793d0484..7e238dbb 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ }, "dependencies": { "debug": "^4.4.3", - "httpxy": "^0.5.1", + "httpxy": "^0.5.3", "is-glob": "^4.0.3", "is-plain-obj": "^4.1.0", "micromatch": "^4.0.8" @@ -98,13 +98,12 @@ "hono": "4.12.18", "husky": "9.1.7", "lint-staged": "17.0.4", - "mockttp": "4.3.1", + "mockttp": "4.4.2", "msw": "2.14.5", "nock": "14.0.15", "open": "11.0.0", "oxfmt": "0.48.0", "pkg-pr-new": "0.0.71", - "selfsigned": "5.5.0", "supertest": "7.2.2", "typescript": "6.0.3", "typescript-eslint": "8.59.2", diff --git a/src/utils/ipv6.ts b/src/utils/ipv6.ts index 4d492834..63f21c30 100644 --- a/src/utils/ipv6.ts +++ b/src/utils/ipv6.ts @@ -34,10 +34,18 @@ function normalizeIPv6ProxyTarget(target: Options['target'], optionName: 'target const targetUrl = toTargetUrl(target); if (targetUrl && isBracketedIPv6Hostname(targetUrl.hostname)) { + const normalizedHostname = normalizeIPv6DestinationHostname(stripBrackets(targetUrl.hostname)); + debug('normalized IPv6 "%s" %s', optionName, target); + const auth = + targetUrl.username || targetUrl.password + ? `${targetUrl.username}:${targetUrl.password}` + : undefined; + return { - hostname: stripBrackets(targetUrl.hostname), + hostname: normalizedHostname, + auth, pathname: targetUrl.pathname, port: targetUrl.port, protocol: targetUrl.protocol, @@ -67,3 +75,13 @@ function isBracketedIPv6Hostname(hostname: string): boolean { function stripBrackets(hostname: string): string { return hostname.replace(/^\[|\]$/g, ''); } + +function normalizeIPv6DestinationHostname(hostname: string): string { + // The unspecified address (::) is not a routable destination for outbound client requests. + // Treat it as loopback so a target like http://[::]:port reaches local IPv6 listeners. + if (hostname === '::') { + debug('normalizing hostname unspecified IPv6 address (::) to loopback (::1)'); + return '::1'; + } + return hostname; +} diff --git a/test/e2e/http2-server.spec.ts b/test/e2e/http2-server.spec.ts index 2076cda5..1608ef17 100644 --- a/test/e2e/http2-server.spec.ts +++ b/test/e2e/http2-server.spec.ts @@ -1,7 +1,7 @@ import { createSecureServer, type Http2SecureServer } from 'node:http2'; import type { Mockttp } from 'mockttp'; -import { generate } from 'selfsigned'; +import { generateCACertificate } from 'mockttp'; import request from 'supertest'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; @@ -24,7 +24,7 @@ describe('E2E http2', () => { } beforeEach(async () => { - const cert = await generate([{ name: 'commonName', value: 'localhost' }]); + const cert = await generateCACertificate({ bits: 2048 }); proxyServerCertPem = cert.cert; // Keep this dynamic to avoid a Vitest module-load ordering issue that breaks cert generation. @@ -41,7 +41,7 @@ describe('E2E http2', () => { http2ProxyServer = createSecureServer( { - key: cert.private, + key: cert.key, cert: cert.cert, // Express + supertest use the HTTP/1.1 request/response API in this e2e flow. allowHTTP1: true, @@ -86,7 +86,7 @@ describe('E2E http2', () => { } beforeEach(async () => { - const cert = await generate([{ name: 'commonName', value: 'localhost' }]); + const cert = await generateCACertificate({ bits: 2048 }); proxyServerCertPem = cert.cert; // Keep this dynamic to avoid a Vitest module-load ordering issue that breaks cert generation. @@ -103,7 +103,7 @@ describe('E2E http2', () => { http2ProxyServer = createSecureServer( { - key: cert.private, + key: cert.key, cert: cert.cert, // Express + supertest use the HTTP/1.1 request/response API in this e2e flow. allowHTTP1: true, diff --git a/test/unit/utils/ipv6.spec.ts b/test/unit/utils/ipv6.spec.ts index f256eca3..e85f1374 100644 --- a/test/unit/utils/ipv6.spec.ts +++ b/test/unit/utils/ipv6.spec.ts @@ -47,6 +47,39 @@ describe('normalizeIPv6Targets()', () => { }); }); + it('should normalize unspecified bracketed IPv6 destination to loopback', () => { + const options: Options = { + target: 'http://[::]:8888/api', + }; + + normalizeIPv6LiteralTargets(options); + + expect(options.target).toEqual({ + hostname: '::1', + pathname: '/api', + port: '8888', + protocol: 'http:', + search: '', + }); + }); + + it('should preserve credentials when normalizing bracketed IPv6 target string', () => { + const options: Options = { + target: 'http://user:pass@[::1]:8888/api', + }; + + normalizeIPv6LiteralTargets(options); + + expect(options.target).toEqual({ + auth: 'user:pass', + hostname: '::1', + pathname: '/api', + port: '8888', + protocol: 'http:', + search: '', + }); + }); + it('should normalize bracketed IPv6 target URL into a target object', () => { const options: Options = { target: new URL('http://[::1]:8888/api'), diff --git a/yarn.lock b/yarn.lock index 4582c8ed..e56d60d1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -322,10 +322,10 @@ resolved "https://registry.yarnpkg.com/@hono/node-server/-/node-server-2.0.2.tgz#61c176acacadb594c969a641a036893c54dd5ce3" integrity sha512-tXlTi1h/4V7sDe7i97IVP+9re9ZU7wXZZggnR5ucCRclf1+AX6YhGStrR5w8bLj+3Mlyl0pKfBh9gqTqqnGKfQ== -"@httptoolkit/httpolyglot@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@httptoolkit/httpolyglot/-/httpolyglot-3.0.1.tgz#b76598a852232c59fcab98d717c22bef512e169f" - integrity sha512-fU9psZBRc49PfdrxFZ8W19SwVQ4+rrc0EYVxmy7H41y6/elaIu5p68wly4uLVt1DPD0K92MdN65GqP3N1ofZKg== +"@httptoolkit/httpolyglot@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@httptoolkit/httpolyglot/-/httpolyglot-3.1.0.tgz#9dd7e4c9e27b88692dd95785f377a5d295a4d095" + integrity sha512-Y+1gebmcMZMjDepn2e+9TBM4D+t3jYYbOwbXL9/PKmJEcaN/sbpv/00skN9KLXs43+BQvHTZc+5J0AnC5+9qDg== dependencies: "@types/node" "*" @@ -460,11 +460,6 @@ dependencies: "@tybys/wasm-util" "^0.10.1" -"@noble/hashes@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" - integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== - "@noble/hashes@^1.1.5": version "1.8.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" @@ -600,18 +595,18 @@ dependencies: "@noble/hashes" "^1.1.5" -"@peculiar/asn1-cms@^2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-cms/-/asn1-cms-2.5.0.tgz#3a7e857d86686898ce78efdbf481922bb805c68a" - integrity sha512-p0SjJ3TuuleIvjPM4aYfvYw8Fk1Hn/zAVyPJZTtZ2eE9/MIer6/18ROxX6N/e6edVSfvuZBqhxAj3YgsmSjQ/A== +"@peculiar/asn1-cms@<2.7.0", "@peculiar/asn1-cms@^2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-cms/-/asn1-cms-2.6.0.tgz#88267055c460ca806651f916315a934c1b1ac994" + integrity sha512-2uZqP+ggSncESeUF/9Su8rWqGclEfEiz1SyU02WX5fUONFfkjzS2Z/F1Li0ofSmf4JqYXIOdCAZqIXAIBAT1OA== dependencies: - "@peculiar/asn1-schema" "^2.5.0" - "@peculiar/asn1-x509" "^2.5.0" - "@peculiar/asn1-x509-attr" "^2.5.0" + "@peculiar/asn1-schema" "^2.6.0" + "@peculiar/asn1-x509" "^2.6.0" + "@peculiar/asn1-x509-attr" "^2.6.0" asn1js "^3.0.6" tslib "^2.8.1" -"@peculiar/asn1-cms@^2.6.0", "@peculiar/asn1-cms@^2.7.0": +"@peculiar/asn1-cms@^2.7.0": version "2.7.0" resolved "https://registry.yarnpkg.com/@peculiar/asn1-cms/-/asn1-cms-2.7.0.tgz#8e0eb656f4fc85f7c621dd442fa2d298faa84984" integrity sha512-hew63shtzzvBcSHbhm+cyAmKe6AIfinT9hzEqSPjDC6opTTMKmTkQ0gHuN2KsWlvqiKw1S/fS94fhag/FJkioQ== @@ -622,59 +617,27 @@ asn1js "^3.0.6" tslib "^2.8.1" -"@peculiar/asn1-csr@^2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-csr/-/asn1-csr-2.5.0.tgz#4dd7534bd7d7db5bbbbde4d00d4836bf7e818d1c" - integrity sha512-ioigvA6WSYN9h/YssMmmoIwgl3RvZlAYx4A/9jD2qaqXZwGcNlAxaw54eSx2QG1Yu7YyBC5Rku3nNoHrQ16YsQ== - dependencies: - "@peculiar/asn1-schema" "^2.5.0" - "@peculiar/asn1-x509" "^2.5.0" - asn1js "^3.0.6" - tslib "^2.8.1" - -"@peculiar/asn1-csr@^2.6.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-csr/-/asn1-csr-2.7.0.tgz#1a03ac03f7571ea981f5d8377c6f4510c5d43411" - integrity sha512-VVsAyGqErT9D1SY4aEqozThXMVI+ssVRiv2DDeYuvpBKLIgZ3hYs3Ay3u/VSoKq6ESFi9cf6rf3IOOzfwh7oMA== - dependencies: - "@peculiar/asn1-schema" "^2.7.0" - "@peculiar/asn1-x509" "^2.7.0" - asn1js "^3.0.6" - tslib "^2.8.1" - -"@peculiar/asn1-ecc@^2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.5.0.tgz#3bbeaa3443567055be112b4c7e9d5562951242cf" - integrity sha512-t4eYGNhXtLRxaP50h3sfO6aJebUCDGQACoeexcelL4roMFRRVgB20yBIu2LxsPh/tdW9I282gNgMOyg3ywg/mg== - dependencies: - "@peculiar/asn1-schema" "^2.5.0" - "@peculiar/asn1-x509" "^2.5.0" - asn1js "^3.0.6" - tslib "^2.8.1" - -"@peculiar/asn1-ecc@^2.6.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.7.0.tgz#c35b57859812ecd0c2ae7b2144855e8208c2cfee" - integrity sha512-n7KEs/Q/wrB415cxy4fHOBhegp4NdJ15fkJPwcB/3/8iNBQC2L/N7SChJPKDJPZGYH0jD4Tg4/0vnHmwghnbKw== +"@peculiar/asn1-csr@<2.7.0", "@peculiar/asn1-csr@^2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-csr/-/asn1-csr-2.6.0.tgz#a7eff845b0020720070a12f38f26effb9fdab158" + integrity sha512-BeWIu5VpTIhfRysfEp73SGbwjjoLL/JWXhJ/9mo4vXnz3tRGm+NGm3KNcRzQ9VMVqwYS2RHlolz21svzRXIHPQ== dependencies: - "@peculiar/asn1-schema" "^2.7.0" - "@peculiar/asn1-x509" "^2.7.0" + "@peculiar/asn1-schema" "^2.6.0" + "@peculiar/asn1-x509" "^2.6.0" asn1js "^3.0.6" tslib "^2.8.1" -"@peculiar/asn1-pfx@^2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-pfx/-/asn1-pfx-2.5.0.tgz#22d12e676c063dfc6244278fe18eb75c2c121880" - integrity sha512-Vj0d0wxJZA+Ztqfb7W+/iu8Uasw6hhKtCdLKXLG/P3kEPIQpqGI4P4YXlROfl7gOCqFIbgsj1HzFIFwQ5s20ug== +"@peculiar/asn1-ecc@<2.7.0", "@peculiar/asn1-ecc@^2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.6.0.tgz#4846d39712a1a2b4786c2d6ea27b19a6dcc05ef5" + integrity sha512-FF3LMGq6SfAOwUG2sKpPXblibn6XnEIKa+SryvUl5Pik+WR9rmRA3OCiwz8R3lVXnYnyRkSZsSLdml8H3UiOcw== dependencies: - "@peculiar/asn1-cms" "^2.5.0" - "@peculiar/asn1-pkcs8" "^2.5.0" - "@peculiar/asn1-rsa" "^2.5.0" - "@peculiar/asn1-schema" "^2.5.0" + "@peculiar/asn1-schema" "^2.6.0" + "@peculiar/asn1-x509" "^2.6.0" asn1js "^3.0.6" tslib "^2.8.1" -"@peculiar/asn1-pfx@^2.7.0": +"@peculiar/asn1-pfx@^2.6.0": version "2.7.0" resolved "https://registry.yarnpkg.com/@peculiar/asn1-pfx/-/asn1-pfx-2.7.0.tgz#d00766b13ff49785684a604248e6aadd184b291f" integrity sha512-V/nrlQVmhg7lYAsM7E13UDL5erAwFv6kCIVFqNaMIHSVi7dngcT839JkRTkQBqznMG98l2XjxYk74ZztAohZzA== @@ -686,13 +649,13 @@ asn1js "^3.0.6" tslib "^2.8.1" -"@peculiar/asn1-pkcs8@^2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.5.0.tgz#1939643773e928a4802813b595e324a05b453709" - integrity sha512-L7599HTI2SLlitlpEP8oAPaJgYssByI4eCwQq2C9eC90otFpm8MRn66PpbKviweAlhinWQ3ZjDD2KIVtx7PaVw== +"@peculiar/asn1-pkcs8@^2.5.0 <2.7.0", "@peculiar/asn1-pkcs8@^2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.6.0.tgz#c426caf81cb49935c553b591e0273b4b44d1696f" + integrity sha512-KyQ4D8G/NrS7Fw3XCJrngxmjwO/3htnA0lL9gDICvEQ+GJ+EPFqldcJQTwPIdvx98Tua+WjkdKHSC0/Km7T+lA== dependencies: - "@peculiar/asn1-schema" "^2.5.0" - "@peculiar/asn1-x509" "^2.5.0" + "@peculiar/asn1-schema" "^2.6.0" + "@peculiar/asn1-x509" "^2.6.0" asn1js "^3.0.6" tslib "^2.8.1" @@ -706,45 +669,31 @@ asn1js "^3.0.6" tslib "^2.8.1" -"@peculiar/asn1-pkcs9@^2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.5.0.tgz#8c5b873a721bb92b4fe758da9de1ead63165106d" - integrity sha512-UgqSMBLNLR5TzEZ5ZzxR45Nk6VJrammxd60WMSkofyNzd3DQLSNycGWSK5Xg3UTYbXcDFyG8pA/7/y/ztVCa6A== - dependencies: - "@peculiar/asn1-cms" "^2.5.0" - "@peculiar/asn1-pfx" "^2.5.0" - "@peculiar/asn1-pkcs8" "^2.5.0" - "@peculiar/asn1-schema" "^2.5.0" - "@peculiar/asn1-x509" "^2.5.0" - "@peculiar/asn1-x509-attr" "^2.5.0" - asn1js "^3.0.6" - tslib "^2.8.1" - -"@peculiar/asn1-pkcs9@^2.6.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.7.0.tgz#23b4eae41c2feb8df258aa69c502a70092026b0a" - integrity sha512-Bh7m+OuIaSEllPQcSd9OSp93F4ROWH7sbITWV8MI+8dwsjE5111/87VxiWVvYFKyww3vp39geLv9ENqhwWHcew== +"@peculiar/asn1-pkcs9@<2.7.0", "@peculiar/asn1-pkcs9@^2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.6.0.tgz#96b57122228a0e2e30e81118cd3baa570c13a51d" + integrity sha512-b78OQ6OciW0aqZxdzliXGYHASeCvvw5caqidbpQRYW2mBtXIX2WhofNXTEe7NyxTb0P6J62kAAWLwn0HuMF1Fw== dependencies: - "@peculiar/asn1-cms" "^2.7.0" - "@peculiar/asn1-pfx" "^2.7.0" - "@peculiar/asn1-pkcs8" "^2.7.0" - "@peculiar/asn1-schema" "^2.7.0" - "@peculiar/asn1-x509" "^2.7.0" - "@peculiar/asn1-x509-attr" "^2.7.0" + "@peculiar/asn1-cms" "^2.6.0" + "@peculiar/asn1-pfx" "^2.6.0" + "@peculiar/asn1-pkcs8" "^2.6.0" + "@peculiar/asn1-schema" "^2.6.0" + "@peculiar/asn1-x509" "^2.6.0" + "@peculiar/asn1-x509-attr" "^2.6.0" asn1js "^3.0.6" tslib "^2.8.1" -"@peculiar/asn1-rsa@^2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.5.0.tgz#7283756ec596ccfbef23ff0e7eda0c37133ebed8" - integrity sha512-qMZ/vweiTHy9syrkkqWFvbT3eLoedvamcUdnnvwyyUNv5FgFXA3KP8td+ATibnlZ0EANW5PYRm8E6MJzEB/72Q== +"@peculiar/asn1-rsa@<2.7.0", "@peculiar/asn1-rsa@^2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.6.0.tgz#49d905ab67ae8aa54e996734f37a391bb7958747" + integrity sha512-Nu4C19tsrTsCp9fDrH+sdcOKoVfdfoQQ7S3VqjJU6vedR7tY3RLkQ5oguOIB3zFW33USDUuYZnPEQYySlgha4w== dependencies: - "@peculiar/asn1-schema" "^2.5.0" - "@peculiar/asn1-x509" "^2.5.0" + "@peculiar/asn1-schema" "^2.6.0" + "@peculiar/asn1-x509" "^2.6.0" asn1js "^3.0.6" tslib "^2.8.1" -"@peculiar/asn1-rsa@^2.6.0", "@peculiar/asn1-rsa@^2.7.0": +"@peculiar/asn1-rsa@^2.7.0": version "2.7.0" resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.7.0.tgz#6dc5c78c643264dd5a251a66f1dd9a38fcbba385" integrity sha512-/qvENQrXyTZURjMqSeofHul0JJt2sNSzSwk36pl2olkHbaioMQgrASDZAlHXl0xUlnVbHj0uGgOrBMTb5x2aJQ== @@ -754,16 +703,16 @@ asn1js "^3.0.6" tslib "^2.8.1" -"@peculiar/asn1-schema@^2.3.15", "@peculiar/asn1-schema@^2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.5.0.tgz#4e58d7c3087c4259cebf5363e092f85b9cbf0ca1" - integrity sha512-YM/nFfskFJSlHqv59ed6dZlLZqtZQwjRVJ4bBAiWV08Oc+1rSd5lDZcBEx0lGDHfSoH3UziI2pXt2UM33KerPQ== +"@peculiar/asn1-schema@^2.3.15 <2.7.0", "@peculiar/asn1-schema@^2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.6.0.tgz#0dca1601d5b0fed2a72fed7a5f1d0d7dbe3a6f82" + integrity sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg== dependencies: asn1js "^3.0.6" pvtsutils "^1.3.6" tslib "^2.8.1" -"@peculiar/asn1-schema@^2.6.0", "@peculiar/asn1-schema@^2.7.0": +"@peculiar/asn1-schema@^2.7.0": version "2.7.0" resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.7.0.tgz#f2dcb25995ce7cac8687ba1039f043e5eff43820" integrity sha512-W8ZfWzLmQnrcky+eh3tni4IozMdqBDiHWU0N+vve/UGjMaUs8c0L7A2oEdkBXS8rTpWDpK/aoI3DG/L/hxmxPg== @@ -772,13 +721,13 @@ asn1js "^3.0.6" tslib "^2.8.1" -"@peculiar/asn1-x509-attr@^2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.5.0.tgz#d413597dfe097620a00780e9e2ae851b06f32aed" - integrity sha512-9f0hPOxiJDoG/bfNLAFven+Bd4gwz/VzrCIIWc1025LEI4BXO0U5fOCTNDPbbp2ll+UzqKsZ3g61mpBp74gk9A== +"@peculiar/asn1-x509-attr@<2.7.0", "@peculiar/asn1-x509-attr@^2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.6.0.tgz#057cb0c3c600a259c9f40582ee5fd7f0114c5be6" + integrity sha512-MuIAXFX3/dc8gmoZBkwJWxUWOSvG4MMDntXhrOZpJVMkYX+MYc/rUAU2uJOved9iJEoiUx7//3D8oG83a78UJA== dependencies: - "@peculiar/asn1-schema" "^2.5.0" - "@peculiar/asn1-x509" "^2.5.0" + "@peculiar/asn1-schema" "^2.6.0" + "@peculiar/asn1-x509" "^2.6.0" asn1js "^3.0.6" tslib "^2.8.1" @@ -792,17 +741,17 @@ asn1js "^3.0.6" tslib "^2.8.1" -"@peculiar/asn1-x509@^2.3.15", "@peculiar/asn1-x509@^2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.5.0.tgz#305f9cd534f4b6a723d27fc59363f382debf5500" - integrity sha512-CpwtMCTJvfvYTFMuiME5IH+8qmDe3yEWzKHe7OOADbGfq7ohxeLaXwQo0q4du3qs0AII3UbLCvb9NF/6q0oTKQ== +"@peculiar/asn1-x509@^2.3.15 <2.7.0", "@peculiar/asn1-x509@^2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.6.0.tgz#9aa0784b455ca34095fdc91a5cc52869e21528dd" + integrity sha512-uzYbPEpoQiBoTq0/+jZtpM6Gq6zADBx+JNFP3yqRgziWBxQ/Dt/HcuvRfm9zJTPdRcBqPNdaRHTVwpyiq6iNMA== dependencies: - "@peculiar/asn1-schema" "^2.5.0" + "@peculiar/asn1-schema" "^2.6.0" asn1js "^3.0.6" pvtsutils "^1.3.6" tslib "^2.8.1" -"@peculiar/asn1-x509@^2.6.0", "@peculiar/asn1-x509@^2.7.0": +"@peculiar/asn1-x509@^2.7.0": version "2.7.0" resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.7.0.tgz#84793efb7819dbc9526fd6b0a4ccd86f90464b96" integrity sha512-mUn9RRrkGDnG4ALfunDmzyRW5dg+sWCj/pfnCCqEHYbkGxEpvUt6iVJv8Yw1cyp6SWZ26ZE5oSmI5SqEaen15g== @@ -820,23 +769,6 @@ tslib "^2.8.1" "@peculiar/x509@^1.12.3": - version "1.14.0" - resolved "https://registry.yarnpkg.com/@peculiar/x509/-/x509-1.14.0.tgz#4b1abdf7ca5e46f2cb303fba608ef0507762e84a" - integrity sha512-Yc4PDxN3OrxUPiXgU63c+ZRXKGE8YKF2McTciYhUHFtHVB0KMnjeFSU0qpztGhsp4P0uKix4+J2xEpIEDu8oXg== - dependencies: - "@peculiar/asn1-cms" "^2.5.0" - "@peculiar/asn1-csr" "^2.5.0" - "@peculiar/asn1-ecc" "^2.5.0" - "@peculiar/asn1-pkcs9" "^2.5.0" - "@peculiar/asn1-rsa" "^2.5.0" - "@peculiar/asn1-schema" "^2.5.0" - "@peculiar/asn1-x509" "^2.5.0" - pvtsutils "^1.3.6" - reflect-metadata "^0.2.2" - tslib "^2.8.1" - tsyringe "^4.10.0" - -"@peculiar/x509@^1.14.2": version "1.14.3" resolved "https://registry.yarnpkg.com/@peculiar/x509/-/x509-1.14.3.tgz#2c44c2b89474346afec38a0c2803ec4fb8ce959e" integrity sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA== @@ -1562,11 +1494,6 @@ bytes@^3.1.2, bytes@~3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -bytestreamjs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/bytestreamjs/-/bytestreamjs-2.0.1.tgz#a32947c7ce389a6fa11a09a9a563d0a45889535e" - integrity sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ== - cacheable-lookup@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz#0330a543471c61faa4e9035db583aad753b36385" @@ -2532,10 +2459,10 @@ https-proxy-agent@^7.0.6: agent-base "^7.1.2" debug "4" -httpxy@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/httpxy/-/httpxy-0.5.1.tgz#c0cccd78672995968eee57666c3e3cfa822c2806" - integrity sha512-JPhqYiixe1A1I+MXDewWDZqeudBGU8Q9jCHYN8ML+779RQzLjTi78HBvWz4jMxUD6h2/vUL12g4q/mFM0OUw1A== +httpxy@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/httpxy/-/httpxy-0.5.3.tgz#e9d4d9b584ec3a2c5d46d7d87635419e780353aa" + integrity sha512-SMS9V6Sn7VWaS11lYhoAr0ceoaiolTWf4jYdJn0NJhCdKMu9R2H9Fh0LBDWBHQF6HRLI1PmaePYsjanSpE5PEw== husky@9.1.7: version "9.1.7" @@ -3018,20 +2945,26 @@ minimatch@^10.2.2, minimatch@^10.2.4: dependencies: brace-expansion "^5.0.5" -mockttp@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/mockttp/-/mockttp-4.3.1.tgz#02d759c0b4bd8cb7133f0201fd1d7ab99d1412c7" - integrity sha512-g9USZI+EPdwdLFqvfETQ0+76+fnIb+3vXPo2qN90rXe+1lCpJJjiGqCJwdhl5bx8wMNEM57DjRSiQVi6oOynWQ== +mockttp@4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/mockttp/-/mockttp-4.4.2.tgz#8132e8343fbf166ab623e529bde6d067ae9d4523" + integrity sha512-jHw/qCuzIReIVRDNK5geG17K7Xo0qlamRCCw5yI4ab8vQ1MGimOS9QU3u76bc0sLG1jQygjlcx421QkKOy0pfA== dependencies: "@graphql-tools/schema" "^10.0.31" "@graphql-tools/utils" "^11.0.0" - "@httptoolkit/httpolyglot" "^3.0.1" + "@httptoolkit/httpolyglot" "^3.1.0" "@httptoolkit/subscriptions-transport-ws" "^0.11.2" "@httptoolkit/util" "^0.1.7" "@httptoolkit/websocket-stream" "^6.0.1" - "@peculiar/asn1-pkcs8" "^2.5.0" - "@peculiar/asn1-schema" "^2.3.15" - "@peculiar/asn1-x509" "^2.3.15" + "@peculiar/asn1-cms" "<2.7.0" + "@peculiar/asn1-csr" "<2.7.0" + "@peculiar/asn1-ecc" "<2.7.0" + "@peculiar/asn1-pkcs8" "^2.5.0 <2.7.0" + "@peculiar/asn1-pkcs9" "<2.7.0" + "@peculiar/asn1-rsa" "<2.7.0" + "@peculiar/asn1-schema" "^2.3.15 <2.7.0" + "@peculiar/asn1-x509" "^2.3.15 <2.7.0" + "@peculiar/asn1-x509-attr" "<2.7.0" "@peculiar/x509" "^1.12.3" "@types/cors" "^2.8.6" "@types/node" "*" @@ -3350,18 +3283,6 @@ pkg-pr-new@0.0.71: resolved "https://registry.yarnpkg.com/pkg-pr-new/-/pkg-pr-new-0.0.71.tgz#b4ee1b96bc28500279be1cfc3d09fc102532f7da" integrity sha512-Ln7I7NaOXN6CjBLVrNqsWOo6mIaNW4chH4eCR2t4tnQSmYtyQiWCqlMG6bL2JYCT1MOiKEiDObnnzePGh0TNFQ== -pkijs@^3.3.3: - version "3.4.0" - resolved "https://registry.yarnpkg.com/pkijs/-/pkijs-3.4.0.tgz#d9164def30ff6d97be2d88966d5e36192499ca9c" - integrity sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw== - dependencies: - "@noble/hashes" "1.4.0" - asn1js "^3.0.6" - bytestreamjs "^2.0.1" - pvtsutils "^1.3.6" - pvutils "^1.1.3" - tslib "^2.8.1" - postcss@^8.5.8: version "8.5.14" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.14.tgz#a66c2d7808fadf69ebb5b84a03f8bafd76c4919c" @@ -3566,14 +3487,6 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -selfsigned@5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-5.5.0.tgz#4c9ab7c7c9f35f18fb6a9882c253eb0e6bd6557b" - integrity sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew== - dependencies: - "@peculiar/x509" "^1.14.2" - pkijs "^3.3.3" - semver@^7.5.2: version "7.7.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a"