Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package nodejs24 for openSUSE:Factory checked in at 2026-10-14 18:34:18 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/nodejs24 (Old) and /work/SRC/openSUSE:Factory/.nodejs24.new.3698736 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nodejs24" Wed Oct 14 18:34:18 2026 rev:14 rq:1384624 version:24.21.0 Changes: -------- --- /work/SRC/openSUSE:Factory/nodejs24/nodejs24.changes 2026-08-03 17:15:22.258704061 +0200 +++ /work/SRC/openSUSE:Factory/.nodejs24.new.3698736/nodejs24.changes 2026-10-14 18:34:43.828883691 +0200 @@ -1,0 +2,67 @@ +Mon Oct 12 08:16:37 UTC 2026 - Adam Majer <[email protected]> + +- Update to 24.21.0: + - crypto: update root certificates to NSS 3.126 + - crypto: support loading private keys through STORE loaders + - deps: update Undici to 7.29.1 + - lib,src: improve histogram implementation + - net: improve performance of net.BlockList + - perf_hooks: add statistical hypothesis testing to histogram + - util: add non-throwing MIMEType.parse +for details see https://nodejs.org/en/blog/release/v24.21.0 + +- fix_ci_tests.patch: refreshed +- no_avx2_on_i586.patch: remove AVX2 from i586 + +------------------------------------------------------------------- +Fri Sep 4 13:55:24 UTC 2026 - Adam Majer <[email protected]> + +- Update to 24.20.0: + - async_hooks: add using scopes to AsyncLocalStorage + - buffer: add end parameter + - doc: add MikeMcC399 as collaborator + - lib,permission: add permission.drop + - loader: implement package maps + - src,permission: add --permission-audit + - stream: add node:stream/iter implementation + - test_runner: add context.log() and test:log event + - test_runner: report entryFile in TestStream events + - wasm: enable JSPI +for details see https://github.com/nodejs/node/releases#release-v24.20.0 + +- ngtcp2_bsc1262274.patch: dropped, upstreamed + +------------------------------------------------------------------- +Tue Aug 25 10:39:43 UTC 2026 - Adam Majer <[email protected]> + +- npm-line-truncation.patch: do not truncate long lines in help output (bsc#1276224) + +------------------------------------------------------------------- +Mon Aug 3 14:12:24 UTC 2026 - Adam Majer <[email protected]> + +- Update to 24.19.0: + - buffer: implement blob.textStream() + - deps: update OpenSSL build config to support compression + - doc: update blockList stability status to release candidate + - doc: mark stream.compose stable + - esm: add --experimental-import-text flag + - fs: support caller-supplied readFile() buffers + - http: add httpValidation option to configure header value validation + - net: support TCP_KEEPINTVL and TCP_KEEPCNT in setKeepAlive + - perf_hooks: sample delay per event loop iteration + - src: allow empty --experimental-config-file + - stream: expose ReadableStreamTee + - tls: report negotiated TLS groups + - tls: add certificateCompression option + +- pacote-bsc1266318.patch: upstreamed, dropped +- versioned.patch: refreshed + +For detailed changes, see https://github.com/nodejs/node/releases#release-v24.19.0 + +------------------------------------------------------------------- +Mon Aug 3 13:04:54 UTC 2026 - Adam Majer <[email protected]> + +- CVE-2026-54272: ip-address.patch: misclassification of IPv4-mapped/NAT64 IPv6 addresses allows for bypass of SSRF and trust-boundary checks (bsc#1272882) + +------------------------------------------------------------------- Old: ---- ngtcp2_bsc1262274.patch node-v24.18.1.tar.xz pacote-bsc1266318.patch New: ---- ip-address.patch maintainer_scripts.obscpio no_avx2_on_i586.patch node-v24.21.0.tar.xz npm-line-truncation.patch ----------(Old B)---------- Old: - ngtcp2_bsc1262274.patch: dropped, upstreamed Old: - pacote-bsc1266318.patch: upstreamed, dropped - versioned.patch: refreshed ----------(Old E)---------- ----------(New B)---------- New: - CVE-2026-54272: ip-address.patch: misclassification of IPv4-mapped/NAT64 IPv6 addresses allows for bypass of SSRF and trust-boundary checks (bsc#1272882) New:- fix_ci_tests.patch: refreshed - no_avx2_on_i586.patch: remove AVX2 from i586 New: - npm-line-truncation.patch: do not truncate long lines in help output (bsc#1276224) ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ nodejs24.spec ++++++ --- /var/tmp/diff_new_pack.videOI/_old 2026-10-14 18:34:46.827010646 +0200 +++ /var/tmp/diff_new_pack.videOI/_new 2026-10-14 18:34:46.829010730 +0200 @@ -25,7 +25,7 @@ %endif Name: nodejs24 -Version: 24.18.1 +Version: 24.21.0 Release: 0 # Double DWZ memory limits @@ -128,6 +128,9 @@ Source2: https://nodejs.org/dist/v%{version}/SHASUMS256.txt.sig Source3: nodejs.keyring +#!CreateArchive +Source4: maintainer_scripts.tar.gz + # Only required to run unit tests in NodeJS 10+ Source10: update_npm_tarball.sh Source11: node_modules.tar.xz @@ -135,12 +138,11 @@ Source21: README.md ## Patches not distribution specific +Patch1: npm-line-truncation.patch Patch3: fix_ci_tests.patch Patch4: v8_nameclash.patch Patch5: icu_781.patch - -Patch10: ngtcp2_bsc1262274.patch -Patch11: pacote-bsc1266318.patch +Patch6: no_avx2_on_i586.patch ## Patches specific to SUSE and openSUSE # PATCH-FIX-OPENSUSE -- set correct path for dtrace if it is built @@ -155,6 +157,7 @@ Patch104: npm_search_paths.patch Patch120: flaky_test_rerun.patch +Patch121: ip-address.patch # Use versioned binaries and paths Patch200: versioned.patch @@ -231,7 +234,7 @@ %else # bundled openssl %if %node_version_number <= 12 && 0%{?suse_version} == 1315 && 0%{?sle_version} < 120400 -Provides: bundled(openssl) = 3.5.7 +Provides: bundled(openssl) = 3.5.8 %else BuildRequires: bundled_openssl_should_not_be_required %endif @@ -242,7 +245,7 @@ %if ! 0%{with intree_cares} BuildRequires: pkgconfig(libcares) >= 1.17.0 %else -Provides: bundled(libcares2) = 1.34.6 +Provides: bundled(libcares2) = 1.34.8 %endif %if %node_version_number >= 22 @@ -261,7 +264,7 @@ %if ! 0%{with intree_nghttp2} BuildRequires: libnghttp2-devel >= 1.41.0 %else -Provides: bundled(nghttp2) = 1.69.0 +Provides: bundled(nghttp2) = 1.70.0 %endif %if 0%{with valgrind_tests} @@ -320,18 +323,19 @@ # bundled url-ada parser, not ada Provides: bundled(LIEF) = 0.17.0 -Provides: bundled(ada) = 3.4.4 +Provides: bundled(ada) = 4.0.0 Provides: bundled(libuv) = 1.52.1 Provides: bundled(llhttp) = 9.4.3 Provides: bundled(merve) = 1.2.2 -Provides: bundled(ngtcp2) = 1.15.1 -Provides: bundled(node-acorn) = 8.16.0 +Provides: bundled(nghttp3) = 1.18.0 +Provides: bundled(ngtcp2) = 1.25.0 +Provides: bundled(node-acorn) = 8.18.0 Provides: bundled(node-acorn-walk) = 8.3.5 -Provides: bundled(node-amaro) = 1.1.9 -Provides: bundled(node-corepack) = 0.35.0 -Provides: bundled(node-minimatch) = 10.2.5 -Provides: bundled(node-undici) = 7.29.0 -Provides: bundled(simdjson) = 4.6.4 +Provides: bundled(node-amaro) = 1.1.11 +Provides: bundled(node-corepack) = 0.36.0 +Provides: bundled(node-minimatch) = 10.2.6 +Provides: bundled(node-undici) = 7.29.1 +Provides: bundled(simdjson) = 4.6.7 Provides: bundled(uvwasi) = 0.0.23 Provides: bundled(v8) = 13.6.233.17 ## END NON-NPM PROVIDES ## @@ -380,7 +384,7 @@ Provides: bundled(node-balanced-match) = 4.0.4 Provides: bundled(node-bin-links) = 6.0.2 Provides: bundled(node-binary-extensions) = 3.1.0 -Provides: bundled(node-brace-expansion) = 5.0.6 +Provides: bundled(node-brace-expansion) = 5.0.7 Provides: bundled(node-cacache) = 20.0.4 Provides: bundled(node-chalk) = 5.6.2 Provides: bundled(node-chownr) = 3.0.0 @@ -415,11 +419,11 @@ Provides: bundled(node-just-diff) = 6.0.2 Provides: bundled(node-just-diff-apply) = 5.5.0 Provides: bundled(node-libnpmaccess) = 10.0.3 -Provides: bundled(node-libnpmdiff) = 8.1.9 -Provides: bundled(node-libnpmexec) = 10.2.9 -Provides: bundled(node-libnpmfund) = 7.0.23 +Provides: bundled(node-libnpmdiff) = 8.1.12 +Provides: bundled(node-libnpmexec) = 10.3.2 +Provides: bundled(node-libnpmfund) = 7.0.26 Provides: bundled(node-libnpmorg) = 8.0.1 -Provides: bundled(node-libnpmpack) = 9.1.9 +Provides: bundled(node-libnpmpack) = 9.1.12 Provides: bundled(node-libnpmpublish) = 11.2.0 Provides: bundled(node-libnpmsearch) = 9.0.1 Provides: bundled(node-libnpmteam) = 8.0.2 @@ -438,7 +442,7 @@ Provides: bundled(node-ms) = 2.1.3 Provides: bundled(node-mute-stream) = 3.0.0 Provides: bundled(node-negotiator) = 1.0.0 -Provides: bundled(node-node-gyp) = 12.3.0 +Provides: bundled(node-node-gyp) = 12.4.0 Provides: bundled(node-nopt) = 9.0.0 Provides: bundled(node-npm-audit-report) = 7.0.0 Provides: bundled(node-npm-bundled) = 5.0.0 @@ -447,15 +451,15 @@ Provides: bundled(node-npm-package-arg) = 13.0.2 Provides: bundled(node-npm-packlist) = 10.0.4 Provides: bundled(node-npm-pick-manifest) = 11.0.3 -Provides: bundled(node-npm-profile) = 12.0.1 +Provides: bundled(node-npm-profile) = 12.0.2 Provides: bundled(node-npm-registry-fetch) = 19.1.1 Provides: bundled(node-npm-user-validate) = 4.0.0 Provides: bundled(node-p-map) = 7.0.4 -Provides: bundled(node-pacote) = 21.5.0 +Provides: bundled(node-pacote) = 21.5.1 Provides: bundled(node-parse-conflict-json) = 5.0.1 Provides: bundled(node-path-scurry) = 2.0.2 Provides: bundled(node-picomatch) = 4.0.4 -Provides: bundled(node-postcss-selector-parser) = 7.1.1 +Provides: bundled(node-postcss-selector-parser) = 7.1.4 Provides: bundled(node-proc-log) = 6.1.0 Provides: bundled(node-proggy) = 4.0.0 Provides: bundled(node-promise-all-reject-late) = 1.0.1 @@ -465,7 +469,7 @@ Provides: bundled(node-read) = 5.0.1 Provides: bundled(node-read-cmd-shim) = 6.0.0 Provides: bundled(node-safer-buffer) = 2.1.2 -Provides: bundled(node-semver) = 7.8.1 +Provides: bundled(node-semver) = 7.8.5 Provides: bundled(node-signal-exit) = 4.1.0 Provides: bundled(node-sigstore) = 4.1.1 Provides: bundled(node-smart-buffer) = 4.2.0 @@ -476,13 +480,13 @@ Provides: bundled(node-spdx-license-ids) = 3.0.23 Provides: bundled(node-ssri) = 13.0.1 Provides: bundled(node-supports-color) = 10.2.2 -Provides: bundled(node-tar) = 7.5.15 +Provides: bundled(node-tar) = 7.5.19 Provides: bundled(node-text-table) = 0.2.0 Provides: bundled(node-tiny-relative-date) = 2.0.2 -Provides: bundled(node-tinyglobby) = 0.2.16 +Provides: bundled(node-tinyglobby) = 0.2.17 Provides: bundled(node-treeverse) = 3.0.0 Provides: bundled(node-tuf-js) = 4.1.0 -Provides: bundled(node-undici) = 6.26.0 +Provides: bundled(node-undici) = 6.27.0 Provides: bundled(node-util-deprecate) = 1.0.2 Provides: bundled(node-validate-npm-package-name) = 7.0.2 Provides: bundled(node-walk-up-path) = 4.0.0 ++++++ SHASUMS256.txt ++++++ --- /var/tmp/diff_new_pack.videOI/_old 2026-10-14 18:34:46.882012975 +0200 +++ /var/tmp/diff_new_pack.videOI/_new 2026-10-14 18:34:46.887013187 +0200 @@ -1,33 +1,35 @@ -3c76240c07b9f03574a5cf8ed8ba19e8db89271943817b1a4b94de43c97a9e66 node-v24.18.1-aix-ppc64.tar.gz -c3897213475a089b526c8ffb5a84b0151d03eb2206d3e38aac44b2c053719b81 node-v24.18.1-arm64.msi -eb02f7fab96d3d67de40c5ec8566096fcb4c2026728787683ae5a97eb612b941 node-v24.18.1-darwin-arm64.tar.gz -1d60b703fe5d7e7072489be8187f430f1a095a658c31e5e1e281331a5873fac3 node-v24.18.1-darwin-arm64.tar.xz -6fb20fceacbb157c2f95825b80df4a454a0f6d81cdcd7bb81eeae9147e0e76ec node-v24.18.1-darwin-x64.tar.gz -f892c7895720f40d3750bde24f3554242d36f23602b5167b5b73ec4d13938aef node-v24.18.1-darwin-x64.tar.xz -bee7344a7fc6e3252c4822ca916a50cd6ddda9bb39374d6140a8046d9238fded node-v24.18.1-headers.tar.gz -38d44792ec2bee82aca52dbe166979a146f5e75e09ee35e0c0b017b8e2db7c48 node-v24.18.1-headers.tar.xz -df224555a083b918e46260cc969838501b9f9a87140c1195e5b9597b56d5dae2 node-v24.18.1-linux-arm64.tar.gz -7201e3a09dc825bac57867c81913e2b8f0ef87d04cb9082af4cda82f6ff3d88c node-v24.18.1-linux-arm64.tar.xz -4a8c6209ba3a5aea84c40201d896624ed706b9799a6dc54cbd965433a369a3d0 node-v24.18.1-linux-ppc64le.tar.gz -c47812c13862be7f6e71194c434c4d78a99096e72efb9c31a2627437e056d669 node-v24.18.1-linux-ppc64le.tar.xz -62ad850efefa9ab42a3e901d8e0de86d71bf9c8a0c389dabed248f1ec9590c5a node-v24.18.1-linux-s390x.tar.gz -acf57bd726f35afc2ba8475194e5a8bd532c00e1a3b2436295b2fbdde199d0e9 node-v24.18.1-linux-s390x.tar.xz -9f5eb6ac21845a66c493c91a253b1da32fd684e89e9b7202d4936982336be4ca node-v24.18.1-linux-x64.tar.gz -d6c664df3f3f61458e8c277585571328522d705166723a7c7823a9253a4d15a0 node-v24.18.1-linux-x64.tar.xz -c2e424f198dab39b5c68e8b06e0cdba9761dca9b5b432941fce6399d6460dabb node-v24.18.1.pkg -b62cd76de0a0a28dd9ff88580c92344bdeb008f21c1d7479c5d8659cd96ef4e2 node-v24.18.1.tar.gz -86d40d594bbdfcf69009a62fdf43cb19ae72b6cb5822d2bdd8349c5a1b2fa628 node-v24.18.1.tar.xz -8aed98bca9260716236be292807dcb2638827750ba2fbcfc684601a9a6b8ab48 node-v24.18.1-win-arm64.7z -ffbc7d3e1baf6804f7431ff94f19b9a885a650568c93ea4ccb1bb0038f6af825 node-v24.18.1-win-arm64.zip -365ecf84eeefb87a5a4c94f1e54919696cf5581285db4e589e84d46c0e167406 node-v24.18.1-win-x64.7z -ec56b84a7551893ab2324ebdfdc4ab974a63b4781162600b68a1293cc3e53765 node-v24.18.1-win-x64.zip -af4a0651a26f04ac240f00fec872f305547ca2aa56301c41dfd63a29eb2ab836 node-v24.18.1-x64.msi -845fc4ce00780241667f92e8f7a3a679321a655dddb3b610f2d85693b17ddf28 win-arm64/node.exe -7da03c5111815b69bbe63ffd2e51b28cd69eec9f545b7ccb8756efffdbb88dc2 win-arm64/node.lib -86a5fa89be9c19be42864edfbc2721931fa3c5b318c0f5cd7c1b5c0f49c1f259 win-arm64/node_pdb.7z -0e085f6058961484fb7e93a35ccd0b1ff02efed7bfe1387203097614dc9864a2 win-arm64/node_pdb.zip -ac51903c4c111815d52280b1fdcc8da067cbb37e2fe1a765097b85c3292c8582 win-x64/node.exe -589684168a73547ca47cd22d76a4e465ef561abe89fb1b2b23fe35bbe857d505 win-x64/node.lib -50155c3c9afe1c3ce9a57a8763ed421acc72845c2d30f79d93afe73cb65473ef win-x64/node_pdb.7z -a9970c87747af4ef15524240dc28ebcf64080c7a68e39d2a406b743e438b6a20 win-x64/node_pdb.zip +aec7b2464afb99f078c19cb06d201d543bd3b311cba071282bce1b17c97e58bb node-v24.21.0-aix-ppc64.tar.gz +22ca85110f26015696a3fa9216bc372ae65203d170622eaf7d211e2dd5bb49e3 node-v24.21.0-arm64.msi +bed7eea5325e1108f32ce5228ddd6a5f0f08a499ee42aa7442aea583702f6057 node-v24.21.0-darwin-arm64.tar.gz +6239d4cf92d864487ec8cd3615038f7b67e7f58b77b21cd2f09ea9fbd68065fe node-v24.21.0-darwin-arm64.tar.xz +1462cb3b3046b815cf8ea436d3da450ec1a9f11dac7e5a46b0ada5305d7e8097 node-v24.21.0-darwin-x64.tar.gz +0ae5a24c24bb7d015cd816c5036b3f90f2945aa872fcf54e58da054753b3a299 node-v24.21.0-darwin-x64.tar.xz +57c6bee2e30bbbee5bd51d6cc343eb992e174b56a2a1d0eab7a7510771c20ea2 node-v24.21.0-headers.tar.gz +7497abc2fac1d332fae580046b6b39d0de283dfaf267207a32b59753739c1517 node-v24.21.0-headers.tar.xz +724282c3b43aec998aa9527380465b45d229e021b58035f5f4f63095eabfe5d5 node-v24.21.0-linux-arm64.tar.gz +6ad1325edbdb5649c379b75a237147a666c95d4f9ae8d340fef2d1575d289ad2 node-v24.21.0-linux-arm64.tar.xz +51c5d53066ee92920b61783b03b06ecb99f3661160f7b15ca77e8474115a67bc node-v24.21.0-linux-ppc64le.tar.gz +1936fd64623a2f98d1fb31b456686d10c30e92639899cfefdefa8835d22adccd node-v24.21.0-linux-ppc64le.tar.xz +5f2fa37422e0c75de35c1686fe51d78324f2c2a8fe2cc239a41d9c000a29d938 node-v24.21.0-linux-s390x.tar.gz +2ef7e2ecbf7a6c2f3d08d106f6b2f279419c6dac89fe91b8cad193af7890082c node-v24.21.0-linux-s390x.tar.xz +3d63405fc65a0d2d2976c1f0bc2fd27bb0bd07212469e705aac3f03ae5ab4c9c node-v24.21.0-linux-x64-musl.tar.gz +34ab095af8efe9018f21489d3dc19871fb5edd4f130a71469b69c05fd4e32a5e node-v24.21.0-linux-x64-musl.tar.xz +6e1db87ef58b8819e5d5402eff1536491b18edd8eb7bee5ef7897876e88dc5ff node-v24.21.0-linux-x64.tar.gz +fd8e59d5a511510f6a298afb548f18c7d2b1be404d8b4a27d94fbe49f56cb2d6 node-v24.21.0-linux-x64.tar.xz +848cc8d138b712b5ae0f38de08fde62feb404226a63dde07d0ea5ccddbbd9dd7 node-v24.21.0-win-arm64.7z +8779b1bde1d39f8d420e3b57aa657b39891af434d3de44a919044cec06785921 node-v24.21.0-win-arm64.zip +4e5f86609712acf841f3a5e2d9d4854b4c149f6ead024fc38381b6d7b272c636 node-v24.21.0-win-x64.7z +158f7685b44de51f6c0df1d153526cbcd3e1bc739a8dfc607721cef75de9e541 node-v24.21.0-win-x64.zip +bb0eaee134f9357f22aea915ee793343e627aefc1e66488164bac6915bce2cac node-v24.21.0-x64.msi +9831a74b04c270a429bd5a240e37712c4fe229b02b032e18ff2e0702c17c20fd node-v24.21.0.pkg +622424efb5dc0c26c93fbb619ff10737ee289c605b837c88778e186925d82777 node-v24.21.0.tar.gz +a6f54defb6fd7c84f41dba13d61e78e9b4e0961712cf61f29715c05f5ced94fc node-v24.21.0.tar.xz +dff59da18b6ffe1bf1ca99e1d2af4906080c481740619f5b5098c0fca28bd9b7 win-arm64/node.exe +2c0c3215d59c09d7c136da4949696dae121a299e9bdfc64cd9130a58610af63d win-arm64/node.lib +32ce76dd79deddcf6e08f612da714fc3a28fa39c0e4fe12283e019a90eb76483 win-arm64/node_pdb.7z +d565f0a7a8eda1662886475471e454dbe2c2a53c9d1a8562fc986bd11c24fd72 win-arm64/node_pdb.zip +ba4e6d110e8c1592a1ecd390f6b05f3da124b13871a5be62b341a07a853c6c32 win-x64/node.exe +a0a84aa03917b578d286010b7521837e9ff1136ffb2e4a406c14316c33fd06f7 win-x64/node.lib +0df783d02aee58bbe9dcfc157ccc5cc37987d24c4f35889587b39500b12030a9 win-x64/node_pdb.7z +122f2af58bfb25816f12e49179217c3ff5bf96c1e083f3ccb0969a5b4794ff85 win-x64/node_pdb.zip ++++++ SHASUMS256.txt.sig ++++++ Binary files /var/tmp/diff_new_pack.videOI/_old and /var/tmp/diff_new_pack.videOI/_new differ ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.videOI/_old 2026-10-14 18:34:46.938015346 +0200 +++ /var/tmp/diff_new_pack.videOI/_new 2026-10-14 18:34:46.941015473 +0200 @@ -1,6 +1,6 @@ -mtime: 1785512891 -commit: 13cc50d4f1d4748452df7efe3582b90d05292968f5395b25cbbd47c94a879d74 +mtime: 1791803316 +commit: e754c029e3174151bcbfaff7d4ff7b6c3eec5e546f2aa734c3fd011d92a572d5 url: https://src.opensuse.org/nodejs/nodejs24 -revision: 13cc50d4f1d4748452df7efe3582b90d05292968f5395b25cbbd47c94a879d74 +revision: e754c029e3174151bcbfaff7d4ff7b6c3eec5e546f2aa734c3fd011d92a572d5 projectscmsync: https://src.opensuse.org/nodejs/_ObsPrj.git ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-10-12 13:08:36.000000000 +0200 @@ -0,0 +1,4 @@ +*.obscpio +*.osc +_build.* +.pbuild diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/update_npm_tarball.sh new/update_npm_tarball.sh --- old/update_npm_tarball.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/update_npm_tarball.sh 2026-10-12 13:08:36.000000000 +0200 @@ -0,0 +1,13 @@ +#!/bin/bash + +# +# Fetch npm module tarball that is required to run unit tests +# which are not provided by upstream tarball +# +set -e + +tar Jxf node-v*.tar.xz +cd node-v*/tools/doc +npm ci +cd ../.. +exec tar Jcf ../node_modules.tar.xz tools/doc/node_modules ++++++ fix_ci_tests.patch ++++++ --- /var/tmp/diff_new_pack.videOI/_old 2026-10-14 18:34:47.086021613 +0200 +++ /var/tmp/diff_new_pack.videOI/_new 2026-10-14 18:34:47.089021740 +0200 @@ -2,8 +2,10 @@ Date: Dec 20 09:18:49 UTC 2017 Summary: Fix CI unit tests framework for OBS building ---- a/test/parallel/test-module-loading-globalpaths.js -+++ b/test/parallel/test-module-loading-globalpaths.js +Index: node-v24.21.0/test/parallel/test-module-loading-globalpaths.js +=================================================================== +--- node-v24.21.0.orig/test/parallel/test-module-loading-globalpaths.js ++++ node-v24.21.0/test/parallel/test-module-loading-globalpaths.js @@ -11,6 +11,9 @@ const { addLibraryPath } = require('../c addLibraryPath(process.env); @@ -14,8 +16,10 @@ if (process.argv[2] === 'child') { console.log(require(pkgName).string); } else { ---- a/test/parallel/test-tls-passphrase.js -+++ b/test/parallel/test-tls-passphrase.js +Index: node-v24.21.0/test/parallel/test-tls-passphrase.js +=================================================================== +--- node-v24.21.0.orig/test/parallel/test-tls-passphrase.js ++++ node-v24.21.0/test/parallel/test-tls-passphrase.js @@ -223,7 +223,7 @@ server.listen(0, common.mustCall(functio }, onSecureConnect()); })).unref(); @@ -25,8 +29,10 @@ // Missing passphrase assert.throws(function() { ---- a/test/parallel/test-repl-envvars.js -+++ b/test/parallel/test-repl-envvars.js +Index: node-v24.21.0/test/parallel/test-repl-envvars.js +=================================================================== +--- node-v24.21.0.orig/test/parallel/test-repl-envvars.js ++++ node-v24.21.0/test/parallel/test-repl-envvars.js @@ -3,6 +3,8 @@ // Flags: --expose-internals @@ -36,8 +42,10 @@ const stream = require('stream'); const { describe, test } = require('node:test'); const REPL = require('internal/repl'); ---- a/Makefile -+++ b/Makefile +Index: node-v24.21.0/Makefile +=================================================================== +--- node-v24.21.0.orig/Makefile ++++ node-v24.21.0/Makefile @@ -406,7 +406,6 @@ ADDONS_HEADERS_PREREQS := tools/install. $(wildcard deps/uv/include/*/*.h) \ $(wildcard deps/v8/include/*.h) \ @@ -64,8 +72,10 @@ echo "Skipping tools/doc/node_modules (no crypto and/or no ICU)"; \ else \ cd tools/doc && $(call available-node,$(run-npm-ci)) \ ---- a/tools/test.py -+++ b/tools/test.py +Index: node-v24.21.0/tools/test.py +=================================================================== +--- node-v24.21.0.orig/tools/test.py ++++ node-v24.21.0/tools/test.py @@ -1399,7 +1399,7 @@ def BuildOptions(): result.add_argument("-s", "--suite", help="A test suite", default=[], action="append") @@ -75,20 +85,24 @@ result.add_argument("--arch", help='The architecture to run tests for', default='none') result.add_argument("--snapshot", help="Run the tests with snapshot turned on", ---- a/test/parallel/test-crypto-dh.js -+++ b/test/parallel/test-crypto-dh.js -@@ -93,7 +93,7 @@ const { +Index: node-v24.21.0/test/parallel/test-crypto-dh.js +=================================================================== +--- node-v24.21.0.orig/test/parallel/test-crypto-dh.js ++++ node-v24.21.0/test/parallel/test-crypto-dh.js +@@ -91,7 +91,7 @@ const { + { + assert.throws(() => { dh3.computeSecret(''); - }, { message: process.features.openssl_is_boringssl ? - 'Supplied key is invalid' : -- 'Supplied key is too small' }); -+ /Supplied key is too small|invalid public key/ }); +- }, { message: 'Supplied key is too small' }); ++ }, { message: /Supplied key is too small|invalid public key/ }); } } ---- a/test/parallel/test-dns.js -+++ b/test/parallel/test-dns.js -@@ -401,7 +401,7 @@ assert.throws(() => { +Index: node-v24.21.0/test/parallel/test-dns.js +=================================================================== +--- node-v24.21.0.orig/test/parallel/test-dns.js ++++ node-v24.21.0/test/parallel/test-dns.js +@@ -439,7 +439,7 @@ assert.throws(() => { const server = dgram.createSocket('udp4'); @@ -97,8 +111,10 @@ const parsed = dnstools.parseDNSPacket(msg); const domain = parsed.questions[0].domain; assert.strictEqual(domain, 'example.org'); ---- a/test/wpt/test-webcrypto.js -+++ b/test/wpt/test-webcrypto.js +Index: node-v24.21.0/test/wpt/test-webcrypto.js +=================================================================== +--- node-v24.21.0.orig/test/wpt/test-webcrypto.js ++++ node-v24.21.0/test/wpt/test-webcrypto.js @@ -1,7 +1,8 @@ 'use strict'; @@ -109,8 +125,10 @@ common.skip('missing crypto'); const { WPTRunner } = require('../common/wpt'); ---- a/test/parallel/test-sqlite.js -+++ b/test/parallel/test-sqlite.js +Index: node-v24.21.0/test/parallel/test-sqlite.js +=================================================================== +--- node-v24.21.0.orig/test/parallel/test-sqlite.js ++++ node-v24.21.0/test/parallel/test-sqlite.js @@ -243,6 +243,7 @@ suite('SQL APIs enabled at build time', }); @@ -135,8 +153,10 @@ const db = new DatabaseSync(':memory:'); db.exec(` CREATE VIRTUAL TABLE t1 USING geopoly(a,b,c); ---- a/test/parallel/test-internal-util-construct-sab.js -+++ b/test/parallel/test-internal-util-construct-sab.js +Index: node-v24.21.0/test/parallel/test-internal-util-construct-sab.js +=================================================================== +--- node-v24.21.0.orig/test/parallel/test-internal-util-construct-sab.js ++++ node-v24.21.0/test/parallel/test-internal-util-construct-sab.js @@ -1,7 +1,6 @@ // Flags: --enable-sharedarraybuffer-per-context --expose-internals 'use strict'; @@ -145,9 +165,11 @@ const assert = require('assert'); const { kMaxLength } = require('buffer'); const { isSharedArrayBuffer } = require('util/types'); ---- a/test/common/index.js -+++ b/test/common/index.js -@@ -925,6 +925,7 @@ function sleepSync(ms) { +Index: node-v24.21.0/test/common/index.js +=================================================================== +--- node-v24.21.0.orig/test/common/index.js ++++ node-v24.21.0/test/common/index.js +@@ -956,6 +956,7 @@ function resolveBuiltBinary(binary) { const common = { allowGlobals, @@ -155,8 +177,10 @@ buildType, canCreateSymLink, childShouldThrowAndAbort, ---- a/test/common/index.mjs -+++ b/test/common/index.mjs +Index: node-v24.21.0/test/common/index.mjs +=================================================================== +--- node-v24.21.0.orig/test/common/index.mjs ++++ node-v24.21.0/test/common/index.mjs @@ -5,6 +5,7 @@ const common = require('./index.js'); const { ++++++ ip-address.patch ++++++ Index: node-v24.18.1/deps/npm/node_modules/ip-address/dist/common.js =================================================================== --- node-v24.18.1.orig/deps/npm/node_modules/ip-address/dist/common.js +++ node-v24.18.1/deps/npm/node_modules/ip-address/dist/common.js @@ -1,20 +1,43 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isInSubnet = isInSubnet; +exports.isHostInSubnet = isHostInSubnet; exports.isCorrect = isCorrect; exports.prefixLengthFromMask = prefixLengthFromMask; exports.numberToPaddedHex = numberToPaddedHex; exports.stringToPaddedHex = stringToPaddedHex; exports.testBit = testBit; const address_error_1 = require("./address-error"); +/** + * Returns whether this address's *network* is contained within `address`, + * i.e. whether every address this one can represent also falls inside + * `address`. A network wider than `address` is not contained in it, so + * `10.0.0.0/8` is not in `10.0.0.0/16`. + * + * To ask whether the address itself falls inside a range, ignoring any CIDR + * suffix it was written with, use {@link isHostInSubnet} instead. That is the + * question the special-use classifiers ask. + */ function isInSubnet(address) { if (this.subnetMask < address.subnetMask) { return false; } - if (this.mask(address.subnetMask) === address.mask()) { - return true; - } - return false; + return isHostInSubnet.call(this, address); +} +/** + * Returns whether this address's host bits fall inside `address`, ignoring + * this address's own subnet mask. + * + * This is the primitive the special-use classifiers (`isLoopback`, + * `isPrivate`, `isLinkLocal`, `getType`, …) are built on: they answer a + * question about the address, so the answer must not change with the CIDR + * suffix the caller happened to write. Use this rather than + * {@link isInSubnet} when classifying a single address — notably when the + * address came from untrusted input and the result backs a trust-boundary + * decision such as an SSRF allow/deny filter. + */ +function isHostInSubnet(address) { + return this.mask(address.subnetMask) === address.mask(); } function isCorrect(defaultBits) { return function () { Index: node-v24.18.1/deps/npm/node_modules/ip-address/dist/ipv4.js =================================================================== --- node-v24.18.1.orig/deps/npm/node_modules/ip-address/dist/ipv4.js +++ node-v24.18.1/deps/npm/node_modules/ip-address/dist/ipv4.js @@ -35,6 +35,7 @@ const isCorrect4 = common.isCorrect(cons */ class Address4 { constructor(address) { + this.addressMinusSuffix = ''; this.groups = constants.GROUPS; this.parsedAddress = []; this.parsedSubnet = ''; @@ -51,6 +52,13 @@ class Address4 { * @returns {boolean} */ this.isInSubnet = common.isInSubnet; + /** + * Returns true if this address's host bits fall inside the given subnet, + * ignoring this address's own subnet mask. See + * {@link common.isHostInSubnet}. + * @returns {boolean} + */ + this.isHostInSubnet = common.isHostInSubnet; this.address = address; const subnet = constants.RE_SUBNET_STRING.exec(address); if (subnet) { @@ -403,49 +411,49 @@ class Address4 { * @returns {boolean} */ isMulticast() { - return this.isInSubnet(MULTICAST_V4); + return this.isHostInSubnet(MULTICAST_V4); } /** * Returns true if the address is in one of the [RFC 1918](https://datatracker.ietf.org/doc/html/rfc1918) private address ranges (`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`). * @returns {boolean} */ isPrivate() { - return PRIVATE_V4.some((subnet) => this.isInSubnet(subnet)); + return PRIVATE_V4.some((subnet) => this.isHostInSubnet(subnet)); } /** * Returns true if the address is in the loopback range `127.0.0.0/8` ([RFC 1122](https://datatracker.ietf.org/doc/html/rfc1122)). * @returns {boolean} */ isLoopback() { - return this.isInSubnet(LOOPBACK_V4); + return this.isHostInSubnet(LOOPBACK_V4); } /** * Returns true if the address is in the link-local range `169.254.0.0/16` ([RFC 3927](https://datatracker.ietf.org/doc/html/rfc3927)). * @returns {boolean} */ isLinkLocal() { - return this.isInSubnet(LINK_LOCAL_V4); + return this.isHostInSubnet(LINK_LOCAL_V4); } /** * Returns true if the address is the unspecified address `0.0.0.0`. * @returns {boolean} */ isUnspecified() { - return this.isInSubnet(UNSPECIFIED_V4); + return this.isHostInSubnet(UNSPECIFIED_V4); } /** * Returns true if the address is the limited broadcast address `255.255.255.255` ([RFC 919](https://datatracker.ietf.org/doc/html/rfc919)). * @returns {boolean} */ isBroadcast() { - return this.isInSubnet(BROADCAST_V4); + return this.isHostInSubnet(BROADCAST_V4); } /** * Returns true if the address is in the carrier-grade NAT range `100.64.0.0/10` ([RFC 6598](https://datatracker.ietf.org/doc/html/rfc6598)). * @returns {boolean} */ isCGNAT() { - return this.isInSubnet(CGNAT_V4); + return this.isHostInSubnet(CGNAT_V4); } /** * Returns a zero-padded base-2 string representation of the address @@ -463,7 +471,7 @@ class Address4 { */ groupForV6() { const segments = this.parsedAddress; - return this.address.replace(constants.RE_ADDRESS, `<span class="hover-group group-v4 group-6">${segments + return this.correctForm().replace(constants.RE_ADDRESS, `<span class="hover-group group-v4 group-6">${segments .slice(0, 2) .join('.')}</span>.<span class="hover-group group-v4 group-7">${segments .slice(2, 4) Index: node-v24.18.1/deps/npm/node_modules/ip-address/dist/ipv6.js =================================================================== --- node-v24.18.1.orig/deps/npm/node_modules/ip-address/dist/ipv6.js +++ node-v24.18.1/deps/npm/node_modules/ip-address/dist/ipv6.js @@ -98,6 +98,13 @@ class Address6 { */ this.isInSubnet = common.isInSubnet; /** + * Returns true if this address's host bits fall inside the given subnet, + * ignoring this address's own subnet mask. See + * {@link common.isHostInSubnet}. + * @returns {boolean} + */ + this.isHostInSubnet = common.isHostInSubnet; + /** * Returns true if the address is correct, false otherwise * @returns {boolean} */ @@ -184,9 +191,11 @@ class Address6 { let host; let port = null; let result; + // Remove the protocol prefix, if any + const stripped = url.replace(/^[a-z][a-z0-9+.-]*:\/\//i, ''); // If we have brackets parse them and find a port - if (url.indexOf('[') !== -1 && url.indexOf(']:') !== -1) { - result = constants6.RE_URL_WITH_PORT.exec(url); + if (stripped.indexOf('[') !== -1 && stripped.indexOf(']:') !== -1) { + result = constants6.RE_URL_WITH_PORT.exec(stripped); if (result === null) { return { error: 'failed to parse address with port', @@ -196,13 +205,9 @@ class Address6 { } host = result[1]; port = result[2]; - // If there's a URL extract the address } - else if (url.indexOf('/') !== -1) { - // Remove the protocol prefix - url = url.replace(/^[a-z0-9]+:\/\//, ''); - // Parse the address - result = constants6.RE_URL.exec(url); + else { + result = constants6.RE_URL.exec(stripped); if (result === null) { return { error: 'failed to parse address from URL', @@ -210,11 +215,7 @@ class Address6 { port: null, }; } - host = result[1]; - // Otherwise just assign the URL to the host and let the library parse it - } - else { - host = url; + host = result[1] ?? result[2]; } // If there's a port convert it to an integer if (port) { @@ -493,7 +494,7 @@ class Address6 { getType() { for (let i = 0; i < TYPE_SUBNETS.length; i++) { const entry = TYPE_SUBNETS[i]; - if (this.isInSubnet(entry[0])) { + if (this.isHostInSubnet(entry[0])) { return entry[1]; } } @@ -638,7 +639,8 @@ class Address6 { const address4 = lastGroup.match(constants4.RE_ADDRESS); if (address4) { this.parsedAddress4 = address4[0]; - this.address4 = new ipv4_1.Address4(this.parsedAddress4); + const v4Suffix = this.subnetMask >= 96 ? `/${this.subnetMask - 96}` : ''; + this.address4 = new ipv4_1.Address4(`${this.parsedAddress4}${v4Suffix}`); for (let i = 0; i < this.address4.groups; i++) { if (/^0[0-9]+/.test(this.address4.parsedAddress[i])) { // The prefix groups haven't been through the bad-character check @@ -734,7 +736,11 @@ class Address6 { return BigInt(`0x${this.parsedAddress.map(paddedHex).join('')}`); } /** - * Return the last two groups of this address as an IPv4 address string + * Return the last two groups of this address as an IPv4 address string. + * If this address carries a CIDR prefix that covers the trailing 32 bits + * (i.e. `subnetMask >= 96`), the resulting `Address4` inherits the + * corresponding v4 prefix (`subnetMask - 96`); otherwise it defaults to + * `/32`. * @returns {Address4} * @example * var address = new Address6('2001:4860:4001::1825:bf11'); @@ -742,7 +748,16 @@ class Address6 { */ to4() { const binary = this.binaryZeroPad().split(''); - return ipv4_1.Address4.fromHex(BigInt(`0b${binary.slice(96, 128).join('')}`).toString(16).padStart(8, '0')); + const hex = BigInt(`0b${binary.slice(96, 128).join('')}`).toString(16).padStart(8, '0'); + if (this.subnetMask >= 96) { + const v4Mask = this.subnetMask - 96; + const groups = []; + for (let i = 0; i < 8; i += 2) { + groups.push(parseInt(hex.slice(i, i + 2), 16)); + } + return new ipv4_1.Address4(`${groups.join('.')}/${v4Mask}`); + } + return ipv4_1.Address4.fromHex(hex); } /** * Return the v4-in-v6 form of the address @@ -756,7 +771,7 @@ class Address6 { if (!/:$/.test(correct)) { infix = ':'; } - return correct + infix + address4.address; + return correct + infix + address4.correctForm(); } /** * Decodes the Teredo tunneling fields embedded in this address. Returns the @@ -902,7 +917,7 @@ class Address6 { if (pl !== 32 && pl !== 40 && pl !== 48 && pl !== 56 && pl !== 64 && pl !== 96) { throw new address_error_1.AddressError('NAT64 prefix length must be 32, 40, 48, 56, 64, or 96'); } - if (!this.isInSubnet(prefix6)) { + if (!this.isHostInSubnet(prefix6)) { return null; } const bits = this.binaryZeroPad(); @@ -982,7 +997,11 @@ class Address6 { * @returns {boolean} */ isLinkLocal() { - // Zeroes are required, i.e. we can't check isInSubnet with 'fe80::/10' + const embedded = this.embeddedIPv4(); + if (embedded) { + return embedded.isLinkLocal(); + } + // Zeroes are required, i.e. we can't check isHostInSubnet with 'fe80::/10' if (this.getBitsBase2(0, 64) === '1111111010000000000000000000000000000000000000000000000000000000') { return true; @@ -994,6 +1013,10 @@ class Address6 { * @returns {boolean} */ isMulticast() { + const embedded = this.embeddedIPv4(); + if (embedded) { + return embedded.isMulticast(); + } const type = this.getType(); return type === 'Multicast' || type.startsWith('Multicast '); } @@ -1016,27 +1039,54 @@ class Address6 { * @returns {boolean} */ isMapped4() { - return this.isInSubnet(IPV4_MAPPED_SUBNET); + return this.isHostInSubnet(IPV4_MAPPED_SUBNET); + } + /** + * If this address embeds a routable IPv4 address — i.e. it is IPv4-mapped + * (`::ffff:0:0/96`) or sits in the NAT64 well-known prefix (`64:ff9b::/96`, + * [RFC 6052](https://datatracker.ietf.org/doc/html/rfc6052)) — return that + * embedded address as an {@link Address4}; otherwise return null. + * + * The special-property checks (`isLoopback`, `isLinkLocal`, `isMulticast`, + * `isUnspecified`, `isPrivate`, `isCGNAT`, `isBroadcast`) call this first and + * delegate to the embedded {@link Address4} when present, so a literal such as + * `::ffff:127.0.0.1` is classified by what it actually reaches (loopback) + * rather than by its IPv6 wrapper (which `getType()` reports as IPv4-mapped). + * This matters wherever the checks back a trust-boundary decision (e.g. an + * SSRF allow/deny filter): without normalization, `::ffff:10.0.0.1`, + * `::ffff:169.254.169.254`, `64:ff9b::7f00:1`, etc. would all read as + * non-internal. + * @returns {Address4 | null} + */ + embeddedIPv4() { + if (this.isMapped4() || this.isHostInSubnet(NAT64_WELL_KNOWN_SUBNET)) { + return this.to4(); + } + return null; } /** * Returns true if the address is a Teredo address, false otherwise * @returns {boolean} */ isTeredo() { - return this.isInSubnet(TEREDO_SUBNET); + return this.isHostInSubnet(TEREDO_SUBNET); } /** * Returns true if the address is a 6to4 address, false otherwise * @returns {boolean} */ is6to4() { - return this.isInSubnet(SIX_TO_FOUR_SUBNET); + return this.isHostInSubnet(SIX_TO_FOUR_SUBNET); } /** * Returns true if the address is a loopback address, false otherwise * @returns {boolean} */ isLoopback() { + const embedded = this.embeddedIPv4(); + if (embedded) { + return embedded.isLoopback(); + } return this.getType() === 'Loopback'; } /** @@ -1044,13 +1094,64 @@ class Address6 { * @returns {boolean} */ isULA() { - return this.isInSubnet(ULA_SUBNET); + return this.isHostInSubnet(ULA_SUBNET); + } + /** + * Returns true if the address is private, i.e. a Unique Local Address in + * `fc00::/7` ([RFC 4193](https://datatracker.ietf.org/doc/html/rfc4193)) or an + * IPv4-mapped / NAT64 address whose embedded IPv4 address is in one of the + * [RFC 1918](https://datatracker.ietf.org/doc/html/rfc1918) private ranges + * (e.g. `::ffff:10.0.0.1`). This is the IPv6 counterpart to + * {@link Address4.isPrivate}; use it instead of {@link isULA} when you need to + * catch mapped RFC 1918 addresses as well as native ULAs. + * @returns {boolean} + */ + isPrivate() { + const embedded = this.embeddedIPv4(); + if (embedded) { + return embedded.isPrivate(); + } + return this.isULA(); + } + /** + * Returns true if the address is an IPv4-mapped / NAT64 address whose embedded + * IPv4 address is in the carrier-grade NAT range `100.64.0.0/10` + * ([RFC 6598](https://datatracker.ietf.org/doc/html/rfc6598)), false + * otherwise. There is no native IPv6 CGNAT range, so this only ever returns + * true for an embedded IPv4 address (e.g. `::ffff:100.64.0.1`). + * @returns {boolean} + */ + isCGNAT() { + const embedded = this.embeddedIPv4(); + if (embedded) { + return embedded.isCGNAT(); + } + return false; + } + /** + * Returns true if the address is an IPv4-mapped / NAT64 address whose embedded + * IPv4 address is the limited broadcast address `255.255.255.255` + * ([RFC 919](https://datatracker.ietf.org/doc/html/rfc919)), false otherwise. + * There is no IPv6 broadcast, so this only ever returns true for an embedded + * IPv4 address (e.g. `::ffff:255.255.255.255`). + * @returns {boolean} + */ + isBroadcast() { + const embedded = this.embeddedIPv4(); + if (embedded) { + return embedded.isBroadcast(); + } + return false; } /** * Returns true if the address is the unspecified address `::`. * @returns {boolean} */ isUnspecified() { + const embedded = this.embeddedIPv4(); + if (embedded) { + return embedded.isUnspecified(); + } return this.getType() === 'Unspecified'; } /** @@ -1058,7 +1159,7 @@ class Address6 { * @returns {boolean} */ isDocumentation() { - return this.isInSubnet(DOCUMENTATION_SUBNET); + return this.isHostInSubnet(DOCUMENTATION_SUBNET); } // #endregion // #region HTML @@ -1214,4 +1315,5 @@ const SIX_TO_FOUR_SUBNET = new Address6( const ULA_SUBNET = new Address6('fc00::/7'); const DOCUMENTATION_SUBNET = new Address6('2001:db8::/32'); const IPV4_MAPPED_SUBNET = new Address6('::ffff:0:0/96'); +const NAT64_WELL_KNOWN_SUBNET = new Address6('64:ff9b::/96'); //# sourceMappingURL=ipv6.js.map \ No newline at end of file Index: node-v24.18.1/deps/npm/node_modules/ip-address/dist/v6/constants.js =================================================================== --- node-v24.18.1.orig/deps/npm/node_modules/ip-address/dist/v6/constants.js +++ node-v24.18.1/deps/npm/node_modules/ip-address/dist/v6/constants.js @@ -44,6 +44,7 @@ exports.TYPES = { 'ff05::1:3/128': 'Multicast (All DHCP servers in this site)', '::/128': 'Unspecified', '::1/128': 'Loopback', + '::ffff:0:0/96': 'IPv4-mapped', 'ff00::/8': 'Multicast', 'fe80::/10': 'Link-local unicast', 'fc00::/7': 'Unique local', @@ -76,6 +77,6 @@ exports.RE_SUBNET_STRING = /\/\d{1,3}(?= * @static */ exports.RE_ZONE_STRING = /%.*$/; -exports.RE_URL = /^\[{0,1}([0-9a-f:]+)\]{0,1}/; -exports.RE_URL_WITH_PORT = /\[([0-9a-f:]+)\]:([0-9]{1,5})/; +exports.RE_URL = /^(?:\[([0-9a-f:.]+)\]|([0-9a-f:.]+))(?:[/?#].*)?$/i; +exports.RE_URL_WITH_PORT = /^\[([0-9a-f:.]+)\]:([0-9]{1,5})(?:[/?#].*)?$/i; //# sourceMappingURL=constants.js.map \ No newline at end of file Index: node-v24.18.1/deps/npm/node_modules/ip-address/package.json =================================================================== --- node-v24.18.1.orig/deps/npm/node_modules/ip-address/package.json +++ node-v24.18.1/deps/npm/node_modules/ip-address/package.json @@ -16,7 +16,7 @@ "bigint", "browser" ], - "version": "10.2.0", + "version": "10.2.2", "author": "Beau Gunderson <[email protected]> (https://beaugunderson.com/)", "license": "MIT", "main": "dist/ip-address.js", ++++++ no_avx2_on_i586.patch ++++++ =================================================================== Index: node-v26.7.0/deps/histogram/src/hdr_histogram.c =================================================================== --- node-v26.7.0.orig/deps/histogram/src/hdr_histogram.c +++ node-v26.7.0/deps/histogram/src/hdr_histogram.c @@ -36,7 +36,7 @@ /* Runtime-dispatched AVX2 path: keep the rest of this TU at the project's baseline ISA so the shipped binary does not silently require AVX2. */ -#if (defined(__x86_64__) || defined(_M_X64) || defined(__i386__) || defined(_M_IX86)) \ +#if (defined(__x86_64__) || defined(_M_X64)) \ && (defined(__GNUC__) || defined(__clang__)) && !defined(__INTEL_COMPILER) && !defined(_MSC_VER) # define HDR_HAS_AVX2_DISPATCH 1 # include <immintrin.h> ++++++ node-v24.18.1.tar.xz -> node-v24.21.0.tar.xz ++++++ /work/SRC/openSUSE:Factory/nodejs24/node-v24.18.1.tar.xz /work/SRC/openSUSE:Factory/.nodejs24.new.3698736/node-v24.21.0.tar.xz differ: char 26, line 1 ++++++ npm-line-truncation.patch ++++++ Index: node-v26.6.0/deps/npm/lib/base-cmd.js =================================================================== --- node-v26.6.0.orig/deps/npm/lib/base-cmd.js +++ node-v26.6.0/deps/npm/lib/base-cmd.js @@ -104,7 +104,7 @@ class BaseCommand { fullUsage.push('') for (const def of cmdDefs) { if (def.description) { - const desc = def.description.trim().split('\n')[0] + const desc = def.description.split('\n\n')[0].trim().replace(/\s+/g, ' ') const shortcuts = def.short ? `-${def.short}` : '' const aliases = (def.alias || []).map(v => `--${v}`).join('|') const mainFlag = `--${def.key}` ++++++ versioned.patch ++++++ --- /var/tmp/diff_new_pack.videOI/_old 2026-10-14 18:34:47.201026483 +0200 +++ /var/tmp/diff_new_pack.videOI/_new 2026-10-14 18:34:47.205026653 +0200 @@ -8,10 +8,10 @@ This is also important for generation of binary modules for multiple versions of NodeJS -Index: node-v24.14.1/Makefile +Index: node-v24.19.0/Makefile =================================================================== ---- node-v24.14.1.orig/Makefile -+++ node-v24.14.1/Makefile +--- node-v24.19.0.orig/Makefile ++++ node-v24.19.0/Makefile @@ -77,7 +77,7 @@ BUILDTYPE_LOWER := $(shell echo $(BUILDT EXEEXT := $(shell $(PYTHON) -c \ "import sys; print('.exe' if sys.platform == 'win32' else '')") @@ -21,10 +21,10 @@ NODE_G_EXE = node_g$(EXEEXT) NPM ?= ./deps/npm/bin/npm-cli.js -Index: node-v24.14.1/tools/install.py +Index: node-v24.19.0/tools/install.py =================================================================== ---- node-v24.14.1.orig/tools/install.py -+++ node-v24.14.1/tools/install.py +--- node-v24.19.0.orig/tools/install.py ++++ node-v24.19.0/tools/install.py @@ -93,7 +93,7 @@ def uninstall(options, paths, dest): try_remove(options, path, dest) @@ -113,10 +113,10 @@ if sys.platform == 'zos': zoslibinc = os.environ.get('ZOSLIB_INCLUDES') -Index: node-v24.14.1/doc/node.1 +Index: node-v24.19.0/doc/node.1 =================================================================== ---- node-v24.14.1.orig/doc/node.1 -+++ node-v24.14.1/doc/node.1 +--- node-v24.19.0.orig/doc/node.1 ++++ node-v24.19.0/doc/node.1 @@ -28,24 +28,24 @@ .Dt NODE 1 . @@ -138,7 +138,7 @@ -.Nm node +.Nm node24 .Cm inspect - .Op Fl e Ar string | Ar script.js | Fl | Ar <host>:<port> + .Op Ar <program-entry-point> | Fl e Ar string | Ar <host>:<port> .Ar ... . -.Nm node @@ -146,10 +146,10 @@ .Op Fl -v8-options . .\"====================================================================== -Index: node-v24.14.1/src/node_main.cc +Index: node-v24.19.0/src/node_main.cc =================================================================== ---- node-v24.14.1.orig/src/node_main.cc -+++ node-v24.14.1/src/node_main.cc +--- node-v24.19.0.orig/src/node_main.cc ++++ node-v24.19.0/src/node_main.cc @@ -94,6 +94,7 @@ int wmain(int argc, wchar_t* wargv[]) { // UNIX @@ -158,10 +158,10 @@ return node::Start(argc, argv); } #endif -Index: node-v24.14.1/tools/test.py +Index: node-v24.19.0/tools/test.py =================================================================== ---- node-v24.14.1.orig/tools/test.py -+++ node-v24.14.1/tools/test.py +--- node-v24.19.0.orig/tools/test.py ++++ node-v24.19.0/tools/test.py @@ -985,7 +985,7 @@ class Context(object): if self.vm is not None: return self.vm @@ -171,27 +171,29 @@ else: name = 'out/%s.%s/node' % (arch, mode) -Index: node-v24.14.1/node.gyp +Index: node-v24.19.0/node.gyp =================================================================== ---- node-v24.14.1.orig/node.gyp -+++ node-v24.14.1/node.gyp -@@ -6,10 +6,10 @@ - 'v8_enable_31bit_smis_on_64bit_arch%': 0, +--- node-v24.19.0.orig/node.gyp ++++ node-v24.19.0/node.gyp +@@ -7,12 +7,12 @@ 'force_dynamic_crt%': 0, 'node_builtin_modules_path%': '', + # `node` executable target name. - 'node_core_target_name%': 'node', + 'node_core_target_name%': 'node24', - 'node_enable_v8_vtunejit%': 'false', - 'node_intermediate_lib_type%': 'static_library', + # `libnode` target type, `static_library` if `node_shared` is false and `shared_library` if `node_shared` is true. + 'node_lib_type%': 'static_library', + # `libnode` target name, can be a `static_library` or `shared_library` based on `node_shared`. + # NOTE: Gyp will prefix this with `lib` if this name does not start with `lib`. - 'node_lib_target_name%': 'libnode', + 'node_lib_target_name%': 'libnode24', 'node_module_version%': '', 'node_no_browser_globals%': 'false', 'node_shared_brotli%': 'false', -Index: node-v24.14.1/test/parallel/test-snapshot-warning.js +Index: node-v24.19.0/test/parallel/test-snapshot-warning.js =================================================================== ---- node-v24.14.1.orig/test/parallel/test-snapshot-warning.js -+++ node-v24.14.1/test/parallel/test-snapshot-warning.js +--- node-v24.19.0.orig/test/parallel/test-snapshot-warning.js ++++ node-v24.19.0/test/parallel/test-snapshot-warning.js @@ -60,7 +60,7 @@ tmpdir.refresh(); stderr(output) { let match = output.match(/Warning: test warning/g);
