@secondlayer/stacks 0.0.4 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/shared/{stacks-vdfs3e5v.js → stacks-1ddg6mbv.js} +2 -2
- package/dist/shared/{stacks-bnvfmt7y.cjs → stacks-2gdt3aqj.cjs} +15 -2
- package/dist/shared/{stacks-8m9byk2j.js.map → stacks-2gdt3aqj.cjs.map} +1 -1
- package/dist/shared/stacks-709tra19.js.map +2 -2
- package/dist/shared/stacks-9g0jhab3.cjs.map +2 -2
- package/dist/shared/stacks-b008c3w8.cjs.map +2 -2
- package/dist/shared/stacks-gck1sq7h.cjs.map +2 -2
- package/dist/shared/stacks-gjvbq6w7.js.map +2 -2
- package/dist/shared/{stacks-74k8cxgb.cjs → stacks-hfem9dck.cjs} +46 -2
- package/dist/shared/stacks-hfem9dck.cjs.map +13 -0
- package/dist/shared/stacks-j2cy7qtt.js.map +2 -2
- package/dist/shared/stacks-k58k970n.js.map +2 -2
- package/dist/shared/{stacks-zm0b3tgy.js → stacks-m2dc5xwg.js} +7 -7
- package/dist/shared/{stacks-zm0b3tgy.js.map → stacks-m2dc5xwg.js.map} +1 -1
- package/dist/shared/{stacks-n2g56wgg.js → stacks-md6e5ta0.js} +13 -13
- package/dist/shared/{stacks-n2g56wgg.js.map → stacks-md6e5ta0.js.map} +1 -1
- package/dist/shared/stacks-njvyj3ab.js +23 -0
- package/dist/shared/{stacks-bnvfmt7y.cjs.map → stacks-njvyj3ab.js.map} +1 -1
- package/dist/shared/{stacks-dxhntr76.js → stacks-ph4a6322.js} +54 -11
- package/dist/shared/stacks-ph4a6322.js.map +10 -0
- package/dist/shared/{stacks-f7wdrzs3.js → stacks-pz73cn97.js} +17 -17
- package/dist/shared/{stacks-f7wdrzs3.js.map → stacks-pz73cn97.js.map} +1 -1
- package/dist/shared/stacks-qvg7c24g.cjs.map +2 -2
- package/dist/shared/{stacks-4py5pm0r.cjs → stacks-v3zy6zds.cjs} +42 -2
- package/dist/shared/stacks-v3zy6zds.cjs.map +10 -0
- package/dist/shared/stacks-v9jqcpd4.js.map +2 -2
- package/dist/shared/{stacks-yfgsm6ap.js → stacks-xtz0n62y.js} +58 -3
- package/dist/shared/stacks-xtz0n62y.js.map +13 -0
- package/dist/shared/stacks-ya3x01yd.cjs.map +2 -2
- package/dist/src/accounts/index.js +1 -1
- package/dist/src/actions/index.d.cts +43 -2
- package/dist/src/actions/index.d.ts +43 -2
- package/dist/src/actions/index.js +7 -7
- package/dist/src/bns/index.js +10 -10
- package/dist/src/bns/index.js.map +1 -1
- package/dist/src/chains/index.js +1 -1
- package/dist/src/clarity/index.cjs +326 -1
- package/dist/src/clarity/index.cjs.map +5 -3
- package/dist/src/clarity/index.d.cts +24 -5
- package/dist/src/clarity/index.d.ts +24 -5
- package/dist/src/clarity/index.js +264 -13
- package/dist/src/clarity/index.js.map +5 -3
- package/dist/src/connect/index.cjs.map +2 -2
- package/dist/src/connect/index.d.cts +7 -1
- package/dist/src/connect/index.d.ts +7 -1
- package/dist/src/connect/index.js.map +2 -2
- package/dist/src/connect/walletconnect/index.cjs +4 -4
- package/dist/src/connect/walletconnect/index.cjs.map +7 -7
- package/dist/src/connect/walletconnect/index.d.cts +5 -5
- package/dist/src/connect/walletconnect/index.d.ts +5 -5
- package/dist/src/connect/walletconnect/index.js +4 -4
- package/dist/src/connect/walletconnect/index.js.map +7 -7
- package/dist/src/index.cjs +1 -1
- package/dist/src/index.cjs.map +2 -2
- package/dist/src/index.d.cts +44 -3
- package/dist/src/index.d.ts +44 -3
- package/dist/src/index.js +12 -11
- package/dist/src/index.js.map +3 -3
- package/dist/src/postconditions/index.cjs +117 -1
- package/dist/src/postconditions/index.cjs.map +4 -3
- package/dist/src/postconditions/index.js +119 -6
- package/dist/src/postconditions/index.js.map +4 -3
- package/dist/src/pox/index.js +9 -9
- package/dist/src/pox/index.js.map +1 -1
- package/dist/src/stackingdao/index.cjs.map +2 -2
- package/dist/src/stackingdao/index.d.cts +18 -7
- package/dist/src/stackingdao/index.d.ts +18 -7
- package/dist/src/stackingdao/index.js +9 -9
- package/dist/src/stackingdao/index.js.map +3 -3
- package/dist/src/subscriptions/index.js +1 -1
- package/dist/src/transactions/index.cjs +5 -1
- package/dist/src/transactions/index.cjs.map +1 -1
- package/dist/src/transactions/index.d.cts +40 -2
- package/dist/src/transactions/index.d.ts +40 -2
- package/dist/src/transactions/index.js +18 -10
- package/dist/src/transactions/index.js.map +1 -1
- package/dist/src/utils/index.d.cts +4 -4
- package/dist/src/utils/index.d.ts +4 -4
- package/dist/src/utils/index.js +1 -1
- package/package.json +1 -1
- package/dist/shared/stacks-2ar4prfz.cjs +0 -328
- package/dist/shared/stacks-2ar4prfz.cjs.map +0 -11
- package/dist/shared/stacks-4py5pm0r.cjs.map +0 -10
- package/dist/shared/stacks-74k8cxgb.cjs.map +0 -13
- package/dist/shared/stacks-8m9byk2j.js +0 -7
- package/dist/shared/stacks-dr5en54r.cjs +0 -119
- package/dist/shared/stacks-dr5en54r.cjs.map +0 -10
- package/dist/shared/stacks-dxhntr76.js.map +0 -10
- package/dist/shared/stacks-f3tk2k5s.js +0 -27
- package/dist/shared/stacks-f3tk2k5s.js.map +0 -9
- package/dist/shared/stacks-g9mcjcqg.cjs +0 -3
- package/dist/shared/stacks-g9mcjcqg.cjs.map +0 -9
- package/dist/shared/stacks-tjxmrssa.js +0 -282
- package/dist/shared/stacks-tjxmrssa.js.map +0 -11
- package/dist/shared/stacks-yfgsm6ap.js.map +0 -13
- package/dist/shared/stacks-yfveb68e.js +0 -121
- package/dist/shared/stacks-yfveb68e.js.map +0 -10
- /package/dist/shared/{stacks-vdfs3e5v.js.map → stacks-1ddg6mbv.js.map} +0 -0
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/connect/walletconnect/crypto.ts", "../../../../../../node_modules/@scure/base/index.js", "../../../../src/utils/encoding.ts", "../../../../src/connect/walletconnect/relay.ts", "../../../../src/connect/walletconnect/session.ts", "../../../../src/connect/walletconnect/provider.ts", "../../../../src/connect/walletconnect/qr.ts", "../../../../src/connect/provider.ts", "../../../../src/connect/walletconnect/modal.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"/** WalletConnect v2 envelope encryption (Type 0 + Type 1) + relay JWT auth */\n\nimport { ed25519, x25519 } from \"@noble/curves/ed25519.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport { hkdf } from \"@noble/hashes/hkdf.js\";\nimport { randomBytes } from \"@noble/hashes/utils.js\";\nimport { gcm } from \"@noble/ciphers/aes.js\";\nimport { base58, base64urlnopad } from \"@scure/base\";\nimport { bytesToHex, hexToBytes } from \"../../utils/encoding.ts\";\n\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\nconst TAG_LENGTH = 16;\nconst TYPE_0 = 0x00;\nconst TYPE_1 = 0x01;\n\n// -- Key generation --\n\nexport function generateKeyPair() {\n const privateKey = randomBytes(KEY_LENGTH);\n const publicKey = x25519.getPublicKey(privateKey);\n return { privateKey, publicKey };\n}\n\nexport function generateSymKey(): Uint8Array {\n return randomBytes(KEY_LENGTH);\n}\n\n/** Derive symmetric key from X25519 shared secret via HKDF */\nexport function deriveSymKey(\n selfPrivate: Uint8Array,\n peerPublic: Uint8Array,\n): Uint8Array {\n const shared = x25519.getSharedSecret(selfPrivate, peerPublic);\n return hkdf(sha256, shared, undefined, undefined, KEY_LENGTH);\n}\n\n/** Topic = first 32 bytes of SHA-256(symKey) as hex */\nexport function symKeyToTopic(symKey: Uint8Array): string {\n return bytesToHex(sha256(symKey));\n}\n\n// -- Base64 helpers (browser-safe) --\n\nexport function encodeBase64(data: Uint8Array): string {\n let binary = \"\";\n for (let i = 0; i < data.length; i++) binary += String.fromCharCode(data[i]);\n return btoa(binary);\n}\n\nexport function decodeBase64(str: string): Uint8Array {\n const binary = atob(str);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n return bytes;\n}\n\n// -- Type 0 envelope (symmetric, pairing) --\n// Layout: [0x00][12-byte IV][ciphertext + 16-byte tag]\n\nexport function encryptType0(\n symKey: Uint8Array,\n plaintext: string,\n): Uint8Array {\n const iv = randomBytes(IV_LENGTH);\n const data = new TextEncoder().encode(plaintext);\n const cipher = gcm(symKey, iv);\n const sealed = cipher.encrypt(data);\n const envelope = new Uint8Array(1 + IV_LENGTH + sealed.length);\n envelope[0] = TYPE_0;\n envelope.set(iv, 1);\n envelope.set(sealed, 1 + IV_LENGTH);\n return envelope;\n}\n\nexport function decryptType0(\n symKey: Uint8Array,\n envelope: Uint8Array,\n): string {\n if (envelope[0] !== TYPE_0) throw new Error(\"Not a type-0 envelope\");\n const iv = envelope.subarray(1, 1 + IV_LENGTH);\n const sealed = envelope.subarray(1 + IV_LENGTH);\n const cipher = gcm(symKey, iv);\n const plain = cipher.decrypt(sealed);\n return new TextDecoder().decode(plain);\n}\n\n// -- Type 1 envelope (asymmetric, session proposal) --\n// Layout: [0x01][32-byte sender pubkey][12-byte IV][ciphertext + 16-byte tag]\n\nexport function encryptType1(\n senderPrivate: Uint8Array,\n receiverPublic: Uint8Array,\n plaintext: string,\n): Uint8Array {\n const senderPublic = x25519.getPublicKey(senderPrivate);\n const symKey = deriveSymKey(senderPrivate, receiverPublic);\n const iv = randomBytes(IV_LENGTH);\n const data = new TextEncoder().encode(plaintext);\n const cipher = gcm(symKey, iv);\n const sealed = cipher.encrypt(data);\n const envelope = new Uint8Array(1 + KEY_LENGTH + IV_LENGTH + sealed.length);\n envelope[0] = TYPE_1;\n envelope.set(senderPublic, 1);\n envelope.set(iv, 1 + KEY_LENGTH);\n envelope.set(sealed, 1 + KEY_LENGTH + IV_LENGTH);\n return envelope;\n}\n\nexport function decryptType1(\n receiverPrivate: Uint8Array,\n envelope: Uint8Array,\n): string {\n if (envelope[0] !== TYPE_1) throw new Error(\"Not a type-1 envelope\");\n const senderPublic = envelope.subarray(1, 1 + KEY_LENGTH);\n const iv = envelope.subarray(1 + KEY_LENGTH, 1 + KEY_LENGTH + IV_LENGTH);\n const sealed = envelope.subarray(1 + KEY_LENGTH + IV_LENGTH);\n const symKey = deriveSymKey(receiverPrivate, senderPublic);\n const cipher = gcm(symKey, iv);\n const plain = cipher.decrypt(sealed);\n return new TextDecoder().decode(plain);\n}\n\n// -- Unified decrypt --\n\nexport function decrypt(\n keyOrPrivate: Uint8Array,\n envelope: Uint8Array,\n): string {\n return envelope[0] === TYPE_1\n ? decryptType1(keyOrPrivate, envelope)\n : decryptType0(keyOrPrivate, envelope);\n}\n\n// -- Relay JWT auth (Ed25519 + did:key) --\n\n/** Ed25519 multicodec varint prefix */\nconst ED25519_MULTICODEC = new Uint8Array([0xed, 0x01]);\n\nfunction encodeDidKey(publicKey: Uint8Array): string {\n const prefixed = new Uint8Array(ED25519_MULTICODEC.length + publicKey.length);\n prefixed.set(ED25519_MULTICODEC);\n prefixed.set(publicKey, ED25519_MULTICODEC.length);\n return `did:key:z${base58.encode(prefixed)}`;\n}\n\nfunction base64urlEncode(data: Uint8Array | string): string {\n const bytes =\n typeof data === \"string\" ? new TextEncoder().encode(data) : data;\n return base64urlnopad.encode(bytes);\n}\n\n/** Generate a signed JWT for WC relay authentication */\nexport function createRelayAuthJwt(\n relayUrl: string,\n): { jwt: string; clientId: string } {\n const privateKey = ed25519.utils.randomSecretKey();\n const publicKey = ed25519.getPublicKey(privateKey);\n const clientId = encodeDidKey(publicKey);\n\n const now = Math.floor(Date.now() / 1000);\n const header = base64urlEncode(JSON.stringify({ alg: \"EdDSA\", typ: \"JWT\" }));\n const payload = base64urlEncode(\n JSON.stringify({\n iss: clientId,\n sub: bytesToHex(randomBytes(32)),\n aud: relayUrl,\n iat: now,\n exp: now + 86400, // 24 hours\n act: \"client_auth\",\n }),\n );\n\n const message = new TextEncoder().encode(`${header}.${payload}`);\n const signature = base64urlEncode(ed25519.sign(message, privateKey));\n\n return { jwt: `${header}.${payload}.${signature}`, clientId };\n}\n\nexport { bytesToHex, hexToBytes };\n",
|
|
5
|
+
"/** WalletConnect v2 envelope encryption (Type 0 + Type 1) + relay JWT auth */\n\nimport { ed25519, x25519 } from \"@noble/curves/ed25519.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport { hkdf } from \"@noble/hashes/hkdf.js\";\nimport { randomBytes } from \"@noble/hashes/utils.js\";\nimport { gcm } from \"@noble/ciphers/aes.js\";\nimport { base58, base64urlnopad } from \"@scure/base\";\nimport { bytesToHex, hexToBytes } from \"../../utils/encoding.ts\";\n\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\nconst TAG_LENGTH = 16;\nconst TYPE_0 = 0x00;\nconst TYPE_1 = 0x01;\n\n// -- Key generation --\n\nexport function generateKeyPair() {\n const privateKey = randomBytes(KEY_LENGTH);\n const publicKey = x25519.getPublicKey(privateKey);\n return { privateKey, publicKey };\n}\n\nexport function generateSymKey(): Uint8Array {\n return randomBytes(KEY_LENGTH);\n}\n\n/** Derive symmetric key from X25519 shared secret via HKDF */\nexport function deriveSymKey(\n selfPrivate: Uint8Array,\n peerPublic: Uint8Array,\n): Uint8Array {\n const shared = x25519.getSharedSecret(selfPrivate, peerPublic);\n return hkdf(sha256, shared, undefined, undefined, KEY_LENGTH);\n}\n\n/** Topic = first 32 bytes of SHA-256(symKey) as hex */\nexport function symKeyToTopic(symKey: Uint8Array): string {\n return bytesToHex(sha256(symKey));\n}\n\n// -- Base64 helpers (browser-safe) --\n\nexport function encodeBase64(data: Uint8Array): string {\n let binary = \"\";\n for (let i = 0; i < data.length; i++) binary += String.fromCharCode(data[i]!);\n return btoa(binary);\n}\n\nexport function decodeBase64(str: string): Uint8Array {\n const binary = atob(str);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n return bytes;\n}\n\n// -- Type 0 envelope (symmetric, pairing) --\n// Layout: [0x00][12-byte IV][ciphertext + 16-byte tag]\n\nexport function encryptType0(\n symKey: Uint8Array,\n plaintext: string,\n): Uint8Array {\n const iv = randomBytes(IV_LENGTH);\n const data = new TextEncoder().encode(plaintext);\n const cipher = gcm(symKey, iv);\n const sealed = cipher.encrypt(data);\n const envelope = new Uint8Array(1 + IV_LENGTH + sealed.length);\n envelope[0] = TYPE_0;\n envelope.set(iv, 1);\n envelope.set(sealed, 1 + IV_LENGTH);\n return envelope;\n}\n\nexport function decryptType0(\n symKey: Uint8Array,\n envelope: Uint8Array,\n): string {\n if (envelope[0] !== TYPE_0) throw new Error(\"Not a type-0 envelope\");\n const iv = envelope.subarray(1, 1 + IV_LENGTH);\n const sealed = envelope.subarray(1 + IV_LENGTH);\n const cipher = gcm(symKey, iv);\n const plain = cipher.decrypt(sealed);\n return new TextDecoder().decode(plain);\n}\n\n// -- Type 1 envelope (asymmetric, session proposal) --\n// Layout: [0x01][32-byte sender pubkey][12-byte IV][ciphertext + 16-byte tag]\n\nexport function encryptType1(\n senderPrivate: Uint8Array,\n receiverPublic: Uint8Array,\n plaintext: string,\n): Uint8Array {\n const senderPublic = x25519.getPublicKey(senderPrivate);\n const symKey = deriveSymKey(senderPrivate, receiverPublic);\n const iv = randomBytes(IV_LENGTH);\n const data = new TextEncoder().encode(plaintext);\n const cipher = gcm(symKey, iv);\n const sealed = cipher.encrypt(data);\n const envelope = new Uint8Array(1 + KEY_LENGTH + IV_LENGTH + sealed.length);\n envelope[0] = TYPE_1;\n envelope.set(senderPublic, 1);\n envelope.set(iv, 1 + KEY_LENGTH);\n envelope.set(sealed, 1 + KEY_LENGTH + IV_LENGTH);\n return envelope;\n}\n\nexport function decryptType1(\n receiverPrivate: Uint8Array,\n envelope: Uint8Array,\n): string {\n if (envelope[0] !== TYPE_1) throw new Error(\"Not a type-1 envelope\");\n const senderPublic = envelope.subarray(1, 1 + KEY_LENGTH);\n const iv = envelope.subarray(1 + KEY_LENGTH, 1 + KEY_LENGTH + IV_LENGTH);\n const sealed = envelope.subarray(1 + KEY_LENGTH + IV_LENGTH);\n const symKey = deriveSymKey(receiverPrivate, senderPublic);\n const cipher = gcm(symKey, iv);\n const plain = cipher.decrypt(sealed);\n return new TextDecoder().decode(plain);\n}\n\n// -- Unified decrypt --\n\nexport function decrypt(\n keyOrPrivate: Uint8Array,\n envelope: Uint8Array,\n): string {\n return envelope[0] === TYPE_1\n ? decryptType1(keyOrPrivate, envelope)\n : decryptType0(keyOrPrivate, envelope);\n}\n\n// -- Relay JWT auth (Ed25519 + did:key) --\n\n/** Ed25519 multicodec varint prefix */\nconst ED25519_MULTICODEC = new Uint8Array([0xed, 0x01]);\n\nfunction encodeDidKey(publicKey: Uint8Array): string {\n const prefixed = new Uint8Array(ED25519_MULTICODEC.length + publicKey.length);\n prefixed.set(ED25519_MULTICODEC);\n prefixed.set(publicKey, ED25519_MULTICODEC.length);\n return `did:key:z${base58.encode(prefixed)}`;\n}\n\nfunction base64urlEncode(data: Uint8Array | string): string {\n const bytes =\n typeof data === \"string\" ? new TextEncoder().encode(data) : data;\n return base64urlnopad.encode(bytes);\n}\n\n/** Generate a signed JWT for WC relay authentication */\nexport function createRelayAuthJwt(\n relayUrl: string,\n): { jwt: string; clientId: string } {\n const privateKey = ed25519.utils.randomSecretKey();\n const publicKey = ed25519.getPublicKey(privateKey);\n const clientId = encodeDidKey(publicKey);\n\n const now = Math.floor(Date.now() / 1000);\n const header = base64urlEncode(JSON.stringify({ alg: \"EdDSA\", typ: \"JWT\" }));\n const payload = base64urlEncode(\n JSON.stringify({\n iss: clientId,\n sub: bytesToHex(randomBytes(32)),\n aud: relayUrl,\n iat: now,\n exp: now + 86400, // 24 hours\n act: \"client_auth\",\n }),\n );\n\n const message = new TextEncoder().encode(`${header}.${payload}`);\n const signature = base64urlEncode(ed25519.sign(message, privateKey));\n\n return { jwt: `${header}.${payload}.${signature}`, clientId };\n}\n\nexport { bytesToHex, hexToBytes };\n",
|
|
6
6
|
"/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nfunction isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is Uint8Array. */\nfunction abytes(b) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n}\nfunction isArrayOf(isString, arr) {\n if (!Array.isArray(arr))\n return false;\n if (arr.length === 0)\n return true;\n if (isString) {\n return arr.every((item) => typeof item === 'string');\n }\n else {\n return arr.every((item) => Number.isSafeInteger(item));\n }\n}\nfunction afn(input) {\n if (typeof input !== 'function')\n throw new Error('function expected');\n return true;\n}\nfunction astr(label, input) {\n if (typeof input !== 'string')\n throw new Error(`${label}: string expected`);\n return true;\n}\nfunction anumber(n) {\n if (!Number.isSafeInteger(n))\n throw new Error(`invalid integer: ${n}`);\n}\nfunction aArr(input) {\n if (!Array.isArray(input))\n throw new Error('array expected');\n}\nfunction astrArr(label, input) {\n if (!isArrayOf(true, input))\n throw new Error(`${label}: array of strings expected`);\n}\nfunction anumArr(label, input) {\n if (!isArrayOf(false, input))\n throw new Error(`${label}: array of numbers expected`);\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction chain(...args) {\n const id = (a) => a;\n // Wrap call in closure so JIT can inline calls\n const wrap = (a, b) => (c) => a(b(c));\n // Construct chain of args[-1].encode(args[-2].encode([...]))\n const encode = args.map((x) => x.encode).reduceRight(wrap, id);\n // Construct chain of args[0].decode(args[1].decode(...))\n const decode = args.map((x) => x.decode).reduce(wrap, id);\n return { encode, decode };\n}\n/**\n * Encodes integer radix representation to array of strings using alphabet and back.\n * Could also be array of strings.\n * @__NO_SIDE_EFFECTS__\n */\nfunction alphabet(letters) {\n // mapping 1 to \"b\"\n const lettersA = typeof letters === 'string' ? letters.split('') : letters;\n const len = lettersA.length;\n astrArr('alphabet', lettersA);\n // mapping \"b\" to 1\n const indexes = new Map(lettersA.map((l, i) => [l, i]));\n return {\n encode: (digits) => {\n aArr(digits);\n return digits.map((i) => {\n if (!Number.isSafeInteger(i) || i < 0 || i >= len)\n throw new Error(`alphabet.encode: digit index outside alphabet \"${i}\". Allowed: ${letters}`);\n return lettersA[i];\n });\n },\n decode: (input) => {\n aArr(input);\n return input.map((letter) => {\n astr('alphabet.decode', letter);\n const i = indexes.get(letter);\n if (i === undefined)\n throw new Error(`Unknown letter: \"${letter}\". Allowed: ${letters}`);\n return i;\n });\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction join(separator = '') {\n astr('join', separator);\n return {\n encode: (from) => {\n astrArr('join.decode', from);\n return from.join(separator);\n },\n decode: (to) => {\n astr('join.decode', to);\n return to.split(separator);\n },\n };\n}\n/**\n * Pad strings array so it has integer number of bits\n * @__NO_SIDE_EFFECTS__\n */\nfunction padding(bits, chr = '=') {\n anumber(bits);\n astr('padding', chr);\n return {\n encode(data) {\n astrArr('padding.encode', data);\n while ((data.length * bits) % 8)\n data.push(chr);\n return data;\n },\n decode(input) {\n astrArr('padding.decode', input);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('padding: invalid, string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n const last = end - 1;\n const byte = last * bits;\n if (byte % 8 === 0)\n throw new Error('padding: invalid, string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction normalize(fn) {\n afn(fn);\n return { encode: (from) => from, decode: (to) => fn(to) };\n}\n/**\n * Slow: O(n^2) time complexity\n */\nfunction convertRadix(data, from, to) {\n // base 1 is impossible\n if (from < 2)\n throw new Error(`convertRadix: invalid from=${from}, base cannot be less than 2`);\n if (to < 2)\n throw new Error(`convertRadix: invalid to=${to}, base cannot be less than 2`);\n aArr(data);\n if (!data.length)\n return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data, (d) => {\n anumber(d);\n if (d < 0 || d >= from)\n throw new Error(`invalid integer: ${d}`);\n return d;\n });\n const dlen = digits.length;\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < dlen; i++) {\n const digit = digits[i];\n const fromCarry = from * carry;\n const digitBase = fromCarry + digit;\n if (!Number.isSafeInteger(digitBase) ||\n fromCarry / from !== carry ||\n digitBase - digit !== fromCarry) {\n throw new Error('convertRadix: carry overflow');\n }\n const div = digitBase / to;\n carry = digitBase % to;\n const rounded = Math.floor(div);\n digits[i] = rounded;\n if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done)\n continue;\n else if (!rounded)\n pos = i;\n else\n done = false;\n }\n res.push(carry);\n if (done)\n break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++)\n res.push(0);\n return res.reverse();\n}\nconst gcd = (a, b) => (b === 0 ? a : gcd(b, a % b));\nconst radix2carry = /* @__NO_SIDE_EFFECTS__ */ (from, to) => from + (to - gcd(from, to));\nconst powers = /* @__PURE__ */ (() => {\n let res = [];\n for (let i = 0; i < 40; i++)\n res.push(2 ** i);\n return res;\n})();\n/**\n * Implemented with numbers, because BigInt is 5x slower\n */\nfunction convertRadix2(data, from, to, padding) {\n aArr(data);\n if (from <= 0 || from > 32)\n throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32)\n throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);\n }\n let carry = 0;\n let pos = 0; // bitwise position in current element\n const max = powers[from];\n const mask = powers[to] - 1;\n const res = [];\n for (const n of data) {\n anumber(n);\n if (n >= max)\n throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32)\n throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to)\n res.push(((carry >> (pos - to)) & mask) >>> 0);\n const pow = powers[pos];\n if (pow === undefined)\n throw new Error('invalid carry');\n carry &= pow - 1; // clean carry, otherwise it will cause overflow\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from)\n throw new Error('Excess padding');\n if (!padding && carry > 0)\n throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0)\n res.push(carry >>> 0);\n return res;\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix(num) {\n anumber(num);\n const _256 = 2 ** 8;\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), _256, num);\n },\n decode: (digits) => {\n anumArr('radix.decode', digits);\n return Uint8Array.from(convertRadix(digits, num, _256));\n },\n };\n}\n/**\n * If both bases are power of same number (like `2**8 <-> 2**64`),\n * there is a linear algorithm. For now we have implementation for power-of-two bases only.\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix2(bits, revPadding = false) {\n anumber(bits);\n if (bits <= 0 || bits > 32)\n throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits) => {\n anumArr('radix2.decode', digits);\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\nfunction unsafeWrapper(fn) {\n afn(fn);\n return function (...args) {\n try {\n return fn.apply(null, args);\n }\n catch (e) { }\n };\n}\nfunction checksum(len, fn) {\n anumber(len);\n afn(fn);\n return {\n encode(data) {\n if (!isBytes(data))\n throw new Error('checksum.encode: input should be Uint8Array');\n const sum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(sum, data.length);\n return res;\n },\n decode(data) {\n if (!isBytes(data))\n throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const oldChecksum = data.slice(-len);\n const newChecksum = fn(payload).slice(0, len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i])\n throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\n// prettier-ignore\nexport const utils = {\n alphabet, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,\n};\n// RFC 4648 aka RFC 3548\n// ---------------------\n/**\n * base16 encoding from RFC 4648.\n * @example\n * ```js\n * base16.encode(Uint8Array.from([0x12, 0xab]));\n * // => '12AB'\n * ```\n */\nexport const base16 = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\n/**\n * base32 encoding from RFC 4648. Has padding.\n * Use `base32nopad` for unpadded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ===='\n * base32.decode('CKVQ====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32 = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding.\n * Use `base32` for padded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ'\n * base32nopad.decode('CKVQ');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32nopad = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), join(''));\n/**\n * base32 encoding from RFC 4648. Padded. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hexnopad` for unpadded version.\n * @example\n * ```js\n * base32hex.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG===='\n * base32hex.decode('2ALG====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hex = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hex` for padded version.\n * @example\n * ```js\n * base32hexnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG'\n * base32hexnopad.decode('2ALG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hexnopad = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), join(''));\n/**\n * base32 encoding from RFC 4648. Doug Crockford's version.\n * https://www.crockford.com/base32.html\n * @example\n * ```js\n * base32crockford.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ANG'\n * base32crockford.decode('2ANG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32crockford = chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));\n// Built-in base64 conversion https://caniuse.com/mdn-javascript_builtins_uint8array_frombase64\n// prettier-ignore\nconst hasBase64Builtin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toBase64 === 'function' &&\n typeof Uint8Array.fromBase64 === 'function')();\nconst decodeBase64Builtin = (s, isUrl) => {\n astr('base64', s);\n const re = isUrl ? /^[A-Za-z0-9=_-]+$/ : /^[A-Za-z0-9=+/]+$/;\n const alphabet = isUrl ? 'base64url' : 'base64';\n if (s.length > 0 && !re.test(s))\n throw new Error('invalid base64');\n return Uint8Array.fromBase64(s, { alphabet, lastChunkHandling: 'strict' });\n};\n/**\n * base64 from RFC 4648. Padded.\n * Use `base64nopad` for unpadded version.\n * Also check out `base64url`, `base64urlnopad`.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64 = hasBase64Builtin ? {\n encode(b) { abytes(b); return b.toBase64(); },\n decode(s) { return decodeBase64Builtin(s, false); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));\n/**\n * base64 from RFC 4648. No padding.\n * Use `base64` for padded version.\n * @example\n * ```js\n * base64nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64nopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64nopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. Padded.\n * Use `base64urlnopad` for unpadded version.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64url.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64url.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64url = hasBase64Builtin ? {\n encode(b) { abytes(b); return b.toBase64({ alphabet: 'base64url' }); },\n decode(s) { return decodeBase64Builtin(s, true); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. No padding.\n * Use `base64url` for padded version.\n * @example\n * ```js\n * base64urlnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64urlnopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64urlnopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), join(''));\n// base58 code\n// -----------\nconst genBase58 = /* @__NO_SIDE_EFFECTS__ */ (abc) => chain(radix(58), alphabet(abc), join(''));\n/**\n * base58: base64 without ambigous characters +, /, 0, O, I, l.\n * Quadratic (O(n^2)) - so, can't be used on large inputs.\n * @example\n * ```js\n * base58.decode('01abcdef');\n * // => '3UhJW'\n * ```\n */\nexport const base58 = genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\n/**\n * base58: flickr version. Check out `base58`.\n */\nexport const base58flickr = genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');\n/**\n * base58: XRP version. Check out `base58`.\n */\nexport const base58xrp = genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');\n// Data len (index) -> encoded block len\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\n/**\n * base58: XMR version. Check out `base58`.\n * Done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.\n * Block encoding significantly reduces quadratic complexity of base58.\n */\nexport const base58xmr = {\n encode(data) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');\n }\n return res;\n },\n decode(str) {\n let res = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0)\n throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\n/**\n * Method, which creates base58check encoder.\n * Requires function, calculating sha256.\n */\nexport const createBase58check = (sha256) => chain(checksum(4, (data) => sha256(sha256(data))), base58);\n/**\n * Use `createBase58check` instead.\n * @deprecated\n */\nexport const base58check = createBase58check;\nconst BECH_ALPHABET = chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre) {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1)\n chk ^= POLYMOD_GENERATORS[i];\n }\n return chk;\n}\nfunction bechChecksum(prefix, words, encodingConst = 1) {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126)\n throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++)\n chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words)\n chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++)\n chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % powers[30]], 30, 5, false));\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction genBech32(encoding) {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n function encode(prefix, words, limit = 90) {\n astr('bech32.encode prefix', prefix);\n if (isBytes(words))\n words = Array.from(words);\n anumArr('bech32.encode', words);\n const plen = prefix.length;\n if (plen === 0)\n throw new TypeError(`Invalid prefix length ${plen}`);\n const actualLength = plen + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n const lowered = prefix.toLowerCase();\n const sum = bechChecksum(lowered, words, ENCODING_CONST);\n return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}`;\n }\n function decode(str, limit = 90) {\n astr('bech32.decode input', str);\n const slen = str.length;\n if (slen < 8 || (limit !== false && slen > limit))\n throw new TypeError(`invalid string length: ${slen} (${str}). Expected (8..${limit})`);\n // don't allow mixed case\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n const sepIndex = lowered.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = lowered.slice(0, sepIndex);\n const data = lowered.slice(sepIndex + 1);\n if (data.length < 6)\n throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(data).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!data.endsWith(sum))\n throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n const decodeUnsafe = unsafeWrapper(decode);\n function decodeToBytes(str) {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n function encodeFromBytes(prefix, bytes) {\n return encode(prefix, toWords(bytes));\n }\n return {\n encode,\n decode,\n encodeFromBytes,\n decodeToBytes,\n decodeUnsafe,\n fromWords,\n fromWordsUnsafe,\n toWords,\n };\n}\n/**\n * bech32 from BIP 173. Operates on words.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32 = genBech32('bech32');\n/**\n * bech32m from BIP 350. Operates on words.\n * It was to mitigate `bech32` weaknesses.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32m = genBech32('bech32m');\n/**\n * UTF-8-to-byte decoder. Uses built-in TextDecoder / TextEncoder.\n * @example\n * ```js\n * const b = utf8.decode(\"hey\"); // => new Uint8Array([ 104, 101, 121 ])\n * const str = utf8.encode(b); // \"hey\"\n * ```\n */\nexport const utf8 = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\n// prettier-ignore\nconst hasHexBuiltin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toHex === 'function' &&\n typeof Uint8Array.fromHex === 'function')();\n// prettier-ignore\nconst hexBuiltin = {\n encode(data) { abytes(data); return data.toHex(); },\n decode(s) { astr('hex', s); return Uint8Array.fromHex(s); },\n};\n/**\n * hex string decoder. Uses built-in function, when available.\n * @example\n * ```js\n * const b = hex.decode(\"0102ff\"); // => new Uint8Array([ 1, 2, 255 ])\n * const str = hex.encode(b); // \"0102ff\"\n * ```\n */\nexport const hex = hasHexBuiltin\n ? hexBuiltin\n : chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {\n if (typeof s !== 'string' || s.length % 2 !== 0)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n return s.toLowerCase();\n }));\n// prettier-ignore\nconst CODERS = {\n utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\nconst coderTypeError = 'Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr';\n/** @deprecated */\nexport const bytesToString = (type, bytes) => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (!isBytes(bytes))\n throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\n/** @deprecated */\nexport const str = bytesToString; // as in python, but for bytes only\n/** @deprecated */\nexport const stringToBytes = (type, str) => {\n if (!CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (typeof str !== 'string')\n throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\n/** @deprecated */\nexport const bytes = stringToBytes;\n//# sourceMappingURL=index.js.map",
|
|
7
7
|
"const hexes = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, \"0\"));\n\nexport function bytesToHex(bytes: Uint8Array): string {\n let hex = \"\";\n for (const b of bytes) {\n hex += hexes[b];\n }\n return hex;\n}\n\nexport function hexToBytes(hex: string): Uint8Array {\n hex = without0x(hex);\n if (hex.length % 2) hex = `0${hex}`;\n\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const byte = Number.parseInt(hex.slice(j, j + 2), 16);\n if (Number.isNaN(byte) || byte < 0) throw new Error(\"Invalid byte sequence\");\n array[i] = byte;\n }\n return array;\n}\n\nexport function with0x(value: string): string {\n return /^0x/i.test(value) ? value : `0x${value}`;\n}\n\nexport function without0x(value: string): string {\n return /^0x/i.test(value) ? value.slice(2) : value;\n}\n\nexport function utf8ToBytes(str: string): Uint8Array {\n return new TextEncoder().encode(str);\n}\n\nexport function bytesToUtf8(bytes: Uint8Array): string {\n return new TextDecoder().decode(bytes);\n}\n\nexport function asciiToBytes(str: string): Uint8Array {\n const bytes = new Uint8Array(str.length);\n for (let i = 0; i < str.length; i++) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\nexport function bytesToAscii(bytes: Uint8Array): string {\n return String.fromCharCode(...bytes);\n}\n\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n if (arrays.length === 1) return arrays[0]!;\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n let pad = 0;\n for (const arr of arrays) {\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\n\nexport type IntegerType = number | string | bigint | Uint8Array;\n\nexport function intToBigInt(value: IntegerType): bigint {\n if (typeof value === \"bigint\") return value;\n if (typeof value === \"string\") return BigInt(value);\n if (typeof value === \"number\") {\n if (!Number.isInteger(value))\n throw new RangeError(\"Values of type 'number' must be an integer.\");\n if (value > Number.MAX_SAFE_INTEGER)\n throw new RangeError(\n `Values of type 'number' must be <= ${Number.MAX_SAFE_INTEGER}. Use BigInt instead.`\n );\n return BigInt(value);\n }\n if (value instanceof Uint8Array) return BigInt(`0x${bytesToHex(value)}`);\n throw new TypeError(\"Must be a number, bigint, string, or Uint8Array.\");\n}\n\nexport function intToBytes(value: IntegerType, byteLength: number): Uint8Array {\n return bigIntToBytes(intToBigInt(value), byteLength);\n}\n\nexport function bigIntToBytes(value: bigint, length: number = 16): Uint8Array {\n const hex = value.toString(16).padStart(length * 2, \"0\");\n return hexToBytes(hex);\n}\n\nexport function intToHex(integer: IntegerType, byteLength = 8): string {\n const value = typeof integer === \"bigint\" ? integer : intToBigInt(integer);\n return value.toString(16).padStart(byteLength * 2, \"0\");\n}\n\nexport function toTwos(value: bigint, width: bigint): bigint {\n const limit = BigInt(1) << (width - BigInt(1));\n if (value < -limit || value > limit - BigInt(1)) {\n throw new Error(`Unable to represent integer in width: ${width}`);\n }\n if (value >= BigInt(0)) return value;\n return value + (BigInt(1) << width);\n}\n\nexport function fromTwos(value: bigint, width: bigint): bigint {\n if (value & (BigInt(1) << (width - BigInt(1)))) {\n return value - (BigInt(1) << width);\n }\n return value;\n}\n\nexport function bytesToTwosBigInt(bytes: Uint8Array): bigint {\n return fromTwos(BigInt(`0x${bytesToHex(bytes)}`), BigInt(bytes.byteLength * 8));\n}\n\nexport function writeUInt32BE(value: number): Uint8Array {\n const buf = new Uint8Array(4);\n buf[0] = (value >>> 24) & 0xff;\n buf[1] = (value >>> 16) & 0xff;\n buf[2] = (value >>> 8) & 0xff;\n buf[3] = value & 0xff;\n return buf;\n}\n\nexport function readUInt32BE(bytes: Uint8Array, offset = 0): number {\n return (\n ((bytes[offset]! << 24) |\n (bytes[offset + 1]! << 16) |\n (bytes[offset + 2]! << 8) |\n bytes[offset + 3]!) >>>\n 0\n );\n}\n\nexport function writeUInt16BE(value: number): Uint8Array {\n const buf = new Uint8Array(2);\n buf[0] = (value >>> 8) & 0xff;\n buf[1] = value & 0xff;\n return buf;\n}\n\nexport function readUInt16BE(bytes: Uint8Array, offset = 0): number {\n return ((bytes[offset]! << 8) | bytes[offset + 1]!) >>> 0;\n}\n\nexport function writeUInt8(value: number): Uint8Array {\n return new Uint8Array([value & 0xff]);\n}\n",
|
|
8
|
-
"/** WalletConnect v2 relay client (wss://relay.walletconnect.com) */\n\nimport type { WcRelayMessage } from \"./types.ts\";\nimport {\n encryptType0,\n decryptType0,\n encodeBase64,\n decodeBase64,\n createRelayAuthJwt,\n} from \"./crypto.ts\";\n\nconst DEFAULT_RELAY = \"wss://relay.walletconnect.com\";\nconst DEFAULT_TTL = 300; // 5 minutes\n\ntype PendingRpc = {\n resolve: (v: unknown) => void;\n reject: (e: Error) => void;\n};\n\ntype SubscriptionHandler = (message: WcRelayMessage) => void;\n\nexport class WcRelay {\n private ws: WebSocket | null = null;\n private url: string;\n private projectId: string;\n private nextId = Date.now() * 1000 + Math.floor(Math.random() * 1000);\n private pending = new Map<number, PendingRpc>();\n private subscriptions = new Map<string, SubscriptionHandler>();\n /** Map subscription ID (from server) → topic */\n private subIdToTopic = new Map<string, string>();\n private destroyed = false;\n private reconnecting = false;\n private reconnectAttempt = 0;\n private reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n private connectPromise: Promise<void> | null = null;\n private connectReject: ((e: Error) => void) | null = null;\n\n constructor(projectId: string, relayUrl?: string) {\n this.projectId = projectId;\n this.url = relayUrl ?? DEFAULT_RELAY;\n }\n\n // -- Connection --\n\n async connect(): Promise<void> {\n if (this.ws?.readyState === WebSocket.OPEN) return;\n if (this.connectPromise) return this.connectPromise;\n\n this.connectPromise = new Promise<void>((resolve, reject) => {\n this.connectReject = reject;\n const { jwt } = createRelayAuthJwt(this.url);\n const wsUrl = `${this.url}/?auth=${jwt}&projectId=${this.projectId}`;\n this.ws = new WebSocket(wsUrl);\n\n this.ws.addEventListener(\n \"open\",\n () => {\n this.reconnectAttempt = 0;\n this.reconnecting = false;\n this.connectPromise = null;\n this.connectReject = null;\n resolve();\n },\n { once: true },\n );\n\n this.ws.addEventListener(\n \"error\",\n (e) => {\n this.connectPromise = null;\n this.connectReject = null;\n reject(new Error(`WC relay connection failed: ${e}`));\n },\n { once: true },\n );\n\n this.ws.addEventListener(\"message\", (event) => {\n this.handleMessage(\n typeof event.data === \"string\"\n ? event.data\n : new TextDecoder().decode(event.data as ArrayBuffer),\n );\n });\n\n this.ws.addEventListener(\"close\", () => {\n this.connectPromise = null;\n if (!this.destroyed) this.handleDisconnect();\n });\n });\n\n return this.connectPromise;\n }\n\n // -- Publish/Subscribe --\n\n async subscribe(\n topic: string,\n handler: SubscriptionHandler,\n ): Promise<string> {\n await this.connect();\n this.subscriptions.set(topic, handler);\n const subId = (await this.rpc(\"irn_subscribe\", { topic })) as string;\n this.subIdToTopic.set(subId, topic);\n return subId;\n }\n\n async publish(\n topic: string,\n message: string,\n tag: number,\n ttl = DEFAULT_TTL,\n ): Promise<void> {\n await this.connect();\n await this.rpc(\"irn_publish\", {\n topic,\n message,\n ttl,\n tag,\n prompt: false,\n });\n }\n\n /** Encrypt + publish a type-0 envelope */\n async publishEncrypted(\n topic: string,\n symKey: Uint8Array,\n payload: unknown,\n tag: number,\n ttl = DEFAULT_TTL,\n ): Promise<void> {\n const plaintext = JSON.stringify(payload);\n const envelope = encryptType0(symKey, plaintext);\n await this.publish(topic, encodeBase64(envelope), tag, ttl);\n }\n\n // -- Internal --\n\n private rpc(method: string, params: Record<string, unknown>): Promise<unknown> {\n return new Promise((resolve, reject) => {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n return reject(new Error(\"WC relay not connected\"));\n }\n const id = this.nextId++;\n this.pending.set(id, { resolve, reject });\n this.ws.send(JSON.stringify({ id, jsonrpc: \"2.0\", method, params }));\n });\n }\n\n private handleMessage(raw: string) {\n let msg: any;\n try {\n msg = JSON.parse(raw);\n } catch {\n return;\n }\n\n // RPC response\n if (\"id\" in msg && msg.id != null && this.pending.has(msg.id)) {\n const p = this.pending.get(msg.id)!;\n this.pending.delete(msg.id);\n if (msg.error) {\n p.reject(new Error(`WC relay error: ${msg.error.message}`));\n } else {\n p.resolve(msg.result);\n }\n return;\n }\n\n // Server push (irn_subscription)\n if (msg.method === \"irn_subscription\" && msg.params) {\n const { id: subId, data } = msg.params;\n const topic = data?.topic ?? this.subIdToTopic.get(subId);\n const handler = topic ? this.subscriptions.get(topic) : undefined;\n if (handler && data) {\n handler({\n topic: data.topic,\n message: data.message,\n publishedAt: data.publishedAt ?? Date.now(),\n tag: data.tag ?? 0,\n });\n }\n // Acknowledge\n if (msg.id != null) {\n this.ws?.send(\n JSON.stringify({ id: msg.id, jsonrpc: \"2.0\", result: true }),\n );\n }\n }\n }\n\n private handleDisconnect() {\n this.ws = null;\n for (const [, p] of this.pending) {\n p.reject(new Error(\"WC relay disconnected\"));\n }\n this.pending.clear();\n\n if (this.subscriptions.size > 0 && this.reconnectAttempt < 5) {\n this.scheduleReconnect();\n }\n }\n\n private scheduleReconnect() {\n if (this.destroyed || this.reconnecting) return;\n this.reconnecting = true;\n const delay = 1000 * 2 ** this.reconnectAttempt;\n this.reconnectAttempt++;\n\n this.reconnectTimer = setTimeout(async () => {\n this.reconnecting = false;\n try {\n await this.connect();\n // Re-subscribe all topics\n for (const [topic] of this.subscriptions) {\n const subId = (await this.rpc(\"irn_subscribe\", { topic })) as string;\n this.subIdToTopic.set(subId, topic);\n }\n } catch {\n if (!this.destroyed && this.subscriptions.size > 0) {\n this.handleDisconnect();\n }\n }\n }, delay);\n }\n\n destroy() {\n this.destroyed = true;\n if (this.reconnectTimer) clearTimeout(this.reconnectTimer);\n if (this.connectReject) {\n this.connectReject(new Error(\"WC relay destroyed\"));\n this.connectReject = null;\n this.connectPromise = null;\n }\n for (const [, p] of this.pending) {\n p.reject(new Error(\"WC relay destroyed\"));\n }\n this.pending.clear();\n this.subscriptions.clear();\n this.subIdToTopic.clear();\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n}\n",
|
|
9
|
-
"/** WalletConnect v2 session state machine (pairing → proposal → settlement) */\n\nimport type {\n WcProviderConfig,\n WcPairResult,\n WcSessionSettled,\n WcSessionData,\n WcJsonRpc,\n WcProposal,\n} from \"./types.ts\";\nimport {\n generateKeyPair,\n generateSymKey,\n deriveSymKey,\n symKeyToTopic,\n decryptType0,\n decryptType1,\n decodeBase64,\n bytesToHex,\n hexToBytes,\n} from \"./crypto.ts\";\nimport { WcRelay } from \"./relay.ts\";\n\nconst STORAGE_KEY = \"@secondlayer/wc:session\";\nconst SESSION_EXPIRY = 7 * 24 * 60 * 60; // 7 days in seconds\n\nconst STACKS_METHODS = [\n \"stx_getAddresses\",\n \"stx_transferStx\",\n \"stx_callContract\",\n \"stx_deployContract\",\n \"stx_signMessage\",\n \"stx_signTransaction\",\n];\n\nconst STACKS_EVENTS = [\"chainChanged\", \"accountsChanged\"];\n\ndeclare const localStorage:\n | {\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n removeItem(key: string): void;\n }\n | undefined;\n\nfunction getStorage() {\n return typeof localStorage !== \"undefined\" ? localStorage : undefined;\n}\n\nexport class WcSession {\n private relay: WcRelay;\n private config: WcProviderConfig;\n private chains: string[];\n\n // Pairing state\n private pairingSymKey: Uint8Array | null = null;\n private pairingTopic: string | null = null;\n private selfKeyPair: { privateKey: Uint8Array; publicKey: Uint8Array } | null = null;\n\n // Session state\n private sessionData: WcSessionData | null = null;\n private sessionSymKey: Uint8Array | null = null;\n private pending = new Map<\n number,\n { resolve: (v: unknown) => void; reject: (e: Error) => void }\n >();\n private nextId = Date.now();\n\n constructor(config: WcProviderConfig) {\n this.config = config;\n this.chains = config.chains ?? [\"stacks:1\"];\n this.relay = new WcRelay(config.projectId, config.relayUrl);\n }\n\n /** Try restoring a persisted session. Returns true if valid session found. */\n restore(): boolean {\n try {\n const raw = getStorage()?.getItem(STORAGE_KEY);\n if (!raw) return false;\n const data = JSON.parse(raw) as WcSessionData;\n if (data.expiry < Date.now() / 1000) {\n getStorage()?.removeItem(STORAGE_KEY);\n return false;\n }\n this.sessionData = data;\n this.sessionSymKey = hexToBytes(data.symKey);\n // Subscribe to session topic for incoming requests (fire-and-forget)\n this.subscribeSession().catch(() => {});\n return true;\n } catch {\n return false;\n }\n }\n\n /** Initiate pairing. Returns URI for QR code + approval promise. */\n async pair(): Promise<WcPairResult> {\n this.pairingSymKey = generateSymKey();\n this.pairingTopic = symKeyToTopic(this.pairingSymKey);\n this.selfKeyPair = generateKeyPair();\n\n const symKeyHex = bytesToHex(this.pairingSymKey);\n const uri = `wc:${this.pairingTopic}@2?relay-protocol=irn&symKey=${symKeyHex}`;\n\n const approval = new Promise<WcSessionSettled>((resolve, reject) => {\n this.relay\n .subscribe(this.pairingTopic!, (msg) => {\n try {\n this.handlePairingMessage(msg.message, resolve, reject);\n } catch (err) {\n reject(err instanceof Error ? err : new Error(String(err)));\n }\n })\n .catch(reject);\n });\n\n return { uri, approval };\n }\n\n /** Send a JSON-RPC request over the session. */\n async request(method: string, params?: unknown): Promise<unknown> {\n if (!this.sessionData || !this.sessionSymKey) {\n throw new Error(\"No active WC session\");\n }\n\n const id = this.nextId++;\n const payload = {\n id,\n jsonrpc: \"2.0\" as const,\n method: \"wc_sessionRequest\",\n params: {\n request: { method, params },\n chainId: this.chains[0],\n },\n };\n\n return new Promise((resolve, reject) => {\n this.pending.set(id, { resolve, reject });\n this.relay\n .publishEncrypted(\n this.sessionData!.topic,\n this.sessionSymKey!,\n payload,\n 1108, // tag for session request\n SESSION_EXPIRY,\n )\n .catch((err) => {\n this.pending.delete(id);\n reject(err);\n });\n });\n }\n\n disconnect() {\n if (this.sessionData && this.sessionSymKey) {\n const id = this.nextId++;\n const payload = {\n id,\n jsonrpc: \"2.0\",\n method: \"wc_sessionDelete\",\n params: { code: 6000, message: \"User disconnected\" },\n };\n // Best-effort notify peer\n this.relay\n .publishEncrypted(\n this.sessionData.topic,\n this.sessionSymKey,\n payload,\n 1112,\n )\n .catch(() => {});\n }\n this.sessionData = null;\n this.sessionSymKey = null;\n this.pending.clear();\n getStorage()?.removeItem(STORAGE_KEY);\n this.relay.destroy();\n }\n\n get session(): WcSessionData | null {\n return this.sessionData;\n }\n\n // -- Internal --\n\n private handlePairingMessage(\n message: string,\n resolve: (v: WcSessionSettled) => void,\n reject: (e: Error) => void,\n ) {\n const envelope = decodeBase64(message);\n let plaintext: string;\n\n // Could be type 0 (symmetric) or type 1 (asymmetric)\n if (envelope[0] === 0x01 && this.selfKeyPair) {\n plaintext = decryptType1(this.selfKeyPair.privateKey, envelope);\n } else if (this.pairingSymKey) {\n plaintext = decryptType0(this.pairingSymKey, envelope);\n } else {\n return;\n }\n\n let rpc: WcJsonRpc;\n try {\n rpc = JSON.parse(plaintext) as WcJsonRpc;\n } catch {\n return;\n }\n\n if (rpc.method === \"wc_sessionPropose\") {\n this.handleProposal(rpc as WcJsonRpc<WcProposal>, resolve, reject).catch(reject);\n }\n }\n\n private async handleProposal(\n rpc: WcJsonRpc<WcProposal>,\n resolve: (v: WcSessionSettled) => void,\n reject: (e: Error) => void,\n ) {\n try {\n const proposal = rpc.params;\n const peerPublicKey = hexToBytes(proposal.proposer.publicKey);\n\n // Generate session key pair + derive session symmetric key\n const sessionKp = generateKeyPair();\n const sessionSymKey = deriveSymKey(sessionKp.privateKey, peerPublicKey);\n const sessionTopic = symKeyToTopic(sessionSymKey);\n\n const expiry = Math.floor(Date.now() / 1000) + SESSION_EXPIRY;\n\n const settled: WcSessionSettled = {\n relay: { protocol: \"irn\" },\n namespaces: {\n stacks: {\n chains: this.chains,\n methods: STACKS_METHODS,\n events: STACKS_EVENTS,\n accounts: this.chains.map((c) => `${c}:placeholder`),\n },\n },\n controller: {\n publicKey: bytesToHex(sessionKp.publicKey),\n metadata: this.config.metadata,\n },\n expiry,\n };\n\n // Approve the proposal on the pairing topic\n const approvePayload = {\n id: rpc.id,\n jsonrpc: \"2.0\",\n result: {\n relay: { protocol: \"irn\" },\n responderPublicKey: bytesToHex(sessionKp.publicKey),\n },\n };\n\n await this.relay.publishEncrypted(\n this.pairingTopic!,\n this.pairingSymKey!,\n approvePayload,\n 1101, // tag for session propose response\n );\n\n // Subscribe to session topic\n this.sessionSymKey = sessionSymKey;\n this.sessionData = {\n topic: sessionTopic,\n symKey: bytesToHex(sessionSymKey),\n peerMeta: proposal.proposer.metadata,\n expiry,\n accounts: [],\n controllerPublicKey: proposal.proposer.publicKey,\n };\n\n await this.subscribeSession();\n\n // Send session settle on the new session topic\n const settlePayload = {\n id: this.nextId++,\n jsonrpc: \"2.0\",\n method: \"wc_sessionSettle\",\n params: settled,\n };\n\n await this.relay.publishEncrypted(\n sessionTopic,\n sessionSymKey,\n settlePayload,\n 1104, // tag for session settle\n );\n\n // Persist\n getStorage()?.setItem(STORAGE_KEY, JSON.stringify(this.sessionData));\n\n resolve(settled);\n } catch (err) {\n reject(err instanceof Error ? err : new Error(String(err)));\n }\n }\n\n private async subscribeSession() {\n if (!this.sessionData || !this.sessionSymKey) return;\n\n const symKey = this.sessionSymKey;\n await this.relay.subscribe(this.sessionData.topic, (msg) => {\n try {\n const envelope = decodeBase64(msg.message);\n const plaintext = decryptType0(symKey, envelope);\n const rpc = JSON.parse(plaintext);\n\n // Response to our request\n if (\"id\" in rpc && this.pending.has(rpc.id)) {\n const p = this.pending.get(rpc.id)!;\n this.pending.delete(rpc.id);\n if (rpc.error) {\n p.reject(new Error(rpc.error.message ?? \"WC request failed\"));\n } else {\n p.resolve(rpc.result);\n }\n }\n\n // Session delete from peer\n if (rpc.method === \"wc_sessionDelete\") {\n this.sessionData = null;\n this.sessionSymKey = null;\n this.pending.clear();\n getStorage()?.removeItem(STORAGE_KEY);\n }\n } catch {\n // ignore malformed messages\n }\n });\n }\n}\n",
|
|
8
|
+
"/** WalletConnect v2 relay client (wss://relay.walletconnect.com) */\n\nimport type { WcRelayMessage } from \"./types.ts\";\nimport {\n encryptType0,\n decryptType0,\n encodeBase64,\n decodeBase64,\n createRelayAuthJwt,\n} from \"./crypto.ts\";\n\nconst DEFAULT_RELAY = \"wss://relay.walletconnect.com\";\nconst DEFAULT_TTL = 300; // 5 minutes\n\ntype PendingRpc = {\n resolve: (v: unknown) => void;\n reject: (e: Error) => void;\n};\n\ntype SubscriptionHandler = (message: WcRelayMessage) => void;\n\nexport class WcRelay {\n private ws: WebSocket | null = null;\n private url: string;\n private projectId: string;\n private nextId = Date.now() * 1000 + Math.floor(Math.random() * 1000);\n private pending = new Map<number, PendingRpc>();\n private subscriptions = new Map<string, SubscriptionHandler>();\n /** Map subscription ID (from server) → topic */\n private subIdToTopic = new Map<string, string>();\n private destroyed = false;\n private reconnecting = false;\n private reconnectAttempt = 0;\n private reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n private connectPromise: Promise<void> | null = null;\n private connectReject: ((e: Error) => void) | null = null;\n\n constructor(projectId: string, relayUrl?: string) {\n this.projectId = projectId;\n this.url = relayUrl ?? DEFAULT_RELAY;\n }\n\n // -- Connection --\n\n async connect(): Promise<void> {\n if (this.ws?.readyState === WebSocket.OPEN) return;\n if (this.connectPromise) return this.connectPromise;\n\n this.connectPromise = new Promise<void>((resolve, reject) => {\n this.connectReject = reject;\n const { jwt } = createRelayAuthJwt(this.url);\n const wsUrl = `${this.url}/?auth=${jwt}&projectId=${this.projectId}`;\n this.ws = new WebSocket(wsUrl);\n\n this.ws.addEventListener(\n \"open\",\n () => {\n this.reconnectAttempt = 0;\n this.reconnecting = false;\n this.connectPromise = null;\n this.connectReject = null;\n resolve();\n },\n { once: true },\n );\n\n this.ws.addEventListener(\n \"error\",\n (e) => {\n this.connectPromise = null;\n this.connectReject = null;\n reject(new Error(`WC relay connection failed: ${e}`));\n },\n { once: true },\n );\n\n this.ws.addEventListener(\"message\", (event) => {\n this.handleMessage(\n typeof event.data === \"string\"\n ? event.data\n : new TextDecoder().decode(event.data as ArrayBuffer),\n );\n });\n\n this.ws.addEventListener(\"close\", () => {\n this.connectPromise = null;\n if (!this.destroyed) this.handleDisconnect();\n });\n });\n\n return this.connectPromise;\n }\n\n // -- Publish/Subscribe --\n\n async subscribe(\n topic: string,\n handler: SubscriptionHandler,\n ): Promise<string> {\n await this.connect();\n this.subscriptions.set(topic, handler);\n const subId = (await this.rpc(\"irn_subscribe\", { topic })) as string;\n this.subIdToTopic.set(subId, topic);\n return subId;\n }\n\n async publish(\n topic: string,\n message: string,\n tag: number,\n ttl: number = DEFAULT_TTL,\n ): Promise<void> {\n await this.connect();\n await this.rpc(\"irn_publish\", {\n topic,\n message,\n ttl,\n tag,\n prompt: false,\n });\n }\n\n /** Encrypt + publish a type-0 envelope */\n async publishEncrypted(\n topic: string,\n symKey: Uint8Array,\n payload: unknown,\n tag: number,\n ttl: number = DEFAULT_TTL,\n ): Promise<void> {\n const plaintext = JSON.stringify(payload);\n const envelope = encryptType0(symKey, plaintext);\n await this.publish(topic, encodeBase64(envelope), tag, ttl);\n }\n\n // -- Internal --\n\n private rpc(method: string, params: Record<string, unknown>): Promise<unknown> {\n return new Promise((resolve, reject) => {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n return reject(new Error(\"WC relay not connected\"));\n }\n const id = this.nextId++;\n this.pending.set(id, { resolve, reject });\n this.ws.send(JSON.stringify({ id, jsonrpc: \"2.0\", method, params }));\n });\n }\n\n private handleMessage(raw: string) {\n let msg: any;\n try {\n msg = JSON.parse(raw);\n } catch {\n return;\n }\n\n // RPC response\n if (\"id\" in msg && msg.id != null && this.pending.has(msg.id)) {\n const p = this.pending.get(msg.id)!;\n this.pending.delete(msg.id);\n if (msg.error) {\n p.reject(new Error(`WC relay error: ${msg.error.message}`));\n } else {\n p.resolve(msg.result);\n }\n return;\n }\n\n // Server push (irn_subscription)\n if (msg.method === \"irn_subscription\" && msg.params) {\n const { id: subId, data } = msg.params;\n const topic = data?.topic ?? this.subIdToTopic.get(subId);\n const handler = topic ? this.subscriptions.get(topic) : undefined;\n if (handler && data) {\n handler({\n topic: data.topic,\n message: data.message,\n publishedAt: data.publishedAt ?? Date.now(),\n tag: data.tag ?? 0,\n });\n }\n // Acknowledge\n if (msg.id != null) {\n this.ws?.send(\n JSON.stringify({ id: msg.id, jsonrpc: \"2.0\", result: true }),\n );\n }\n }\n }\n\n private handleDisconnect() {\n this.ws = null;\n for (const [, p] of this.pending) {\n p.reject(new Error(\"WC relay disconnected\"));\n }\n this.pending.clear();\n\n if (this.subscriptions.size > 0 && this.reconnectAttempt < 5) {\n this.scheduleReconnect();\n }\n }\n\n private scheduleReconnect() {\n if (this.destroyed || this.reconnecting) return;\n this.reconnecting = true;\n const delay = 1000 * 2 ** this.reconnectAttempt;\n this.reconnectAttempt++;\n\n this.reconnectTimer = setTimeout(async () => {\n this.reconnecting = false;\n try {\n await this.connect();\n // Re-subscribe all topics\n for (const [topic] of this.subscriptions) {\n const subId = (await this.rpc(\"irn_subscribe\", { topic })) as string;\n this.subIdToTopic.set(subId, topic);\n }\n } catch {\n if (!this.destroyed && this.subscriptions.size > 0) {\n this.handleDisconnect();\n }\n }\n }, delay);\n }\n\n destroy(): void {\n this.destroyed = true;\n if (this.reconnectTimer) clearTimeout(this.reconnectTimer);\n if (this.connectReject) {\n this.connectReject(new Error(\"WC relay destroyed\"));\n this.connectReject = null;\n this.connectPromise = null;\n }\n for (const [, p] of this.pending) {\n p.reject(new Error(\"WC relay destroyed\"));\n }\n this.pending.clear();\n this.subscriptions.clear();\n this.subIdToTopic.clear();\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n}\n",
|
|
9
|
+
"/** WalletConnect v2 session state machine (pairing → proposal → settlement) */\n\nimport type {\n WcProviderConfig,\n WcPairResult,\n WcSessionSettled,\n WcSessionData,\n WcJsonRpc,\n WcProposal,\n} from \"./types.ts\";\nimport {\n generateKeyPair,\n generateSymKey,\n deriveSymKey,\n symKeyToTopic,\n decryptType0,\n decryptType1,\n decodeBase64,\n bytesToHex,\n hexToBytes,\n} from \"./crypto.ts\";\nimport { WcRelay } from \"./relay.ts\";\n\nconst STORAGE_KEY = \"@secondlayer/wc:session\";\nconst SESSION_EXPIRY = 7 * 24 * 60 * 60; // 7 days in seconds\n\nconst STACKS_METHODS = [\n \"stx_getAddresses\",\n \"stx_transferStx\",\n \"stx_callContract\",\n \"stx_deployContract\",\n \"stx_signMessage\",\n \"stx_signTransaction\",\n];\n\nconst STACKS_EVENTS = [\"chainChanged\", \"accountsChanged\"];\n\ndeclare const localStorage:\n | {\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n removeItem(key: string): void;\n }\n | undefined;\n\nfunction getStorage() {\n return typeof localStorage !== \"undefined\" ? localStorage : undefined;\n}\n\nexport class WcSession {\n private relay: WcRelay;\n private config: WcProviderConfig;\n private chains: string[];\n\n // Pairing state\n private pairingSymKey: Uint8Array | null = null;\n private pairingTopic: string | null = null;\n private selfKeyPair: { privateKey: Uint8Array; publicKey: Uint8Array } | null = null;\n\n // Session state\n private sessionData: WcSessionData | null = null;\n private sessionSymKey: Uint8Array | null = null;\n private pending = new Map<\n number,\n { resolve: (v: unknown) => void; reject: (e: Error) => void }\n >();\n private nextId = Date.now();\n\n constructor(config: WcProviderConfig) {\n this.config = config;\n this.chains = config.chains ?? [\"stacks:1\"];\n this.relay = new WcRelay(config.projectId, config.relayUrl);\n }\n\n /** Try restoring a persisted session. Returns true if valid session found. */\n restore(): boolean {\n try {\n const raw = getStorage()?.getItem(STORAGE_KEY);\n if (!raw) return false;\n const data = JSON.parse(raw) as WcSessionData;\n if (data.expiry < Date.now() / 1000) {\n getStorage()?.removeItem(STORAGE_KEY);\n return false;\n }\n this.sessionData = data;\n this.sessionSymKey = hexToBytes(data.symKey);\n // Subscribe to session topic for incoming requests (fire-and-forget)\n this.subscribeSession().catch(() => {});\n return true;\n } catch {\n return false;\n }\n }\n\n /** Initiate pairing. Returns URI for QR code + approval promise. */\n async pair(): Promise<WcPairResult> {\n this.pairingSymKey = generateSymKey();\n this.pairingTopic = symKeyToTopic(this.pairingSymKey);\n this.selfKeyPair = generateKeyPair();\n\n const symKeyHex = bytesToHex(this.pairingSymKey);\n const uri = `wc:${this.pairingTopic}@2?relay-protocol=irn&symKey=${symKeyHex}`;\n\n const approval = new Promise<WcSessionSettled>((resolve, reject) => {\n this.relay\n .subscribe(this.pairingTopic!, (msg) => {\n try {\n this.handlePairingMessage(msg.message, resolve, reject);\n } catch (err) {\n reject(err instanceof Error ? err : new Error(String(err)));\n }\n })\n .catch(reject);\n });\n\n return { uri, approval };\n }\n\n /** Send a JSON-RPC request over the session. */\n async request(method: string, params?: unknown): Promise<unknown> {\n if (!this.sessionData || !this.sessionSymKey) {\n throw new Error(\"No active WC session\");\n }\n\n const id = this.nextId++;\n const payload = {\n id,\n jsonrpc: \"2.0\" as const,\n method: \"wc_sessionRequest\",\n params: {\n request: { method, params },\n chainId: this.chains[0],\n },\n };\n\n return new Promise((resolve, reject) => {\n this.pending.set(id, { resolve, reject });\n this.relay\n .publishEncrypted(\n this.sessionData!.topic,\n this.sessionSymKey!,\n payload,\n 1108, // tag for session request\n SESSION_EXPIRY,\n )\n .catch((err) => {\n this.pending.delete(id);\n reject(err);\n });\n });\n }\n\n disconnect(): void {\n if (this.sessionData && this.sessionSymKey) {\n const id = this.nextId++;\n const payload = {\n id,\n jsonrpc: \"2.0\",\n method: \"wc_sessionDelete\",\n params: { code: 6000, message: \"User disconnected\" },\n };\n // Best-effort notify peer\n this.relay\n .publishEncrypted(\n this.sessionData.topic,\n this.sessionSymKey,\n payload,\n 1112,\n )\n .catch(() => {});\n }\n this.sessionData = null;\n this.sessionSymKey = null;\n this.pending.clear();\n getStorage()?.removeItem(STORAGE_KEY);\n this.relay.destroy();\n }\n\n get session(): WcSessionData | null {\n return this.sessionData;\n }\n\n // -- Internal --\n\n private handlePairingMessage(\n message: string,\n resolve: (v: WcSessionSettled) => void,\n reject: (e: Error) => void,\n ) {\n const envelope = decodeBase64(message);\n let plaintext: string;\n\n // Could be type 0 (symmetric) or type 1 (asymmetric)\n if (envelope[0] === 0x01 && this.selfKeyPair) {\n plaintext = decryptType1(this.selfKeyPair.privateKey, envelope);\n } else if (this.pairingSymKey) {\n plaintext = decryptType0(this.pairingSymKey, envelope);\n } else {\n return;\n }\n\n let rpc: WcJsonRpc;\n try {\n rpc = JSON.parse(plaintext) as WcJsonRpc;\n } catch {\n return;\n }\n\n if (rpc.method === \"wc_sessionPropose\") {\n this.handleProposal(rpc as WcJsonRpc<WcProposal>, resolve, reject).catch(reject);\n }\n }\n\n private async handleProposal(\n rpc: WcJsonRpc<WcProposal>,\n resolve: (v: WcSessionSettled) => void,\n reject: (e: Error) => void,\n ) {\n try {\n const proposal = rpc.params;\n const peerPublicKey = hexToBytes(proposal.proposer.publicKey);\n\n // Generate session key pair + derive session symmetric key\n const sessionKp = generateKeyPair();\n const sessionSymKey = deriveSymKey(sessionKp.privateKey, peerPublicKey);\n const sessionTopic = symKeyToTopic(sessionSymKey);\n\n const expiry = Math.floor(Date.now() / 1000) + SESSION_EXPIRY;\n\n const settled: WcSessionSettled = {\n relay: { protocol: \"irn\" },\n namespaces: {\n stacks: {\n chains: this.chains,\n methods: STACKS_METHODS,\n events: STACKS_EVENTS,\n accounts: this.chains.map((c) => `${c}:placeholder`),\n },\n },\n controller: {\n publicKey: bytesToHex(sessionKp.publicKey),\n metadata: this.config.metadata,\n },\n expiry,\n };\n\n // Approve the proposal on the pairing topic\n const approvePayload = {\n id: rpc.id,\n jsonrpc: \"2.0\",\n result: {\n relay: { protocol: \"irn\" },\n responderPublicKey: bytesToHex(sessionKp.publicKey),\n },\n };\n\n await this.relay.publishEncrypted(\n this.pairingTopic!,\n this.pairingSymKey!,\n approvePayload,\n 1101, // tag for session propose response\n );\n\n // Subscribe to session topic\n this.sessionSymKey = sessionSymKey;\n this.sessionData = {\n topic: sessionTopic,\n symKey: bytesToHex(sessionSymKey),\n peerMeta: proposal.proposer.metadata,\n expiry,\n accounts: [],\n controllerPublicKey: proposal.proposer.publicKey,\n };\n\n await this.subscribeSession();\n\n // Send session settle on the new session topic\n const settlePayload = {\n id: this.nextId++,\n jsonrpc: \"2.0\",\n method: \"wc_sessionSettle\",\n params: settled,\n };\n\n await this.relay.publishEncrypted(\n sessionTopic,\n sessionSymKey,\n settlePayload,\n 1104, // tag for session settle\n );\n\n // Persist\n getStorage()?.setItem(STORAGE_KEY, JSON.stringify(this.sessionData));\n\n resolve(settled);\n } catch (err) {\n reject(err instanceof Error ? err : new Error(String(err)));\n }\n }\n\n private async subscribeSession() {\n if (!this.sessionData || !this.sessionSymKey) return;\n\n const symKey = this.sessionSymKey;\n await this.relay.subscribe(this.sessionData.topic, (msg) => {\n try {\n const envelope = decodeBase64(msg.message);\n const plaintext = decryptType0(symKey, envelope);\n const rpc = JSON.parse(plaintext);\n\n // Response to our request\n if (\"id\" in rpc && this.pending.has(rpc.id)) {\n const p = this.pending.get(rpc.id)!;\n this.pending.delete(rpc.id);\n if (rpc.error) {\n p.reject(new Error(rpc.error.message ?? \"WC request failed\"));\n } else {\n p.resolve(rpc.result);\n }\n }\n\n // Session delete from peer\n if (rpc.method === \"wc_sessionDelete\") {\n this.sessionData = null;\n this.sessionSymKey = null;\n this.pending.clear();\n getStorage()?.removeItem(STORAGE_KEY);\n }\n } catch {\n // ignore malformed messages\n }\n });\n }\n}\n",
|
|
10
10
|
"/** WalletProvider adapter for WalletConnect v2 */\n\nimport type { WalletProvider } from \"../types.ts\";\nimport type { WcProviderConfig, WcPairResult, WcSessionData } from \"./types.ts\";\nimport { WcSession } from \"./session.ts\";\n\nexport class WalletConnectProvider implements WalletProvider {\n private session: WcSession;\n\n constructor(config: WcProviderConfig) {\n this.session = new WcSession(config);\n }\n\n /** Try restoring a persisted session. Returns true if valid. */\n restore(): boolean {\n return this.session.restore();\n }\n\n /** Initiate pairing. Returns URI for QR + approval promise. */\n async pair(): Promise<WcPairResult> {\n return this.session.pair();\n }\n\n async request(method: string, params?: any): Promise<any> {\n return this.session.request(method, params);\n }\n\n disconnect(): void {\n this.session.disconnect();\n }\n\n get sessionData(): WcSessionData | null {\n return this.session.session;\n }\n}\n",
|
|
11
|
-
"/**\n * Minimal QR code generator for WalletConnect URIs.\n * Produces SVG string. Byte-mode encoding, error correction level L.\n * Supports versions 1-10 (up to 271 bytes — plenty for WC URIs).\n */\n\n// Version capacity table (byte mode, EC level L)\nconst CAPACITIES = [0, 17, 32, 53, 78, 106, 134, 154, 192, 230, 271];\n\n// Generator polynomials for EC codewords per version (L level)\n// [totalCodewords, ecCodewordsPerBlock, numBlocks]\nconst EC_PARAMS: [number, number, number][] = [\n [0, 0, 0], // v0 placeholder\n [26, 7, 1],\n [44, 10, 1],\n [70, 15, 1],\n [100, 20, 1],\n [134, 26, 1],\n [172, 18, 2],\n [196, 20, 2],\n [242, 24, 2],\n [292, 30, 2],\n [346, 18, 4],\n];\n\nfunction selectVersion(len: number): number {\n for (let v = 1; v <= 10; v++) {\n if (len <= CAPACITIES[v]) return v;\n }\n throw new Error(\"QR data too long\");\n}\n\n// GF(256) arithmetic for Reed-Solomon\nconst GF_EXP = new Uint8Array(512);\nconst GF_LOG = new Uint8Array(256);\n{\n let x = 1;\n for (let i = 0; i < 255; i++) {\n GF_EXP[i] = x;\n GF_LOG[x] = i;\n x = (x << 1) ^ (x >= 128 ? 0x11d : 0);\n }\n for (let i = 255; i < 512; i++) GF_EXP[i] = GF_EXP[i - 255]
|
|
11
|
+
"/**\n * Minimal QR code generator for WalletConnect URIs.\n * Produces SVG string. Byte-mode encoding, error correction level L.\n * Supports versions 1-10 (up to 271 bytes — plenty for WC URIs).\n */\n\n// Version capacity table (byte mode, EC level L)\nconst CAPACITIES = [0, 17, 32, 53, 78, 106, 134, 154, 192, 230, 271];\n\n// Generator polynomials for EC codewords per version (L level)\n// [totalCodewords, ecCodewordsPerBlock, numBlocks]\nconst EC_PARAMS: [number, number, number][] = [\n [0, 0, 0], // v0 placeholder\n [26, 7, 1],\n [44, 10, 1],\n [70, 15, 1],\n [100, 20, 1],\n [134, 26, 1],\n [172, 18, 2],\n [196, 20, 2],\n [242, 24, 2],\n [292, 30, 2],\n [346, 18, 4],\n];\n\nfunction selectVersion(len: number): number {\n for (let v = 1; v <= 10; v++) {\n if (len <= CAPACITIES[v]!) return v;\n }\n throw new Error(\"QR data too long\");\n}\n\n// GF(256) arithmetic for Reed-Solomon\nconst GF_EXP = new Uint8Array(512);\nconst GF_LOG = new Uint8Array(256);\n{\n let x = 1;\n for (let i = 0; i < 255; i++) {\n GF_EXP[i] = x;\n GF_LOG[x] = i;\n x = (x << 1) ^ (x >= 128 ? 0x11d : 0);\n }\n for (let i = 255; i < 512; i++) GF_EXP[i] = GF_EXP[i - 255]!;\n}\n\nfunction gfMul(a: number, b: number): number {\n if (a === 0 || b === 0) return 0;\n return GF_EXP[GF_LOG[a]! + GF_LOG[b]!]!;\n}\n\nfunction rsGenPoly(n: number): Uint8Array {\n let poly = new Uint8Array([1]);\n for (let i = 0; i < n; i++) {\n const next = new Uint8Array(poly.length + 1);\n for (let j = 0; j < poly.length; j++) {\n next[j] = next[j]! ^ poly[j]!;\n next[j + 1] = next[j + 1]! ^ gfMul(poly[j]!, GF_EXP[i]!);\n }\n poly = next;\n }\n return poly;\n}\n\nfunction rsEncode(data: Uint8Array, ecLen: number): Uint8Array {\n const gen = rsGenPoly(ecLen);\n const result = new Uint8Array(data.length + ecLen);\n result.set(data);\n for (let i = 0; i < data.length; i++) {\n const coef = result[i]!;\n if (coef === 0) continue;\n for (let j = 0; j < gen.length; j++) {\n result[i + j] = result[i + j]! ^ gfMul(gen[j]!, coef);\n }\n }\n return result.subarray(data.length);\n}\n\nfunction encodeData(bytes: Uint8Array, version: number): Uint8Array {\n const [totalCw, ecPerBlock, numBlocks] = EC_PARAMS[version]!;\n const dataCw = totalCw - ecPerBlock * numBlocks;\n\n // Build byte-mode bitstream\n const bits: number[] = [];\n const push = (val: number, len: number) => {\n for (let i = len - 1; i >= 0; i--) bits.push((val >> i) & 1);\n };\n\n push(0b0100, 4); // byte mode indicator\n push(bytes.length, version <= 9 ? 8 : 16); // character count\n for (const b of bytes) push(b, 8);\n push(0, 4); // terminator (up to 4 bits)\n\n // Pad to byte boundary\n while (bits.length % 8 !== 0) bits.push(0);\n\n // Build codeword array\n const codewords = new Uint8Array(dataCw);\n for (let i = 0; i < dataCw; i++) {\n let byte = 0;\n for (let j = 0; j < 8; j++) {\n const idx = i * 8 + j;\n byte = (byte << 1) | (idx < bits.length ? bits[idx]! : 0);\n }\n codewords[i] = byte;\n }\n\n // Pad codewords\n let padByte = 0xec;\n for (let i = Math.ceil(bits.length / 8); i < dataCw; i++) {\n codewords[i] = padByte;\n padByte = padByte === 0xec ? 0x11 : 0xec;\n }\n\n // Reed-Solomon EC\n const cwPerBlock = Math.floor(dataCw / numBlocks);\n const dataBlocks: Uint8Array[] = [];\n const ecBlocks: Uint8Array[] = [];\n let offset = 0;\n for (let b = 0; b < numBlocks; b++) {\n const blockLen = cwPerBlock + (b < dataCw % numBlocks ? 1 : 0);\n const block = codewords.subarray(offset, offset + blockLen);\n dataBlocks.push(block);\n ecBlocks.push(rsEncode(block, ecPerBlock));\n offset += blockLen;\n }\n\n // Interleave\n const result: number[] = [];\n const maxDataLen = Math.max(...dataBlocks.map((b) => b.length));\n for (let i = 0; i < maxDataLen; i++) {\n for (const block of dataBlocks) {\n if (i < block.length) result.push(block[i]!);\n }\n }\n for (let i = 0; i < ecPerBlock; i++) {\n for (const block of ecBlocks) {\n if (i < block.length) result.push(block[i]!);\n }\n }\n\n return new Uint8Array(result);\n}\n\n// QR matrix operations\n\ntype Matrix = Uint8Array[];\n\nfunction createMatrix(size: number): Matrix {\n return Array.from({ length: size }, () => new Uint8Array(size));\n}\n\nfunction setModule(m: Matrix, r: number, c: number, val: number, reserved: Matrix) {\n if (r >= 0 && r < m.length && c >= 0 && c < m.length) {\n m[r]![c] = val;\n reserved[r]![c] = 1;\n }\n}\n\nfunction addFinderPattern(m: Matrix, r: number, c: number, res: Matrix) {\n for (let dr = -1; dr <= 7; dr++) {\n for (let dc = -1; dc <= 7; dc++) {\n const rr = r + dr, cc = c + dc;\n if (rr < 0 || rr >= m.length || cc < 0 || cc >= m.length) continue;\n const inOuter = dr >= 0 && dr <= 6 && dc >= 0 && dc <= 6;\n const inInner = dr >= 2 && dr <= 4 && dc >= 2 && dc <= 4;\n const onBorder = dr === 0 || dr === 6 || dc === 0 || dc === 6;\n const val = inInner || (inOuter && onBorder) ? 1 : 0;\n setModule(m, rr, cc, val, res);\n }\n }\n}\n\nfunction addTimingPatterns(m: Matrix, res: Matrix) {\n for (let i = 8; i < m.length - 8; i++) {\n const val = i % 2 === 0 ? 1 : 0;\n if (!res[6]![i]) setModule(m, 6, i, val, res);\n if (!res[i]![6]) setModule(m, i, 6, val, res);\n }\n}\n\nfunction addFormatInfo(m: Matrix, res: Matrix) {\n // EC level L (01), mask 0 (000) → format bits 01000 → with BCH: 0x77C0 ... simplified\n // Use pre-computed format info for L/mask0: 111011111000100\n const fmt = 0b111011111000100;\n const n = m.length;\n for (let i = 0; i < 15; i++) {\n const bit = (fmt >> (14 - i)) & 1;\n // Around top-left finder\n if (i < 6) setModule(m, 8, i, bit, res);\n else if (i === 6) setModule(m, 8, 7, bit, res);\n else if (i === 7) setModule(m, 8, 8, bit, res);\n else if (i === 8) setModule(m, 7, 8, bit, res);\n else setModule(m, 14 - i, 8, bit, res);\n\n // Around other finders\n if (i < 8) setModule(m, n - 1 - i, 8, bit, res);\n else setModule(m, 8, n - 15 + i, bit, res);\n }\n // Dark module\n setModule(m, n - 8, 8, 1, res);\n}\n\nfunction placeData(m: Matrix, res: Matrix, data: Uint8Array) {\n const n = m.length;\n let bitIdx = 0;\n const totalBits = data.length * 8;\n\n let col = n - 1;\n let upward = true;\n\n while (col >= 0) {\n if (col === 6) col--; // skip timing column\n const rows = upward\n ? Array.from({ length: n }, (_, i) => n - 1 - i)\n : Array.from({ length: n }, (_, i) => i);\n\n for (const row of rows) {\n for (const dc of [0, -1]) {\n const c = col + dc;\n if (c < 0 || res[row]![c]) continue;\n if (bitIdx < totalBits) {\n const byteIdx = bitIdx >> 3;\n const bitPos = 7 - (bitIdx & 7);\n const bit = (data[byteIdx]! >> bitPos) & 1;\n // Apply mask 0: (row + col) % 2 === 0\n m[row]![c] = bit ^ ((row + c) % 2 === 0 ? 1 : 0);\n bitIdx++;\n }\n }\n }\n\n col -= 2;\n upward = !upward;\n }\n}\n\nfunction buildMatrix(version: number, codewords: Uint8Array): Matrix {\n const n = version * 4 + 17;\n const m = createMatrix(n);\n const res = createMatrix(n); // reserved modules\n\n // Finder patterns\n addFinderPattern(m, 0, 0, res);\n addFinderPattern(m, 0, n - 7, res);\n addFinderPattern(m, n - 7, 0, res);\n\n addTimingPatterns(m, res);\n addFormatInfo(m, res);\n\n // Alignment patterns for v >= 2\n if (version >= 2) {\n const pos = [6, version * 4 + 10]; // simplified for v2-v6\n for (const r of pos) {\n for (const c of pos) {\n // Skip if overlapping finder\n if (res[r]?.[c]) continue;\n for (let dr = -2; dr <= 2; dr++) {\n for (let dc = -2; dc <= 2; dc++) {\n const val =\n Math.abs(dr) === 2 || Math.abs(dc) === 2 || (dr === 0 && dc === 0) ? 1 : 0;\n setModule(m, r + dr, c + dc, val, res);\n }\n }\n }\n }\n }\n\n placeData(m, res, codewords);\n return m;\n}\n\n/** Generate a QR code as an SVG string for the given data. */\nexport function qrSvg(data: string, opts?: { size?: number; dark?: string; light?: string }): string {\n const size = opts?.size ?? 256;\n const dark = opts?.dark ?? \"#000000\";\n const light = opts?.light ?? \"#ffffff\";\n\n const bytes = new TextEncoder().encode(data);\n const version = selectVersion(bytes.length);\n const codewords = encodeData(bytes, version);\n const matrix = buildMatrix(version, codewords);\n\n const n = matrix.length;\n const quiet = 4; // quiet zone modules\n const total = n + quiet * 2;\n const scale = size / total;\n\n let paths = \"\";\n for (let r = 0; r < n; r++) {\n for (let c = 0; c < n; c++) {\n if (matrix[r]![c]) {\n const x = (c + quiet) * scale;\n const y = (r + quiet) * scale;\n paths += `M${x},${y}h${scale}v${scale}h-${scale}z`;\n }\n }\n }\n\n return [\n `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 ${size} ${size}\" width=\"${size}\" height=\"${size}\">`,\n `<rect width=\"${size}\" height=\"${size}\" fill=\"${light}\"/>`,\n `<path d=\"${paths}\" fill=\"${dark}\"/>`,\n `</svg>`,\n ].join(\"\");\n}\n",
|
|
12
12
|
"import type { WalletProvider } from \"./types.ts\";\nimport { ConnectError } from \"./errors.ts\";\n\ndeclare const window:\n | {\n StacksProvider?: WalletProvider;\n LeatherProvider?: WalletProvider;\n XverseProvider?: WalletProvider;\n HiroWalletProvider?: WalletProvider;\n }\n | undefined;\n\nlet customProvider: WalletProvider | null = null;\n\n/** Set a custom provider (e.g. WalletConnectProvider). Pass null to clear. */\nexport function setProvider(provider: WalletProvider | null): void {\n customProvider = provider;\n}\n\nexport function getProvider(): WalletProvider {\n if (customProvider) return customProvider;\n\n if (typeof window === \"undefined\") {\n throw new ConnectError(\"No Stacks wallet found\");\n }\n\n const provider =\n window.StacksProvider ??\n window.LeatherProvider ??\n window.XverseProvider ??\n window.HiroWalletProvider;\n\n if (!provider) throw new ConnectError(\"No Stacks wallet found\");\n return provider;\n}\n\nexport function isWalletInstalled(): boolean {\n return (\n typeof window !== \"undefined\" &&\n !!(\n window.StacksProvider ||\n window.LeatherProvider ||\n window.XverseProvider ||\n window.HiroWalletProvider\n )\n );\n}\n",
|
|
13
|
-
"/** Minimal wallet picker modal (injected wallets + WC QR) */\n\nimport { qrSvg } from \"./qr.ts\";\nimport { isWalletInstalled } from \"../provider.ts\";\n\ndeclare const document: any;\n\nconst MODAL_ID = \"sl-wc-modal\";\n\nconst STYLES = `\n #${MODAL_ID} { position:fixed;inset:0;z-index:99999;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.5) }\n #${MODAL_ID} .sl-wc-box { background:#fff;border-radius:16px;padding:24px;max-width:360px;width:90%;text-align:center;font-family:system-ui,sans-serif }\n #${MODAL_ID} .sl-wc-title { margin:0 0 16px;font-size:18px;font-weight:600;color:#1a1a1a }\n #${MODAL_ID} .sl-wc-btn { display:block;width:100%;padding:12px;margin:8px 0;border:1px solid #e5e5e5;border-radius:12px;background:#fff;cursor:pointer;font-size:15px;font-weight:500;color:#1a1a1a;transition:background .15s }\n #${MODAL_ID} .sl-wc-btn:hover { background:#f5f5f5 }\n #${MODAL_ID} .sl-wc-divider { margin:16px 0;color:#999;font-size:13px }\n #${MODAL_ID} .sl-wc-qr { margin:16px auto 0 }\n #${MODAL_ID} .sl-wc-close { position:absolute;top:12px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#999 }\n`;\n\nexport interface ModalOptions {\n wcUri?: string;\n onSelectInjected?: () => void;\n onClose?: () => void;\n}\n\nexport function showModal(opts: ModalOptions): () => void {\n if (typeof document === \"undefined\") return () => {};\n\n // Remove existing\n document.getElementById(MODAL_ID)?.remove();\n\n const overlay = document.createElement(\"div\");\n overlay.id = MODAL_ID;\n\n const style = document.createElement(\"style\");\n style.textContent = STYLES;\n overlay.appendChild(style);\n\n const box = document.createElement(\"div\");\n box.className = \"sl-wc-box\";\n box.style.position = \"relative\";\n\n // Close button\n const close = document.createElement(\"button\");\n close.className = \"sl-wc-close\";\n close.textContent = \"\\u00d7\";\n close.onclick = dismiss;\n box.appendChild(close);\n\n // Title\n const title = document.createElement(\"h2\");\n title.className = \"sl-wc-title\";\n title.textContent = \"Connect Wallet\";\n box.appendChild(title);\n\n // Injected wallet button\n if (isWalletInstalled()) {\n const btn = document.createElement(\"button\");\n btn.className = \"sl-wc-btn\";\n btn.textContent = \"Browser Wallet\";\n btn.onclick = () => {\n dismiss();\n opts.onSelectInjected?.();\n };\n box.appendChild(btn);\n }\n\n // QR code\n if (opts.wcUri) {\n if (isWalletInstalled()) {\n const divider = document.createElement(\"div\");\n divider.className = \"sl-wc-divider\";\n divider.textContent = \"or scan with mobile wallet\";\n box.appendChild(divider);\n }\n\n const qr = document.createElement(\"div\");\n qr.className = \"sl-wc-qr\";\n qr.innerHTML = qrSvg(opts.wcUri, { size: 240 });\n box.appendChild(qr);\n }\n\n overlay.appendChild(box);\n overlay.onclick = (e: any) => {\n if (e.target === overlay) dismiss();\n };\n\n document.body.appendChild(overlay);\n\n function dismiss() {\n overlay.remove();\n opts.onClose?.();\n }\n\n return dismiss;\n}\n\nexport function hideModal() {\n if (typeof document === \"undefined\") return;\n document.getElementById(MODAL_ID)?.remove();\n}\n"
|
|
13
|
+
"/** Minimal wallet picker modal (injected wallets + WC QR) */\n\nimport { qrSvg } from \"./qr.ts\";\nimport { isWalletInstalled } from \"../provider.ts\";\n\ndeclare const document: any;\n\nconst MODAL_ID = \"sl-wc-modal\";\n\nconst STYLES = `\n #${MODAL_ID} { position:fixed;inset:0;z-index:99999;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.5) }\n #${MODAL_ID} .sl-wc-box { background:#fff;border-radius:16px;padding:24px;max-width:360px;width:90%;text-align:center;font-family:system-ui,sans-serif }\n #${MODAL_ID} .sl-wc-title { margin:0 0 16px;font-size:18px;font-weight:600;color:#1a1a1a }\n #${MODAL_ID} .sl-wc-btn { display:block;width:100%;padding:12px;margin:8px 0;border:1px solid #e5e5e5;border-radius:12px;background:#fff;cursor:pointer;font-size:15px;font-weight:500;color:#1a1a1a;transition:background .15s }\n #${MODAL_ID} .sl-wc-btn:hover { background:#f5f5f5 }\n #${MODAL_ID} .sl-wc-divider { margin:16px 0;color:#999;font-size:13px }\n #${MODAL_ID} .sl-wc-qr { margin:16px auto 0 }\n #${MODAL_ID} .sl-wc-close { position:absolute;top:12px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#999 }\n`;\n\nexport interface ModalOptions {\n wcUri?: string;\n onSelectInjected?: () => void;\n onClose?: () => void;\n}\n\nexport function showModal(opts: ModalOptions): () => void {\n if (typeof document === \"undefined\") return () => {};\n\n // Remove existing\n document.getElementById(MODAL_ID)?.remove();\n\n const overlay = document.createElement(\"div\");\n overlay.id = MODAL_ID;\n\n const style = document.createElement(\"style\");\n style.textContent = STYLES;\n overlay.appendChild(style);\n\n const box = document.createElement(\"div\");\n box.className = \"sl-wc-box\";\n box.style.position = \"relative\";\n\n // Close button\n const close = document.createElement(\"button\");\n close.className = \"sl-wc-close\";\n close.textContent = \"\\u00d7\";\n close.onclick = dismiss;\n box.appendChild(close);\n\n // Title\n const title = document.createElement(\"h2\");\n title.className = \"sl-wc-title\";\n title.textContent = \"Connect Wallet\";\n box.appendChild(title);\n\n // Injected wallet button\n if (isWalletInstalled()) {\n const btn = document.createElement(\"button\");\n btn.className = \"sl-wc-btn\";\n btn.textContent = \"Browser Wallet\";\n btn.onclick = () => {\n dismiss();\n opts.onSelectInjected?.();\n };\n box.appendChild(btn);\n }\n\n // QR code\n if (opts.wcUri) {\n if (isWalletInstalled()) {\n const divider = document.createElement(\"div\");\n divider.className = \"sl-wc-divider\";\n divider.textContent = \"or scan with mobile wallet\";\n box.appendChild(divider);\n }\n\n const qr = document.createElement(\"div\");\n qr.className = \"sl-wc-qr\";\n qr.innerHTML = qrSvg(opts.wcUri, { size: 240 });\n box.appendChild(qr);\n }\n\n overlay.appendChild(box);\n overlay.onclick = (e: any) => {\n if (e.target === overlay) dismiss();\n };\n\n document.body.appendChild(overlay);\n\n function dismiss() {\n overlay.remove();\n opts.onClose?.();\n }\n\n return dismiss;\n}\n\nexport function hideModal(): void {\n if (typeof document === \"undefined\") return;\n document.getElementById(MODAL_ID)?.remove();\n}\n"
|
|
14
14
|
],
|
|
15
|
-
"mappings": "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",
|
|
16
|
-
"debugId": "
|
|
15
|
+
"mappings": "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",
|
|
16
|
+
"debugId": "DD76C7575187B84E64756E2164756E21",
|
|
17
17
|
"names": []
|
|
18
18
|
}
|
|
@@ -82,7 +82,7 @@ declare class WcSession {
|
|
|
82
82
|
pair(): Promise<WcPairResult>;
|
|
83
83
|
/** Send a JSON-RPC request over the session. */
|
|
84
84
|
request(method: string, params?: unknown): Promise<unknown>;
|
|
85
|
-
disconnect();
|
|
85
|
+
disconnect(): void;
|
|
86
86
|
get session(): WcSessionData | null;
|
|
87
87
|
private handlePairingMessage;
|
|
88
88
|
private handleProposal;
|
|
@@ -107,14 +107,14 @@ declare class WcRelay {
|
|
|
107
107
|
constructor(projectId: string, relayUrl?: string);
|
|
108
108
|
connect(): Promise<void>;
|
|
109
109
|
subscribe(topic: string, handler: SubscriptionHandler): Promise<string>;
|
|
110
|
-
publish(topic: string, message: string, tag: number, ttl
|
|
110
|
+
publish(topic: string, message: string, tag: number, ttl?: number): Promise<void>;
|
|
111
111
|
/** Encrypt + publish a type-0 envelope */
|
|
112
|
-
publishEncrypted(topic: string, symKey: Uint8Array, payload: unknown, tag: number, ttl
|
|
112
|
+
publishEncrypted(topic: string, symKey: Uint8Array, payload: unknown, tag: number, ttl?: number): Promise<void>;
|
|
113
113
|
private rpc;
|
|
114
114
|
private handleMessage;
|
|
115
115
|
private handleDisconnect;
|
|
116
116
|
private scheduleReconnect;
|
|
117
|
-
destroy();
|
|
117
|
+
destroy(): void;
|
|
118
118
|
}
|
|
119
119
|
/** Generate a QR code as an SVG string for the given data. */
|
|
120
120
|
declare function qrSvg(data: string, opts?: {
|
|
@@ -128,5 +128,5 @@ interface ModalOptions {
|
|
|
128
128
|
onClose?: () => void;
|
|
129
129
|
}
|
|
130
130
|
declare function showModal(opts: ModalOptions): () => void;
|
|
131
|
-
declare function hideModal();
|
|
131
|
+
declare function hideModal(): void;
|
|
132
132
|
export { showModal, qrSvg, hideModal, WcSessionSettled, WcSessionData, WcSession, WcRelay, WcProviderConfig, WcPairResult, WcMetadata, WalletConnectProvider };
|
|
@@ -82,7 +82,7 @@ declare class WcSession {
|
|
|
82
82
|
pair(): Promise<WcPairResult>;
|
|
83
83
|
/** Send a JSON-RPC request over the session. */
|
|
84
84
|
request(method: string, params?: unknown): Promise<unknown>;
|
|
85
|
-
disconnect();
|
|
85
|
+
disconnect(): void;
|
|
86
86
|
get session(): WcSessionData | null;
|
|
87
87
|
private handlePairingMessage;
|
|
88
88
|
private handleProposal;
|
|
@@ -107,14 +107,14 @@ declare class WcRelay {
|
|
|
107
107
|
constructor(projectId: string, relayUrl?: string);
|
|
108
108
|
connect(): Promise<void>;
|
|
109
109
|
subscribe(topic: string, handler: SubscriptionHandler): Promise<string>;
|
|
110
|
-
publish(topic: string, message: string, tag: number, ttl
|
|
110
|
+
publish(topic: string, message: string, tag: number, ttl?: number): Promise<void>;
|
|
111
111
|
/** Encrypt + publish a type-0 envelope */
|
|
112
|
-
publishEncrypted(topic: string, symKey: Uint8Array, payload: unknown, tag: number, ttl
|
|
112
|
+
publishEncrypted(topic: string, symKey: Uint8Array, payload: unknown, tag: number, ttl?: number): Promise<void>;
|
|
113
113
|
private rpc;
|
|
114
114
|
private handleMessage;
|
|
115
115
|
private handleDisconnect;
|
|
116
116
|
private scheduleReconnect;
|
|
117
|
-
destroy();
|
|
117
|
+
destroy(): void;
|
|
118
118
|
}
|
|
119
119
|
/** Generate a QR code as an SVG string for the given data. */
|
|
120
120
|
declare function qrSvg(data: string, opts?: {
|
|
@@ -128,5 +128,5 @@ interface ModalOptions {
|
|
|
128
128
|
onClose?: () => void;
|
|
129
129
|
}
|
|
130
130
|
declare function showModal(opts: ModalOptions): () => void;
|
|
131
|
-
declare function hideModal();
|
|
131
|
+
declare function hideModal(): void;
|
|
132
132
|
export { showModal, qrSvg, hideModal, WcSessionSettled, WcSessionData, WcSession, WcRelay, WcProviderConfig, WcPairResult, WcMetadata, WalletConnectProvider };
|
|
@@ -985,8 +985,8 @@ function rsGenPoly(n) {
|
|
|
985
985
|
for (let i = 0;i < n; i++) {
|
|
986
986
|
const next = new Uint8Array(poly.length + 1);
|
|
987
987
|
for (let j = 0;j < poly.length; j++) {
|
|
988
|
-
next[j]
|
|
989
|
-
next[j + 1]
|
|
988
|
+
next[j] = next[j] ^ poly[j];
|
|
989
|
+
next[j + 1] = next[j + 1] ^ gfMul(poly[j], GF_EXP[i]);
|
|
990
990
|
}
|
|
991
991
|
poly = next;
|
|
992
992
|
}
|
|
@@ -1001,7 +1001,7 @@ function rsEncode(data, ecLen) {
|
|
|
1001
1001
|
if (coef === 0)
|
|
1002
1002
|
continue;
|
|
1003
1003
|
for (let j = 0;j < gen.length; j++) {
|
|
1004
|
-
result[i + j]
|
|
1004
|
+
result[i + j] = result[i + j] ^ gfMul(gen[j], coef);
|
|
1005
1005
|
}
|
|
1006
1006
|
}
|
|
1007
1007
|
return result.subarray(data.length);
|
|
@@ -1286,5 +1286,5 @@ export {
|
|
|
1286
1286
|
WalletConnectProvider
|
|
1287
1287
|
};
|
|
1288
1288
|
|
|
1289
|
-
//# debugId=
|
|
1289
|
+
//# debugId=EA7120B329310A1664756E2164756E21
|
|
1290
1290
|
//# sourceMappingURL=index.js.map
|