From 2b0560dbd38066041a0f8a6fb9e12284c65357dc Mon Sep 17 00:00:00 2001 From: Ugasutun Date: Thu, 26 Mar 2026 18:18:21 +0100 Subject: [PATCH] fix(core-ts): ensure IDs are never converted to number in decode --- packages/core-ts/src/address/parse.ts | 2 +- packages/core-ts/src/muxed/decode.ts | 4 ++-- packages/core-ts/src/routing/extract.ts | 2 +- packages/core-ts/src/spec/runner.test.ts | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/core-ts/src/address/parse.ts b/packages/core-ts/src/address/parse.ts index 536d547e..df8c4a5c 100644 --- a/packages/core-ts/src/address/parse.ts +++ b/packages/core-ts/src/address/parse.ts @@ -40,7 +40,7 @@ export function parse(address: string): ParseResult { kind: "M", address: up, baseG: decoded.baseG, - muxedId: BigInt(decoded.id), + muxedId: decoded.id, warnings: [], }; } diff --git a/packages/core-ts/src/muxed/decode.ts b/packages/core-ts/src/muxed/decode.ts index 71a3039d..55ad790a 100644 --- a/packages/core-ts/src/muxed/decode.ts +++ b/packages/core-ts/src/muxed/decode.ts @@ -49,7 +49,7 @@ function decodeStrKey(address: string): Uint8Array { return data; } -export function decodeMuxed(mAddress: string): { baseG: string; id: string } { +export function decodeMuxed(mAddress: string): { baseG: string; id: bigint } { const data = decodeStrKey(mAddress); // Layout: [Version(1)] [Pubkey(32)] [ID(8)] if (data.length !== 41) throw new Error("invalid payload length"); @@ -64,6 +64,6 @@ export function decodeMuxed(mAddress: string): { baseG: string; id: string } { return { baseG: StrKey.encodeEd25519PublicKey(Buffer.from(pubkey)), - id: id.toString(), + id: id, }; } diff --git a/packages/core-ts/src/routing/extract.ts b/packages/core-ts/src/routing/extract.ts index 029d55a1..070afd41 100644 --- a/packages/core-ts/src/routing/extract.ts +++ b/packages/core-ts/src/routing/extract.ts @@ -61,7 +61,7 @@ export function extractRouting(input: RoutingInput): RoutingResult { return { destinationBaseAccount: baseG, - routingId: id, + routingId: id.toString(), routingSource: "muxed", warnings, }; diff --git a/packages/core-ts/src/spec/runner.test.ts b/packages/core-ts/src/spec/runner.test.ts index 421060cb..05a14f46 100644 --- a/packages/core-ts/src/spec/runner.test.ts +++ b/packages/core-ts/src/spec/runner.test.ts @@ -23,7 +23,7 @@ describe("Normative Vector Tests", () => { } else { const result = decodeMuxed(c.input.mAddress); expect(result.baseG).toBe(c.expected.base_g); - expect(result.id).toBe(c.expected.id); + expect(result.id).toBe(BigInt(c.expected.id)); } break; }