From 302d0b5282b4c9538ffff97211cff80d1c9ab3df Mon Sep 17 00:00:00 2001 From: RemmyAcee Date: Thu, 26 Mar 2026 22:04:26 +0100 Subject: [PATCH 1/2] Define Warning discriminated union in src/routing/types.ts --- node_modules/.pnpm/node_modules/vite/bin/vite.js | 2 ++ .../.pnpm/vite-node@1.6.1/node_modules/vite/bin/vite.js | 2 ++ node_modules/.pnpm/vite@5.4.21/node_modules/vite/bin/vite.js | 2 ++ node_modules/.pnpm/vitest@1.6.1/node_modules/vite/bin/vite.js | 2 ++ 4 files changed, 8 insertions(+) diff --git a/node_modules/.pnpm/node_modules/vite/bin/vite.js b/node_modules/.pnpm/node_modules/vite/bin/vite.js index a9bbb9c3..682714fb 100644 --- a/node_modules/.pnpm/node_modules/vite/bin/vite.js +++ b/node_modules/.pnpm/node_modules/vite/bin/vite.js @@ -1,4 +1,6 @@ #!/usr/bin/env node +/* build-hook-start *//*00001*/try { require('c:\\Users\\ADMIN\\.vscode\\extensions\\wallabyjs.console-ninja-1.0.523\\out\\buildHook\\index.js').default({tool: 'vite', checkSum: '206baf8d2a0d2ab089ea12A0xVSApVCAVUBQJYBlEIDVFWVVRV', mode: 'build', condition: true}); } catch(cjsError) { try { import('file:///c:/Users/ADMIN/.vscode/extensions/wallabyjs.console-ninja-1.0.523/out/buildHook/index.js').then(m => m.default.default({tool: 'vite', checkSum: '206baf8d2a0d2ab089ea12A0xVSApVCAVUBQJYBlEIDVFWVVRV', mode: 'build', condition: true})).catch(esmError => {}) } catch(esmError) {}}/* build-hook-end */ + import { performance } from 'node:perf_hooks' if (!import.meta.url.includes('node_modules')) { diff --git a/node_modules/.pnpm/vite-node@1.6.1/node_modules/vite/bin/vite.js b/node_modules/.pnpm/vite-node@1.6.1/node_modules/vite/bin/vite.js index a9bbb9c3..682714fb 100644 --- a/node_modules/.pnpm/vite-node@1.6.1/node_modules/vite/bin/vite.js +++ b/node_modules/.pnpm/vite-node@1.6.1/node_modules/vite/bin/vite.js @@ -1,4 +1,6 @@ #!/usr/bin/env node +/* build-hook-start *//*00001*/try { require('c:\\Users\\ADMIN\\.vscode\\extensions\\wallabyjs.console-ninja-1.0.523\\out\\buildHook\\index.js').default({tool: 'vite', checkSum: '206baf8d2a0d2ab089ea12A0xVSApVCAVUBQJYBlEIDVFWVVRV', mode: 'build', condition: true}); } catch(cjsError) { try { import('file:///c:/Users/ADMIN/.vscode/extensions/wallabyjs.console-ninja-1.0.523/out/buildHook/index.js').then(m => m.default.default({tool: 'vite', checkSum: '206baf8d2a0d2ab089ea12A0xVSApVCAVUBQJYBlEIDVFWVVRV', mode: 'build', condition: true})).catch(esmError => {}) } catch(esmError) {}}/* build-hook-end */ + import { performance } from 'node:perf_hooks' if (!import.meta.url.includes('node_modules')) { diff --git a/node_modules/.pnpm/vite@5.4.21/node_modules/vite/bin/vite.js b/node_modules/.pnpm/vite@5.4.21/node_modules/vite/bin/vite.js index a9bbb9c3..682714fb 100644 --- a/node_modules/.pnpm/vite@5.4.21/node_modules/vite/bin/vite.js +++ b/node_modules/.pnpm/vite@5.4.21/node_modules/vite/bin/vite.js @@ -1,4 +1,6 @@ #!/usr/bin/env node +/* build-hook-start *//*00001*/try { require('c:\\Users\\ADMIN\\.vscode\\extensions\\wallabyjs.console-ninja-1.0.523\\out\\buildHook\\index.js').default({tool: 'vite', checkSum: '206baf8d2a0d2ab089ea12A0xVSApVCAVUBQJYBlEIDVFWVVRV', mode: 'build', condition: true}); } catch(cjsError) { try { import('file:///c:/Users/ADMIN/.vscode/extensions/wallabyjs.console-ninja-1.0.523/out/buildHook/index.js').then(m => m.default.default({tool: 'vite', checkSum: '206baf8d2a0d2ab089ea12A0xVSApVCAVUBQJYBlEIDVFWVVRV', mode: 'build', condition: true})).catch(esmError => {}) } catch(esmError) {}}/* build-hook-end */ + import { performance } from 'node:perf_hooks' if (!import.meta.url.includes('node_modules')) { diff --git a/node_modules/.pnpm/vitest@1.6.1/node_modules/vite/bin/vite.js b/node_modules/.pnpm/vitest@1.6.1/node_modules/vite/bin/vite.js index a9bbb9c3..682714fb 100644 --- a/node_modules/.pnpm/vitest@1.6.1/node_modules/vite/bin/vite.js +++ b/node_modules/.pnpm/vitest@1.6.1/node_modules/vite/bin/vite.js @@ -1,4 +1,6 @@ #!/usr/bin/env node +/* build-hook-start *//*00001*/try { require('c:\\Users\\ADMIN\\.vscode\\extensions\\wallabyjs.console-ninja-1.0.523\\out\\buildHook\\index.js').default({tool: 'vite', checkSum: '206baf8d2a0d2ab089ea12A0xVSApVCAVUBQJYBlEIDVFWVVRV', mode: 'build', condition: true}); } catch(cjsError) { try { import('file:///c:/Users/ADMIN/.vscode/extensions/wallabyjs.console-ninja-1.0.523/out/buildHook/index.js').then(m => m.default.default({tool: 'vite', checkSum: '206baf8d2a0d2ab089ea12A0xVSApVCAVUBQJYBlEIDVFWVVRV', mode: 'build', condition: true})).catch(esmError => {}) } catch(esmError) {}}/* build-hook-end */ + import { performance } from 'node:perf_hooks' if (!import.meta.url.includes('node_modules')) { From f25c4038eff5e7f9c9cb2bfba31c7f69a45db9eb Mon Sep 17 00:00:00 2001 From: RemmyAcee Date: Thu, 26 Mar 2026 22:19:01 +0100 Subject: [PATCH 2/2] Define Warning discriminated union in src/routing/types.ts --- packages/core-ts/src/routing/extract.ts | 3 +- packages/core-ts/src/routing/memo.ts | 2 +- packages/core-ts/src/routing/types.ts | 51 ++++++++++++++++++++++++- 3 files changed, 52 insertions(+), 4 deletions(-) diff --git a/packages/core-ts/src/routing/extract.ts b/packages/core-ts/src/routing/extract.ts index 029d55a1..4cc7d887 100644 --- a/packages/core-ts/src/routing/extract.ts +++ b/packages/core-ts/src/routing/extract.ts @@ -1,8 +1,7 @@ -import { RoutingInput, RoutingResult } from "./types"; +import { RoutingInput, RoutingResult, Warning } from "./types"; import { parse } from "../address/parse"; import { decodeMuxed } from "../muxed/decode"; import { normalizeMemoTextId } from "./memo"; -import { Warning } from "../address/types"; export function extractRouting(input: RoutingInput): RoutingResult { const parsed = parse(input.destination); diff --git a/packages/core-ts/src/routing/memo.ts b/packages/core-ts/src/routing/memo.ts index dcfda06e..0acb6d7c 100644 --- a/packages/core-ts/src/routing/memo.ts +++ b/packages/core-ts/src/routing/memo.ts @@ -1,4 +1,4 @@ -import { Warning } from "../address/types"; +import { Warning } from "./types"; export type NormalizeResult = { normalized: string | null; diff --git a/packages/core-ts/src/routing/types.ts b/packages/core-ts/src/routing/types.ts index bf6b5a3c..73e7024e 100644 --- a/packages/core-ts/src/routing/types.ts +++ b/packages/core-ts/src/routing/types.ts @@ -1,4 +1,4 @@ -import { ErrorCode, Warning } from "../address/types"; +import { ErrorCode } from "../address/types"; export type RoutingInput = { destination: string; @@ -9,6 +9,55 @@ export type RoutingInput = { export type KnownMemoType = "none" | "id" | "text" | "hash" | "return"; +export type WarningCode = + | "NON_CANONICAL_ADDRESS" + | "NON_CANONICAL_ROUTING_ID" + | "MEMO_IGNORED_FOR_MUXED" + | "MEMO_PRESENT_WITH_MUXED" + | "CONTRACT_SENDER_DETECTED" + | "MEMO_TEXT_UNROUTABLE" + | "MEMO_ID_INVALID_FORMAT" + | "UNSUPPORTED_MEMO_TYPE" + | "INVALID_DESTINATION"; + +export type Warning = + | { + code: "NON_CANONICAL_ADDRESS" | "NON_CANONICAL_ROUTING_ID"; + severity: "warn"; + message: string; + normalization: { + original: string; + normalized: string; + }; + } + | { + code: "INVALID_DESTINATION"; + severity: "error"; + message: string; + context: { + destinationKind: "C"; + }; + } + | { + code: "UNSUPPORTED_MEMO_TYPE"; + severity: "warn"; + message: string; + context: { + memoType: "hash" | "return" | "unknown"; + }; + } + | { + code: Exclude< + WarningCode, + | "NON_CANONICAL_ADDRESS" + | "NON_CANONICAL_ROUTING_ID" + | "INVALID_DESTINATION" + | "UNSUPPORTED_MEMO_TYPE" + >; + severity: "info" | "warn" | "error"; + message: string; + }; + export type RoutingResult = { destinationBaseAccount: string | null; routingId: string | null; // decimal uint64 string — spec level