This is an automated email from the ASF dual-hosted git repository.
spetz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iggy.git
The following commit(s) were added to refs/heads/master by this push:
new b452d150d fix(node): TLS + VSR connection support (#3813)
b452d150d is described below
commit b452d150d285f68ef7cf0c5d9f736e08358f4df0
Author: Piotr Gankiewicz <[email protected]>
AuthorDate: Tue Aug 4 07:27:36 2026 +0200
fix(node): TLS + VSR connection support (#3813)
VSR clients rejected TLS before opening a socket even though the
transport and framing layers already supported the combination.
Remove the stale guard and test an encrypted VSR handshake and command
exchange directly.
---
foreign/node/README.md | 6 +-
foreign/node/package-lock.json | 649 +++++++++++++-------------
foreign/node/package.json | 2 +-
foreign/node/src/client/client.config.test.ts | 19 +-
foreign/node/src/client/client.config.ts | 3 -
foreign/node/src/client/client.socket.test.ts | 50 +-
foreign/node/src/e2e/tls.system.e2e.ts | 4 +
7 files changed, 382 insertions(+), 351 deletions(-)
diff --git a/foreign/node/README.md b/foreign/node/README.md
index ac5cacf6b..ecb045379 100644
--- a/foreign/node/README.md
+++ b/foreign/node/README.md
@@ -57,11 +57,7 @@ from the SDK command table use `Operation::NonReplicated`
and carry the command
code in the request header's reserved field. The server remains authoritative
for classifying or rejecting extension commands.
-The same npm package supports both framing modes. VSR currently supports TCP
-only and restricts `Client` to one pooled connection because authentication,
-request sequencing, and consumer-group assignments belong to one consensus
-session. Configurations requesting VSR over TLS or more than one pooled
-connection fail before a socket is opened.
+The same npm package supports both framing modes over TCP and TLS. VSR
restricts `Client` to one pooled connection because authentication, request
sequencing, and consumer-group assignments belong to one consensus session.
Configurations requesting more than one pooled connection fail before a socket
is opened.
VSR authentication translates the existing password and personal-access-token
login APIs into the register handshake required by the consensus protocol. A
diff --git a/foreign/node/package-lock.json b/foreign/node/package-lock.json
index 0ac104322..1c11d0a11 100644
--- a/foreign/node/package-lock.json
+++ b/foreign/node/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "apache-iggy",
- "version": "0.8.1-edge.3",
+ "version": "0.8.1-edge.4",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "apache-iggy",
- "version": "0.8.1-edge.3",
+ "version": "0.8.1-edge.4",
"license": "Apache-2.0",
"dependencies": {
"debug": "4.4.3",
@@ -39,13 +39,13 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.29.0",
- "resolved":
"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
- "integrity":
"sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
+ "version": "7.29.7",
+ "resolved":
"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
+ "integrity":
"sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.28.5",
+ "@babel/helper-validator-identifier": "^7.29.7",
"js-tokens": "^4.0.0",
"picocolors": "^1.1.1"
},
@@ -54,9 +54,9 @@
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.28.5",
- "resolved":
"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
- "integrity":
"sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "version": "7.29.7",
+ "resolved":
"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
+ "integrity":
"sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -574,9 +574,9 @@
}
},
"node_modules/@cucumber/query": {
- "version": "16.0.1",
- "resolved":
"https://registry.npmjs.org/@cucumber/query/-/query-16.0.1.tgz",
- "integrity":
"sha512-qZwCbL5WLhHGqBdYZvguA5zOTEdLauMTrQEDcDcILMk6eVyPwgtmkcH2/4s/jnT+f02cW0ZVbAaToIN3j6glXw==",
+ "version": "16.1.0",
+ "resolved":
"https://registry.npmjs.org/@cucumber/query/-/query-16.1.0.tgz",
+ "integrity":
"sha512-68oRiUIUkrTZJpxh1o3x1JG3YIZ9S+w+AJPk9EdHzgTOFxsmqs8DoAKSU9nMpnBE4u5gNKeRhzA0GKrUR6zcmw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -595,21 +595,21 @@
"license": "MIT"
},
"node_modules/@emnapi/core": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.1.tgz",
- "integrity":
"sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==",
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.3.tgz",
+ "integrity":
"sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
- "@emnapi/wasi-threads": "1.2.0",
+ "@emnapi/wasi-threads": "1.2.3",
"tslib": "^2.4.0"
}
},
"node_modules/@emnapi/runtime": {
- "version": "1.9.1",
- "resolved":
"https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.1.tgz",
- "integrity":
"sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==",
+ "version": "1.11.3",
+ "resolved":
"https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz",
+ "integrity":
"sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -618,9 +618,9 @@
}
},
"node_modules/@emnapi/wasi-threads": {
- "version": "1.2.0",
- "resolved":
"https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz",
- "integrity":
"sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==",
+ "version": "1.2.3",
+ "resolved":
"https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz",
+ "integrity":
"sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -850,20 +850,16 @@
}
},
"node_modules/@napi-rs/wasm-runtime": {
- "version": "1.1.1",
- "resolved":
"https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz",
- "integrity":
"sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==",
+ "version": "0.2.12",
+ "resolved":
"https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz",
+ "integrity":
"sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
- "@emnapi/core": "^1.7.1",
- "@emnapi/runtime": "^1.7.1",
- "@tybys/wasm-util": "^0.10.1"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Brooooooklyn"
+ "@emnapi/core": "^1.4.3",
+ "@emnapi/runtime": "^1.4.3",
+ "@tybys/wasm-util": "^0.10.0"
}
},
"node_modules/@node-rs/xxhash": {
@@ -1006,9 +1002,6 @@
"arm64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -1026,9 +1019,6 @@
"arm64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -1046,9 +1036,6 @@
"x64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -1066,9 +1053,6 @@
"x64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -1095,19 +1079,6 @@
"node": ">=14.0.0"
}
},
-
"node_modules/@node-rs/xxhash-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": {
- "version": "0.2.12",
- "resolved":
"https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz",
- "integrity":
"sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@emnapi/core": "^1.4.3",
- "@emnapi/runtime": "^1.4.3",
- "@tybys/wasm-util": "^0.10.0"
- }
- },
"node_modules/@node-rs/xxhash-win32-arm64-msvc": {
"version": "1.7.6",
"resolved":
"https://registry.npmjs.org/@node-rs/xxhash-win32-arm64-msvc/-/xxhash-win32-arm64-msvc-1.7.6.tgz",
@@ -1160,9 +1131,9 @@
}
},
"node_modules/@oxc-resolver/binding-android-arm-eabi": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.19.1.tgz",
- "integrity":
"sha512-aUs47y+xyXHUKlbhqHUjBABjvycq6YSD7bpxSW7vplUmdzAlJ93yXY6ZR0c1o1x5A/QKbENCvs3+NlY8IpIVzg==",
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.24.2.tgz",
+ "integrity":
"sha512-y09e0L0SRI2OA2tUIrjBgoV3eH5hvUKXNkJqXmNo5V2WxIjyC7I7aJfRLMEVpA8yi95f90gFDvO0VMgrDw+vwA==",
"cpu": [
"arm"
],
@@ -1174,9 +1145,9 @@
]
},
"node_modules/@oxc-resolver/binding-android-arm64": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.19.1.tgz",
- "integrity":
"sha512-oolbkRX+m7Pq2LNjr/kKgYeC7bRDMVTWPgxBGMjSpZi/+UskVo4jsMU3MLheZV55jL6c3rNelPl4oD60ggYmqA==",
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.24.2.tgz",
+ "integrity":
"sha512-cl4icWaZFnLdg8m6qtnh5rBMuGbxc/ptStFHLeCNwr+2cZjkjNwQu/jYRS0CHlnPecOJMpuS5M6/BH+0J/YkEg==",
"cpu": [
"arm64"
],
@@ -1188,9 +1159,9 @@
]
},
"node_modules/@oxc-resolver/binding-darwin-arm64": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.19.1.tgz",
- "integrity":
"sha512-nUC6d2i3R5B12sUW4O646qD5cnMXf2oBGPLIIeaRfU9doJRORAbE2SGv4eW6rMqhD+G7nf2Y8TTJTLiiO3Q/dQ==",
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.24.2.tgz",
+ "integrity":
"sha512-At29QEMF6HajbQvgY8K6OXnHD1x9rad74xBEfmCB6ZqCGsdq75aK7tOYcTbOanMy8qdIBrfL3SMr3p/lfSlb9w==",
"cpu": [
"arm64"
],
@@ -1202,9 +1173,9 @@
]
},
"node_modules/@oxc-resolver/binding-darwin-x64": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.19.1.tgz",
- "integrity":
"sha512-cV50vE5+uAgNcFa3QY1JOeKDSkM/9ReIcc/9wn4TavhW/itkDGrXhw9jaKnkQnGbjJ198Yh5nbX/Gr2mr4Z5jQ==",
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.24.2.tgz",
+ "integrity":
"sha512-A5Kqr1EUj4oIL5CF4WRssq/o5P0Y11cwoFouMRmQ7YnC/A8V93nv1nb7aSU8HwcgmXropjLNkVTl4MN87cu28Q==",
"cpu": [
"x64"
],
@@ -1216,9 +1187,9 @@
]
},
"node_modules/@oxc-resolver/binding-freebsd-x64": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.19.1.tgz",
- "integrity":
"sha512-xZOQiYGFxtk48PBKff+Zwoym7ScPAIVp4c14lfLxizO2LTTTJe5sx9vQNGrBymrf/vatSPNMD4FgsaaRigPkqw==",
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.24.2.tgz",
+ "integrity":
"sha512-R5xkRBRRz7ceH/P5Jrc6G7FmdUdgpLYyESFAUDVTNQ9K0sGPxcp4ljiwEwEqsvNcQ4sYbMRrWcHHBCu7ksAJVw==",
"cpu": [
"x64"
],
@@ -1230,9 +1201,9 @@
]
},
"node_modules/@oxc-resolver/binding-linux-arm-gnueabihf": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.19.1.tgz",
- "integrity":
"sha512-lXZYWAC6kaGe/ky2su94e9jN9t6M0/6c+GrSlCqL//XO1cxi5lpAhnJYdyrKfm0ZEr/c7RNyAx3P7FSBcBd5+A==",
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.24.2.tgz",
+ "integrity":
"sha512-k/RuYL4L/R58IBn3wT5ma3Wh4k62bp1eYCFRWCmMsasUOqL+H6sW0VGFadEzKWXFFlz+2uIMoeMk9ySSZJHgbg==",
"cpu": [
"arm"
],
@@ -1244,9 +1215,9 @@
]
},
"node_modules/@oxc-resolver/binding-linux-arm-musleabihf": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.19.1.tgz",
- "integrity":
"sha512-veG1kKsuK5+t2IsO9q0DErYVSw2azvCVvWHnfTOS73WE0STdLLB7Q1bB9WR+yHPQM76ASkFyRbogWo1GR1+WbQ==",
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.24.2.tgz",
+ "integrity":
"sha512-bnHAak3ujYfH5pKk4NieFNbvYvernfoQDgwLddbZ3OtMYrem87/qjlA+u+aKG0oZcqSLGCful/6/CEA+aeAgaA==",
"cpu": [
"arm"
],
@@ -1258,9 +1229,9 @@
]
},
"node_modules/@oxc-resolver/binding-linux-arm64-gnu": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.19.1.tgz",
- "integrity":
"sha512-heV2+jmXyYnUrpUXSPugqWDRpnsQcDm2AX4wzTuvgdlZfoNYO0O3W2AVpJYaDn9AG4JdM6Kxom8+foE7/BcSig==",
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.24.2.tgz",
+ "integrity":
"sha512-vDT3KHgzYp47gmtNOqL2VNhCyl5Zv643eyxm//A68J8DeUGXrvD1pZFiaT4jSfe+RInfnn1R2yVHye4enx6RnA==",
"cpu": [
"arm64"
],
@@ -1272,9 +1243,9 @@
]
},
"node_modules/@oxc-resolver/binding-linux-arm64-musl": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.19.1.tgz",
- "integrity":
"sha512-jvo2Pjs1c9KPxMuMPIeQsgu0mOJF9rEb3y3TdpsrqwxRM+AN6/nDDwv45n5ZrUnQMsdBy5gIabioMKnQfWo9ew==",
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.24.2.tgz",
+ "integrity":
"sha512-+kMlQvbzfyEYtu5FcjE4p+ttBLpKW4d/AsAsuE69BxV6V4twZJeIQZFfD8gh/wqglY0MkPSezWXQH0jBV13MUw==",
"cpu": [
"arm64"
],
@@ -1286,9 +1257,9 @@
]
},
"node_modules/@oxc-resolver/binding-linux-ppc64-gnu": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.19.1.tgz",
- "integrity":
"sha512-vLmdNxWCdN7Uo5suays6A/+ywBby2PWBBPXctWPg5V0+eVuzsJxgAn6MMB4mPlshskYbppjpN2Zg83ArHze9gQ==",
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.24.2.tgz",
+ "integrity":
"sha512-shjfMhmZ3gq9fv/w7bi3PnZlgOPG+2QAOFf0BJF0EgBSIGZ6PMLN2zbGEblTUYB/NKVDRyYhE2ff3dJ1QqNPkA==",
"cpu": [
"ppc64"
],
@@ -1300,9 +1271,9 @@
]
},
"node_modules/@oxc-resolver/binding-linux-riscv64-gnu": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.19.1.tgz",
- "integrity":
"sha512-/b+WgR+VTSBxzgOhDO7TlMXC1ufPIMR6Vj1zN+/x+MnyXGW7prTLzU9eW85Aj7Th7CCEG9ArCbTeqxCzFWdg2w==",
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.24.2.tgz",
+ "integrity":
"sha512-zGelwFR5oRo+b69k8Lrzun86DyUHzfKN6cnjbR9l7Z7NIRznOE/2ZvPa1IUKqAL2PzAXOdwkfVqNvO1H2RlpAw==",
"cpu": [
"riscv64"
],
@@ -1314,9 +1285,9 @@
]
},
"node_modules/@oxc-resolver/binding-linux-riscv64-musl": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.19.1.tgz",
- "integrity":
"sha512-YlRdeWb9j42p29ROh+h4eg/OQ3dTJlpHSa+84pUM9+p6i3djtPz1q55yLJhgW9XfDch7FN1pQ/Vd6YP+xfRIuw==",
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.24.2.tgz",
+ "integrity":
"sha512-qxZ1SWCXJY0eyhAlP6Lmo9F2Nrtx7EkYj9oCgL8apDPCwXwCEDA2U697bbT81JIc2IrVjxO4KX6WU2N+oN9Z4w==",
"cpu": [
"riscv64"
],
@@ -1328,9 +1299,9 @@
]
},
"node_modules/@oxc-resolver/binding-linux-s390x-gnu": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.19.1.tgz",
- "integrity":
"sha512-EDpafVOQWF8/MJynsjOGFThcqhRHy417sRyLfQmeiamJ8qVhSKAn2Dn2VVKUGCjVB9C46VGjhNo7nOPUi1x6uA==",
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.24.2.tgz",
+ "integrity":
"sha512-sGCecF3cx2DFlH4t/z7ApnOnXqN48p5p5mlHDEnHTAukQa2P+qMVE4CwyWE9W+q/m3QJ7kKfGrIjax31f44oFQ==",
"cpu": [
"s390x"
],
@@ -1342,9 +1313,9 @@
]
},
"node_modules/@oxc-resolver/binding-linux-x64-gnu": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.19.1.tgz",
- "integrity":
"sha512-NxjZe+rqWhr+RT8/Ik+5ptA3oz7tUw361Wa5RWQXKnfqwSSHdHyrw6IdcTfYuml9dM856AlKWZIUXDmA9kkiBQ==",
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.24.2.tgz",
+ "integrity":
"sha512-k/VlMMcSzMlahb3/fENM4rTlsJ0s3fFROA0KXPBmKggqmTSaE383sl8F3KCOXPLmVsYfW6hCitMhXCEtNeZxxg==",
"cpu": [
"x64"
],
@@ -1356,9 +1327,9 @@
]
},
"node_modules/@oxc-resolver/binding-linux-x64-musl": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.19.1.tgz",
- "integrity":
"sha512-cM/hQwsO3ReJg5kR+SpI69DMfvNCp+A/eVR4b4YClE5bVZwz8rh2Nh05InhwI5HR/9cArbEkzMjcKgTHS6UaNw==",
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.24.2.tgz",
+ "integrity":
"sha512-8hbnZyNi97b/8wapYaIF9+t9GmZKBW2vunaOc3h9HGJptH7b7XpvZqOTBSm/MpTjr7H497BlgOaSfLUdhmy2bw==",
"cpu": [
"x64"
],
@@ -1370,9 +1341,9 @@
]
},
"node_modules/@oxc-resolver/binding-openharmony-arm64": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.19.1.tgz",
- "integrity":
"sha512-QF080IowFB0+9Rh6RcD19bdgh49BpQHUW5TajG1qvWHvmrQznTZZjYlgE2ltLXyKY+qs4F/v5xuX1XS7Is+3qA==",
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.24.2.tgz",
+ "integrity":
"sha512-MvyGik3a6pVgZ0t/kWlbmFxFLmXQJwgLsY2eYFHLpy0wGwRbfzeIGgDwQ3kXqE30z+kSXennRkCrT7TUvkptNg==",
"cpu": [
"arm64"
],
@@ -1384,9 +1355,9 @@
]
},
"node_modules/@oxc-resolver/binding-wasm32-wasi": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.19.1.tgz",
- "integrity":
"sha512-w8UCKhX826cP/ZLokXDS6+milN8y4X7zidsAttEdWlVoamTNf6lhBJldaWr3ukTDiye7s4HRcuPEPOXNC432Vg==",
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.24.2.tgz",
+ "integrity":
"sha512-vHcssMPwO08RTvj/c0iOBz90attxyG3wQJ0dTcyEQK43LRpcdLWZlV5feBhv6Isn6ahbQIzHbCgfa81+RiML0Q==",
"cpu": [
"wasm32"
],
@@ -1394,32 +1365,76 @@
"license": "MIT",
"optional": true,
"dependencies": {
- "@napi-rs/wasm-runtime": "^1.1.1"
+ "@emnapi/core": "1.11.2",
+ "@emnapi/runtime": "1.11.2",
+ "@napi-rs/wasm-runtime": "^1.1.6"
},
"engines": {
"node": ">=14.0.0"
}
},
- "node_modules/@oxc-resolver/binding-win32-arm64-msvc": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.19.1.tgz",
- "integrity":
"sha512-nJ4AsUVZrVKwnU/QRdzPCCrO0TrabBqgJ8pJhXITdZGYOV28TIYystV1VFLbQ7DtAcaBHpocT5/ZJnF78YJPtQ==",
- "cpu": [
- "arm64"
- ],
+
"node_modules/@oxc-resolver/binding-wasm32-wasi/node_modules/@emnapi/core": {
+ "version": "1.11.2",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.2.tgz",
+ "integrity":
"sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==",
"dev": true,
"license": "MIT",
"optional": true,
- "os": [
- "win32"
- ]
+ "dependencies": {
+ "@emnapi/wasi-threads": "1.2.2",
+ "tslib": "^2.4.0"
+ }
+ },
+
"node_modules/@oxc-resolver/binding-wasm32-wasi/node_modules/@emnapi/runtime": {
+ "version": "1.11.2",
+ "resolved":
"https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.2.tgz",
+ "integrity":
"sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
},
- "node_modules/@oxc-resolver/binding-win32-ia32-msvc": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-11.19.1.tgz",
- "integrity":
"sha512-EW+ND5q2Tl+a3pH81l1QbfgbF3HmqgwLfDfVithRFheac8OTcnbXt/JxqD2GbDkb7xYEqy1zNaVFRr3oeG8npA==",
+
"node_modules/@oxc-resolver/binding-wasm32-wasi/node_modules/@emnapi/wasi-threads":
{
+ "version": "1.2.2",
+ "resolved":
"https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz",
+ "integrity":
"sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+
"node_modules/@oxc-resolver/binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime":
{
+ "version": "1.2.2",
+ "resolved":
"https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.2.tgz",
+ "integrity":
"sha512-JfB4kuJQjaoHuCTseIINHtHWeJnvgEcxjwA5t/Y00ZgaOO1Crz3fjT/p8kT28zA/Caz7oiUMn3d6H2yOVCVwuw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@tybys/wasm-util": "^0.10.3"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=23.5.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ },
+ "peerDependencies": {
+ "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.3",
+ "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.3"
+ }
+ },
+ "node_modules/@oxc-resolver/binding-win32-arm64-msvc": {
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.24.2.tgz",
+ "integrity":
"sha512-uokJqro2iBqkFvJdKQLP7d8/BUmFwESQFVmIJUQKj1Xn1a/LysJoe1vmeECLF5b3jsV8CAL5sEMJXX6SdK9Nhg==",
"cpu": [
- "ia32"
+ "arm64"
],
"dev": true,
"license": "MIT",
@@ -1429,9 +1444,9 @@
]
},
"node_modules/@oxc-resolver/binding-win32-x64-msvc": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.19.1.tgz",
- "integrity":
"sha512-6hIU3RQu45B+VNTY4Ru8ppFwjVS/S5qwYyGhBotmjxfEKk41I2DlGtRfGJndZ5+6lneE2pwloqunlOyZuX/XAw==",
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.24.2.tgz",
+ "integrity":
"sha512-UqGPmo56KDfLlfXFAFIrNflHT8tFxWGEivWg3Zeyp4Uy2NlKN1FGPr6/BxcLGG3+kZ6Wp14g5Uj+n71boqZfiw==",
"cpu": [
"x64"
],
@@ -1527,9 +1542,9 @@
}
},
"node_modules/@swc/core": {
- "version": "1.15.46",
- "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.46.tgz",
- "integrity":
"sha512-Ri3em2mBpq3h2zSPliCYl63otDGqek8PPEfv2nWgRQEbZ/VBCNyypVTVQ6cEbTCXBhy+WE2T3fQb08moIyuYaw==",
+ "version": "1.15.47",
+ "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.47.tgz",
+ "integrity":
"sha512-FbsO5JcfOjfH38W/rohBRBweJeERsAuIP4f377lmkmxTcq9exjtx4SkRuZY5CdfhR2CBVwDIJegBpJDffwNsOg==",
"dev": true,
"hasInstallScript": true,
"license": "Apache-2.0",
@@ -1546,18 +1561,18 @@
"url": "https://opencollective.com/swc"
},
"optionalDependencies": {
- "@swc/core-darwin-arm64": "1.15.46",
- "@swc/core-darwin-x64": "1.15.46",
- "@swc/core-linux-arm-gnueabihf": "1.15.46",
- "@swc/core-linux-arm64-gnu": "1.15.46",
- "@swc/core-linux-arm64-musl": "1.15.46",
- "@swc/core-linux-ppc64-gnu": "1.15.46",
- "@swc/core-linux-s390x-gnu": "1.15.46",
- "@swc/core-linux-x64-gnu": "1.15.46",
- "@swc/core-linux-x64-musl": "1.15.46",
- "@swc/core-win32-arm64-msvc": "1.15.46",
- "@swc/core-win32-ia32-msvc": "1.15.46",
- "@swc/core-win32-x64-msvc": "1.15.46"
+ "@swc/core-darwin-arm64": "1.15.47",
+ "@swc/core-darwin-x64": "1.15.47",
+ "@swc/core-linux-arm-gnueabihf": "1.15.47",
+ "@swc/core-linux-arm64-gnu": "1.15.47",
+ "@swc/core-linux-arm64-musl": "1.15.47",
+ "@swc/core-linux-ppc64-gnu": "1.15.47",
+ "@swc/core-linux-s390x-gnu": "1.15.47",
+ "@swc/core-linux-x64-gnu": "1.15.47",
+ "@swc/core-linux-x64-musl": "1.15.47",
+ "@swc/core-win32-arm64-msvc": "1.15.47",
+ "@swc/core-win32-ia32-msvc": "1.15.47",
+ "@swc/core-win32-x64-msvc": "1.15.47"
},
"peerDependencies": {
"@swc/helpers": ">=0.5.17"
@@ -1569,9 +1584,9 @@
}
},
"node_modules/@swc/core-darwin-arm64": {
- "version": "1.15.46",
- "resolved":
"https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.46.tgz",
- "integrity":
"sha512-IsISIT22EfktVJrlvIpnAxG2u/A9aob9l99HMlx80x72WlFmFPk1V3UhkEzx86eJP8hw049KTFv/RISho2cq2Q==",
+ "version": "1.15.47",
+ "resolved":
"https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.47.tgz",
+ "integrity":
"sha512-GsoMtan3ojGGMGFbl31mmRu5ctZ56re8grGE8mO/OHJ8O+JRkzod02fe7X6ZQ8JvamA3imkEkx/h3u+vsOgPgA==",
"cpu": [
"arm64"
],
@@ -1585,9 +1600,9 @@
}
},
"node_modules/@swc/core-darwin-x64": {
- "version": "1.15.46",
- "resolved":
"https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.46.tgz",
- "integrity":
"sha512-4Tj4ppVIPCmUMpmGFiGtyEriwLyJ+yi/US4WfBrP/ok8COGddDZXLEzQETnKyK46mjvr1v0jevrS23zjoff7vA==",
+ "version": "1.15.47",
+ "resolved":
"https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.47.tgz",
+ "integrity":
"sha512-leTi7Rx3KF4zcC637iqWgk9SoV8VXAD8ppQYXsep63px5A/UftOcxLN1pmr8Z1si/YvX90ompP/rHgpYkgwXWg==",
"cpu": [
"x64"
],
@@ -1601,9 +1616,9 @@
}
},
"node_modules/@swc/core-linux-arm-gnueabihf": {
- "version": "1.15.46",
- "resolved":
"https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.46.tgz",
- "integrity":
"sha512-i8tUGnNjyOgMmfmgFSg4aeJLQoFyfpIHK5FjpQAwpRyQIqEUB2w1e8zIDQzY1WhOxx8NoS1S5iUL813Un4Sf5A==",
+ "version": "1.15.47",
+ "resolved":
"https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.47.tgz",
+ "integrity":
"sha512-hBqHuoWKKIsKmDBn9qVeWqj5GWZhtlcczVaqQmNRXsDfq+voR5CxKRfamA367QjJXtceYuliLFfEL8QsskRM2g==",
"cpu": [
"arm"
],
@@ -1617,15 +1632,12 @@
}
},
"node_modules/@swc/core-linux-arm64-gnu": {
- "version": "1.15.46",
- "resolved":
"https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.46.tgz",
- "integrity":
"sha512-c0OnhqzdhfOvv6qhNCcByepB+sNYOGZyhtr2Qa6ZCHvAWTYhSRw4j/u92Stue9PbZ/6q74b9nHzi76+kVzqQHQ==",
+ "version": "1.15.47",
+ "resolved":
"https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.47.tgz",
+ "integrity":
"sha512-TBxvRz+B4K205TWHHZxWVxkC2RFNP/Mz3PNcECBos5PsKwxjg3QSJzdoebr0VCf0Bfh8HOPldKxAP/8XkFe9gA==",
"cpu": [
"arm64"
],
- "libc": [
- "glibc"
- ],
"license": "Apache-2.0 AND MIT",
"optional": true,
"os": [
@@ -1636,15 +1648,12 @@
}
},
"node_modules/@swc/core-linux-arm64-musl": {
- "version": "1.15.46",
- "resolved":
"https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.46.tgz",
- "integrity":
"sha512-imyRpNEcUzFQFV2LE4jL68ErvmKEuZCbvZru77iQREunJ+bR4i658cupTgtG1mLYM3F1Tzy3Sb9xYb02KghWTg==",
+ "version": "1.15.47",
+ "resolved":
"https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.47.tgz",
+ "integrity":
"sha512-3Yu3Uq/VgytqsPjTMbkPU1ExADytbdWbruJYhA584E9jrpE2Ki+R6VVPoZCeAVk1Cb7QxcRTgblw6bSa6a/R+w==",
"cpu": [
"arm64"
],
- "libc": [
- "musl"
- ],
"license": "Apache-2.0 AND MIT",
"optional": true,
"os": [
@@ -1655,16 +1664,13 @@
}
},
"node_modules/@swc/core-linux-ppc64-gnu": {
- "version": "1.15.46",
- "resolved":
"https://registry.npmjs.org/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.15.46.tgz",
- "integrity":
"sha512-ctEfcl/HcUeomK33cbySiHZm98GEDIxTm1EkpBsYCiHxElYBzvTXVeuQT2YwbUXn9XCrjiw4ipyUNk33k26qRg==",
+ "version": "1.15.47",
+ "resolved":
"https://registry.npmjs.org/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.15.47.tgz",
+ "integrity":
"sha512-wfdMi5IaOaNtmh2/6geRoxIdNfqylUZFdtzTKS655y1axWfIWyx7As74vv0wVdjeCIZ3WmCI9odDd4rUttXOSQ==",
"cpu": [
"ppc64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "Apache-2.0 AND MIT",
"optional": true,
"os": [
@@ -1676,16 +1682,13 @@
}
},
"node_modules/@swc/core-linux-s390x-gnu": {
- "version": "1.15.46",
- "resolved":
"https://registry.npmjs.org/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.15.46.tgz",
- "integrity":
"sha512-DxlMdnt84TtRVTv7WL/thWyz9+QU8QZNNoAP9rrk0P68LziuhfePp8MjQ44zIprpTHTsEwyziIuGUUN5iSC1bQ==",
+ "version": "1.15.47",
+ "resolved":
"https://registry.npmjs.org/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.15.47.tgz",
+ "integrity":
"sha512-3hHYBY0yx8Ez7GMRrkhXHQzMdR5IZA6Wq5Ee4svlgwvSECLpnAJ9+0AimEGUFDvuLwE7nV/2+PYe8+Nm4rvNcQ==",
"cpu": [
"s390x"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "Apache-2.0 AND MIT",
"optional": true,
"os": [
@@ -1697,15 +1700,12 @@
}
},
"node_modules/@swc/core-linux-x64-gnu": {
- "version": "1.15.46",
- "resolved":
"https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.46.tgz",
- "integrity":
"sha512-SKxI7J6t90XPl8hRUqtJi9NfGdunN/E/vZMc7Bc0figeRdOPDBT+Tm8g7cx9xM0T0mewh2l+8dewa3Am27/P+A==",
+ "version": "1.15.47",
+ "resolved":
"https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.47.tgz",
+ "integrity":
"sha512-TjfhjgP/jGCfFHYC3JQPhJA1HwErbIJ9JfREDc1KNkvY6P0LodCgKVIlQ5deeTbkG7ih3bF5PHJLuLpaZjdRyQ==",
"cpu": [
"x64"
],
- "libc": [
- "glibc"
- ],
"license": "Apache-2.0 AND MIT",
"optional": true,
"os": [
@@ -1716,15 +1716,12 @@
}
},
"node_modules/@swc/core-linux-x64-musl": {
- "version": "1.15.46",
- "resolved":
"https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.46.tgz",
- "integrity":
"sha512-qj9T6B7bosI0VEsrWOVXZN1OXxS8Tp63ywyrLxNdOycnUtLdkgYcoBsN5y8ImnDDsnwrEWZOy1e+J4xSe7mA3Q==",
+ "version": "1.15.47",
+ "resolved":
"https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.47.tgz",
+ "integrity":
"sha512-CQpS8Ge/avfjZd0UEwG/sds83Uu32deQXcV1Jo3jD0mmvQQqtYAjpsDZXugmheeAwmt+YIuoVtVHro8LMYHqsQ==",
"cpu": [
"x64"
],
- "libc": [
- "musl"
- ],
"license": "Apache-2.0 AND MIT",
"optional": true,
"os": [
@@ -1735,9 +1732,9 @@
}
},
"node_modules/@swc/core-win32-arm64-msvc": {
- "version": "1.15.46",
- "resolved":
"https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.46.tgz",
- "integrity":
"sha512-8p7l4c3LU+eA5g9Et1JPhNeMC1oQwXTGU+uah8DPIBX7YXzqswvaBtyKVmXefVGi/DJU1x3YJsc3mbAp9aWzSQ==",
+ "version": "1.15.47",
+ "resolved":
"https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.47.tgz",
+ "integrity":
"sha512-0W8IKHsUTYiT7G2RqtOoVWk+89yzZikIiDUb/sCK6BmQDBhN91hQSfyUtW12jhEWLzYgcfmisfsZrmZE+84U1A==",
"cpu": [
"arm64"
],
@@ -1751,9 +1748,9 @@
}
},
"node_modules/@swc/core-win32-ia32-msvc": {
- "version": "1.15.46",
- "resolved":
"https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.46.tgz",
- "integrity":
"sha512-tUEnfr3Bn9u6FOjUb3PN9p+09qZC2j+wNDLKHzXXZn22rqGcUqR/ohCRSS+nG9B9+X+U+3FewNEHJkTmdIvMjQ==",
+ "version": "1.15.47",
+ "resolved":
"https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.47.tgz",
+ "integrity":
"sha512-ZIp49d2Z4/ka2jO9otOg4hDvTdPmp86kVOgS2M5FCPI7eKKZ1W0boxWn+8XeZrfERtFGW0AlMRm4JhlJa7l3NA==",
"cpu": [
"ia32"
],
@@ -1767,9 +1764,9 @@
}
},
"node_modules/@swc/core-win32-x64-msvc": {
- "version": "1.15.46",
- "resolved":
"https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.46.tgz",
- "integrity":
"sha512-Vux7UDzBJYQggSuPfcl2w9iu+IJpgpRCxHzgCaVkELnAXAE4XZMOTX9HNcaNiwfeIDqdu2rkr69RuDm6wY8neA==",
+ "version": "1.15.47",
+ "resolved":
"https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.47.tgz",
+ "integrity":
"sha512-2h8Iek95vnixkBRCo+H8p09+Q5ll2NgSMFrWTy0iKt7+/t+8/T5mBpiT6c0ZxSS7wcWjwZ9sGZkK70tTSYHdDw==",
"cpu": [
"x64"
],
@@ -1791,9 +1788,9 @@
"peer": true
},
"node_modules/@swc/types": {
- "version": "0.1.27",
- "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.27.tgz",
- "integrity":
"sha512-K6h3iUlqeM946U4sXFYeahefR1YBbXJvko+hv8WS8/0BNJ4OHiHRywMnQUJCqkR7Y9+hqQ1TvEpiKqUhz7NEFg==",
+ "version": "0.1.28",
+ "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.28.tgz",
+ "integrity":
"sha512-V6Mnml8v09QALx6K0elJ7o9K/MkVDtW3t6L+7Ou/JcWtb3xwId2AH4FeOceySd2JaO87IMw4+6vSZxLm34LPbw==",
"dev": true,
"license": "Apache-2.0",
"peer": true,
@@ -1812,9 +1809,9 @@
}
},
"node_modules/@tybys/wasm-util": {
- "version": "0.10.1",
- "resolved":
"https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz",
- "integrity":
"sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==",
+ "version": "0.10.3",
+ "resolved":
"https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz",
+ "integrity":
"sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -1888,17 +1885,17 @@
"license": "MIT"
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.65.0",
- "resolved":
"https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.65.0.tgz",
- "integrity":
"sha512-IEgob78X12rHpUmtcwFsXhZdVGJtwTVP8FiCLZkR6GlYVrl2PcuB+KhCE5BlVC/eQpQnu8WXRtkHZuPar+gCRA==",
+ "version": "8.66.0",
+ "resolved":
"https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.66.0.tgz",
+ "integrity":
"sha512-p088eaGrzYz1s+7cov0aMOCkNGTJlVxF4jgubf28c8L0Cv9Rloj8YBHnv4hXLq6IIEE1AsjNWavO+k+8kP2Y0A==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.12.2",
- "@typescript-eslint/scope-manager": "8.65.0",
- "@typescript-eslint/type-utils": "8.65.0",
- "@typescript-eslint/utils": "8.65.0",
- "@typescript-eslint/visitor-keys": "8.65.0",
+ "@typescript-eslint/scope-manager": "8.66.0",
+ "@typescript-eslint/type-utils": "8.66.0",
+ "@typescript-eslint/utils": "8.66.0",
+ "@typescript-eslint/visitor-keys": "8.66.0",
"ignore": "^7.0.5",
"natural-compare": "^1.4.0",
"ts-api-utils": "^2.5.0"
@@ -1911,7 +1908,7 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "@typescript-eslint/parser": "^8.65.0",
+ "@typescript-eslint/parser": "^8.66.0",
"eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
"typescript": ">=4.8.4 <6.1.0"
}
@@ -1927,16 +1924,16 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "8.65.0",
- "resolved":
"https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.65.0.tgz",
- "integrity":
"sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==",
+ "version": "8.66.0",
+ "resolved":
"https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.66.0.tgz",
+ "integrity":
"sha512-X6ypGChaWYk6PBtUg2BwuTZEFFcHJAtGTVJ9/lCTOufhZ4i9fNolQNnktq+kkMCwMj7V8Svsq7+TxSDslmhE0g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/scope-manager": "8.65.0",
- "@typescript-eslint/types": "8.65.0",
- "@typescript-eslint/typescript-estree": "8.65.0",
- "@typescript-eslint/visitor-keys": "8.65.0",
+ "@typescript-eslint/scope-manager": "8.66.0",
+ "@typescript-eslint/types": "8.66.0",
+ "@typescript-eslint/typescript-estree": "8.66.0",
+ "@typescript-eslint/visitor-keys": "8.66.0",
"debug": "^4.4.3"
},
"engines": {
@@ -1952,14 +1949,14 @@
}
},
"node_modules/@typescript-eslint/project-service": {
- "version": "8.65.0",
- "resolved":
"https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.65.0.tgz",
- "integrity":
"sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q==",
+ "version": "8.66.0",
+ "resolved":
"https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.66.0.tgz",
+ "integrity":
"sha512-7MthGPTt4BP69lSryqpqq8HQqxuzynssckL/jyDyk3+TNMQ3y2jFWkptCrktWvBrP+EH787Nl5N5Qpw7WZg+5g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/tsconfig-utils": "^8.65.0",
- "@typescript-eslint/types": "^8.65.0",
+ "@typescript-eslint/tsconfig-utils": "^8.66.0",
+ "@typescript-eslint/types": "^8.66.0",
"debug": "^4.4.3"
},
"engines": {
@@ -1974,14 +1971,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "8.65.0",
- "resolved":
"https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.65.0.tgz",
- "integrity":
"sha512-Esbl8OSYiVxBokYgWPf7VVWg/BE798wXhimnn9ML9Pt5qoDf8bfQlgjlKXR/k98+AcNzlLKYrpCcrcuZ9DZLgg==",
+ "version": "8.66.0",
+ "resolved":
"https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.66.0.tgz",
+ "integrity":
"sha512-8TGcH25j9zqJ/IULB/ppyhRvxA8QYfFEZ7nfbg6/BN9spDgb8fPWQXlE5l8TWBL50EtUx007uZ1o9VOwrq2/9g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.65.0",
- "@typescript-eslint/visitor-keys": "8.65.0"
+ "@typescript-eslint/types": "8.66.0",
+ "@typescript-eslint/visitor-keys": "8.66.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1992,9 +1989,9 @@
}
},
"node_modules/@typescript-eslint/tsconfig-utils": {
- "version": "8.65.0",
- "resolved":
"https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.65.0.tgz",
- "integrity":
"sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg==",
+ "version": "8.66.0",
+ "resolved":
"https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.66.0.tgz",
+ "integrity":
"sha512-9D5gLYZG4rOjcoag8MQ/fWI8WqA9wcPDyOGyWtWFhvM1lHRbliqUSPIY5J3zqCU1tvSwzXxnnjhQhz5Ne7mJ4g==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2009,15 +2006,15 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "8.65.0",
- "resolved":
"https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.65.0.tgz",
- "integrity":
"sha512-YjaZ7PRI5qY7ax2L3PbvX0rRyGtipAReCWs0mhhDBHjH/vl0g0BonaGXrKdKpMbIIsMIwDgbk/xzkBTyAltS5g==",
+ "version": "8.66.0",
+ "resolved":
"https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.66.0.tgz",
+ "integrity":
"sha512-LG2dWfjZQQp0ADtAu/EWJVayefGL2UEZ3CDeI44D9v3rXB/WYUqE/jpO28KrEKul5AySrmI+Zh1v6v+xW2U9+g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.65.0",
- "@typescript-eslint/typescript-estree": "8.65.0",
- "@typescript-eslint/utils": "8.65.0",
+ "@typescript-eslint/types": "8.66.0",
+ "@typescript-eslint/typescript-estree": "8.66.0",
+ "@typescript-eslint/utils": "8.66.0",
"debug": "^4.4.3",
"ts-api-utils": "^2.5.0"
},
@@ -2034,9 +2031,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "8.65.0",
- "resolved":
"https://registry.npmjs.org/@typescript-eslint/types/-/types-8.65.0.tgz",
- "integrity":
"sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg==",
+ "version": "8.66.0",
+ "resolved":
"https://registry.npmjs.org/@typescript-eslint/types/-/types-8.66.0.tgz",
+ "integrity":
"sha512-H6gcYaSDOyvL3AD/jHUtUFo2jqGgn/F6nuyuZSu0QTesxL+cP4dQoIMrODRofuJC09g64+WgZ6tE19Y1N2YIFQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2048,16 +2045,16 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.65.0",
- "resolved":
"https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.65.0.tgz",
- "integrity":
"sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg==",
+ "version": "8.66.0",
+ "resolved":
"https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.66.0.tgz",
+ "integrity":
"sha512-8/x4INiiQb10jGgXYD7116/zQ+OL84ZIFn0za68wwFHCanT/VLbBEroWht8RV8fn0/ZCAoazHLQgwUC0UQcDfg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/project-service": "8.65.0",
- "@typescript-eslint/tsconfig-utils": "8.65.0",
- "@typescript-eslint/types": "8.65.0",
- "@typescript-eslint/visitor-keys": "8.65.0",
+ "@typescript-eslint/project-service": "8.66.0",
+ "@typescript-eslint/tsconfig-utils": "8.66.0",
+ "@typescript-eslint/types": "8.66.0",
+ "@typescript-eslint/visitor-keys": "8.66.0",
"debug": "^4.4.3",
"minimatch": "^10.2.2",
"semver": "^7.7.3",
@@ -2076,16 +2073,16 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "8.65.0",
- "resolved":
"https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.65.0.tgz",
- "integrity":
"sha512-gXiwIHsYreboxeJucHKPvgwl7dXt50mF8s1/c00cP/WoVTyWKFdtfhRWwZiXYFU5H2O8vVoSLNrexFZjYS/SGA==",
+ "version": "8.66.0",
+ "resolved":
"https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.66.0.tgz",
+ "integrity":
"sha512-jasearZPolBw5NJNYGMwxzHMF83niVWmMU1VdHzG1CyfI2VS7f7nZltnKtHcg20hW+7Uo5GfK4MeDPoU3qI8EA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.9.1",
- "@typescript-eslint/scope-manager": "8.65.0",
- "@typescript-eslint/types": "8.65.0",
- "@typescript-eslint/typescript-estree": "8.65.0"
+ "@typescript-eslint/scope-manager": "8.66.0",
+ "@typescript-eslint/types": "8.66.0",
+ "@typescript-eslint/typescript-estree": "8.66.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -2100,13 +2097,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.65.0",
- "resolved":
"https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.65.0.tgz",
- "integrity":
"sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A==",
+ "version": "8.66.0",
+ "resolved":
"https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.66.0.tgz",
+ "integrity":
"sha512-dkKR8q+lKciskj1Y3vthHktl+3cMLWGyVUP23bRiPZ5O9BRT++4EqDDV+TVeIKBL1VXVEqrJlz8MYbcnvJcAlg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.65.0",
+ "@typescript-eslint/types": "8.66.0",
"eslint-visitor-keys": "^5.0.0"
},
"engines": {
@@ -2381,13 +2378,13 @@
}
},
"node_modules/conventional-changelog-angular": {
- "version": "9.2.0",
- "resolved":
"https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-9.2.0.tgz",
- "integrity":
"sha512-2EihZvM1KmbBGwuUow8lNXLe+ECRFsyOcV8X0197/WI7Rvvgfi55Oicfw0wxJTXGGIVXSfj+xBoNj+cxLlIiVw==",
+ "version": "9.2.1",
+ "resolved":
"https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-9.2.1.tgz",
+ "integrity":
"sha512-oWSL6ZhnXbYraOFTK3PgRAQJ8fADDAEv5K6AdeyQPLvjFmhG8+ejL0jZZp/R7vTmGJaBvZEE+sE7dB4bCv7sAw==",
"dev": true,
"license": "ISC",
"dependencies": {
- "@conventional-changelog/template": "^1.2.0"
+ "@conventional-changelog/template": "^1.2.1"
},
"engines": {
"node": ">=22"
@@ -2407,9 +2404,9 @@
}
},
"node_modules/conventional-commits-parser": {
- "version": "7.1.0",
- "resolved":
"https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-7.1.0.tgz",
- "integrity":
"sha512-DPp6hkUjvwIivxbkrTiLXeRswNv1A/4GFA2X6scXma0AMa9632V3TwxmrlkUIEtUktiM3Ln+RrSH2xlP3/jUTw==",
+ "version": "7.1.2",
+ "resolved":
"https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-7.1.2.tgz",
+ "integrity":
"sha512-O+x4N2yH+ijvqWlIyTHsXTAP+algNWgGbjY2duCe8w2vUMvUB95cLRslCPfTMQyLAKlet3bhZTdu6ozn4M+QJQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2563,14 +2560,15 @@
}
},
"node_modules/es-toolkit": {
- "version": "1.49.0",
- "resolved":
"https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.49.0.tgz",
- "integrity":
"sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g==",
+ "version": "1.50.0",
+ "resolved":
"https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.50.0.tgz",
+ "integrity":
"sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w==",
"dev": true,
"license": "MIT",
"workspaces": [
"docs",
- "benchmarks"
+ "benchmarks",
+ "tests/types"
]
},
"node_modules/escalade": {
@@ -3370,9 +3368,9 @@
"license": "MIT"
},
"node_modules/js-yaml": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz",
- "integrity":
"sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz",
+ "integrity":
"sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==",
"dev": true,
"funding": [
{
@@ -3503,9 +3501,9 @@
"license": "MIT"
},
"node_modules/lru-cache": {
- "version": "11.3.6",
- "resolved":
"https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.6.tgz",
- "integrity":
"sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==",
+ "version": "11.5.2",
+ "resolved":
"https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz",
+ "integrity":
"sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
"dev": true,
"license": "BlueOak-1.0.0",
"engines": {
@@ -3628,35 +3626,34 @@
}
},
"node_modules/oxc-resolver": {
- "version": "11.19.1",
- "resolved":
"https://registry.npmjs.org/oxc-resolver/-/oxc-resolver-11.19.1.tgz",
- "integrity":
"sha512-qE/CIg/spwrTBFt5aKmwe3ifeDdLfA2NESN30E42X/lII5ClF8V7Wt6WIJhcGZjp0/Q+nQ+9vgxGk//xZNX2hg==",
+ "version": "11.24.2",
+ "resolved":
"https://registry.npmjs.org/oxc-resolver/-/oxc-resolver-11.24.2.tgz",
+ "integrity":
"sha512-FY91FiDBj7ls5MsFS9jN3tjz2o0/zsdSsymlakySaBwVJZorHhkWyICLZMKxlu1R9vYo+sd3z1jwb4J8x7bNDw==",
"dev": true,
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/Boshen"
},
"optionalDependencies": {
- "@oxc-resolver/binding-android-arm-eabi": "11.19.1",
- "@oxc-resolver/binding-android-arm64": "11.19.1",
- "@oxc-resolver/binding-darwin-arm64": "11.19.1",
- "@oxc-resolver/binding-darwin-x64": "11.19.1",
- "@oxc-resolver/binding-freebsd-x64": "11.19.1",
- "@oxc-resolver/binding-linux-arm-gnueabihf": "11.19.1",
- "@oxc-resolver/binding-linux-arm-musleabihf": "11.19.1",
- "@oxc-resolver/binding-linux-arm64-gnu": "11.19.1",
- "@oxc-resolver/binding-linux-arm64-musl": "11.19.1",
- "@oxc-resolver/binding-linux-ppc64-gnu": "11.19.1",
- "@oxc-resolver/binding-linux-riscv64-gnu": "11.19.1",
- "@oxc-resolver/binding-linux-riscv64-musl": "11.19.1",
- "@oxc-resolver/binding-linux-s390x-gnu": "11.19.1",
- "@oxc-resolver/binding-linux-x64-gnu": "11.19.1",
- "@oxc-resolver/binding-linux-x64-musl": "11.19.1",
- "@oxc-resolver/binding-openharmony-arm64": "11.19.1",
- "@oxc-resolver/binding-wasm32-wasi": "11.19.1",
- "@oxc-resolver/binding-win32-arm64-msvc": "11.19.1",
- "@oxc-resolver/binding-win32-ia32-msvc": "11.19.1",
- "@oxc-resolver/binding-win32-x64-msvc": "11.19.1"
+ "@oxc-resolver/binding-android-arm-eabi": "11.24.2",
+ "@oxc-resolver/binding-android-arm64": "11.24.2",
+ "@oxc-resolver/binding-darwin-arm64": "11.24.2",
+ "@oxc-resolver/binding-darwin-x64": "11.24.2",
+ "@oxc-resolver/binding-freebsd-x64": "11.24.2",
+ "@oxc-resolver/binding-linux-arm-gnueabihf": "11.24.2",
+ "@oxc-resolver/binding-linux-arm-musleabihf": "11.24.2",
+ "@oxc-resolver/binding-linux-arm64-gnu": "11.24.2",
+ "@oxc-resolver/binding-linux-arm64-musl": "11.24.2",
+ "@oxc-resolver/binding-linux-ppc64-gnu": "11.24.2",
+ "@oxc-resolver/binding-linux-riscv64-gnu": "11.24.2",
+ "@oxc-resolver/binding-linux-riscv64-musl": "11.24.2",
+ "@oxc-resolver/binding-linux-s390x-gnu": "11.24.2",
+ "@oxc-resolver/binding-linux-x64-gnu": "11.24.2",
+ "@oxc-resolver/binding-linux-x64-musl": "11.24.2",
+ "@oxc-resolver/binding-openharmony-arm64": "11.24.2",
+ "@oxc-resolver/binding-wasm32-wasi": "11.24.2",
+ "@oxc-resolver/binding-win32-arm64-msvc": "11.24.2",
+ "@oxc-resolver/binding-win32-x64-msvc": "11.24.2"
}
},
"node_modules/p-limit": {
@@ -4168,9 +4165,9 @@
"license": "MIT"
},
"node_modules/tinyexec": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.4.tgz",
- "integrity":
"sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.0.tgz",
+ "integrity":
"sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4236,9 +4233,9 @@
}
},
"node_modules/type-fest": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.7.0.tgz",
- "integrity":
"sha512-1URUxUqfHFM1c+zfSPsa3gnkO7Aq21qyH75SIduNYz4SzY964rn1X2vCMQaHSHhktiw+0kPa2iyb6PUpXqB6Vg==",
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.8.0.tgz",
+ "integrity":
"sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA==",
"dev": true,
"license": "(MIT OR CC0-1.0)",
"dependencies": {
@@ -4266,16 +4263,16 @@
}
},
"node_modules/typescript-eslint": {
- "version": "8.65.0",
- "resolved":
"https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.65.0.tgz",
- "integrity":
"sha512-/ggrHAwyjENDusvyxbuqxAC2dTnZg/Z8F+fgQtYIz+L6n/9HfSlEZcFGV/NsMNa6CkGk0xUjUAFwC0vHOflvIA==",
+ "version": "8.66.0",
+ "resolved":
"https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.66.0.tgz",
+ "integrity":
"sha512-QlEbBPz/RuJ1XUHj29nm3t0F/O/cSlEnntozqPOYHnnTGAXFamnMBu5i9Vn6vhUPHGAjR+Vl+5J8vPN/BMUrJw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/eslint-plugin": "8.65.0",
- "@typescript-eslint/parser": "8.65.0",
- "@typescript-eslint/typescript-estree": "8.65.0",
- "@typescript-eslint/utils": "8.65.0"
+ "@typescript-eslint/eslint-plugin": "8.66.0",
+ "@typescript-eslint/parser": "8.66.0",
+ "@typescript-eslint/typescript-estree": "8.66.0",
+ "@typescript-eslint/utils": "8.66.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -4469,9 +4466,9 @@
}
},
"node_modules/yaml": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",
- "integrity":
"sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz",
+ "integrity":
"sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -4485,16 +4482,16 @@
}
},
"node_modules/yargs": {
- "version": "18.0.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz",
- "integrity":
"sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==",
+ "version": "18.1.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.1.0.tgz",
+ "integrity":
"sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==",
"dev": true,
"license": "MIT",
"dependencies": {
"cliui": "^9.0.1",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
- "string-width": "^7.2.0",
+ "string-width": "^8.2.1",
"y18n": "^5.0.5",
"yargs-parser": "^22.0.0"
},
@@ -4512,26 +4509,18 @@
"node": ">=12"
}
},
- "node_modules/yargs/node_modules/emoji-regex": {
- "version": "10.6.0",
- "resolved":
"https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
- "integrity":
"sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/yargs/node_modules/string-width": {
- "version": "7.2.0",
- "resolved":
"https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
- "integrity":
"sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+ "version": "8.2.2",
+ "resolved":
"https://registry.npmjs.org/string-width/-/string-width-8.2.2.tgz",
+ "integrity":
"sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "emoji-regex": "^10.3.0",
- "get-east-asian-width": "^1.0.0",
- "strip-ansi": "^7.1.0"
+ "get-east-asian-width": "^1.5.0",
+ "strip-ansi": "^7.1.2"
},
"engines": {
- "node": ">=18"
+ "node": ">=20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
diff --git a/foreign/node/package.json b/foreign/node/package.json
index ea5b05da4..682c6989e 100644
--- a/foreign/node/package.json
+++ b/foreign/node/package.json
@@ -1,7 +1,7 @@
{
"name": "apache-iggy",
"type": "module",
- "version": "0.8.1-edge.3",
+ "version": "0.8.1-edge.4",
"description": "Official Apache Iggy NodeJS SDK",
"keywords": [
"iggy",
diff --git a/foreign/node/src/client/client.config.test.ts
b/foreign/node/src/client/client.config.test.ts
index 4ad12aedc..bc612da93 100644
--- a/foreign/node/src/client/client.config.test.ts
+++ b/foreign/node/src/client/client.config.test.ts
@@ -71,15 +71,16 @@ describe('normalizeClientConfig', () => {
);
});
- it('rejects VSR over an untested TLS transport', () => {
- assert.throws(
- () => normalizeClientConfig({
- ...config(),
- protocol: 'vsr',
- transport: 'TLS'
- }),
- /TCP transport only/
- );
+ it('supports VSR over TLS', () => {
+ const normalized = normalizeClientConfig({
+ ...config(),
+ protocol: 'vsr',
+ transport: 'TLS'
+ });
+
+ assert.equal(normalized.protocol, 'vsr');
+ assert.equal(normalized.transport, 'TLS');
+ assert.deepEqual(normalized.poolSize, { min: 1, max: 1 });
});
it('rejects unsafe response frame limits', () => {
diff --git a/foreign/node/src/client/client.config.ts
b/foreign/node/src/client/client.config.ts
index 001851e81..7fbb13e25 100644
--- a/foreign/node/src/client/client.config.ts
+++ b/foreign/node/src/client/client.config.ts
@@ -37,9 +37,6 @@ export const normalizeClientConfig = (
'maxResponseFrameSize must be a safe integer of at least 256 bytes'
);
- if (protocol === 'vsr' && config.transport === 'TLS')
- throw new TypeError('VSR framing currently supports the TCP transport
only');
-
if (protocol === 'vsr' &&
((config.poolSize?.min ?? 1) > 1 || (config.poolSize?.max ?? 1) > 1))
throw new TypeError(
diff --git a/foreign/node/src/client/client.socket.test.ts
b/foreign/node/src/client/client.socket.test.ts
index fcdcd65c6..76c8a783c 100644
--- a/foreign/node/src/client/client.socket.test.ts
+++ b/foreign/node/src/client/client.socket.test.ts
@@ -18,9 +18,11 @@
import assert from 'node:assert/strict';
import { once } from 'node:events';
+import { readFileSync } from 'node:fs';
import type { AddressInfo, Socket } from 'node:net';
import { createServer, type Server } from 'node:net';
import { describe, it } from 'node:test';
+import { createServer as createTlsServer } from 'node:tls';
import { COMMAND_CODE } from '../wire/command.code.js';
import { ResponseError } from '../wire/error.utils.js';
import {
@@ -37,6 +39,15 @@ import { CommandResponseStream } from './client.socket.js';
import type { ClientConfig } from './client.type.js';
const TEST_SESSION = 42n;
+const TLS_CERTIFICATE = readFileSync(
+ new URL('../../../../core/certs/iggy_cert.pem', import.meta.url)
+);
+const TLS_KEY = readFileSync(
+ new URL('../../../../core/certs/iggy_key.pem', import.meta.url)
+);
+const TLS_CA_CERTIFICATE = readFileSync(
+ new URL('../../../../core/certs/iggy_ca_cert.pem', import.meta.url)
+);
type FrameHandler = (frame: Buffer, socket: Socket) => void;
@@ -48,10 +59,11 @@ type VsrTestServer = {
/** Loopback server speaking just enough VSR framing for the client tests. */
const startVsrServer = async (
- handler: FrameHandler
+ handler: FrameHandler,
+ transport: 'TCP' | 'TLS' = 'TCP'
): Promise<VsrTestServer> => {
const frames: Buffer[] = [];
- const server: Server = createServer((socket) => {
+ const handleConnection = (socket: Socket) => {
let pending = Buffer.alloc(0);
socket.on('data', (data: Buffer) => {
pending = Buffer.concat([pending, data]);
@@ -65,7 +77,13 @@ const startVsrServer = async (
}
});
socket.on('error', () => {});
- });
+ };
+ const server: Server = transport === 'TLS'
+ ? createTlsServer(
+ { cert: TLS_CERTIFICATE, key: TLS_KEY },
+ handleConnection
+ )
+ : createServer(handleConnection);
server.listen(0, '127.0.0.1');
await once(server, 'listening');
return {
@@ -193,6 +211,32 @@ const vsrConfig = (port: number): ClientConfig => ({
});
describe('VSR client socket', () => {
+ it('exchanges VSR frames over TLS', async () => {
+ const server = await startVsrServer(
+ (frame, socket) => singleNodeHandler(server.port)(frame, socket),
+ 'TLS'
+ );
+ const client = new CommandResponseStream({
+ ...vsrConfig(server.port),
+ transport: 'TLS',
+ options: {
+ host: '127.0.0.1',
+ port: server.port,
+ servername: 'localhost',
+ ca: TLS_CA_CERTIFICATE
+ }
+ });
+ try {
+ const response = await client.sendCommand(60_015, Buffer.from('tls'));
+
+ assert.equal(response.status, 0);
+ assert.equal(server.frames.length, 3);
+ } finally {
+ client.destroy();
+ await server.close();
+ }
+ });
+
it('registers one session before the first authenticated command', async ()
=> {
const server = await startVsrServer(
(frame, socket) => singleNodeHandler(server.port)(frame, socket)
diff --git a/foreign/node/src/e2e/tls.system.e2e.ts
b/foreign/node/src/e2e/tls.system.e2e.ts
index e1dde409e..c2f7b2d9b 100644
--- a/foreign/node/src/e2e/tls.system.e2e.ts
+++ b/foreign/node/src/e2e/tls.system.e2e.ts
@@ -51,10 +51,14 @@ const caCertPath = process.env.E2E_ROOT_CA_CERT
const getTlsClient = () => {
const [, port] = getIggyAddress();
const caCert = readFileSync(caCertPath);
+ const protocol = process.env.IGGY_TEST_PROTOCOL === 'vsr'
+ ? 'vsr'
+ : 'classic';
// The server certificate SAN is DNS:localhost, so we connect via 'localhost'
// for proper hostname verification (consistent with Python and C# TLS
tests).
return new Client({
+ protocol,
transport: 'TLS',
options: {
port,