@secondlayer/stacks 6.6.0 → 7.0.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-esm-p3rrvmd8.js → stacks-esm-0t9vwtwh.js} +9 -9
- package/dist/shared/{stacks-esm-75qv0d9h.js → stacks-esm-1f46cr7b.js} +6 -6
- package/dist/shared/{stacks-esm-2cac1jn9.js → stacks-esm-2z40q8gs.js} +4 -4
- package/dist/shared/{stacks-esm-ev07d2aw.js → stacks-esm-4rjjsz3p.js} +3 -3
- package/dist/shared/{stacks-esm-5eq7meyt.js → stacks-esm-8p8xy3dz.js} +16 -4
- package/dist/shared/stacks-esm-8p8xy3dz.js.map +12 -0
- package/dist/shared/{stacks-esm-h82jj95c.js → stacks-esm-9ptct1c4.js} +3 -3
- package/dist/shared/{stacks-esm-qasbsv66.js → stacks-esm-a7apmjbk.js} +2 -2
- package/dist/shared/{stacks-esm-1nfzrepv.js → stacks-esm-brtqryjb.js} +4 -4
- package/dist/shared/{stacks-esm-pc20c78w.js → stacks-esm-e63kx7dq.js} +3 -3
- package/dist/shared/{stacks-esm-tsb8h0yr.js → stacks-esm-eep45e8s.js} +2 -2
- package/dist/shared/{stacks-esm-wnxhfx93.js → stacks-esm-fmq4j4ez.js} +2 -2
- package/dist/shared/{stacks-esm-7tc40d6t.js → stacks-esm-h60faj2n.js} +2 -2
- package/dist/shared/{stacks-esm-6zfssx7v.js → stacks-esm-hcaycch3.js} +3 -3
- package/dist/shared/{stacks-esm-cs4419br.js → stacks-esm-jwgtksgq.js} +32 -15
- package/dist/shared/stacks-esm-jwgtksgq.js.map +15 -0
- package/dist/shared/{stacks-esm-8chm2wtn.js → stacks-esm-m8ph0bvw.js} +7 -7
- package/dist/shared/{stacks-esm-hm7kb2cp.js → stacks-esm-mqhwqhq4.js} +4 -4
- package/dist/shared/{stacks-esm-tfechw5c.js → stacks-esm-nqkwt2z7.js} +2 -2
- package/dist/shared/{stacks-esm-mmvrwreq.js → stacks-esm-wjg9aer9.js} +4 -4
- package/dist/shared/{stacks-esm-scq242d9.js → stacks-esm-zsdw7fq3.js} +3 -3
- package/dist/src/accounts/index.cjs +14 -2
- package/dist/src/accounts/index.cjs.map +3 -3
- package/dist/src/accounts/index.js +2 -2
- package/dist/src/actions/index.cjs +41 -13
- package/dist/src/actions/index.cjs.map +5 -5
- package/dist/src/actions/index.js +12 -12
- package/dist/src/bitcoin/index.cjs +41 -13
- package/dist/src/bitcoin/index.cjs.map +5 -5
- package/dist/src/bitcoin/index.js +10 -10
- package/dist/src/bns/index.cjs +41 -13
- package/dist/src/bns/index.cjs.map +5 -5
- package/dist/src/bns/index.js +12 -12
- package/dist/src/clarity/index.cjs +41 -13
- package/dist/src/clarity/index.cjs.map +5 -5
- package/dist/src/clarity/index.js +6 -6
- package/dist/src/connect/index.cjs +30 -7
- package/dist/src/connect/index.cjs.map +5 -5
- package/dist/src/connect/index.js +30 -7
- package/dist/src/connect/index.js.map +5 -5
- package/dist/src/connect/walletconnect/index.cjs +3 -1
- package/dist/src/connect/walletconnect/index.cjs.map +3 -3
- package/dist/src/connect/walletconnect/index.js +3 -1
- package/dist/src/connect/walletconnect/index.js.map +3 -3
- package/dist/src/filters/index.cjs +14 -2
- package/dist/src/filters/index.cjs.map +3 -3
- package/dist/src/filters/index.d.cts +2 -2
- package/dist/src/filters/index.d.ts +2 -2
- package/dist/src/filters/index.js +3 -3
- package/dist/src/index.cjs +44 -16
- package/dist/src/index.cjs.map +5 -5
- package/dist/src/index.d.cts +2 -2
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.js +11 -11
- package/dist/src/postconditions/index.cjs +41 -13
- package/dist/src/postconditions/index.cjs.map +5 -5
- package/dist/src/postconditions/index.js +5 -5
- package/dist/src/pox/index.cjs +41 -13
- package/dist/src/pox/index.cjs.map +5 -5
- package/dist/src/pox/index.js +12 -12
- package/dist/src/pox5/index.cjs +41 -13
- package/dist/src/pox5/index.cjs.map +5 -5
- package/dist/src/pox5/index.js +14 -14
- package/dist/src/sbtc/index.cjs +41 -13
- package/dist/src/sbtc/index.cjs.map +5 -5
- package/dist/src/sbtc/index.js +12 -12
- package/dist/src/simnet/index.cjs +44 -16
- package/dist/src/simnet/index.cjs.map +5 -5
- package/dist/src/simnet/index.js +44 -16
- package/dist/src/simnet/index.js.map +5 -5
- package/dist/src/stackingdao/index.cjs +41 -13
- package/dist/src/stackingdao/index.cjs.map +5 -5
- package/dist/src/stackingdao/index.js +10 -10
- package/dist/src/transactions/index.cjs +44 -16
- package/dist/src/transactions/index.cjs.map +5 -5
- package/dist/src/transactions/index.js +5 -5
- package/dist/src/utils/index.cjs +14 -2
- package/dist/src/utils/index.cjs.map +3 -3
- package/dist/src/utils/index.js +2 -2
- package/package.json +1 -1
- package/dist/shared/stacks-esm-5eq7meyt.js.map +0 -12
- package/dist/shared/stacks-esm-cs4419br.js.map +0 -15
- /package/dist/shared/{stacks-esm-p3rrvmd8.js.map → stacks-esm-0t9vwtwh.js.map} +0 -0
- /package/dist/shared/{stacks-esm-75qv0d9h.js.map → stacks-esm-1f46cr7b.js.map} +0 -0
- /package/dist/shared/{stacks-esm-2cac1jn9.js.map → stacks-esm-2z40q8gs.js.map} +0 -0
- /package/dist/shared/{stacks-esm-ev07d2aw.js.map → stacks-esm-4rjjsz3p.js.map} +0 -0
- /package/dist/shared/{stacks-esm-h82jj95c.js.map → stacks-esm-9ptct1c4.js.map} +0 -0
- /package/dist/shared/{stacks-esm-qasbsv66.js.map → stacks-esm-a7apmjbk.js.map} +0 -0
- /package/dist/shared/{stacks-esm-1nfzrepv.js.map → stacks-esm-brtqryjb.js.map} +0 -0
- /package/dist/shared/{stacks-esm-pc20c78w.js.map → stacks-esm-e63kx7dq.js.map} +0 -0
- /package/dist/shared/{stacks-esm-tsb8h0yr.js.map → stacks-esm-eep45e8s.js.map} +0 -0
- /package/dist/shared/{stacks-esm-wnxhfx93.js.map → stacks-esm-fmq4j4ez.js.map} +0 -0
- /package/dist/shared/{stacks-esm-7tc40d6t.js.map → stacks-esm-h60faj2n.js.map} +0 -0
- /package/dist/shared/{stacks-esm-6zfssx7v.js.map → stacks-esm-hcaycch3.js.map} +0 -0
- /package/dist/shared/{stacks-esm-8chm2wtn.js.map → stacks-esm-m8ph0bvw.js.map} +0 -0
- /package/dist/shared/{stacks-esm-hm7kb2cp.js.map → stacks-esm-mqhwqhq4.js.map} +0 -0
- /package/dist/shared/{stacks-esm-tfechw5c.js.map → stacks-esm-nqkwt2z7.js.map} +0 -0
- /package/dist/shared/{stacks-esm-mmvrwreq.js.map → stacks-esm-wjg9aer9.js.map} +0 -0
- /package/dist/shared/{stacks-esm-scq242d9.js.map → stacks-esm-zsdw7fq3.js.map} +0 -0
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
"sources": ["../../../src/utils/c32.ts", "../../../src/utils/encoding.ts", "../../../src/utils/constants.ts", "../../../src/utils/hash.ts", "../../../src/errors/base.ts", "../../../src/clarity/types.ts", "../../../src/clarity/serialize.ts", "../../../src/clarity/values.ts", "../../../src/clarity/bridge.ts", "../../../src/connect/errors.ts", "../../../src/connect/provider.ts", "../../../src/connect/storage.ts", "../../../src/connect/request.ts", "../../../src/connect/actions.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { sha256 } from \"@noble/hashes/sha2.js\";\nimport { bytesToHex, hexToBytes } from \"./encoding.ts\";\n\nconst C32 = \"0123456789ABCDEFGHJKMNPQRSTVWXYZ\";\nconst HEX = \"0123456789abcdef\";\n\nfunction c32normalize(input: string): string {\n\treturn input.toUpperCase().replace(/O/g, \"0\").replace(/L|I/g, \"1\");\n}\n\nfunction c32encode(inputHex: string): string {\n\tlet hex = inputHex;\n\tif (hex.length % 2 !== 0) hex = `0${hex}`;\n\thex = hex.toLowerCase();\n\n\tconst res: string[] = [];\n\tlet carry = 0;\n\tfor (let i = hex.length - 1; i >= 0; i--) {\n\t\tif (carry < 4) {\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t\tconst currentCode = HEX.indexOf(hex[i]!) >> carry;\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t\tconst nextCode = i !== 0 ? HEX.indexOf(hex[i - 1]!) : 0;\n\t\t\tconst nextBits = 1 + carry;\n\t\t\tconst nextLowBits = (nextCode % (1 << nextBits)) << (5 - nextBits);\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t\tres.unshift(C32[currentCode + nextLowBits]!);\n\t\t\tcarry = nextBits;\n\t\t} else {\n\t\t\tcarry = 0;\n\t\t}\n\t}\n\n\t// Strip leading c32 zeros\n\tlet leadingZeros = 0;\n\twhile (leadingZeros < res.length && res[leadingZeros] === \"0\") leadingZeros++;\n\tconst stripped = res.slice(leadingZeros);\n\n\t// Preserve leading zero bytes from hex\n\tconst bytes = hexToBytes(hex);\n\tlet zeroBytesCount = 0;\n\twhile (zeroBytesCount < bytes.length && bytes[zeroBytesCount] === 0)\n\t\tzeroBytesCount++;\n\tconst prefix = Array(zeroBytesCount).fill(C32[0]) as string[];\n\n\treturn [...prefix, ...stripped].join(\"\");\n}\n\nfunction c32decode(c32input: string): string {\n\tconst input = c32normalize(c32input);\n\tif (!input.match(`^[${C32}]*$`)) throw new Error(\"Not a c32-encoded string\");\n\n\tconst zeroPrefix = input.match(`^${C32[0]}*`);\n\tconst numLeadingZeroBytes = zeroPrefix ? zeroPrefix[0]?.length : 0;\n\n\tconst res: string[] = [];\n\tlet carry = 0;\n\tlet carryBits = 0;\n\tfor (let i = input.length - 1; i >= 0; i--) {\n\t\tif (carryBits === 4) {\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t\tres.unshift(HEX[carry]!);\n\t\t\tcarryBits = 0;\n\t\t\tcarry = 0;\n\t\t}\n\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\tconst currentValue = (C32.indexOf(input[i]!) << carryBits) + carry;\n\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\tres.unshift(HEX[currentValue % 16]!);\n\t\tcarryBits += 1;\n\t\tcarry = currentValue >> 4;\n\t\tif (carry > 1 << carryBits) throw new Error(\"Panic error in c32 decoding\");\n\t}\n\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\tres.unshift(HEX[carry]!);\n\n\tif (res.length % 2 === 1) res.unshift(\"0\");\n\n\t// Strip leading hex zeros\n\tlet hexLeadingZeros = 0;\n\twhile (hexLeadingZeros < res.length && res[hexLeadingZeros] === \"0\")\n\t\thexLeadingZeros++;\n\tlet hexStr = res.slice(hexLeadingZeros - (hexLeadingZeros % 2)).join(\"\");\n\n\tfor (let i = 0; i < numLeadingZeroBytes; i++) hexStr = `00${hexStr}`;\n\n\treturn hexStr;\n}\n\nfunction c32checksum(dataHex: string): string {\n\treturn bytesToHex(sha256(sha256(hexToBytes(dataHex))).slice(0, 4));\n}\n\nfunction c32checkEncode(version: number, data: string): string {\n\tif (version < 0 || version >= 32)\n\t\tthrow new Error(\"Invalid version (must be between 0 and 31)\");\n\tif (!data.match(/^[0-9a-fA-F]*$/))\n\t\tthrow new Error(\"Invalid data (not a hex string)\");\n\n\tlet d = data.toLowerCase();\n\tif (d.length % 2 !== 0) d = `0${d}`;\n\n\tlet versionHex = version.toString(16);\n\tif (versionHex.length === 1) versionHex = `0${versionHex}`;\n\n\tconst checksumHex = c32checksum(`${versionHex}${d}`);\n\treturn `${C32[version]}${c32encode(`${d}${checksumHex}`)}`;\n}\n\nfunction c32checkDecode(c32data: string): [number, string] {\n\tconst normalized = c32normalize(c32data);\n\tconst dataHex = c32decode(normalized.slice(1));\n\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\tconst version = C32.indexOf(normalized[0]!);\n\tconst checksum = dataHex.slice(-8);\n\n\tlet versionHex = version.toString(16);\n\tif (versionHex.length === 1) versionHex = `0${versionHex}`;\n\n\tif (\n\t\tc32checksum(`${versionHex}${dataHex.substring(0, dataHex.length - 8)}`) !==\n\t\tchecksum\n\t) {\n\t\tthrow new Error(\"Invalid c32check string: checksum mismatch\");\n\t}\n\n\treturn [version, dataHex.substring(0, dataHex.length - 8)];\n}\n\nexport function c32address(version: number, hash160hex: string): string {\n\tif (!hash160hex.match(/^[0-9a-fA-F]{40}$/)) {\n\t\tthrow new Error(\"Invalid argument: not a hash160 hex string\");\n\t}\n\treturn `S${c32checkEncode(version, hash160hex)}`;\n}\n\nexport function c32addressDecode(c32addr: string): [number, string] {\n\tif (c32addr.length <= 5)\n\t\tthrow new Error(\"Invalid c32 address: invalid length\");\n\tif (c32addr[0] !== \"S\")\n\t\tthrow new Error('Invalid c32 address: must start with \"S\"');\n\treturn c32checkDecode(c32addr.slice(1));\n}\n",
|
|
6
|
-
"const hexes = Array.from({ length: 256 }, (_, i) =>\n\ti.toString(16).padStart(2, \"0\"),\n);\n\nexport function bytesToHex(bytes: Uint8Array): string {\n\tlet hex = \"\";\n\tfor (const b of bytes) {\n\t\thex += hexes[b];\n\t}\n\treturn hex;\n}\n\nexport function hexToBytes(hex: string): Uint8Array {\n\tlet h = without0x(hex);\n\tif (h.length % 2) h = `0${h}`;\n\n\tconst array = new Uint8Array(h.length / 2);\n\tfor (let i = 0; i < array.length; i++) {\n\t\tconst j = i * 2;\n\t\tconst byte = Number.parseInt(h.slice(j, j + 2), 16);\n\t\tif (Number.isNaN(byte) || byte < 0)\n\t\t\tthrow new Error(\"Invalid byte sequence\");\n\t\tarray[i] = byte;\n\t}\n\treturn array;\n}\n\nexport function with0x(value: string): string {\n\treturn /^0x/i.test(value) ? value : `0x${value}`;\n}\n\nexport function without0x(value: string): string {\n\treturn /^0x/i.test(value) ? value.slice(2) : value;\n}\n\nexport function utf8ToBytes(str: string): Uint8Array {\n\treturn new TextEncoder().encode(str);\n}\n\nexport function bytesToUtf8(bytes: Uint8Array): string {\n\treturn new TextDecoder().decode(bytes);\n}\n\nexport function asciiToBytes(str: string): Uint8Array {\n\tconst bytes = new Uint8Array(str.length);\n\tfor (let i = 0; i < str.length; i++) {\n\t\tbytes[i] = str.charCodeAt(i) & 0xff;\n\t}\n\treturn bytes;\n}\n\nexport function bytesToAscii(bytes: Uint8Array): string {\n\treturn String.fromCharCode(...bytes);\n}\n\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\tif (arrays.length === 1) return arrays[0]!;\n\tconst length = arrays.reduce((a, arr) => a + arr.length, 0);\n\tconst result = new Uint8Array(length);\n\tlet pad = 0;\n\tfor (const arr of arrays) {\n\t\tresult.set(arr, pad);\n\t\tpad += arr.length;\n\t}\n\treturn result;\n}\n\nexport type IntegerType = number | string | bigint | Uint8Array;\n\nexport function intToBigInt(value: IntegerType): bigint {\n\tif (typeof value === \"bigint\") return value;\n\tif (typeof value === \"string\")
|
|
6
|
+
"const hexes = Array.from({ length: 256 }, (_, i) =>\n\ti.toString(16).padStart(2, \"0\"),\n);\n\nexport function bytesToHex(bytes: Uint8Array): string {\n\tlet hex = \"\";\n\tfor (const b of bytes) {\n\t\thex += hexes[b];\n\t}\n\treturn hex;\n}\n\nexport function hexToBytes(hex: string): Uint8Array {\n\tlet h = without0x(hex);\n\t// parseInt reads \"1g\" as 1, so the whole string is checked first.\n\tif (!/^[0-9a-fA-F]*$/.test(h)) throw new Error(\"Invalid byte sequence\");\n\tif (h.length % 2) h = `0${h}`;\n\n\tconst array = new Uint8Array(h.length / 2);\n\tfor (let i = 0; i < array.length; i++) {\n\t\tconst j = i * 2;\n\t\tconst byte = Number.parseInt(h.slice(j, j + 2), 16);\n\t\tif (Number.isNaN(byte) || byte < 0)\n\t\t\tthrow new Error(\"Invalid byte sequence\");\n\t\tarray[i] = byte;\n\t}\n\treturn array;\n}\n\nexport function with0x(value: string): string {\n\treturn /^0x/i.test(value) ? value : `0x${value}`;\n}\n\nexport function without0x(value: string): string {\n\treturn /^0x/i.test(value) ? value.slice(2) : value;\n}\n\nexport function utf8ToBytes(str: string): Uint8Array {\n\treturn new TextEncoder().encode(str);\n}\n\nexport function bytesToUtf8(bytes: Uint8Array): string {\n\treturn new TextDecoder().decode(bytes);\n}\n\nexport function asciiToBytes(str: string): Uint8Array {\n\tconst bytes = new Uint8Array(str.length);\n\tfor (let i = 0; i < str.length; i++) {\n\t\tbytes[i] = str.charCodeAt(i) & 0xff;\n\t}\n\treturn bytes;\n}\n\n/** Whether every character is 7-bit ASCII. */\nexport function isAscii(str: string): boolean {\n\tfor (let i = 0; i < str.length; i++) {\n\t\tif (str.charCodeAt(i) > 0x7f) return false;\n\t}\n\treturn true;\n}\n\nexport function bytesToAscii(bytes: Uint8Array): string {\n\treturn String.fromCharCode(...bytes);\n}\n\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\tif (arrays.length === 1) return arrays[0]!;\n\tconst length = arrays.reduce((a, arr) => a + arr.length, 0);\n\tconst result = new Uint8Array(length);\n\tlet pad = 0;\n\tfor (const arr of arrays) {\n\t\tresult.set(arr, pad);\n\t\tpad += arr.length;\n\t}\n\treturn result;\n}\n\nexport type IntegerType = number | string | bigint | Uint8Array;\n\nexport function intToBigInt(value: IntegerType): bigint {\n\tif (typeof value === \"bigint\") return value;\n\tif (typeof value === \"string\") {\n\t\t// BigInt(\"\") is 0n; an empty or blank string is not a number.\n\t\tif (value.trim() === \"\")\n\t\t\tthrow new SyntaxError(\"Cannot convert an empty string to an integer\");\n\t\treturn BigInt(value);\n\t}\n\tif (typeof value === \"number\") {\n\t\tif (!Number.isInteger(value))\n\t\t\tthrow new RangeError(\"Values of type 'number' must be an integer.\");\n\t\tif (value > Number.MAX_SAFE_INTEGER)\n\t\t\tthrow new RangeError(\n\t\t\t\t`Values of type 'number' must be <= ${Number.MAX_SAFE_INTEGER}. Use BigInt instead.`,\n\t\t\t);\n\t\treturn BigInt(value);\n\t}\n\tif (value instanceof Uint8Array) return BigInt(`0x${bytesToHex(value)}`);\n\tthrow new TypeError(\"Must be a number, bigint, string, or Uint8Array.\");\n}\n\nexport function intToBytes(value: IntegerType, byteLength: number): Uint8Array {\n\treturn bigIntToBytes(intToBigInt(value), byteLength);\n}\n\nexport function bigIntToBytes(value: bigint, length = 16): Uint8Array {\n\tconst hex = value.toString(16).padStart(length * 2, \"0\");\n\treturn hexToBytes(hex);\n}\n\nexport function intToHex(integer: IntegerType, byteLength = 8): string {\n\tconst value = typeof integer === \"bigint\" ? integer : intToBigInt(integer);\n\treturn value.toString(16).padStart(byteLength * 2, \"0\");\n}\n\nexport function toTwos(value: bigint, width: bigint): bigint {\n\tconst limit = BigInt(1) << (width - BigInt(1));\n\tif (value < -limit || value > limit - BigInt(1)) {\n\t\tthrow new Error(`Unable to represent integer in width: ${width}`);\n\t}\n\tif (value >= BigInt(0)) return value;\n\treturn value + (BigInt(1) << width);\n}\n\nexport function fromTwos(value: bigint, width: bigint): bigint {\n\tif (value & (BigInt(1) << (width - BigInt(1)))) {\n\t\treturn value - (BigInt(1) << width);\n\t}\n\treturn value;\n}\n\nexport function bytesToTwosBigInt(bytes: Uint8Array): bigint {\n\tif (bytes.length === 0) return 0n;\n\tconst hex = bytesToHex(bytes);\n\tif (hex.length === 0) return 0n;\n\treturn fromTwos(BigInt(`0x${hex}`), BigInt(bytes.byteLength * 8));\n}\n\nexport function writeUInt32BE(value: number): Uint8Array {\n\tconst buf = new Uint8Array(4);\n\tbuf[0] = (value >>> 24) & 0xff;\n\tbuf[1] = (value >>> 16) & 0xff;\n\tbuf[2] = (value >>> 8) & 0xff;\n\tbuf[3] = value & 0xff;\n\treturn buf;\n}\n\nexport function readUInt32BE(bytes: Uint8Array, offset = 0): number {\n\treturn (\n\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t((bytes[offset]! << 24) |\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t\t(bytes[offset + 1]! << 16) |\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t\t(bytes[offset + 2]! << 8) |\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t\tbytes[offset + 3]!) >>>\n\t\t0\n\t);\n}\n\nexport function writeUInt16BE(value: number): Uint8Array {\n\tconst buf = new Uint8Array(2);\n\tbuf[0] = (value >>> 8) & 0xff;\n\tbuf[1] = value & 0xff;\n\treturn buf;\n}\n\nexport function readUInt16BE(bytes: Uint8Array, offset = 0): number {\n\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\treturn ((bytes[offset]! << 8) | bytes[offset + 1]!) >>> 0;\n}\n\nexport function writeUInt8(value: number): Uint8Array {\n\treturn new Uint8Array([value & 0xff]);\n}\n",
|
|
7
7
|
"// Clarity integer bounds\nexport const MAX_U128: bigint = (1n << 128n) - 1n;\nexport const MAX_I128: bigint = (1n << 127n) - 1n;\nexport const MIN_I128: bigint = -(1n << 127n);\n\n/** C32-encoded address version bytes for single-sig and multi-sig on each network. */\nexport const AddressVersion = {\n\tMainnetSingleSig: 22,\n\tMainnetMultiSig: 20,\n\tTestnetSingleSig: 26,\n\tTestnetMultiSig: 21,\n} as const;\nexport type AddressVersion =\n\t(typeof AddressVersion)[keyof typeof AddressVersion];\n\n/** Mainnet burn address (all-zero hash160). */\nexport const ZERO_ADDRESS = \"SP000000000000000000002Q6VF78\";\n/** Testnet burn address (all-zero hash160). */\nexport const TESTNET_ZERO_ADDRESS = \"ST000000000000000000002AMW42H\";\n\n/** Number of microSTX per 1 STX (10^6). */\nexport const MICROSTX_PER_STX = 1_000_000n;\n",
|
|
8
8
|
"import { ripemd160 } from \"@noble/hashes/legacy.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport { sha512_256 } from \"@noble/hashes/sha2.js\";\nimport { bytesToHex } from \"./encoding.ts\";\n\nexport { sha256, sha512_256, ripemd160 };\n\n/** RIPEMD160(SHA256(input)) — standard Bitcoin/Stacks address hash */\nexport function hash160(input: Uint8Array): Uint8Array {\n\treturn ripemd160(sha256(input));\n}\n\n/** Hash used for transaction IDs */\nexport function txidFromBytes(data: Uint8Array): string {\n\treturn bytesToHex(sha512_256(data));\n}\n\n/** hash160 as hex — used for P2PKH address derivation */\nexport function hashP2PKH(input: Uint8Array): string {\n\treturn bytesToHex(hash160(input));\n}\n",
|
|
9
9
|
"/**\n * Derive a stable machine-readable code from an error's `name` field:\n * `HttpRequestError` becomes `HTTP_REQUEST_ERROR`. `name` is a string\n * literal each class sets, so the code survives a bundler that mangles\n * class names. Branch on `code` instead of parsing `message`, which is\n * free to change.\n */\nfunction codeFromName(name: string): string {\n\treturn name\n\t\t.replace(/([a-z0-9])([A-Z])/g, \"$1_$2\")\n\t\t.replace(/([A-Z]+)([A-Z][a-z])/g, \"$1_$2\")\n\t\t.toUpperCase();\n}\n\nexport class BaseError extends Error {\n\toverride name = \"StacksError\";\n\t#code?: string;\n\tshortMessage: string;\n\tdetails?: string;\n\n\tconstructor(\n\t\tshortMessage: string,\n\t\toptions?: { cause?: Error; details?: string; code?: string },\n\t) {\n\t\tconst message = [\n\t\t\tshortMessage,\n\t\t\toptions?.details ? `\\n${options.details}` : \"\",\n\t\t].join(\"\");\n\n\t\tsuper(message, { cause: options?.cause });\n\t\tif (options?.code !== undefined) this.#code = options.code;\n\t\tthis.shortMessage = shortMessage;\n\t\tthis.details = options?.details;\n\t}\n\n\t/**\n\t * Stable identifier for programmatic handling; survives message\n\t * rewording and minification. An explicit `code` option wins, else it\n\t * is derived from `name` (`TimeoutError` gives `TIMEOUT_ERROR`).\n\t */\n\tget code(): string {\n\t\treturn this.#code ?? codeFromName(this.name);\n\t}\n\n\tset code(value: string) {\n\t\tthis.#code = value;\n\t}\n\n\ttoJSON(): {\n\t\tname: string;\n\t\tcode: string;\n\t\tmessage: string;\n\t\tshortMessage: string;\n\t\tdetails: string | undefined;\n\t\tcause: string | undefined;\n\t} {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tcode: this.code,\n\t\t\tmessage: this.message,\n\t\t\tshortMessage: this.shortMessage,\n\t\t\tdetails: this.details,\n\t\t\tcause: this.cause instanceof Error ? this.cause.message : undefined,\n\t\t};\n\t}\n}\n",
|
|
10
10
|
"export type ClarityType =\n\t| \"int\"\n\t| \"uint\"\n\t| \"buffer\"\n\t| \"true\"\n\t| \"false\"\n\t| \"address\"\n\t| \"contract\"\n\t| \"ok\"\n\t| \"err\"\n\t| \"none\"\n\t| \"some\"\n\t| \"list\"\n\t| \"tuple\"\n\t| \"ascii\"\n\t| \"utf8\";\n\n/** Wire type IDs matching the Stacks binary format (SIP-005) */\nexport const ClarityWireType = {\n\tint: 0x00,\n\tuint: 0x01,\n\tbuffer: 0x02,\n\ttrue: 0x03,\n\tfalse: 0x04,\n\taddress: 0x05,\n\tcontract: 0x06,\n\tok: 0x07,\n\terr: 0x08,\n\tnone: 0x09,\n\tsome: 0x0a,\n\tlist: 0x0b,\n\ttuple: 0x0c,\n\tascii: 0x0d,\n\tutf8: 0x0e,\n} as const satisfies Record<ClarityType, number>;\n\n/** Reverse lookup: wire byte → ClarityType string */\nconst wireTypeToClarity = Object.fromEntries(\n\tObject.entries(ClarityWireType).map(([k, v]) => [v, k]),\n) as Record<number, ClarityType>;\n\nexport function clarityTypeFromByte(byte: number): ClarityType {\n\tconst type = wireTypeToClarity[byte];\n\tif (!type) throw new Error(`Unknown clarity wire type: ${byte}`);\n\treturn type;\n}\n\n// CV types\n\nexport type IntCV = { readonly type: \"int\"; readonly value: bigint };\nexport type UIntCV = { readonly type: \"uint\"; readonly value: bigint };\nexport type BooleanCV = TrueCV | FalseCV;\nexport type TrueCV = { readonly type: \"true\" };\nexport type FalseCV = { readonly type: \"false\" };\nexport type BufferCV = { readonly type: \"buffer\"; readonly value: string }; // hex\nexport type NoneCV = { readonly type: \"none\" };\nexport type SomeCV = {\n\treadonly type: \"some\";\n\treadonly value: ClarityValue;\n};\nexport type OptionalCV = NoneCV | SomeCV;\nexport type ResponseOkCV = {\n\treadonly type: \"ok\";\n\treadonly value: ClarityValue;\n};\nexport type ResponseErrorCV = {\n\treadonly type: \"err\";\n\treadonly value: ClarityValue;\n};\nexport type ResponseCV = ResponseOkCV | ResponseErrorCV;\nexport type StandardPrincipalCV = {\n\treadonly type: \"address\";\n\treadonly value: string;\n};\nexport type ContractPrincipalCV = {\n\treadonly type: \"contract\";\n\treadonly value: string; // \"address.name\"\n};\nexport type PrincipalCV = StandardPrincipalCV | ContractPrincipalCV;\nexport type ListCV = {\n\ttype: \"list\";\n\tvalue: ClarityValue[];\n};\nexport type TupleData = {\n\t[key: string]: ClarityValue;\n};\nexport type TupleCV = {\n\ttype: \"tuple\";\n\tvalue: TupleData;\n};\nexport type StringAsciiCV = {\n\treadonly type: \"ascii\";\n\treadonly value: string;\n};\nexport type StringUtf8CV = {\n\treadonly type: \"utf8\";\n\treadonly value: string;\n};\n\nexport type ClarityValue =\n\t| IntCV\n\t| UIntCV\n\t| BooleanCV\n\t| BufferCV\n\t| NoneCV\n\t| SomeCV\n\t| ResponseOkCV\n\t| ResponseErrorCV\n\t| StandardPrincipalCV\n\t| ContractPrincipalCV\n\t| ListCV\n\t| TupleCV\n\t| StringAsciiCV\n\t| StringUtf8CV;\n",
|
|
11
|
-
"import { c32addressDecode } from \"../utils/c32.ts\";\nimport {\n\tasciiToBytes,\n\tbigIntToBytes,\n\tbytesToHex,\n\tconcatBytes,\n\thexToBytes,\n\tintToHex,\n\ttoTwos,\n\tutf8ToBytes,\n\twriteUInt32BE,\n} from \"../utils/encoding.ts\";\nimport {\n\ttype ClarityType,\n\ttype ClarityValue,\n\tClarityWireType,\n} from \"./types.ts\";\n\nconst CLARITY_INT_SIZE = 128n;\nconst CLARITY_INT_BYTE_SIZE = 16;\n\nfunction typeIdByte(type: ClarityType): number {\n\treturn ClarityWireType[type];\n}\n\nfunction withTypeId(type: ClarityType, bytes: Uint8Array): Uint8Array {\n\treturn concatBytes(new Uint8Array([typeIdByte(type)]), bytes);\n}\n\nfunction serializeAddress(c32Address: string): Uint8Array {\n\tconst [version, hash160] = c32addressDecode(c32Address);\n\treturn concatBytes(new Uint8Array([version]), hexToBytes(hash160));\n}\n\nfunction serializeLPString(str: string, prefixBytes = 1): Uint8Array {\n\tconst content = utf8ToBytes(str);\n\tconst lengthPrefix = hexToBytes(intToHex(content.byteLength, prefixBytes));\n\treturn concatBytes(lengthPrefix, content);\n}\n\nexport function serializeCVBytes(value: ClarityValue): Uint8Array {\n\tswitch (value.type) {\n\t\tcase \"true\":\n\t\tcase \"false\":\n\t\t\treturn new Uint8Array([typeIdByte(value.type)]);\n\n\t\tcase \"int\": {\n\t\t\tconst bytes = bigIntToBytes(\n\t\t\t\ttoTwos(
|
|
12
|
-
"import { isClarityName, parsePrincipal } from \"../utils/address.ts\";\nimport { c32address, c32addressDecode } from \"../utils/c32.ts\";\nimport {\n\ttype IntegerType,\n\tasciiToBytes,\n\tbytesToHex,\n\tbytesToTwosBigInt,\n\thexToBytes,\n\tintToBigInt,\n\tutf8ToBytes,\n} from \"../utils/encoding.ts\";\nimport { deserializeCVBytes } from \"./deserialize.ts\";\nimport { serializeCVBytes } from \"./serialize.ts\";\nimport type {\n\tBooleanCV,\n\tBufferCV,\n\tClarityValue,\n\tContractPrincipalCV,\n\tFalseCV,\n\tIntCV,\n\tListCV,\n\tNoneCV,\n\tResponseErrorCV,\n\tResponseOkCV,\n\tSomeCV,\n\tStandardPrincipalCV,\n\tStringAsciiCV,\n\tStringUtf8CV,\n\tTrueCV,\n\tTupleCV,\n\tTupleData,\n\tUIntCV,\n} from \"./types.ts\";\n\nconst MAX_U128 = BigInt(\"0xffffffffffffffffffffffffffffffff\");\nconst MIN_I128 = BigInt(\"-170141183460469231731687303715884105728\");\nconst MAX_I128 = BigInt(\"0x7fffffffffffffffffffffffffffffff\");\n\n// Primitives\n\nexport function intCV(value: IntegerType): IntCV {\n\tlet v: IntegerType = value;\n\tif (typeof v === \"string\" && v.toLowerCase().startsWith(\"0x\")) {\n\t\tv = bytesToTwosBigInt(hexToBytes(v));\n\t}\n\tif (v instanceof Uint8Array) v = bytesToTwosBigInt(v);\n\tconst n = intToBigInt(v);\n\tif (n > MAX_I128) throw new RangeError(`Int exceeds max i128: ${MAX_I128}`);\n\tif (n < MIN_I128) throw new RangeError(`Int below min i128: ${MIN_I128}`);\n\treturn { type: \"int\", value: n };\n}\n\nexport function uintCV(value: IntegerType): UIntCV {\n\tconst n = intToBigInt(value);\n\tif (n < 0n)\n\t\tthrow new RangeError(\"Cannot construct unsigned int from negative value\");\n\tif (n > MAX_U128) throw new RangeError(`UInt exceeds max u128: ${MAX_U128}`);\n\treturn { type: \"uint\", value: n };\n}\n\nexport const trueCV = (): TrueCV => ({ type: \"true\" });\nexport const falseCV = (): FalseCV => ({ type: \"false\" });\nexport const boolCV = (v: boolean): BooleanCV => (v ? trueCV() : falseCV());\n\nexport function bufferCV(buffer: Uint8Array): BufferCV {\n\tif (buffer.byteLength > 1_048_576) {\n\t\tthrow new Error(\"Buffer exceeds max size of 1MB\");\n\t}\n\treturn { type: \"buffer\", value: bytesToHex(buffer) };\n}\n\nexport function standardPrincipalCV(address: string): StandardPrincipalCV {\n\t// Validate by decoding\n\tconst [version, hash160] = c32addressDecode(address);\n\tconst normalized = c32address(version, hash160);\n\treturn { type: \"address\", value: normalized };\n}\n\nexport function contractPrincipalCV(\n\taddress: string,\n\tcontractName: string,\n): ContractPrincipalCV {\n\tconst [version, hash160] = c32addressDecode(address);\n\tconst normalized = c32address(version, hash160);\n\tif (utf8ToBytes(contractName).byteLength >= 128) {\n\t\tthrow new Error(\"Contract name must be less than 128 bytes\");\n\t}\n\treturn { type: \"contract\", value: `${normalized}.${contractName}` };\n}\n\nexport function noneCV(): NoneCV {\n\treturn { type: \"none\" };\n}\n\nexport function someCV(value: ClarityValue): SomeCV {\n\treturn { type: \"some\", value };\n}\n\nexport function responseOkCV(value: ClarityValue): ResponseOkCV {\n\treturn { type: \"ok\", value };\n}\n\nexport function responseErrorCV(value: ClarityValue): ResponseErrorCV {\n\treturn { type: \"err\", value };\n}\n\nexport function listCV(values: ClarityValue[]): ListCV {\n\treturn { type: \"list\", value: values };\n}\n\nexport function tupleCV(data: TupleData): TupleCV {\n\tfor (const key in data) {\n\t\tif (!isClarityName(key)) {\n\t\t\tthrow new Error(`\"${key}\" is not a valid Clarity name`);\n\t\t}\n\t}\n\treturn { type: \"tuple\", value: data };\n}\n\nexport function stringAsciiCV(value: string): StringAsciiCV {\n\treturn { type: \"ascii\", value };\n}\n\nexport function stringUtf8CV(value: string): StringUtf8CV {\n\treturn { type: \"utf8\", value };\n}\n\n// Cl namespace — clean API\n\nexport const Cl: {\n\treadonly int: (value: IntegerType) => IntCV;\n\treadonly uint: (value: IntegerType) => UIntCV;\n\treadonly bool: (v: boolean) => BooleanCV;\n\tprincipal(address: string): StandardPrincipalCV | ContractPrincipalCV;\n\taddress(address: string): StandardPrincipalCV | ContractPrincipalCV;\n\treadonly contractPrincipal: (\n\t\taddress: string,\n\t\tcontractName: string,\n\t) => ContractPrincipalCV;\n\treadonly standardPrincipal: (address: string) => StandardPrincipalCV;\n\treadonly buffer: (buffer: Uint8Array) => BufferCV;\n\treadonly bufferFromHex: (hex: string) => BufferCV;\n\treadonly bufferFromAscii: (ascii: string) => BufferCV;\n\treadonly bufferFromUtf8: (utf8: string) => BufferCV;\n\treadonly none: () => NoneCV;\n\treadonly some: (value: ClarityValue) => SomeCV;\n\treadonly ok: (value: ClarityValue) => ResponseOkCV;\n\treadonly error: (value: ClarityValue) => ResponseErrorCV;\n\treadonly list: (values: ClarityValue[]) => ListCV;\n\treadonly tuple: (data: TupleData) => TupleCV;\n\treadonly stringAscii: (value: string) => StringAsciiCV;\n\treadonly stringUtf8: (value: string) => StringUtf8CV;\n\tserialize(value: ClarityValue): string;\n\treadonly deserialize: (bytes: Uint8Array) => ClarityValue;\n} = {\n\tint: intCV,\n\tuint: uintCV,\n\tbool: boolCV,\n\tprincipal(address: string): StandardPrincipalCV | ContractPrincipalCV {\n\t\tconst parsed = parsePrincipal(address);\n\t\tif (!parsed) throw new Error(`Invalid principal: ${address}`);\n\t\treturn parsed.contractName\n\t\t\t? contractPrincipalCV(parsed.address, parsed.contractName)\n\t\t\t: standardPrincipalCV(parsed.address);\n\t},\n\taddress(address: string): StandardPrincipalCV | ContractPrincipalCV {\n\t\treturn Cl.principal(address);\n\t},\n\tcontractPrincipal: contractPrincipalCV,\n\tstandardPrincipal: standardPrincipalCV,\n\tbuffer: bufferCV,\n\tbufferFromHex: (hex: string): BufferCV => bufferCV(hexToBytes(hex)),\n\tbufferFromAscii: (ascii: string): BufferCV => bufferCV(asciiToBytes(ascii)),\n\tbufferFromUtf8: (utf8: string): BufferCV => bufferCV(utf8ToBytes(utf8)),\n\tnone: noneCV,\n\tsome: someCV,\n\tok: responseOkCV,\n\terror: responseErrorCV,\n\tlist: listCV,\n\ttuple: tupleCV,\n\tstringAscii: stringAsciiCV,\n\tstringUtf8: stringUtf8CV,\n\tserialize(value: ClarityValue): string {\n\t\treturn bytesToHex(serializeCVBytes(value));\n\t},\n\tdeserialize: deserializeCVBytes,\n} as const;\n",
|
|
11
|
+
"import { c32addressDecode } from \"../utils/c32.ts\";\nimport {\n\tasciiToBytes,\n\tbigIntToBytes,\n\tbytesToHex,\n\tconcatBytes,\n\thexToBytes,\n\tintToHex,\n\tisAscii,\n\ttoTwos,\n\tutf8ToBytes,\n\twriteUInt32BE,\n} from \"../utils/encoding.ts\";\nimport {\n\ttype ClarityType,\n\ttype ClarityValue,\n\tClarityWireType,\n} from \"./types.ts\";\n\nconst CLARITY_INT_SIZE = 128n;\nconst CLARITY_INT_BYTE_SIZE = 16;\nconst MAX_U128 = (1n << 128n) - 1n;\nconst MAX_I128 = (1n << 127n) - 1n;\nconst MIN_I128 = -(1n << 127n);\n/** Largest string a Clarity value can hold (MAX_VALUE_SIZE). */\nexport const MAX_STRING_BYTES = 1_048_576;\n\nfunction typeIdByte(type: ClarityType): number {\n\treturn ClarityWireType[type];\n}\n\nfunction withTypeId(type: ClarityType, bytes: Uint8Array): Uint8Array {\n\treturn concatBytes(new Uint8Array([typeIdByte(type)]), bytes);\n}\n\nfunction serializeAddress(c32Address: string): Uint8Array {\n\tconst [version, hash160] = c32addressDecode(c32Address);\n\treturn concatBytes(new Uint8Array([version]), hexToBytes(hash160));\n}\n\nfunction serializeLPString(str: string, prefixBytes = 1): Uint8Array {\n\tconst content = utf8ToBytes(str);\n\tconst lengthPrefix = hexToBytes(intToHex(content.byteLength, prefixBytes));\n\treturn concatBytes(lengthPrefix, content);\n}\n\nexport function serializeCVBytes(value: ClarityValue): Uint8Array {\n\tswitch (value.type) {\n\t\tcase \"true\":\n\t\tcase \"false\":\n\t\t\treturn new Uint8Array([typeIdByte(value.type)]);\n\n\t\tcase \"int\": {\n\t\t\tconst n = BigInt(value.value);\n\t\t\tif (n > MAX_I128 || n < MIN_I128)\n\t\t\t\tthrow new RangeError(`Int is outside i128: ${n}`);\n\t\t\tconst bytes = bigIntToBytes(\n\t\t\t\ttoTwos(n, CLARITY_INT_SIZE),\n\t\t\t\tCLARITY_INT_BYTE_SIZE,\n\t\t\t);\n\t\t\treturn withTypeId(value.type, bytes);\n\t\t}\n\n\t\tcase \"uint\": {\n\t\t\tconst n = BigInt(value.value);\n\t\t\tif (n < 0n || n > MAX_U128)\n\t\t\t\tthrow new RangeError(`UInt is outside u128: ${n}`);\n\t\t\tconst bytes = bigIntToBytes(n, CLARITY_INT_BYTE_SIZE);\n\t\t\treturn withTypeId(value.type, bytes);\n\t\t}\n\n\t\tcase \"buffer\": {\n\t\t\tconst bufBytes = hexToBytes(value.value);\n\t\t\treturn withTypeId(\n\t\t\t\tvalue.type,\n\t\t\t\tconcatBytes(writeUInt32BE(bufBytes.length), bufBytes),\n\t\t\t);\n\t\t}\n\n\t\tcase \"none\":\n\t\t\treturn new Uint8Array([typeIdByte(value.type)]);\n\n\t\tcase \"some\":\n\t\t\treturn withTypeId(value.type, serializeCVBytes(value.value));\n\n\t\tcase \"ok\":\n\t\tcase \"err\":\n\t\t\treturn withTypeId(value.type, serializeCVBytes(value.value));\n\n\t\tcase \"address\":\n\t\t\treturn withTypeId(value.type, serializeAddress(value.value));\n\n\t\tcase \"contract\": {\n\t\t\tconst [addr, name] = value.value.split(\".\");\n\t\t\tif (!addr || !name)\n\t\t\t\tthrow new Error(`Invalid contract principal: ${value.value}`);\n\t\t\treturn withTypeId(\n\t\t\t\tvalue.type,\n\t\t\t\tconcatBytes(serializeAddress(addr), serializeLPString(name)),\n\t\t\t);\n\t\t}\n\n\t\tcase \"list\": {\n\t\t\tconst parts: Uint8Array[] = [writeUInt32BE(value.value.length)];\n\t\t\tfor (const item of value.value) {\n\t\t\t\tparts.push(serializeCVBytes(item));\n\t\t\t}\n\t\t\treturn withTypeId(value.type, concatBytes(...parts));\n\t\t}\n\n\t\tcase \"tuple\": {\n\t\t\t// Clarity orders tuple fields as a BTreeMap over the raw name bytes.\n\t\t\t// Code-unit comparison equals byte order for the ASCII name grammar;\n\t\t\t// localeCompare does not, and would change the SIP-018 hash.\n\t\t\tconst keys = Object.keys(value.value).sort((a, b) =>\n\t\t\t\ta < b ? -1 : a > b ? 1 : 0,\n\t\t\t);\n\t\t\tconst parts: Uint8Array[] = [writeUInt32BE(keys.length)];\n\t\t\tfor (const key of keys) {\n\t\t\t\tparts.push(serializeLPString(key));\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\t\tparts.push(serializeCVBytes(value.value[key]!));\n\t\t\t}\n\t\t\treturn withTypeId(value.type, concatBytes(...parts));\n\t\t}\n\n\t\tcase \"ascii\": {\n\t\t\tif (!isAscii(value.value))\n\t\t\t\tthrow new Error(\"string-ascii holds only ASCII characters\");\n\t\t\tconst strBytes = asciiToBytes(value.value);\n\t\t\treturn withTypeId(\n\t\t\t\tvalue.type,\n\t\t\t\tconcatBytes(writeUInt32BE(strBytes.length), strBytes),\n\t\t\t);\n\t\t}\n\n\t\tcase \"utf8\": {\n\t\t\tconst strBytes = utf8ToBytes(value.value);\n\t\t\treturn withTypeId(\n\t\t\t\tvalue.type,\n\t\t\t\tconcatBytes(writeUInt32BE(strBytes.length), strBytes),\n\t\t\t);\n\t\t}\n\n\t\tdefault:\n\t\t\tthrow new Error(\"Cannot serialize unknown clarity type\");\n\t}\n}\n\nexport function serializeCV(value: ClarityValue): string {\n\treturn bytesToHex(serializeCVBytes(value));\n}\n",
|
|
12
|
+
"import { isClarityName, parsePrincipal } from \"../utils/address.ts\";\nimport { c32address, c32addressDecode } from \"../utils/c32.ts\";\nimport {\n\ttype IntegerType,\n\tasciiToBytes,\n\tbytesToHex,\n\tbytesToTwosBigInt,\n\thexToBytes,\n\tintToBigInt,\n\tisAscii,\n\tutf8ToBytes,\n} from \"../utils/encoding.ts\";\nimport { deserializeCVBytes } from \"./deserialize.ts\";\nimport { MAX_STRING_BYTES, serializeCVBytes } from \"./serialize.ts\";\nimport type {\n\tBooleanCV,\n\tBufferCV,\n\tClarityValue,\n\tContractPrincipalCV,\n\tFalseCV,\n\tIntCV,\n\tListCV,\n\tNoneCV,\n\tResponseErrorCV,\n\tResponseOkCV,\n\tSomeCV,\n\tStandardPrincipalCV,\n\tStringAsciiCV,\n\tStringUtf8CV,\n\tTrueCV,\n\tTupleCV,\n\tTupleData,\n\tUIntCV,\n} from \"./types.ts\";\n\nconst MAX_U128 = BigInt(\"0xffffffffffffffffffffffffffffffff\");\nconst MIN_I128 = BigInt(\"-170141183460469231731687303715884105728\");\nconst MAX_I128 = BigInt(\"0x7fffffffffffffffffffffffffffffff\");\n\n// Primitives\n\nexport function intCV(value: IntegerType): IntCV {\n\tlet v: IntegerType = value;\n\tif (typeof v === \"string\" && v.toLowerCase().startsWith(\"0x\")) {\n\t\tv = bytesToTwosBigInt(hexToBytes(v));\n\t}\n\tif (v instanceof Uint8Array) v = bytesToTwosBigInt(v);\n\tconst n = intToBigInt(v);\n\tif (n > MAX_I128) throw new RangeError(`Int exceeds max i128: ${MAX_I128}`);\n\tif (n < MIN_I128) throw new RangeError(`Int below min i128: ${MIN_I128}`);\n\treturn { type: \"int\", value: n };\n}\n\nexport function uintCV(value: IntegerType): UIntCV {\n\tconst n = intToBigInt(value);\n\tif (n < 0n)\n\t\tthrow new RangeError(\"Cannot construct unsigned int from negative value\");\n\tif (n > MAX_U128) throw new RangeError(`UInt exceeds max u128: ${MAX_U128}`);\n\treturn { type: \"uint\", value: n };\n}\n\nexport const trueCV = (): TrueCV => ({ type: \"true\" });\nexport const falseCV = (): FalseCV => ({ type: \"false\" });\nexport const boolCV = (v: boolean): BooleanCV => (v ? trueCV() : falseCV());\n\nexport function bufferCV(buffer: Uint8Array): BufferCV {\n\tif (buffer.byteLength > 1_048_576) {\n\t\tthrow new Error(\"Buffer exceeds max size of 1MB\");\n\t}\n\treturn { type: \"buffer\", value: bytesToHex(buffer) };\n}\n\nexport function standardPrincipalCV(address: string): StandardPrincipalCV {\n\t// Validate by decoding\n\tconst [version, hash160] = c32addressDecode(address);\n\tconst normalized = c32address(version, hash160);\n\treturn { type: \"address\", value: normalized };\n}\n\nexport function contractPrincipalCV(\n\taddress: string,\n\tcontractName: string,\n): ContractPrincipalCV {\n\tconst [version, hash160] = c32addressDecode(address);\n\tconst normalized = c32address(version, hash160);\n\tif (utf8ToBytes(contractName).byteLength >= 128) {\n\t\tthrow new Error(\"Contract name must be less than 128 bytes\");\n\t}\n\treturn { type: \"contract\", value: `${normalized}.${contractName}` };\n}\n\nexport function noneCV(): NoneCV {\n\treturn { type: \"none\" };\n}\n\nexport function someCV(value: ClarityValue): SomeCV {\n\treturn { type: \"some\", value };\n}\n\nexport function responseOkCV(value: ClarityValue): ResponseOkCV {\n\treturn { type: \"ok\", value };\n}\n\nexport function responseErrorCV(value: ClarityValue): ResponseErrorCV {\n\treturn { type: \"err\", value };\n}\n\nexport function listCV(values: ClarityValue[]): ListCV {\n\treturn { type: \"list\", value: values };\n}\n\nexport function tupleCV(data: TupleData): TupleCV {\n\tfor (const key in data) {\n\t\tif (!isClarityName(key)) {\n\t\t\tthrow new Error(`\"${key}\" is not a valid Clarity name`);\n\t\t}\n\t}\n\treturn { type: \"tuple\", value: data };\n}\n\nexport function stringAsciiCV(value: string): StringAsciiCV {\n\tif (!isAscii(value))\n\t\tthrow new Error(\"string-ascii holds only ASCII characters\");\n\tif (value.length > MAX_STRING_BYTES)\n\t\tthrow new Error(\n\t\t\t`string-ascii exceeds max size of ${MAX_STRING_BYTES} bytes`,\n\t\t);\n\treturn { type: \"ascii\", value };\n}\n\nexport function stringUtf8CV(value: string): StringUtf8CV {\n\treturn { type: \"utf8\", value };\n}\n\n// Cl namespace — clean API\n\nexport const Cl: {\n\treadonly int: (value: IntegerType) => IntCV;\n\treadonly uint: (value: IntegerType) => UIntCV;\n\treadonly bool: (v: boolean) => BooleanCV;\n\tprincipal(address: string): StandardPrincipalCV | ContractPrincipalCV;\n\taddress(address: string): StandardPrincipalCV | ContractPrincipalCV;\n\treadonly contractPrincipal: (\n\t\taddress: string,\n\t\tcontractName: string,\n\t) => ContractPrincipalCV;\n\treadonly standardPrincipal: (address: string) => StandardPrincipalCV;\n\treadonly buffer: (buffer: Uint8Array) => BufferCV;\n\treadonly bufferFromHex: (hex: string) => BufferCV;\n\treadonly bufferFromAscii: (ascii: string) => BufferCV;\n\treadonly bufferFromUtf8: (utf8: string) => BufferCV;\n\treadonly none: () => NoneCV;\n\treadonly some: (value: ClarityValue) => SomeCV;\n\treadonly ok: (value: ClarityValue) => ResponseOkCV;\n\treadonly error: (value: ClarityValue) => ResponseErrorCV;\n\treadonly list: (values: ClarityValue[]) => ListCV;\n\treadonly tuple: (data: TupleData) => TupleCV;\n\treadonly stringAscii: (value: string) => StringAsciiCV;\n\treadonly stringUtf8: (value: string) => StringUtf8CV;\n\tserialize(value: ClarityValue): string;\n\treadonly deserialize: (bytes: Uint8Array) => ClarityValue;\n} = {\n\tint: intCV,\n\tuint: uintCV,\n\tbool: boolCV,\n\tprincipal(address: string): StandardPrincipalCV | ContractPrincipalCV {\n\t\tconst parsed = parsePrincipal(address);\n\t\tif (!parsed) throw new Error(`Invalid principal: ${address}`);\n\t\treturn parsed.contractName\n\t\t\t? contractPrincipalCV(parsed.address, parsed.contractName)\n\t\t\t: standardPrincipalCV(parsed.address);\n\t},\n\taddress(address: string): StandardPrincipalCV | ContractPrincipalCV {\n\t\treturn Cl.principal(address);\n\t},\n\tcontractPrincipal: contractPrincipalCV,\n\tstandardPrincipal: standardPrincipalCV,\n\tbuffer: bufferCV,\n\tbufferFromHex: (hex: string): BufferCV => bufferCV(hexToBytes(hex)),\n\tbufferFromAscii: (ascii: string): BufferCV => bufferCV(asciiToBytes(ascii)),\n\tbufferFromUtf8: (utf8: string): BufferCV => bufferCV(utf8ToBytes(utf8)),\n\tnone: noneCV,\n\tsome: someCV,\n\tok: responseOkCV,\n\terror: responseErrorCV,\n\tlist: listCV,\n\ttuple: tupleCV,\n\tstringAscii: stringAsciiCV,\n\tstringUtf8: stringUtf8CV,\n\tserialize(value: ClarityValue): string {\n\t\treturn bytesToHex(serializeCVBytes(value));\n\t},\n\tdeserialize: deserializeCVBytes,\n} as const;\n",
|
|
13
13
|
"import {\n\tisAbiBuffer,\n\tisAbiList,\n\tisAbiOptional,\n\tisAbiResponse,\n\tisAbiStringAscii,\n\tisAbiStringUtf8,\n\tisAbiTuple,\n} from \"./abi/guards.ts\";\nimport type { AbiToTS } from \"./abi/mappings.ts\";\nimport type { AbiType } from \"./abi/types.ts\";\nimport { toCamelCase } from \"./abi/utils.ts\";\nimport type { ClarityValue } from \"./types.ts\";\nimport {\n\tboolCV,\n\tbufferCV,\n\tintCV,\n\tlistCV,\n\tnoneCV,\n\tresponseErrorCV,\n\tresponseOkCV,\n\tsomeCV,\n\tstringAsciiCV,\n\tstringUtf8CV,\n\ttupleCV,\n\tuintCV,\n} from \"./values.ts\";\nimport { Cl } from \"./values.ts\";\n\n/** CV type tags — mirrors the discriminants of `ClarityValue`. */\nconst CV_TYPE_TAGS = new Set([\n\t\"int\",\n\t\"uint\",\n\t\"true\",\n\t\"false\",\n\t\"address\",\n\t\"contract\",\n\t\"ascii\",\n\t\"utf8\",\n\t\"buffer\",\n\t\"list\",\n\t\"tuple\",\n\t\"none\",\n\t\"some\",\n\t\"ok\",\n\t\"err\",\n]);\n\n/**\n * Duck-type check: is `value` already a built ClarityValue? Tag-only CVs\n * (`true`/`false`/`none`) have no payload; every other tag carries `value`.\n */\nexport function isClarityValue(value: unknown): value is ClarityValue {\n\tif (typeof value !== \"object\" || value === null) return false;\n\tconst type = (value as { type?: unknown }).type;\n\tif (typeof type !== \"string\" || !CV_TYPE_TAGS.has(type)) return false;\n\tif (type === \"true\" || type === \"false\" || type === \"none\") return true;\n\treturn \"value\" in value;\n}\n\nconst HEX_PAIRS_REGEX = /^(?:[0-9a-fA-F]{2})+$/;\n\n/**\n * Coerce a flexible buffer input to a BufferCV. Accepts `Uint8Array`, a\n * pre-built `BufferCV`, a tagged `{ type: 'ascii' | 'utf8' | 'hex', value }`\n * object, or a bare string (even-length hex — optionally 0x-prefixed — is\n * decoded as hex; anything else is UTF-8 encoded).\n */\nfunction coerceBuffer(value: unknown): ClarityValue {\n\tif (value instanceof Uint8Array) return bufferCV(value);\n\tif (typeof value === \"object\" && value !== null && \"type\" in value) {\n\t\tconst tagged = value as { type: string; value?: unknown };\n\t\tif (tagged.type === \"buffer\" && isClarityValue(value)) return value;\n\t\tif (typeof tagged.value === \"string\") {\n\t\t\tif (tagged.type === \"ascii\") return Cl.bufferFromAscii(tagged.value);\n\t\t\tif (tagged.type === \"utf8\") return Cl.bufferFromUtf8(tagged.value);\n\t\t\tif (tagged.type === \"hex\") return Cl.bufferFromHex(tagged.value);\n\t\t}\n\t\tthrow new Error(`Unsupported buffer input: ${JSON.stringify(value)}`);\n\t}\n\tif (typeof value === \"string\") {\n\t\tconst hex = value.startsWith(\"0x\") ? value.slice(2) : value;\n\t\tif (HEX_PAIRS_REGEX.test(hex)) return Cl.bufferFromHex(hex);\n\t\treturn Cl.bufferFromUtf8(value);\n\t}\n\tthrow new Error(\n\t\t\"buffer arg expects Uint8Array, hex string, { type, value }, or BufferCV\",\n\t);\n}\n\n/**\n * Convert a JS value to a ClarityValue using ABI type information.\n *\n * Pre-built ClarityValues pass through unchanged (escape hatch for callers\n * that already hold a CV). Buffer args additionally accept hex strings and\n * tagged `{ type, value }` objects — matching the generated-client input\n * contract.\n */\nexport function jsToClarityValue(\n\tabiType: AbiType,\n\tvalue: unknown,\n): ClarityValue {\n\t// Buffers first: the tagged `{ type: 'ascii', value }` input form is\n\t// shape-identical to StringAsciiCV, so buffer coercion wins for buff args.\n\tif (isAbiBuffer(abiType)) return coerceBuffer(value);\n\n\tif (isClarityValue(value)) return value;\n\n\tif (abiType === \"uint128\") return uintCV(value as bigint | number);\n\tif (abiType === \"int128\") return intCV(value as bigint | number);\n\tif (abiType === \"bool\") return boolCV(value as boolean);\n\tif (abiType === \"principal\" || abiType === \"trait_reference\")\n\t\treturn Cl.principal(value as string);\n\n\tif (isAbiStringAscii(abiType)) return stringAsciiCV(value as string);\n\tif (isAbiStringUtf8(abiType)) return stringUtf8CV(value as string);\n\n\tif (isAbiList(abiType)) {\n\t\tconst arr = value as unknown[];\n\t\treturn listCV(arr.map((item) => jsToClarityValue(abiType.list.type, item)));\n\t}\n\n\tif (isAbiTuple(abiType)) {\n\t\tconst obj = value as Record<string, unknown>;\n\t\tconst data: Record<string, ClarityValue> = {};\n\t\tfor (const field of abiType.tuple) {\n\t\t\tconst camelKey = toCamelCase(field.name);\n\t\t\tconst hasOriginal = field.name in obj;\n\t\t\tconst hasCamel = camelKey in obj;\n\t\t\tconst fieldValue = hasOriginal\n\t\t\t\t? obj[field.name]\n\t\t\t\t: hasCamel\n\t\t\t\t\t? obj[camelKey]\n\t\t\t\t\t: undefined;\n\t\t\tif (fieldValue === undefined && !isAbiOptional(field.type)) {\n\t\t\t\tthrow new Error(`Missing tuple field: ${field.name}`);\n\t\t\t}\n\t\t\tdata[field.name] = jsToClarityValue(field.type, fieldValue);\n\t\t}\n\t\treturn tupleCV(data);\n\t}\n\n\tif (isAbiOptional(abiType)) {\n\t\tif (value === null || value === undefined) return noneCV();\n\t\treturn someCV(jsToClarityValue(abiType.optional, value));\n\t}\n\n\tif (isAbiResponse(abiType)) {\n\t\tconst obj = value as Record<string, unknown>;\n\t\tif (\"ok\" in obj && !(\"err\" in obj))\n\t\t\treturn responseOkCV(jsToClarityValue(abiType.response.ok, obj.ok));\n\t\tif (\"err\" in obj && !(\"ok\" in obj))\n\t\t\treturn responseErrorCV(jsToClarityValue(abiType.response.error, obj.err));\n\t\tthrow new Error(\"Response must have exactly 'ok' or 'err' property\");\n\t}\n\n\tthrow new Error(`Unknown ABI type: ${JSON.stringify(abiType)}`);\n}\n\n/**\n * Convert a ClarityValue back to a typed JS value using ABI type information.\n */\nexport function clarityValueToJS<T extends AbiType>(\n\tabiType: T,\n\tcv: ClarityValue,\n): AbiToTS<T> {\n\treturn clarityValueToJSInner(abiType, cv) as AbiToTS<T>;\n}\n\n/** Non-generic version for internal use — avoids deep type instantiation. */\nexport function clarityValueToJSUntyped(\n\tabiType: AbiType,\n\tcv: ClarityValue,\n): unknown {\n\treturn clarityValueToJSInner(abiType, cv);\n}\n\nfunction clarityValueToJSInner(abiType: AbiType, cv: ClarityValue): unknown {\n\tif (abiType === \"uint128\" || abiType === \"int128\") {\n\t\tif (cv.type !== \"int\" && cv.type !== \"uint\")\n\t\t\tthrow new Error(`Expected int/uint CV, got ${cv.type}`);\n\t\treturn cv.value;\n\t}\n\n\tif (abiType === \"bool\") {\n\t\tif (cv.type === \"true\") return true;\n\t\tif (cv.type === \"false\") return false;\n\t\tthrow new Error(`Expected bool CV, got ${cv.type}`);\n\t}\n\n\tif (abiType === \"principal\" || abiType === \"trait_reference\") {\n\t\tif (cv.type !== \"address\" && cv.type !== \"contract\")\n\t\t\tthrow new Error(`Expected principal CV, got ${cv.type}`);\n\t\treturn cv.value;\n\t}\n\n\tif (isAbiStringAscii(abiType) || isAbiStringUtf8(abiType)) {\n\t\tif (cv.type !== \"ascii\" && cv.type !== \"utf8\")\n\t\t\tthrow new Error(`Expected string CV, got ${cv.type}`);\n\t\treturn cv.value;\n\t}\n\n\tif (isAbiBuffer(abiType)) {\n\t\tif (cv.type !== \"buffer\")\n\t\t\tthrow new Error(`Expected buffer CV, got ${cv.type}`);\n\t\t// BufferCV stores hex string; convert back to Uint8Array\n\t\tconst hex = cv.value;\n\t\tconst bytes = new Uint8Array(hex.length / 2);\n\t\tfor (let i = 0; i < bytes.length; i++) {\n\t\t\tbytes[i] = Number.parseInt(hex.substring(i * 2, i * 2 + 2), 16);\n\t\t}\n\t\treturn bytes;\n\t}\n\n\tif (isAbiList(abiType)) {\n\t\tif (cv.type !== \"list\") throw new Error(`Expected list CV, got ${cv.type}`);\n\t\treturn cv.value.map((item) =>\n\t\t\tclarityValueToJSInner(abiType.list.type, item),\n\t\t);\n\t}\n\n\tif (isAbiTuple(abiType)) {\n\t\tif (cv.type !== \"tuple\")\n\t\t\tthrow new Error(`Expected tuple CV, got ${cv.type}`);\n\t\tconst result: Record<string, unknown> = {};\n\t\tfor (const field of abiType.tuple) {\n\t\t\tconst fieldCV = cv.value[field.name];\n\t\t\tif (!fieldCV) throw new Error(`Missing tuple field in CV: ${field.name}`);\n\t\t\tconst camelKey = toCamelCase(field.name);\n\t\t\tresult[camelKey] = clarityValueToJSInner(field.type, fieldCV);\n\t\t}\n\t\treturn result;\n\t}\n\n\tif (isAbiOptional(abiType)) {\n\t\tif (cv.type === \"none\") return null;\n\t\tif (cv.type === \"some\")\n\t\t\treturn clarityValueToJSInner(abiType.optional, cv.value);\n\t\tthrow new Error(`Expected optional CV, got ${cv.type}`);\n\t}\n\n\tif (isAbiResponse(abiType)) {\n\t\tif (cv.type === \"ok\")\n\t\t\treturn { ok: clarityValueToJSInner(abiType.response.ok, cv.value) };\n\t\tif (cv.type === \"err\")\n\t\t\treturn { err: clarityValueToJSInner(abiType.response.error, cv.value) };\n\t\tthrow new Error(`Expected response CV, got ${cv.type}`);\n\t}\n\n\tthrow new Error(`Unknown ABI type: ${JSON.stringify(abiType)}`);\n}\n",
|
|
14
14
|
"import { BaseError } from \"../errors/base.ts\";\n\nexport class ConnectError extends BaseError {\n\toverride name = \"ConnectError\";\n}\n\nexport enum JsonRpcErrorCode {\n\tParseError = -32700,\n\tInvalidRequest = -32600,\n\tMethodNotFound = -32601,\n\tInvalidParams = -32602,\n\tInternalError = -32603,\n\tUserRejection = -31001,\n}\n\n/**\n * A wallet's JSON-RPC error. `rpcCode` is the wallet's numeric code (see\n * {@link JsonRpcErrorCode}); `code` is the package-wide string identifier\n * every `BaseError` carries.\n */\nexport class JsonRpcError extends ConnectError {\n\toverride name = \"JsonRpcError\";\n\trpcCode: number;\n\tdata?: unknown;\n\n\tconstructor(\n\t\tmessage: string,\n\t\tcode: number,\n\t\toptions?: { data?: unknown; cause?: Error },\n\t) {\n\t\tconst details =\n\t\t\toptions?.data !== undefined\n\t\t\t\t? typeof options.data === \"string\"\n\t\t\t\t\t? options.data\n\t\t\t\t\t: JSON.stringify(options.data)\n\t\t\t\t: undefined;\n\t\tsuper(message, { cause: options?.cause, details });\n\t\tthis.rpcCode = code;\n\t\tthis.data = options?.data;\n\t}\n}\n",
|
|
15
15
|
"import { ConnectError } from \"./errors.ts\";\nimport type { WalletProvider } from \"./types.ts\";\n\ndeclare const window:\n\t| {\n\t\t\tStacksProvider?: WalletProvider;\n\t\t\tLeatherProvider?: WalletProvider;\n\t\t\tXverseProvider?: WalletProvider;\n\t\t\tHiroWalletProvider?: WalletProvider;\n\t }\n\t| 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\tcustomProvider = provider;\n}\n\nexport function getProvider(): WalletProvider {\n\tif (customProvider) return customProvider;\n\n\tif (typeof window === \"undefined\") {\n\t\tthrow new ConnectError(\"No Stacks wallet found\");\n\t}\n\n\tconst provider =\n\t\twindow.StacksProvider ??\n\t\twindow.LeatherProvider ??\n\t\twindow.XverseProvider ??\n\t\twindow.HiroWalletProvider;\n\n\tif (!provider) throw new ConnectError(\"No Stacks wallet found\");\n\treturn provider;\n}\n\nexport function isWalletInstalled(): boolean {\n\treturn (\n\t\ttypeof window !== \"undefined\" &&\n\t\t!!(\n\t\t\twindow.StacksProvider ||\n\t\t\twindow.LeatherProvider ||\n\t\t\twindow.XverseProvider ||\n\t\t\twindow.HiroWalletProvider\n\t\t)\n\t);\n}\n",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"import { isClarityValue } from \"../clarity/bridge.ts\";\nimport { serializeCVBytes } from \"../clarity/serialize.ts\";\nimport { bytesToHex } from \"../utils/encoding.ts\";\nimport { ConnectError, JsonRpcError } from \"./errors.ts\";\nimport { getProvider } from \"./provider.ts\";\nimport { cacheAddresses } from \"./storage.ts\";\nimport type { MethodParams, MethodResult, Methods } from \"./types.ts\";\n\nconst POST_CONDITION_TYPES = new Set([\n\t\"stx-postcondition\",\n\t\"ft-postcondition\",\n\t\"nft-postcondition\",\n]);\n\nfunction serializeParams(value: unknown): unknown {\n\tif (value === null || value === undefined) return value;\n\tif (typeof value === \"bigint\") return value.toString();\n\tif (Array.isArray(value)) return value.map(serializeParams);\n\n\tif (typeof value === \"object\") {\n\t\tif (value instanceof Uint8Array) return value;\n\n\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\tif (POST_CONDITION_TYPES.has((value as any).type)) return value;\n\n\t\tif (isClarityValue(value)) {\n\t\t\treturn bytesToHex(serializeCVBytes(value));\n\t\t}\n\n\t\tconst result: Record<string, unknown> = {};\n\t\tfor (const [k, v] of Object.entries(value)) {\n\t\t\tresult[k] = serializeParams(v);\n\t\t}\n\t\treturn result;\n\t}\n\n\treturn value;\n}\n\nconst ADDRESS_METHODS = new Set([\"getAddresses\", \"stx_getAddresses\"]);\n\nexport async function request<M extends keyof Methods>(\n\tmethod: M,\n\t...args: MethodParams<M> extends undefined ? [] : [params: MethodParams<M>]\n): Promise<MethodResult<M>> {\n\tconst provider = getProvider();\n\n\tconst params = args[0];\n\tconst serialized = params ? serializeParams(params) : undefined;\n\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\tlet result: any;\n\ttry {\n\t\tresult = await provider.request(method as string, serialized);\n\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t} catch (thrown: any) {\n\t\t// Leather rejects with the whole JSON-RPC envelope: the error is under `.error`.\n\t\tconst err = thrown?.error?.code !== undefined ? thrown.error : thrown;\n\t\tif (err?.code !== undefined) {\n\t\t\tthrow new JsonRpcError(err.message ?? String(err), err.code, {\n\t\t\t\tdata: err.data,\n\t\t\t});\n\t\t}\n\t\tthrow new ConnectError(err?.message ?? \"Wallet request failed\", {\n\t\t\tcause: err instanceof Error ? err : undefined,\n\t\t});\n\t}\n\n\t// Leather resolves with the JSON-RPC envelope `{ jsonrpc, id, result | error }`; Xverse with the bare result.\n\tif (result?.jsonrpc !== undefined) {\n\t\tif (result.error) {\n\t\t\tthrow new JsonRpcError(\n\t\t\t\tresult.error.message ?? \"Wallet request failed\",\n\t\t\t\tresult.error.code,\n\t\t\t\t{ data: result.error.data },\n\t\t\t);\n\t\t}\n\t\tresult = result.result;\n\t}\n\n\tif (ADDRESS_METHODS.has(method as string) && result?.addresses) {\n\t\tcacheAddresses(result.addresses);\n\t}\n\n\treturn result as MethodResult<M>;\n}\n",
|
|
18
18
|
"import { getProvider } from \"./provider.ts\";\nimport { request } from \"./request.ts\";\nimport { clearStorage, getStorageData } from \"./storage.ts\";\nimport type { AddressesResult } from \"./types.ts\";\n\nexport async function connect(): Promise<AddressesResult> {\n\treturn request(\"getAddresses\");\n}\n\nexport function disconnect(): void {\n\tclearStorage();\n\ttry {\n\t\tgetProvider().disconnect?.();\n\t} catch {\n\t\t// provider may not exist — that's fine\n\t}\n}\n\nexport function isConnected(): boolean {\n\tconst data = getStorageData();\n\treturn (data?.addresses?.stx?.length ?? 0) > 0;\n}\n"
|
|
19
19
|
],
|
|
20
|
-
"mappings": "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",
|
|
21
|
-
"debugId": "
|
|
20
|
+
"mappings": "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",
|
|
21
|
+
"debugId": "040145FEDA7C36C164756E2164756E21",
|
|
22
22
|
"names": []
|
|
23
23
|
}
|
|
@@ -67,6 +67,8 @@ function bytesToHex(bytes) {
|
|
|
67
67
|
}
|
|
68
68
|
function hexToBytes(hex) {
|
|
69
69
|
let h = without0x(hex);
|
|
70
|
+
if (!/^[0-9a-fA-F]*$/.test(h))
|
|
71
|
+
throw new Error("Invalid byte sequence");
|
|
70
72
|
if (h.length % 2)
|
|
71
73
|
h = `0${h}`;
|
|
72
74
|
const array = new Uint8Array(h.length / 2);
|
|
@@ -927,5 +929,5 @@ function hideModal() {
|
|
|
927
929
|
document.getElementById(MODAL_ID)?.remove();
|
|
928
930
|
}
|
|
929
931
|
|
|
930
|
-
//# debugId=
|
|
932
|
+
//# debugId=79FF14A6B1357B6D64756E2164756E21
|
|
931
933
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"sources": ["../../../../src/connect/walletconnect/crypto.ts", "../../../../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
5
|
"/** WalletConnect v2 envelope encryption (Type 0 + Type 1) + relay JWT auth */\n\nimport { gcm } from \"@noble/ciphers/aes.js\";\nimport { ed25519, x25519 } from \"@noble/curves/ed25519.js\";\nimport { hkdf } from \"@noble/hashes/hkdf.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport { randomBytes } from \"@noble/hashes/utils.js\";\nimport { base58, base64urlnopad } from \"@scure/base\";\nimport { bytesToHex, hexToBytes } from \"../../utils/encoding.ts\";\n\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\nconst TYPE_0 = 0x00;\nconst TYPE_1 = 0x01;\n\n// -- Key generation --\n\nexport function generateKeyPair() {\n\tconst privateKey = randomBytes(KEY_LENGTH);\n\tconst publicKey = x25519.getPublicKey(privateKey);\n\treturn { privateKey, publicKey };\n}\n\nexport function generateSymKey(): Uint8Array {\n\treturn randomBytes(KEY_LENGTH);\n}\n\n/** Derive symmetric key from X25519 shared secret via HKDF */\nexport function deriveSymKey(\n\tselfPrivate: Uint8Array,\n\tpeerPublic: Uint8Array,\n): Uint8Array {\n\tconst shared = x25519.getSharedSecret(selfPrivate, peerPublic);\n\treturn 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\treturn bytesToHex(sha256(symKey));\n}\n\n// -- Base64 helpers (browser-safe) --\n\nexport function encodeBase64(data: Uint8Array): string {\n\tlet binary = \"\";\n\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\tfor (let i = 0; i < data.length; i++) binary += String.fromCharCode(data[i]!);\n\treturn btoa(binary);\n}\n\nexport function decodeBase64(str: string): Uint8Array {\n\tconst binary = atob(str);\n\tconst bytes = new Uint8Array(binary.length);\n\tfor (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n\treturn bytes;\n}\n\n// -- Type 0 envelope (symmetric, pairing) --\n// Layout: [0x00][12-byte IV][ciphertext + 16-byte tag]\n\nexport function encryptType0(\n\tsymKey: Uint8Array,\n\tplaintext: string,\n): Uint8Array {\n\tconst iv = randomBytes(IV_LENGTH);\n\tconst data = new TextEncoder().encode(plaintext);\n\tconst cipher = gcm(symKey, iv);\n\tconst sealed = cipher.encrypt(data);\n\tconst envelope = new Uint8Array(1 + IV_LENGTH + sealed.length);\n\tenvelope[0] = TYPE_0;\n\tenvelope.set(iv, 1);\n\tenvelope.set(sealed, 1 + IV_LENGTH);\n\treturn envelope;\n}\n\nexport function decryptType0(symKey: Uint8Array, envelope: Uint8Array): string {\n\tif (envelope[0] !== TYPE_0) throw new Error(\"Not a type-0 envelope\");\n\tconst iv = envelope.subarray(1, 1 + IV_LENGTH);\n\tconst sealed = envelope.subarray(1 + IV_LENGTH);\n\tconst cipher = gcm(symKey, iv);\n\tconst plain = cipher.decrypt(sealed);\n\treturn 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\tsenderPrivate: Uint8Array,\n\treceiverPublic: Uint8Array,\n\tplaintext: string,\n): Uint8Array {\n\tconst senderPublic = x25519.getPublicKey(senderPrivate);\n\tconst symKey = deriveSymKey(senderPrivate, receiverPublic);\n\tconst iv = randomBytes(IV_LENGTH);\n\tconst data = new TextEncoder().encode(plaintext);\n\tconst cipher = gcm(symKey, iv);\n\tconst sealed = cipher.encrypt(data);\n\tconst envelope = new Uint8Array(1 + KEY_LENGTH + IV_LENGTH + sealed.length);\n\tenvelope[0] = TYPE_1;\n\tenvelope.set(senderPublic, 1);\n\tenvelope.set(iv, 1 + KEY_LENGTH);\n\tenvelope.set(sealed, 1 + KEY_LENGTH + IV_LENGTH);\n\treturn envelope;\n}\n\nexport function decryptType1(\n\treceiverPrivate: Uint8Array,\n\tenvelope: Uint8Array,\n): string {\n\tif (envelope[0] !== TYPE_1) throw new Error(\"Not a type-1 envelope\");\n\tconst senderPublic = envelope.subarray(1, 1 + KEY_LENGTH);\n\tconst iv = envelope.subarray(1 + KEY_LENGTH, 1 + KEY_LENGTH + IV_LENGTH);\n\tconst sealed = envelope.subarray(1 + KEY_LENGTH + IV_LENGTH);\n\tconst symKey = deriveSymKey(receiverPrivate, senderPublic);\n\tconst cipher = gcm(symKey, iv);\n\tconst plain = cipher.decrypt(sealed);\n\treturn new TextDecoder().decode(plain);\n}\n\n// -- Unified decrypt --\n\nexport function decrypt(\n\tkeyOrPrivate: Uint8Array,\n\tenvelope: Uint8Array,\n): string {\n\treturn envelope[0] === TYPE_1\n\t\t? decryptType1(keyOrPrivate, envelope)\n\t\t: 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\tconst prefixed = new Uint8Array(ED25519_MULTICODEC.length + publicKey.length);\n\tprefixed.set(ED25519_MULTICODEC);\n\tprefixed.set(publicKey, ED25519_MULTICODEC.length);\n\treturn `did:key:z${base58.encode(prefixed)}`;\n}\n\nfunction base64urlEncode(data: Uint8Array | string): string {\n\tconst bytes =\n\t\ttypeof data === \"string\" ? new TextEncoder().encode(data) : data;\n\treturn base64urlnopad.encode(bytes);\n}\n\n/** Generate a signed JWT for WC relay authentication */\nexport function createRelayAuthJwt(relayUrl: string): {\n\tjwt: string;\n\tclientId: string;\n} {\n\tconst privateKey = ed25519.utils.randomSecretKey();\n\tconst publicKey = ed25519.getPublicKey(privateKey);\n\tconst clientId = encodeDidKey(publicKey);\n\n\tconst now = Math.floor(Date.now() / 1000);\n\tconst header = base64urlEncode(JSON.stringify({ alg: \"EdDSA\", typ: \"JWT\" }));\n\tconst payload = base64urlEncode(\n\t\tJSON.stringify({\n\t\t\tiss: clientId,\n\t\t\tsub: bytesToHex(randomBytes(32)),\n\t\t\taud: relayUrl,\n\t\t\tiat: now,\n\t\t\texp: now + 86400, // 24 hours\n\t\t\tact: \"client_auth\",\n\t\t}),\n\t);\n\n\tconst message = new TextEncoder().encode(`${header}.${payload}`);\n\tconst signature = base64urlEncode(ed25519.sign(message, privateKey));\n\n\treturn { jwt: `${header}.${payload}.${signature}`, clientId };\n}\n\nexport { bytesToHex, hexToBytes };\n",
|
|
6
|
-
"const hexes = Array.from({ length: 256 }, (_, i) =>\n\ti.toString(16).padStart(2, \"0\"),\n);\n\nexport function bytesToHex(bytes: Uint8Array): string {\n\tlet hex = \"\";\n\tfor (const b of bytes) {\n\t\thex += hexes[b];\n\t}\n\treturn hex;\n}\n\nexport function hexToBytes(hex: string): Uint8Array {\n\tlet h = without0x(hex);\n\tif (h.length % 2) h = `0${h}`;\n\n\tconst array = new Uint8Array(h.length / 2);\n\tfor (let i = 0; i < array.length; i++) {\n\t\tconst j = i * 2;\n\t\tconst byte = Number.parseInt(h.slice(j, j + 2), 16);\n\t\tif (Number.isNaN(byte) || byte < 0)\n\t\t\tthrow new Error(\"Invalid byte sequence\");\n\t\tarray[i] = byte;\n\t}\n\treturn array;\n}\n\nexport function with0x(value: string): string {\n\treturn /^0x/i.test(value) ? value : `0x${value}`;\n}\n\nexport function without0x(value: string): string {\n\treturn /^0x/i.test(value) ? value.slice(2) : value;\n}\n\nexport function utf8ToBytes(str: string): Uint8Array {\n\treturn new TextEncoder().encode(str);\n}\n\nexport function bytesToUtf8(bytes: Uint8Array): string {\n\treturn new TextDecoder().decode(bytes);\n}\n\nexport function asciiToBytes(str: string): Uint8Array {\n\tconst bytes = new Uint8Array(str.length);\n\tfor (let i = 0; i < str.length; i++) {\n\t\tbytes[i] = str.charCodeAt(i) & 0xff;\n\t}\n\treturn bytes;\n}\n\nexport function bytesToAscii(bytes: Uint8Array): string {\n\treturn String.fromCharCode(...bytes);\n}\n\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\tif (arrays.length === 1) return arrays[0]!;\n\tconst length = arrays.reduce((a, arr) => a + arr.length, 0);\n\tconst result = new Uint8Array(length);\n\tlet pad = 0;\n\tfor (const arr of arrays) {\n\t\tresult.set(arr, pad);\n\t\tpad += arr.length;\n\t}\n\treturn result;\n}\n\nexport type IntegerType = number | string | bigint | Uint8Array;\n\nexport function intToBigInt(value: IntegerType): bigint {\n\tif (typeof value === \"bigint\") return value;\n\tif (typeof value === \"string\")
|
|
6
|
+
"const hexes = Array.from({ length: 256 }, (_, i) =>\n\ti.toString(16).padStart(2, \"0\"),\n);\n\nexport function bytesToHex(bytes: Uint8Array): string {\n\tlet hex = \"\";\n\tfor (const b of bytes) {\n\t\thex += hexes[b];\n\t}\n\treturn hex;\n}\n\nexport function hexToBytes(hex: string): Uint8Array {\n\tlet h = without0x(hex);\n\t// parseInt reads \"1g\" as 1, so the whole string is checked first.\n\tif (!/^[0-9a-fA-F]*$/.test(h)) throw new Error(\"Invalid byte sequence\");\n\tif (h.length % 2) h = `0${h}`;\n\n\tconst array = new Uint8Array(h.length / 2);\n\tfor (let i = 0; i < array.length; i++) {\n\t\tconst j = i * 2;\n\t\tconst byte = Number.parseInt(h.slice(j, j + 2), 16);\n\t\tif (Number.isNaN(byte) || byte < 0)\n\t\t\tthrow new Error(\"Invalid byte sequence\");\n\t\tarray[i] = byte;\n\t}\n\treturn array;\n}\n\nexport function with0x(value: string): string {\n\treturn /^0x/i.test(value) ? value : `0x${value}`;\n}\n\nexport function without0x(value: string): string {\n\treturn /^0x/i.test(value) ? value.slice(2) : value;\n}\n\nexport function utf8ToBytes(str: string): Uint8Array {\n\treturn new TextEncoder().encode(str);\n}\n\nexport function bytesToUtf8(bytes: Uint8Array): string {\n\treturn new TextDecoder().decode(bytes);\n}\n\nexport function asciiToBytes(str: string): Uint8Array {\n\tconst bytes = new Uint8Array(str.length);\n\tfor (let i = 0; i < str.length; i++) {\n\t\tbytes[i] = str.charCodeAt(i) & 0xff;\n\t}\n\treturn bytes;\n}\n\n/** Whether every character is 7-bit ASCII. */\nexport function isAscii(str: string): boolean {\n\tfor (let i = 0; i < str.length; i++) {\n\t\tif (str.charCodeAt(i) > 0x7f) return false;\n\t}\n\treturn true;\n}\n\nexport function bytesToAscii(bytes: Uint8Array): string {\n\treturn String.fromCharCode(...bytes);\n}\n\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\tif (arrays.length === 1) return arrays[0]!;\n\tconst length = arrays.reduce((a, arr) => a + arr.length, 0);\n\tconst result = new Uint8Array(length);\n\tlet pad = 0;\n\tfor (const arr of arrays) {\n\t\tresult.set(arr, pad);\n\t\tpad += arr.length;\n\t}\n\treturn result;\n}\n\nexport type IntegerType = number | string | bigint | Uint8Array;\n\nexport function intToBigInt(value: IntegerType): bigint {\n\tif (typeof value === \"bigint\") return value;\n\tif (typeof value === \"string\") {\n\t\t// BigInt(\"\") is 0n; an empty or blank string is not a number.\n\t\tif (value.trim() === \"\")\n\t\t\tthrow new SyntaxError(\"Cannot convert an empty string to an integer\");\n\t\treturn BigInt(value);\n\t}\n\tif (typeof value === \"number\") {\n\t\tif (!Number.isInteger(value))\n\t\t\tthrow new RangeError(\"Values of type 'number' must be an integer.\");\n\t\tif (value > Number.MAX_SAFE_INTEGER)\n\t\t\tthrow new RangeError(\n\t\t\t\t`Values of type 'number' must be <= ${Number.MAX_SAFE_INTEGER}. Use BigInt instead.`,\n\t\t\t);\n\t\treturn BigInt(value);\n\t}\n\tif (value instanceof Uint8Array) return BigInt(`0x${bytesToHex(value)}`);\n\tthrow new TypeError(\"Must be a number, bigint, string, or Uint8Array.\");\n}\n\nexport function intToBytes(value: IntegerType, byteLength: number): Uint8Array {\n\treturn bigIntToBytes(intToBigInt(value), byteLength);\n}\n\nexport function bigIntToBytes(value: bigint, length = 16): Uint8Array {\n\tconst hex = value.toString(16).padStart(length * 2, \"0\");\n\treturn hexToBytes(hex);\n}\n\nexport function intToHex(integer: IntegerType, byteLength = 8): string {\n\tconst value = typeof integer === \"bigint\" ? integer : intToBigInt(integer);\n\treturn value.toString(16).padStart(byteLength * 2, \"0\");\n}\n\nexport function toTwos(value: bigint, width: bigint): bigint {\n\tconst limit = BigInt(1) << (width - BigInt(1));\n\tif (value < -limit || value > limit - BigInt(1)) {\n\t\tthrow new Error(`Unable to represent integer in width: ${width}`);\n\t}\n\tif (value >= BigInt(0)) return value;\n\treturn value + (BigInt(1) << width);\n}\n\nexport function fromTwos(value: bigint, width: bigint): bigint {\n\tif (value & (BigInt(1) << (width - BigInt(1)))) {\n\t\treturn value - (BigInt(1) << width);\n\t}\n\treturn value;\n}\n\nexport function bytesToTwosBigInt(bytes: Uint8Array): bigint {\n\tif (bytes.length === 0) return 0n;\n\tconst hex = bytesToHex(bytes);\n\tif (hex.length === 0) return 0n;\n\treturn fromTwos(BigInt(`0x${hex}`), BigInt(bytes.byteLength * 8));\n}\n\nexport function writeUInt32BE(value: number): Uint8Array {\n\tconst buf = new Uint8Array(4);\n\tbuf[0] = (value >>> 24) & 0xff;\n\tbuf[1] = (value >>> 16) & 0xff;\n\tbuf[2] = (value >>> 8) & 0xff;\n\tbuf[3] = value & 0xff;\n\treturn buf;\n}\n\nexport function readUInt32BE(bytes: Uint8Array, offset = 0): number {\n\treturn (\n\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t((bytes[offset]! << 24) |\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t\t(bytes[offset + 1]! << 16) |\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t\t(bytes[offset + 2]! << 8) |\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t\tbytes[offset + 3]!) >>>\n\t\t0\n\t);\n}\n\nexport function writeUInt16BE(value: number): Uint8Array {\n\tconst buf = new Uint8Array(2);\n\tbuf[0] = (value >>> 8) & 0xff;\n\tbuf[1] = value & 0xff;\n\treturn buf;\n}\n\nexport function readUInt16BE(bytes: Uint8Array, offset = 0): number {\n\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\treturn ((bytes[offset]! << 8) | bytes[offset + 1]!) >>> 0;\n}\n\nexport function writeUInt8(value: number): Uint8Array {\n\treturn new Uint8Array([value & 0xff]);\n}\n",
|
|
7
7
|
"/** WalletConnect v2 relay client (wss://relay.walletconnect.com) */\n\nimport { createRelayAuthJwt, encodeBase64, encryptType0 } from \"./crypto.ts\";\nimport type { WcRelayMessage } from \"./types.ts\";\n\nconst DEFAULT_RELAY = \"wss://relay.walletconnect.com\";\nconst DEFAULT_TTL = 300; // 5 minutes\n\ntype PendingRpc = {\n\tresolve: (v: unknown) => void;\n\treject: (e: Error) => void;\n};\n\ntype SubscriptionHandler = (message: WcRelayMessage) => void;\n\nexport class WcRelay {\n\tprivate ws: WebSocket | null = null;\n\tprivate url: string;\n\tprivate projectId: string;\n\tprivate nextId = Date.now() * 1000 + Math.floor(Math.random() * 1000);\n\tprivate pending = new Map<number, PendingRpc>();\n\tprivate subscriptions = new Map<string, SubscriptionHandler>();\n\t/** Map subscription ID (from server) → topic */\n\tprivate subIdToTopic = new Map<string, string>();\n\tprivate destroyed = false;\n\tprivate reconnecting = false;\n\tprivate reconnectAttempt = 0;\n\tprivate reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n\tprivate connectPromise: Promise<void> | null = null;\n\tprivate connectReject: ((e: Error) => void) | null = null;\n\n\tconstructor(projectId: string, relayUrl?: string) {\n\t\tthis.projectId = projectId;\n\t\tthis.url = relayUrl ?? DEFAULT_RELAY;\n\t}\n\n\t// -- Connection --\n\n\tasync connect(): Promise<void> {\n\t\tif (this.ws?.readyState === WebSocket.OPEN) return;\n\t\tif (this.connectPromise) return this.connectPromise;\n\n\t\tthis.connectPromise = new Promise<void>((resolve, reject) => {\n\t\t\tthis.connectReject = reject;\n\t\t\tconst { jwt } = createRelayAuthJwt(this.url);\n\t\t\tconst wsUrl = `${this.url}/?auth=${jwt}&projectId=${this.projectId}`;\n\t\t\tthis.ws = new WebSocket(wsUrl);\n\n\t\t\tthis.ws.addEventListener(\n\t\t\t\t\"open\",\n\t\t\t\t() => {\n\t\t\t\t\tthis.reconnectAttempt = 0;\n\t\t\t\t\tthis.reconnecting = false;\n\t\t\t\t\tthis.connectPromise = null;\n\t\t\t\t\tthis.connectReject = null;\n\t\t\t\t\tresolve();\n\t\t\t\t},\n\t\t\t\t{ once: true },\n\t\t\t);\n\n\t\t\tthis.ws.addEventListener(\n\t\t\t\t\"error\",\n\t\t\t\t(e) => {\n\t\t\t\t\tthis.connectPromise = null;\n\t\t\t\t\tthis.connectReject = null;\n\t\t\t\t\treject(new Error(`WC relay connection failed: ${e}`));\n\t\t\t\t},\n\t\t\t\t{ once: true },\n\t\t\t);\n\n\t\t\tthis.ws.addEventListener(\"message\", (event) => {\n\t\t\t\tthis.handleMessage(\n\t\t\t\t\ttypeof event.data === \"string\"\n\t\t\t\t\t\t? event.data\n\t\t\t\t\t\t: new TextDecoder().decode(event.data as ArrayBuffer),\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tthis.ws.addEventListener(\"close\", () => {\n\t\t\t\tthis.connectPromise = null;\n\t\t\t\tif (!this.destroyed) this.handleDisconnect();\n\t\t\t});\n\t\t});\n\n\t\treturn this.connectPromise;\n\t}\n\n\t// -- Publish/Subscribe --\n\n\tasync subscribe(\n\t\ttopic: string,\n\t\thandler: SubscriptionHandler,\n\t): Promise<string> {\n\t\tawait this.connect();\n\t\tthis.subscriptions.set(topic, handler);\n\t\tconst subId = (await this.rpc(\"irn_subscribe\", { topic })) as string;\n\t\tthis.subIdToTopic.set(subId, topic);\n\t\treturn subId;\n\t}\n\n\tasync publish(\n\t\ttopic: string,\n\t\tmessage: string,\n\t\ttag: number,\n\t\tttl: number = DEFAULT_TTL,\n\t): Promise<void> {\n\t\tawait this.connect();\n\t\tawait this.rpc(\"irn_publish\", {\n\t\t\ttopic,\n\t\t\tmessage,\n\t\t\tttl,\n\t\t\ttag,\n\t\t\tprompt: false,\n\t\t});\n\t}\n\n\t/** Encrypt + publish a type-0 envelope */\n\tasync publishEncrypted(\n\t\ttopic: string,\n\t\tsymKey: Uint8Array,\n\t\tpayload: unknown,\n\t\ttag: number,\n\t\tttl: number = DEFAULT_TTL,\n\t): Promise<void> {\n\t\tconst plaintext = JSON.stringify(payload);\n\t\tconst envelope = encryptType0(symKey, plaintext);\n\t\tawait this.publish(topic, encodeBase64(envelope), tag, ttl);\n\t}\n\n\t// -- Internal --\n\n\tprivate rpc(\n\t\tmethod: string,\n\t\tparams: Record<string, unknown>,\n\t): Promise<unknown> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n\t\t\t\treturn reject(new Error(\"WC relay not connected\"));\n\t\t\t}\n\t\t\tconst id = this.nextId++;\n\t\t\tthis.pending.set(id, { resolve, reject });\n\t\t\tthis.ws.send(JSON.stringify({ id, jsonrpc: \"2.0\", method, params }));\n\t\t});\n\t}\n\n\tprivate handleMessage(raw: string) {\n\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\tlet msg: any;\n\t\ttry {\n\t\t\tmsg = JSON.parse(raw);\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\n\t\t// RPC response\n\t\tif (\"id\" in msg && msg.id != null && this.pending.has(msg.id)) {\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\tconst p = this.pending.get(msg.id)!;\n\t\t\tthis.pending.delete(msg.id);\n\t\t\tif (msg.error) {\n\t\t\t\tp.reject(new Error(`WC relay error: ${msg.error.message}`));\n\t\t\t} else {\n\t\t\t\tp.resolve(msg.result);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Server push (irn_subscription)\n\t\tif (msg.method === \"irn_subscription\" && msg.params) {\n\t\t\tconst { id: subId, data } = msg.params;\n\t\t\tconst topic = data?.topic ?? this.subIdToTopic.get(subId);\n\t\t\tconst handler = topic ? this.subscriptions.get(topic) : undefined;\n\t\t\tif (handler && data) {\n\t\t\t\thandler({\n\t\t\t\t\ttopic: data.topic,\n\t\t\t\t\tmessage: data.message,\n\t\t\t\t\tpublishedAt: data.publishedAt ?? Date.now(),\n\t\t\t\t\ttag: data.tag ?? 0,\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Acknowledge\n\t\t\tif (msg.id != null) {\n\t\t\t\tthis.ws?.send(\n\t\t\t\t\tJSON.stringify({ id: msg.id, jsonrpc: \"2.0\", result: true }),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate handleDisconnect() {\n\t\tthis.ws = null;\n\t\tfor (const [, p] of this.pending) {\n\t\t\tp.reject(new Error(\"WC relay disconnected\"));\n\t\t}\n\t\tthis.pending.clear();\n\n\t\tif (this.subscriptions.size > 0 && this.reconnectAttempt < 5) {\n\t\t\tthis.scheduleReconnect();\n\t\t}\n\t}\n\n\tprivate scheduleReconnect() {\n\t\tif (this.destroyed || this.reconnecting) return;\n\t\tthis.reconnecting = true;\n\t\tconst delay = 1000 * 2 ** this.reconnectAttempt;\n\t\tthis.reconnectAttempt++;\n\n\t\tthis.reconnectTimer = setTimeout(async () => {\n\t\t\tthis.reconnecting = false;\n\t\t\ttry {\n\t\t\t\tawait this.connect();\n\t\t\t\t// Re-subscribe all topics\n\t\t\t\tfor (const [topic] of this.subscriptions) {\n\t\t\t\t\tconst subId = (await this.rpc(\"irn_subscribe\", { topic })) as string;\n\t\t\t\t\tthis.subIdToTopic.set(subId, topic);\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tif (!this.destroyed && this.subscriptions.size > 0) {\n\t\t\t\t\tthis.handleDisconnect();\n\t\t\t\t}\n\t\t\t}\n\t\t}, delay);\n\t}\n\n\tdestroy(): void {\n\t\tthis.destroyed = true;\n\t\tif (this.reconnectTimer) clearTimeout(this.reconnectTimer);\n\t\tif (this.connectReject) {\n\t\t\tthis.connectReject(new Error(\"WC relay destroyed\"));\n\t\t\tthis.connectReject = null;\n\t\t\tthis.connectPromise = null;\n\t\t}\n\t\tfor (const [, p] of this.pending) {\n\t\t\tp.reject(new Error(\"WC relay destroyed\"));\n\t\t}\n\t\tthis.pending.clear();\n\t\tthis.subscriptions.clear();\n\t\tthis.subIdToTopic.clear();\n\t\tif (this.ws) {\n\t\t\tthis.ws.close();\n\t\t\tthis.ws = null;\n\t\t}\n\t}\n}\n",
|
|
8
8
|
"/** WalletConnect v2 session state machine (pairing → proposal → settlement) */\n\nimport {\n\tbytesToHex,\n\tdecodeBase64,\n\tdecryptType0,\n\tdecryptType1,\n\tderiveSymKey,\n\tgenerateKeyPair,\n\tgenerateSymKey,\n\thexToBytes,\n\tsymKeyToTopic,\n} from \"./crypto.ts\";\nimport { WcRelay } from \"./relay.ts\";\nimport type {\n\tWcJsonRpc,\n\tWcPairResult,\n\tWcProposal,\n\tWcProviderConfig,\n\tWcSessionData,\n\tWcSessionSettled,\n} from \"./types.ts\";\n\nconst STORAGE_KEY = \"@secondlayer/wc:session\";\nconst SESSION_EXPIRY = 7 * 24 * 60 * 60; // 7 days in seconds\n\nconst STACKS_METHODS = [\n\t\"stx_getAddresses\",\n\t\"stx_transferStx\",\n\t\"stx_callContract\",\n\t\"stx_deployContract\",\n\t\"stx_signMessage\",\n\t\"stx_signTransaction\",\n];\n\nconst STACKS_EVENTS = [\"chainChanged\", \"accountsChanged\"];\n\ndeclare const localStorage:\n\t| {\n\t\t\tgetItem(key: string): string | null;\n\t\t\tsetItem(key: string, value: string): void;\n\t\t\tremoveItem(key: string): void;\n\t }\n\t| undefined;\n\nfunction getStorage() {\n\treturn typeof localStorage !== \"undefined\" ? localStorage : undefined;\n}\n\nexport class WcSession {\n\tprivate relay: WcRelay;\n\tprivate config: WcProviderConfig;\n\tprivate chains: string[];\n\n\t// Pairing state\n\tprivate pairingSymKey: Uint8Array | null = null;\n\tprivate pairingTopic: string | null = null;\n\tprivate selfKeyPair: {\n\t\tprivateKey: Uint8Array;\n\t\tpublicKey: Uint8Array;\n\t} | null = null;\n\n\t// Session state\n\tprivate sessionData: WcSessionData | null = null;\n\tprivate sessionSymKey: Uint8Array | null = null;\n\tprivate pending = new Map<\n\t\tnumber,\n\t\t{ resolve: (v: unknown) => void; reject: (e: Error) => void }\n\t>();\n\tprivate nextId = Date.now();\n\n\tconstructor(config: WcProviderConfig) {\n\t\tthis.config = config;\n\t\tthis.chains = config.chains ?? [\"stacks:1\"];\n\t\tthis.relay = new WcRelay(config.projectId, config.relayUrl);\n\t}\n\n\t/** Try restoring a persisted session. Returns true if valid session found. */\n\trestore(): boolean {\n\t\ttry {\n\t\t\tconst raw = getStorage()?.getItem(STORAGE_KEY);\n\t\t\tif (!raw) return false;\n\t\t\tconst data = JSON.parse(raw) as WcSessionData;\n\t\t\tif (data.expiry < Date.now() / 1000) {\n\t\t\t\tgetStorage()?.removeItem(STORAGE_KEY);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.sessionData = data;\n\t\t\tthis.sessionSymKey = hexToBytes(data.symKey);\n\t\t\t// Subscribe to session topic for incoming requests (fire-and-forget)\n\t\t\tthis.subscribeSession().catch(() => {});\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/** Initiate pairing. Returns URI for QR code + approval promise. */\n\tasync pair(): Promise<WcPairResult> {\n\t\tthis.pairingSymKey = generateSymKey();\n\t\tthis.pairingTopic = symKeyToTopic(this.pairingSymKey);\n\t\tthis.selfKeyPair = generateKeyPair();\n\n\t\tconst symKeyHex = bytesToHex(this.pairingSymKey);\n\t\tconst uri = `wc:${this.pairingTopic}@2?relay-protocol=irn&symKey=${symKeyHex}`;\n\n\t\tconst approval = new Promise<WcSessionSettled>((resolve, reject) => {\n\t\t\tthis.relay\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\t\t.subscribe(this.pairingTopic!, (msg) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.handlePairingMessage(msg.message, resolve, reject);\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\treject(err instanceof Error ? err : new Error(String(err)));\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(reject);\n\t\t});\n\n\t\treturn { uri, approval };\n\t}\n\n\t/** Send a JSON-RPC request over the session. */\n\tasync request(method: string, params?: unknown): Promise<unknown> {\n\t\tif (!this.sessionData || !this.sessionSymKey) {\n\t\t\tthrow new Error(\"No active WC session\");\n\t\t}\n\n\t\tconst id = this.nextId++;\n\t\tconst payload = {\n\t\t\tid,\n\t\t\tjsonrpc: \"2.0\" as const,\n\t\t\tmethod: \"wc_sessionRequest\",\n\t\t\tparams: {\n\t\t\t\trequest: { method, params },\n\t\t\t\tchainId: this.chains[0],\n\t\t\t},\n\t\t};\n\n\t\tconst sessionData = this.sessionData;\n\t\tconst sessionSymKey = this.sessionSymKey;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.pending.set(id, { resolve, reject });\n\t\t\tthis.relay\n\t\t\t\t.publishEncrypted(\n\t\t\t\t\tsessionData.topic,\n\t\t\t\t\tsessionSymKey,\n\t\t\t\t\tpayload,\n\t\t\t\t\t1108, // tag for session request\n\t\t\t\t\tSESSION_EXPIRY,\n\t\t\t\t)\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tthis.pending.delete(id);\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t});\n\t}\n\n\tdisconnect(): void {\n\t\tif (this.sessionData && this.sessionSymKey) {\n\t\t\tconst id = this.nextId++;\n\t\t\tconst payload = {\n\t\t\t\tid,\n\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\tmethod: \"wc_sessionDelete\",\n\t\t\t\tparams: { code: 6000, message: \"User disconnected\" },\n\t\t\t};\n\t\t\t// Best-effort notify peer\n\t\t\tthis.relay\n\t\t\t\t.publishEncrypted(\n\t\t\t\t\tthis.sessionData.topic,\n\t\t\t\t\tthis.sessionSymKey,\n\t\t\t\t\tpayload,\n\t\t\t\t\t1112,\n\t\t\t\t)\n\t\t\t\t.catch(() => {});\n\t\t}\n\t\tthis.sessionData = null;\n\t\tthis.sessionSymKey = null;\n\t\tthis.pending.clear();\n\t\tgetStorage()?.removeItem(STORAGE_KEY);\n\t\tthis.relay.destroy();\n\t}\n\n\tget session(): WcSessionData | null {\n\t\treturn this.sessionData;\n\t}\n\n\t// -- Internal --\n\n\tprivate handlePairingMessage(\n\t\tmessage: string,\n\t\tresolve: (v: WcSessionSettled) => void,\n\t\treject: (e: Error) => void,\n\t) {\n\t\tconst envelope = decodeBase64(message);\n\t\tlet plaintext: string;\n\n\t\t// Could be type 0 (symmetric) or type 1 (asymmetric)\n\t\tif (envelope[0] === 0x01 && this.selfKeyPair) {\n\t\t\tplaintext = decryptType1(this.selfKeyPair.privateKey, envelope);\n\t\t} else if (this.pairingSymKey) {\n\t\t\tplaintext = decryptType0(this.pairingSymKey, envelope);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\tlet rpc: WcJsonRpc;\n\t\ttry {\n\t\t\trpc = JSON.parse(plaintext) as WcJsonRpc;\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\n\t\tif (rpc.method === \"wc_sessionPropose\") {\n\t\t\tthis.handleProposal(rpc as WcJsonRpc<WcProposal>, resolve, reject).catch(\n\t\t\t\treject,\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate async handleProposal(\n\t\trpc: WcJsonRpc<WcProposal>,\n\t\tresolve: (v: WcSessionSettled) => void,\n\t\treject: (e: Error) => void,\n\t) {\n\t\ttry {\n\t\t\tconst proposal = rpc.params;\n\t\t\tconst peerPublicKey = hexToBytes(proposal.proposer.publicKey);\n\n\t\t\t// Generate session key pair + derive session symmetric key\n\t\t\tconst sessionKp = generateKeyPair();\n\t\t\tconst sessionSymKey = deriveSymKey(sessionKp.privateKey, peerPublicKey);\n\t\t\tconst sessionTopic = symKeyToTopic(sessionSymKey);\n\n\t\t\tconst expiry = Math.floor(Date.now() / 1000) + SESSION_EXPIRY;\n\n\t\t\tconst settled: WcSessionSettled = {\n\t\t\t\trelay: { protocol: \"irn\" },\n\t\t\t\tnamespaces: {\n\t\t\t\t\tstacks: {\n\t\t\t\t\t\tchains: this.chains,\n\t\t\t\t\t\tmethods: STACKS_METHODS,\n\t\t\t\t\t\tevents: STACKS_EVENTS,\n\t\t\t\t\t\taccounts: this.chains.map((c) => `${c}:placeholder`),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcontroller: {\n\t\t\t\t\tpublicKey: bytesToHex(sessionKp.publicKey),\n\t\t\t\t\tmetadata: this.config.metadata,\n\t\t\t\t},\n\t\t\t\texpiry,\n\t\t\t};\n\n\t\t\t// Approve the proposal on the pairing topic\n\t\t\tconst approvePayload = {\n\t\t\t\tid: rpc.id,\n\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\tresult: {\n\t\t\t\t\trelay: { protocol: \"irn\" },\n\t\t\t\t\tresponderPublicKey: bytesToHex(sessionKp.publicKey),\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tawait this.relay.publishEncrypted(\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\t\tthis.pairingTopic!,\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\t\tthis.pairingSymKey!,\n\t\t\t\tapprovePayload,\n\t\t\t\t1101, // tag for session propose response\n\t\t\t);\n\n\t\t\t// Subscribe to session topic\n\t\t\tthis.sessionSymKey = sessionSymKey;\n\t\t\tthis.sessionData = {\n\t\t\t\ttopic: sessionTopic,\n\t\t\t\tsymKey: bytesToHex(sessionSymKey),\n\t\t\t\tpeerMeta: proposal.proposer.metadata,\n\t\t\t\texpiry,\n\t\t\t\taccounts: [],\n\t\t\t\tcontrollerPublicKey: proposal.proposer.publicKey,\n\t\t\t};\n\n\t\t\tawait this.subscribeSession();\n\n\t\t\t// Send session settle on the new session topic\n\t\t\tconst settlePayload = {\n\t\t\t\tid: this.nextId++,\n\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\tmethod: \"wc_sessionSettle\",\n\t\t\t\tparams: settled,\n\t\t\t};\n\n\t\t\tawait this.relay.publishEncrypted(\n\t\t\t\tsessionTopic,\n\t\t\t\tsessionSymKey,\n\t\t\t\tsettlePayload,\n\t\t\t\t1104, // tag for session settle\n\t\t\t);\n\n\t\t\t// Persist\n\t\t\tgetStorage()?.setItem(STORAGE_KEY, JSON.stringify(this.sessionData));\n\n\t\t\tresolve(settled);\n\t\t} catch (err) {\n\t\t\treject(err instanceof Error ? err : new Error(String(err)));\n\t\t}\n\t}\n\n\tprivate async subscribeSession() {\n\t\tif (!this.sessionData || !this.sessionSymKey) return;\n\n\t\tconst symKey = this.sessionSymKey;\n\t\tawait this.relay.subscribe(this.sessionData.topic, (msg) => {\n\t\t\ttry {\n\t\t\t\tconst envelope = decodeBase64(msg.message);\n\t\t\t\tconst plaintext = decryptType0(symKey, envelope);\n\t\t\t\tconst rpc = JSON.parse(plaintext);\n\n\t\t\t\t// Response to our request\n\t\t\t\tif (\"id\" in rpc && this.pending.has(rpc.id)) {\n\t\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\t\t\tconst p = this.pending.get(rpc.id)!;\n\t\t\t\t\tthis.pending.delete(rpc.id);\n\t\t\t\t\tif (rpc.error) {\n\t\t\t\t\t\tp.reject(new Error(rpc.error.message ?? \"WC request failed\"));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tp.resolve(rpc.result);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Session delete from peer\n\t\t\t\tif (rpc.method === \"wc_sessionDelete\") {\n\t\t\t\t\tthis.sessionData = null;\n\t\t\t\t\tthis.sessionSymKey = null;\n\t\t\t\t\tthis.pending.clear();\n\t\t\t\t\tgetStorage()?.removeItem(STORAGE_KEY);\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// ignore malformed messages\n\t\t\t}\n\t\t});\n\t}\n}\n",
|
|
9
9
|
"/** WalletProvider adapter for WalletConnect v2 */\n\nimport type { WalletProvider } from \"../types.ts\";\nimport { WcSession } from \"./session.ts\";\nimport type { WcPairResult, WcProviderConfig, WcSessionData } from \"./types.ts\";\n\nexport class WalletConnectProvider implements WalletProvider {\n\tprivate session: WcSession;\n\n\tconstructor(config: WcProviderConfig) {\n\t\tthis.session = new WcSession(config);\n\t}\n\n\t/** Try restoring a persisted session. Returns true if valid. */\n\trestore(): boolean {\n\t\treturn this.session.restore();\n\t}\n\n\t/** Initiate pairing. Returns URI for QR + approval promise. */\n\tasync pair(): Promise<WcPairResult> {\n\t\treturn this.session.pair();\n\t}\n\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\tasync request(method: string, params?: any): Promise<any> {\n\t\treturn this.session.request(method, params);\n\t}\n\n\tdisconnect(): void {\n\t\tthis.session.disconnect();\n\t}\n\n\tget sessionData(): WcSessionData | null {\n\t\treturn this.session.session;\n\t}\n}\n",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"import { ConnectError } from \"./errors.ts\";\nimport type { WalletProvider } from \"./types.ts\";\n\ndeclare const window:\n\t| {\n\t\t\tStacksProvider?: WalletProvider;\n\t\t\tLeatherProvider?: WalletProvider;\n\t\t\tXverseProvider?: WalletProvider;\n\t\t\tHiroWalletProvider?: WalletProvider;\n\t }\n\t| 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\tcustomProvider = provider;\n}\n\nexport function getProvider(): WalletProvider {\n\tif (customProvider) return customProvider;\n\n\tif (typeof window === \"undefined\") {\n\t\tthrow new ConnectError(\"No Stacks wallet found\");\n\t}\n\n\tconst provider =\n\t\twindow.StacksProvider ??\n\t\twindow.LeatherProvider ??\n\t\twindow.XverseProvider ??\n\t\twindow.HiroWalletProvider;\n\n\tif (!provider) throw new ConnectError(\"No Stacks wallet found\");\n\treturn provider;\n}\n\nexport function isWalletInstalled(): boolean {\n\treturn (\n\t\ttypeof window !== \"undefined\" &&\n\t\t!!(\n\t\t\twindow.StacksProvider ||\n\t\t\twindow.LeatherProvider ||\n\t\t\twindow.XverseProvider ||\n\t\t\twindow.HiroWalletProvider\n\t\t)\n\t);\n}\n",
|
|
12
12
|
"/** Minimal wallet picker modal (injected wallets + WC QR) */\n\nimport { isWalletInstalled } from \"../provider.ts\";\nimport { qrSvg } from \"./qr.ts\";\n\n// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\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\twcUri?: string;\n\tonSelectInjected?: () => void;\n\tonClose?: () => void;\n}\n\nexport function showModal(opts: ModalOptions): () => void {\n\tif (typeof document === \"undefined\") return () => {};\n\n\t// Remove existing\n\tdocument.getElementById(MODAL_ID)?.remove();\n\n\tconst overlay = document.createElement(\"div\");\n\toverlay.id = MODAL_ID;\n\n\tconst style = document.createElement(\"style\");\n\tstyle.textContent = STYLES;\n\toverlay.appendChild(style);\n\n\tconst box = document.createElement(\"div\");\n\tbox.className = \"sl-wc-box\";\n\tbox.style.position = \"relative\";\n\n\t// Close button\n\tconst close = document.createElement(\"button\");\n\tclose.className = \"sl-wc-close\";\n\tclose.textContent = \"\\u00d7\";\n\tclose.onclick = dismiss;\n\tbox.appendChild(close);\n\n\t// Title\n\tconst title = document.createElement(\"h2\");\n\ttitle.className = \"sl-wc-title\";\n\ttitle.textContent = \"Connect Wallet\";\n\tbox.appendChild(title);\n\n\t// Injected wallet button\n\tif (isWalletInstalled()) {\n\t\tconst btn = document.createElement(\"button\");\n\t\tbtn.className = \"sl-wc-btn\";\n\t\tbtn.textContent = \"Browser Wallet\";\n\t\tbtn.onclick = () => {\n\t\t\tdismiss();\n\t\t\topts.onSelectInjected?.();\n\t\t};\n\t\tbox.appendChild(btn);\n\t}\n\n\t// QR code\n\tif (opts.wcUri) {\n\t\tif (isWalletInstalled()) {\n\t\t\tconst divider = document.createElement(\"div\");\n\t\t\tdivider.className = \"sl-wc-divider\";\n\t\t\tdivider.textContent = \"or scan with mobile wallet\";\n\t\t\tbox.appendChild(divider);\n\t\t}\n\n\t\tconst qr = document.createElement(\"div\");\n\t\tqr.className = \"sl-wc-qr\";\n\t\tqr.innerHTML = qrSvg(opts.wcUri, { size: 240 });\n\t\tbox.appendChild(qr);\n\t}\n\n\toverlay.appendChild(box);\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\toverlay.onclick = (e: any) => {\n\t\tif (e.target === overlay) dismiss();\n\t};\n\n\tdocument.body.appendChild(overlay);\n\n\tfunction dismiss() {\n\t\toverlay.remove();\n\t\topts.onClose?.();\n\t}\n\n\treturn dismiss;\n}\n\nexport function hideModal(): void {\n\tif (typeof document === \"undefined\") return;\n\tdocument.getElementById(MODAL_ID)?.remove();\n}\n"
|
|
13
13
|
],
|
|
14
|
-
"mappings": "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",
|
|
15
|
-
"debugId": "
|
|
14
|
+
"mappings": "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",
|
|
15
|
+
"debugId": "79FF14A6B1357B6D64756E2164756E21",
|
|
16
16
|
"names": []
|
|
17
17
|
}
|
|
@@ -17,6 +17,8 @@ function bytesToHex(bytes) {
|
|
|
17
17
|
}
|
|
18
18
|
function hexToBytes(hex) {
|
|
19
19
|
let h = without0x(hex);
|
|
20
|
+
if (!/^[0-9a-fA-F]*$/.test(h))
|
|
21
|
+
throw new Error("Invalid byte sequence");
|
|
20
22
|
if (h.length % 2)
|
|
21
23
|
h = `0${h}`;
|
|
22
24
|
const array = new Uint8Array(h.length / 2);
|
|
@@ -885,5 +887,5 @@ export {
|
|
|
885
887
|
showModal
|
|
886
888
|
};
|
|
887
889
|
|
|
888
|
-
//# debugId=
|
|
890
|
+
//# debugId=F04B2EBCD025831864756E2164756E21
|
|
889
891
|
//# sourceMappingURL=index.js.map
|