From 494956367217b6ed170606ea4d68b9e17511712d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Jun 2026 00:32:41 +0000 Subject: [PATCH 1/2] chore(deps): bump @noble/curves from 1.9.7 to 2.2.0 Bumps [@noble/curves](https://github.com/paulmillr/noble-curves) from 1.9.7 to 2.2.0. - [Release notes](https://github.com/paulmillr/noble-curves/releases) - [Commits](https://github.com/paulmillr/noble-curves/compare/1.9.7...2.2.0) --- updated-dependencies: - dependency-name: "@noble/curves" dependency-version: 2.2.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- apps/web/package.json | 2 +- pnpm-lock.yaml | 60 +++++++++++++++++++++---------------------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/apps/web/package.json b/apps/web/package.json index 7f46f261..be34b608 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -39,7 +39,7 @@ "@meshtastic/transport-http": "workspace:*", "@meshtastic/transport-web-bluetooth": "workspace:*", "@meshtastic/transport-web-serial": "workspace:*", - "@noble/curves": "^1.9.2", + "@noble/curves": "^2.2.0", "@preact/signals-core": "^1.8.0", "@radix-ui/react-accordion": "^1.2.13", "@radix-ui/react-alert-dialog": "^1.1.16", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 45c679c7..1d425ad4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -50,7 +50,7 @@ importers: version: 6.0.3 vitest: specifier: ^4.1.8 - version: 4.1.8(@types/node@25.9.3)(happy-dom@20.10.3)(jsdom@29.1.1(@noble/hashes@1.8.0))(vite@8.0.16(@types/node@25.9.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) + version: 4.1.8(@types/node@25.9.3)(happy-dom@20.10.3)(jsdom@29.1.1(@noble/hashes@2.2.0))(vite@8.0.16(@types/node@25.9.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) apps/web: dependencies: @@ -76,8 +76,8 @@ importers: specifier: workspace:* version: link:../../packages/transport-web-serial '@noble/curves': - specifier: ^1.9.2 - version: 1.9.7 + specifier: ^2.2.0 + version: 2.2.0 '@preact/signals-core': specifier: ^1.8.0 version: 1.14.2 @@ -315,7 +315,7 @@ importers: version: 6.0.3 vitest: specifier: ^4.1.8 - version: 4.1.8(@types/node@25.9.3)(happy-dom@20.10.3)(jsdom@29.1.1(@noble/hashes@1.8.0))(vite@8.0.16(@types/node@25.9.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) + version: 4.1.8(@types/node@25.9.3)(happy-dom@20.10.3)(jsdom@29.1.1(@noble/hashes@2.2.0))(vite@8.0.16(@types/node@25.9.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) packages/protobufs: dependencies: @@ -371,7 +371,7 @@ importers: version: 19.2.17 jsdom: specifier: ^29.1.1 - version: 29.1.1(@noble/hashes@1.8.0) + version: 29.1.1(@noble/hashes@2.2.0) react: specifier: ^19.2.7 version: 19.2.7 @@ -526,7 +526,7 @@ importers: version: 4.1.1(vite@8.0.16(@types/node@25.9.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) vitest: specifier: ^4.1.8 - version: 4.1.8(@types/node@25.9.3)(happy-dom@20.10.3)(jsdom@29.1.1(@noble/hashes@1.8.0))(vite@8.0.16(@types/node@25.9.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) + version: 4.1.8(@types/node@25.9.3)(happy-dom@20.10.3)(jsdom@29.1.1(@noble/hashes@2.2.0))(vite@8.0.16(@types/node@25.9.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) packages: @@ -1450,13 +1450,13 @@ packages: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 - '@noble/curves@1.9.7': - resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==} - engines: {node: ^14.21.3 || >=16} + '@noble/curves@2.2.0': + resolution: {integrity: sha512-T/BoHgFXirb0ENSPBquzX0rcjXeM6Lo892a2jlYJkqk83LqZx0l1Of7DzlKJ6jkpvMrkHSnAcgb5JegL8SeIkQ==} + engines: {node: '>= 20.19.0'} - '@noble/hashes@1.8.0': - resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} - engines: {node: ^14.21.3 || >=16} + '@noble/hashes@2.2.0': + resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==} + engines: {node: '>= 20.19.0'} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -7198,9 +7198,9 @@ snapshots: '@esbuild/win32-x64@0.27.7': optional: true - '@exodus/bytes@1.15.1(@noble/hashes@1.8.0)': + '@exodus/bytes@1.15.1(@noble/hashes@2.2.0)': optionalDependencies: - '@noble/hashes': 1.8.0 + '@noble/hashes': 2.2.0 '@floating-ui/core@1.7.5': dependencies: @@ -7376,11 +7376,11 @@ snapshots: '@tybys/wasm-util': 0.10.2 optional: true - '@noble/curves@1.9.7': + '@noble/curves@2.2.0': dependencies: - '@noble/hashes': 1.8.0 + '@noble/hashes': 2.2.0 - '@noble/hashes@1.8.0': {} + '@noble/hashes@2.2.0': {} '@nodelib/fs.scandir@2.1.5': dependencies: @@ -10368,10 +10368,10 @@ snapshots: d3-voronoi@1.1.2: {} - data-urls@7.0.0(@noble/hashes@1.8.0): + data-urls@7.0.0(@noble/hashes@2.2.0): dependencies: whatwg-mimetype: 5.0.0 - whatwg-url: 16.0.1(@noble/hashes@1.8.0) + whatwg-url: 16.0.1(@noble/hashes@2.2.0) transitivePeerDependencies: - '@noble/hashes' @@ -10867,9 +10867,9 @@ snapshots: hookable@6.1.1: {} - html-encoding-sniffer@6.0.0(@noble/hashes@1.8.0): + html-encoding-sniffer@6.0.0(@noble/hashes@2.2.0): dependencies: - '@exodus/bytes': 1.15.1(@noble/hashes@1.8.0) + '@exodus/bytes': 1.15.1(@noble/hashes@2.2.0) transitivePeerDependencies: - '@noble/hashes' @@ -11093,17 +11093,17 @@ snapshots: js-tokens@4.0.0: {} - jsdom@29.1.1(@noble/hashes@1.8.0): + jsdom@29.1.1(@noble/hashes@2.2.0): dependencies: '@asamuzakjp/css-color': 5.1.11 '@asamuzakjp/dom-selector': 7.1.1 '@bramus/specificity': 2.4.2 '@csstools/css-syntax-patches-for-csstree': 1.1.5(css-tree@3.2.1) - '@exodus/bytes': 1.15.1(@noble/hashes@1.8.0) + '@exodus/bytes': 1.15.1(@noble/hashes@2.2.0) css-tree: 3.2.1 - data-urls: 7.0.0(@noble/hashes@1.8.0) + data-urls: 7.0.0(@noble/hashes@2.2.0) decimal.js: 10.6.0 - html-encoding-sniffer: 6.0.0(@noble/hashes@1.8.0) + html-encoding-sniffer: 6.0.0(@noble/hashes@2.2.0) is-potential-custom-element-name: 1.0.1 lru-cache: 11.5.1 parse5: 8.0.1 @@ -11114,7 +11114,7 @@ snapshots: w3c-xmlserializer: 5.0.0 webidl-conversions: 8.0.1 whatwg-mimetype: 5.0.0 - whatwg-url: 16.0.1(@noble/hashes@1.8.0) + whatwg-url: 16.0.1(@noble/hashes@2.2.0) xml-name-validator: 5.0.0 transitivePeerDependencies: - '@noble/hashes' @@ -12559,7 +12559,7 @@ snapshots: tsx: 4.21.0 yaml: 2.9.0 - vitest@4.1.8(@types/node@25.9.3)(happy-dom@20.10.3)(jsdom@29.1.1(@noble/hashes@1.8.0))(vite@8.0.16(@types/node@25.9.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)): + vitest@4.1.8(@types/node@25.9.3)(happy-dom@20.10.3)(jsdom@29.1.1(@noble/hashes@2.2.0))(vite@8.0.16(@types/node@25.9.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.8 '@vitest/mocker': 4.1.8(vite@8.0.16(@types/node@25.9.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) @@ -12584,7 +12584,7 @@ snapshots: optionalDependencies: '@types/node': 25.9.3 happy-dom: 20.10.3 - jsdom: 29.1.1(@noble/hashes@1.8.0) + jsdom: 29.1.1(@noble/hashes@2.2.0) transitivePeerDependencies: - msw @@ -12606,9 +12606,9 @@ snapshots: whatwg-mimetype@5.0.0: {} - whatwg-url@16.0.1(@noble/hashes@1.8.0): + whatwg-url@16.0.1(@noble/hashes@2.2.0): dependencies: - '@exodus/bytes': 1.15.1(@noble/hashes@1.8.0) + '@exodus/bytes': 1.15.1(@noble/hashes@2.2.0) tr46: 6.0.0 webidl-conversions: 8.0.1 transitivePeerDependencies: From 814476834f2a82b2e0657862a64bebf4e1595727 Mon Sep 17 00:00:00 2001 From: Dan Ditomaso Date: Tue, 16 Jun 2026 21:20:39 -0400 Subject: [PATCH 2/2] refactor(web): migrate @noble/curves imports to v2 paths - Move numberToHexUnpadded import from @noble/curves/abstract/utils to @noble/curves/utils.js (abstract/utils subpath removed in v2). - Update @noble/curves/ed25519 to @noble/curves/ed25519.js to match required sub-import file extensions. - Rename x25519.utils.randomPrivateKey() to randomSecretKey() (v2 API). --- apps/web/src/components/Dialog/LocationResponseDialog.tsx | 2 +- .../components/Dialog/NodeDetailsDialog/NodeDetailsDialog.tsx | 2 +- apps/web/src/components/Dialog/TracerouteResponseDialog.tsx | 2 +- .../web/src/components/PageComponents/Messages/TraceRoute.tsx | 2 +- apps/web/src/components/generic/Filter/useFilterNode.ts | 2 +- apps/web/src/core/utils/x25519.ts | 4 ++-- apps/web/src/pages/Map/index.tsx | 2 +- apps/web/src/pages/Nodes/index.tsx | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/apps/web/src/components/Dialog/LocationResponseDialog.tsx b/apps/web/src/components/Dialog/LocationResponseDialog.tsx index 08fe5c5f..f6909462 100644 --- a/apps/web/src/components/Dialog/LocationResponseDialog.tsx +++ b/apps/web/src/components/Dialog/LocationResponseDialog.tsx @@ -1,6 +1,6 @@ import { useNodeAsProto } from "@core/hooks/useNodesAsProto.ts"; import type { Protobuf, Types } from "@meshtastic/sdk"; -import { numberToHexUnpadded } from "@noble/curves/abstract/utils"; +import { numberToHexUnpadded } from "@noble/curves/utils.js"; import { useTranslation } from "react-i18next"; import { Dialog, diff --git a/apps/web/src/components/Dialog/NodeDetailsDialog/NodeDetailsDialog.tsx b/apps/web/src/components/Dialog/NodeDetailsDialog/NodeDetailsDialog.tsx index b0d87f55..e4988840 100644 --- a/apps/web/src/components/Dialog/NodeDetailsDialog/NodeDetailsDialog.tsx +++ b/apps/web/src/components/Dialog/NodeDetailsDialog/NodeDetailsDialog.tsx @@ -31,7 +31,7 @@ import { useNodeAsProto } from "@core/hooks/useNodesAsProto.ts"; import { useAppStore, useDevice } from "@core/stores"; import { cn } from "@core/utils/cn.ts"; import { Protobuf } from "@meshtastic/sdk"; -import { numberToHexUnpadded } from "@noble/curves/abstract/utils"; +import { numberToHexUnpadded } from "@noble/curves/utils.js"; import { useNavigate } from "@tanstack/react-router"; import { fromByteArray } from "base64-js"; import { diff --git a/apps/web/src/components/Dialog/TracerouteResponseDialog.tsx b/apps/web/src/components/Dialog/TracerouteResponseDialog.tsx index 27fba291..8971373f 100644 --- a/apps/web/src/components/Dialog/TracerouteResponseDialog.tsx +++ b/apps/web/src/components/Dialog/TracerouteResponseDialog.tsx @@ -1,6 +1,6 @@ import { useNodeAsProto } from "@core/hooks/useNodesAsProto.ts"; import type { Protobuf, Types } from "@meshtastic/sdk"; -import { numberToHexUnpadded } from "@noble/curves/abstract/utils"; +import { numberToHexUnpadded } from "@noble/curves/utils.js"; import { useTranslation } from "react-i18next"; import { TraceRoute } from "../PageComponents/Messages/TraceRoute.tsx"; diff --git a/apps/web/src/components/PageComponents/Messages/TraceRoute.tsx b/apps/web/src/components/PageComponents/Messages/TraceRoute.tsx index 5e56e354..2555bd21 100644 --- a/apps/web/src/components/PageComponents/Messages/TraceRoute.tsx +++ b/apps/web/src/components/PageComponents/Messages/TraceRoute.tsx @@ -1,6 +1,6 @@ import { useNodesAsProto } from "@core/hooks/useNodesAsProto.ts"; import type { Protobuf } from "@meshtastic/sdk"; -import { numberToHexUnpadded } from "@noble/curves/abstract/utils"; +import { numberToHexUnpadded } from "@noble/curves/utils.js"; import { useTranslation } from "react-i18next"; type NodeUser = Pick; diff --git a/apps/web/src/components/generic/Filter/useFilterNode.ts b/apps/web/src/components/generic/Filter/useFilterNode.ts index ea5b77ce..e35fa681 100644 --- a/apps/web/src/components/generic/Filter/useFilterNode.ts +++ b/apps/web/src/components/generic/Filter/useFilterNode.ts @@ -1,5 +1,5 @@ import { Protobuf } from "@meshtastic/sdk"; -import { numberToHexUnpadded } from "@noble/curves/abstract/utils"; +import { numberToHexUnpadded } from "@noble/curves/utils.js"; import { useCallback, useMemo } from "react"; export type FilterState = { diff --git a/apps/web/src/core/utils/x25519.ts b/apps/web/src/core/utils/x25519.ts index f3dd30da..9e5b2f3f 100644 --- a/apps/web/src/core/utils/x25519.ts +++ b/apps/web/src/core/utils/x25519.ts @@ -1,7 +1,7 @@ -import { x25519 } from "@noble/curves/ed25519"; +import { x25519 } from "@noble/curves/ed25519.js"; export function getX25519PrivateKey(): Uint8Array { - const key = x25519.utils.randomPrivateKey(); + const key = x25519.utils.randomSecretKey(); // scalar clamping for curve25519, according to // https://www.rfc-editor.org/rfc/rfc7748#section-5 diff --git a/apps/web/src/pages/Map/index.tsx b/apps/web/src/pages/Map/index.tsx index 8150c593..f9d4a4bf 100644 --- a/apps/web/src/pages/Map/index.tsx +++ b/apps/web/src/pages/Map/index.tsx @@ -32,7 +32,7 @@ import { import { cn } from "@core/utils/cn.ts"; import { hasPos, toLngLat } from "@core/utils/geo.ts"; import type { Protobuf } from "@meshtastic/sdk"; -import { numberToHexUnpadded } from "@noble/curves/abstract/utils"; +import { numberToHexUnpadded } from "@noble/curves/utils.js"; import { FunnelIcon, LocateFixedIcon } from "lucide-react"; import { useCallback, diff --git a/apps/web/src/pages/Nodes/index.tsx b/apps/web/src/pages/Nodes/index.tsx index 492718fb..a8f67594 100644 --- a/apps/web/src/pages/Nodes/index.tsx +++ b/apps/web/src/pages/Nodes/index.tsx @@ -21,7 +21,7 @@ import { useNodesAsProto } from "@core/hooks/useNodesAsProto.ts"; import { useAppStore, useDevice } from "@core/stores"; import { Protobuf, type Types } from "@meshtastic/sdk"; import { useNodeErrors } from "@meshtastic/sdk-react"; -import { numberToHexUnpadded } from "@noble/curves/abstract/utils"; +import { numberToHexUnpadded } from "@noble/curves/utils.js"; import { LockIcon, LockOpenIcon } from "lucide-react"; import { type JSX,