@secondlayer/stacks 5.1.3 → 6.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -8
- package/dist/shared/{stacks-qt8ehebn.js → stacks-esm-0rdxcta7.js} +2 -2
- package/dist/shared/{stacks-qt8ehebn.js.map → stacks-esm-0rdxcta7.js.map} +1 -1
- package/dist/shared/{stacks-4hs8r4q2.js → stacks-esm-1jae0a3r.js} +2 -2
- package/dist/shared/{stacks-xjkn3en1.cjs.map → stacks-esm-1jae0a3r.js.map} +1 -1
- package/dist/shared/{stacks-4d7c3x27.js → stacks-esm-2mc7ebrm.js} +3 -3
- package/dist/shared/{stacks-4d7c3x27.js.map → stacks-esm-2mc7ebrm.js.map} +1 -1
- package/dist/shared/{stacks-8brgfvqx.js → stacks-esm-3g33bqsm.js} +4 -4
- package/dist/shared/{stacks-8brgfvqx.js.map → stacks-esm-3g33bqsm.js.map} +1 -1
- package/dist/shared/{stacks-gjz26k6b.js → stacks-esm-3pv5avgr.js} +59 -15
- package/dist/shared/stacks-esm-3pv5avgr.js.map +12 -0
- package/dist/shared/{stacks-qex691bh.js → stacks-esm-743jfh10.js} +6 -6
- package/dist/shared/{stacks-qex691bh.js.map → stacks-esm-743jfh10.js.map} +1 -1
- package/dist/shared/{stacks-wxfd6r4b.js → stacks-esm-7fpqgtyx.js} +3 -3
- package/dist/shared/{stacks-wxfd6r4b.js.map → stacks-esm-7fpqgtyx.js.map} +1 -1
- package/dist/shared/{stacks-71k0vmct.js → stacks-esm-9rnx0zxr.js} +5 -5
- package/dist/shared/{stacks-71k0vmct.js.map → stacks-esm-9rnx0zxr.js.map} +1 -1
- package/dist/shared/{stacks-fd4rx56e.js → stacks-esm-aw2mj3sj.js} +7 -7
- package/dist/shared/{stacks-fd4rx56e.js.map → stacks-esm-aw2mj3sj.js.map} +1 -1
- package/dist/shared/{stacks-qs5fzts5.js → stacks-esm-cvhazvhd.js} +2 -2
- package/dist/shared/{stacks-qs5fzts5.js.map → stacks-esm-cvhazvhd.js.map} +1 -1
- package/dist/shared/{stacks-69nq48jp.js → stacks-esm-fcfdn2zx.js} +5 -5
- package/dist/shared/{stacks-69nq48jp.js.map → stacks-esm-fcfdn2zx.js.map} +1 -1
- package/dist/shared/{stacks-x0qqwrev.js → stacks-esm-hr7fpxtj.js} +4 -4
- package/dist/shared/{stacks-x0qqwrev.js.map → stacks-esm-hr7fpxtj.js.map} +1 -1
- package/dist/shared/{stacks-mbt36bzt.js → stacks-esm-kds4n82p.js} +11 -11
- package/dist/shared/{stacks-mbt36bzt.js.map → stacks-esm-kds4n82p.js.map} +1 -1
- package/dist/shared/{stacks-kg1npstf.js → stacks-esm-n53kvwmt.js} +2 -2
- package/dist/shared/{stacks-kg1npstf.js.map → stacks-esm-n53kvwmt.js.map} +1 -1
- package/dist/shared/{stacks-v2rfr46a.js → stacks-esm-pxhfqfff.js} +4 -4
- package/dist/shared/{stacks-v2rfr46a.js.map → stacks-esm-pxhfqfff.js.map} +1 -1
- package/dist/shared/{stacks-yajyej2y.js → stacks-esm-q19a17fd.js} +3 -3
- package/dist/shared/{stacks-yajyej2y.js.map → stacks-esm-q19a17fd.js.map} +1 -1
- package/dist/shared/{stacks-v03zef3g.js → stacks-esm-qk0p9fr6.js} +9 -9
- package/dist/shared/{stacks-v03zef3g.js.map → stacks-esm-qk0p9fr6.js.map} +1 -1
- package/dist/shared/{stacks-qcae5852.js → stacks-esm-qkj67g80.js} +2 -2
- package/dist/shared/{stacks-qcae5852.js.map → stacks-esm-qkj67g80.js.map} +1 -1
- package/dist/shared/{stacks-mftyrc60.js → stacks-esm-r6dejrgr.js} +4 -4
- package/dist/shared/{stacks-mftyrc60.js.map → stacks-esm-r6dejrgr.js.map} +1 -1
- package/dist/shared/{stacks-9c1yam8b.js → stacks-esm-r9q4wnyw.js} +5 -5
- package/dist/shared/{stacks-9c1yam8b.js.map → stacks-esm-r9q4wnyw.js.map} +1 -1
- package/dist/shared/{stacks-51ybf135.js → stacks-esm-skmcf5n2.js} +5 -5
- package/dist/shared/{stacks-51ybf135.js.map → stacks-esm-skmcf5n2.js.map} +1 -1
- package/dist/shared/{stacks-yvb7rvwk.js → stacks-esm-v45990hx.js} +2 -2
- package/dist/shared/{stacks-8vzxax5e.cjs.map → stacks-esm-v45990hx.js.map} +1 -1
- package/dist/shared/{stacks-z90xdr1x.js → stacks-esm-wv67m4g6.js} +3 -3
- package/dist/shared/{stacks-z90xdr1x.js.map → stacks-esm-wv67m4g6.js.map} +1 -1
- package/dist/shared/{stacks-1m3m1agc.js → stacks-esm-x1r01353.js} +5 -5
- package/dist/shared/{stacks-1m3m1agc.js.map → stacks-esm-x1r01353.js.map} +1 -1
- package/dist/src/accounts/index.cjs +558 -4
- package/dist/src/accounts/index.cjs.map +10 -4
- package/dist/src/accounts/index.js +3 -3
- package/dist/src/actions/index.cjs +3815 -1
- package/dist/src/actions/index.cjs.map +65 -3
- package/dist/src/actions/index.js +14 -14
- package/dist/src/bitcoin/index.cjs +2477 -1
- package/dist/src/bitcoin/index.cjs.map +31 -3
- package/dist/src/bitcoin/index.js +11 -11
- package/dist/src/bns/index.cjs +4439 -17
- package/dist/src/bns/index.cjs.map +50 -3
- package/dist/src/bns/index.js +14 -14
- package/dist/src/chains/index.cjs +135 -1
- package/dist/src/chains/index.cjs.map +5 -3
- package/dist/src/chains/index.js +1 -1
- package/dist/src/clarity/index.cjs +2019 -1
- package/dist/src/clarity/index.cjs.map +24 -3
- package/dist/src/clarity/index.js +8 -8
- package/dist/src/filters/index.cjs +725 -1
- package/dist/src/filters/index.cjs.map +11 -3
- package/dist/src/filters/index.d.cts +76 -13
- package/dist/src/filters/index.d.ts +76 -13
- package/dist/src/filters/index.js +8 -4
- package/dist/src/filters/index.js.map +1 -1
- package/dist/src/index.cjs +3935 -62
- package/dist/src/index.cjs.map +69 -4
- package/dist/src/index.d.cts +62 -11
- package/dist/src/index.d.ts +62 -11
- package/dist/src/index.js +16 -16
- package/dist/src/postconditions/index.cjs +1726 -1
- package/dist/src/postconditions/index.cjs.map +20 -3
- package/dist/src/postconditions/index.js +6 -6
- package/dist/src/pox/index.cjs +3855 -1
- package/dist/src/pox/index.cjs.map +48 -3
- package/dist/src/pox/index.js +13 -13
- package/dist/src/pox5/index.cjs +4054 -29
- package/dist/src/pox5/index.cjs.map +54 -3
- package/dist/src/pox5/index.js +15 -15
- package/dist/src/sbtc/index.cjs +3705 -4
- package/dist/src/sbtc/index.cjs.map +47 -3
- package/dist/src/sbtc/index.js +12 -12
- package/dist/src/stackingdao/index.cjs +3751 -8
- package/dist/src/stackingdao/index.cjs.map +45 -3
- package/dist/src/stackingdao/index.js +12 -12
- package/dist/src/subscriptions/index.cjs +153 -1
- package/dist/src/subscriptions/index.cjs.map +6 -3
- package/dist/src/subscriptions/index.js +2 -2
- package/dist/src/transactions/index.cjs +2139 -1
- package/dist/src/transactions/index.cjs.map +23 -3
- package/dist/src/transactions/index.js +6 -6
- package/dist/src/utils/index.cjs +435 -3
- package/dist/src/utils/index.cjs.map +9 -3
- package/dist/src/utils/index.js +3 -3
- package/package.json +3 -23
- package/dist/shared/stacks-02actsrx.cjs +0 -17
- package/dist/shared/stacks-02actsrx.cjs.map +0 -10
- package/dist/shared/stacks-03vfm21t.cjs +0 -222
- package/dist/shared/stacks-03vfm21t.cjs.map +0 -12
- package/dist/shared/stacks-24h5k94q.cjs +0 -74
- package/dist/shared/stacks-24h5k94q.cjs.map +0 -11
- package/dist/shared/stacks-37kz5t9f.cjs +0 -764
- package/dist/shared/stacks-37kz5t9f.cjs.map +0 -23
- package/dist/shared/stacks-3mt2q2na.cjs +0 -65
- package/dist/shared/stacks-3mt2q2na.cjs.map +0 -9
- package/dist/shared/stacks-4hs8r4q2.js.map +0 -10
- package/dist/shared/stacks-8vzxax5e.cjs +0 -45
- package/dist/shared/stacks-agk106zs.cjs +0 -267
- package/dist/shared/stacks-agk106zs.cjs.map +0 -12
- package/dist/shared/stacks-bdgh9n83.cjs +0 -212
- package/dist/shared/stacks-bdgh9n83.cjs.map +0 -11
- package/dist/shared/stacks-dpxnxhqb.cjs +0 -51
- package/dist/shared/stacks-dpxnxhqb.cjs.map +0 -11
- package/dist/shared/stacks-ee53k9j2.cjs +0 -651
- package/dist/shared/stacks-ee53k9j2.cjs.map +0 -13
- package/dist/shared/stacks-enpj9krt.cjs +0 -38
- package/dist/shared/stacks-enpj9krt.cjs.map +0 -10
- package/dist/shared/stacks-f35mnrmg.cjs +0 -164
- package/dist/shared/stacks-f35mnrmg.cjs.map +0 -10
- package/dist/shared/stacks-fhzwsn5d.cjs +0 -261
- package/dist/shared/stacks-fhzwsn5d.cjs.map +0 -12
- package/dist/shared/stacks-gjz26k6b.js.map +0 -12
- package/dist/shared/stacks-gza2n1zs.cjs +0 -73
- package/dist/shared/stacks-gza2n1zs.cjs.map +0 -11
- package/dist/shared/stacks-kem68d80.cjs +0 -156
- package/dist/shared/stacks-kem68d80.cjs.map +0 -10
- package/dist/shared/stacks-n98w7g57.cjs +0 -234
- package/dist/shared/stacks-n98w7g57.cjs.map +0 -10
- package/dist/shared/stacks-p337hp6m.cjs +0 -336
- package/dist/shared/stacks-p337hp6m.cjs.map +0 -25
- package/dist/shared/stacks-q34k4vnc.cjs +0 -286
- package/dist/shared/stacks-q34k4vnc.cjs.map +0 -12
- package/dist/shared/stacks-rryme9bv.cjs +0 -569
- package/dist/shared/stacks-rryme9bv.cjs.map +0 -13
- package/dist/shared/stacks-s5vej5z6.cjs +0 -410
- package/dist/shared/stacks-s5vej5z6.cjs.map +0 -15
- package/dist/shared/stacks-sdqkapct.cjs +0 -67
- package/dist/shared/stacks-sdqkapct.cjs.map +0 -12
- package/dist/shared/stacks-vea7nde7.cjs +0 -731
- package/dist/shared/stacks-vea7nde7.cjs.map +0 -13
- package/dist/shared/stacks-wk8yp13j.cjs +0 -33
- package/dist/shared/stacks-wk8yp13j.cjs.map +0 -11
- package/dist/shared/stacks-xjkn3en1.cjs +0 -42
- package/dist/shared/stacks-xnrywjf1.cjs +0 -131
- package/dist/shared/stacks-xnrywjf1.cjs.map +0 -11
- package/dist/shared/stacks-yvb7rvwk.js.map +0 -10
- package/dist/src/tools/btc/index.cjs +0 -131
- package/dist/src/tools/btc/index.cjs.map +0 -10
- package/dist/src/tools/btc/index.d.cts +0 -10
- package/dist/src/tools/btc/index.d.ts +0 -10
- package/dist/src/tools/btc/index.js +0 -90
- package/dist/src/tools/btc/index.js.map +0 -10
- package/dist/src/tools/index.cjs +0 -3865
- package/dist/src/tools/index.cjs.map +0 -80
- package/dist/src/tools/index.d.cts +0 -206
- package/dist/src/tools/index.d.ts +0 -206
- package/dist/src/tools/index.js +0 -3827
- package/dist/src/tools/index.js.map +0 -80
package/README.md
CHANGED
|
@@ -64,14 +64,7 @@ multi-broadcast gap, which is why it lives here rather than being deferred to
|
|
|
64
64
|
| `@secondlayer/stacks/pox` | PoX stacking — solo and delegated |
|
|
65
65
|
| `@secondlayer/stacks/stackingdao` | StackingDAO liquid staking (STX/stSTX) |
|
|
66
66
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
Give your agent Stacks reads through [`@secondlayer/mcp`](https://www.npmjs.com/package/@secondlayer/mcp) instead. The two AI SDK tool entries below still import, and stay until the next major, but they get no new tools. The tradeoff of keeping them: `ai` and `zod` are now optional peer dependencies, so a project that imports either entry installs both itself; a project that only reads contracts installs neither.
|
|
70
|
-
|
|
71
|
-
| Module | Description |
|
|
72
|
-
|---|---|
|
|
73
|
-
| `@secondlayer/stacks/tools` | **Deprecated.** AI SDK `tool()` set for Stacks reads. Bare exports read `STACKS_NETWORK` (or `STACKS_CHAIN`) and `STACKS_NODE_RPC_URL`, `SL_API_URL` or `STACKS_RPC_URL`; `createStacksTools(client)` binds your own client |
|
|
74
|
-
| `@secondlayer/stacks/tools/btc` | **Deprecated.** AI SDK `tool()` set for Bitcoin reads via mempool.space (`BTC_MEMPOOL_URL` overrides the host) |
|
|
67
|
+
Agent Stacks reads go through [`@secondlayer/mcp`](https://www.npmjs.com/package/@secondlayer/mcp).
|
|
75
68
|
|
|
76
69
|
## Guides
|
|
77
70
|
|
|
@@ -72,5 +72,5 @@ function defineChain(chain) {
|
|
|
72
72
|
|
|
73
73
|
export { mainnet, testnet, devnet, mocknet, defineChain };
|
|
74
74
|
|
|
75
|
-
//# debugId=
|
|
76
|
-
//# sourceMappingURL=stacks-
|
|
75
|
+
//# debugId=3A56E49F2248B8C664756E2164756E21
|
|
76
|
+
//# sourceMappingURL=stacks-esm-0rdxcta7.js.map
|
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
"import type { StacksChain } from \"./types.ts\";\n\n/** Identity helper for defining a custom {@link StacksChain} with full type inference. */\nexport function defineChain(chain: StacksChain): StacksChain {\n\treturn chain;\n}\n"
|
|
7
7
|
],
|
|
8
8
|
"mappings": ";AAGO,IAAM,UAAuB;AAAA,EACnC,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,SAAS;AAAA,EACT,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,gBAAgB,EAAE,WAAW,IAAI,UAAU,GAAG;AAAA,EAC9C,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,gBAAgB,EAAE,MAAM,UAAU,QAAQ,OAAO,UAAU,EAAE;AAAA,EAC7D,SAAS;AAAA,IACR,SAAS;AAAA,MACR,MAAM,CAAC,6BAA6B;AAAA,MACpC,IAAI,CAAC,0CAA0C;AAAA,IAChD;AAAA,EACD;AAAA,EACA,gBAAgB;AAAA,IACf,SAAS,EAAE,MAAM,iBAAiB,KAAK,2BAA2B;AAAA,EACnE;AACD;AAGO,IAAM,UAAuB;AAAA,EACnC,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,SAAS;AAAA,EACT,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,gBAAgB,EAAE,WAAW,IAAI,UAAU,GAAG;AAAA,EAC9C,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,gBAAgB,EAAE,MAAM,UAAU,QAAQ,OAAO,UAAU,EAAE;AAAA,EAC7D,SAAS;AAAA,IACR,SAAS;AAAA,MACR,MAAM,CAAC,6BAA6B;AAAA,MACpC,IAAI,CAAC,0CAA0C;AAAA,IAChD;AAAA,EACD;AAAA,EACA,gBAAgB;AAAA,IACf,SAAS;AAAA,MACR,MAAM;AAAA,MACN,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAGO,IAAM,SAAsB;AAAA,EAClC,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,SAAS;AAAA,EACT,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,gBAAgB,EAAE,WAAW,IAAI,UAAU,GAAG;AAAA,EAC9C,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,gBAAgB,EAAE,MAAM,UAAU,QAAQ,OAAO,UAAU,EAAE;AAAA,EAC7D,SAAS;AAAA,IACR,SAAS;AAAA,MACR,MAAM,CAAC,uBAAuB;AAAA,MAC9B,IAAI,CAAC,oCAAoC;AAAA,IAC1C;AAAA,EACD;AACD;AAGO,IAAM,UAAuB;AAAA,KAChC;AAAA,EACH,MAAM;AAAA,EACN,gBAAgB,KAAK,OAAO,eAAe;AAC5C;;;ACtEO,SAAS,WAAW,CAAC,OAAiC;AAAA,EAC5D,OAAO;AAAA;",
|
|
9
|
-
"debugId": "
|
|
9
|
+
"debugId": "3A56E49F2248B8C664756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"/**\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"
|
|
6
6
|
],
|
|
7
7
|
"mappings": ";AAOA,SAAS,YAAY,CAAC,MAAsB;AAAA,EAC3C,OAAO,KACL,QAAQ,sBAAsB,OAAO,EACrC,QAAQ,yBAAyB,OAAO,EACxC,YAAY;AAAA;AAAA;AAGR,MAAM,kBAAkB,MAAM;AAAA,EAC3B,OAAO;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EAEA,WAAW,CACV,cACA,SACC;AAAA,IACD,MAAM,UAAU;AAAA,MACf;AAAA,MACA,SAAS,UAAU;AAAA,EAAK,QAAQ,YAAY;AAAA,IAC7C,EAAE,KAAK,EAAE;AAAA,IAET,MAAM,SAAS,EAAE,OAAO,SAAS,MAAM,CAAC;AAAA,IACxC,IAAI,SAAS,SAAS;AAAA,MAAW,KAAK,QAAQ,QAAQ;AAAA,IACtD,KAAK,eAAe;AAAA,IACpB,KAAK,UAAU,SAAS;AAAA;AAAA,MAQrB,IAAI,GAAW;AAAA,IAClB,OAAO,KAAK,SAAS,aAAa,KAAK,IAAI;AAAA;AAAA,MAGxC,IAAI,CAAC,OAAe;AAAA,IACvB,KAAK,QAAQ;AAAA;AAAA,EAGd,MAAM,GAOJ;AAAA,IACD,OAAO;AAAA,MACN,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,cAAc,KAAK;AAAA,MACnB,SAAS,KAAK;AAAA,MACd,OAAO,KAAK,iBAAiB,QAAQ,KAAK,MAAM,UAAU;AAAA,IAC3D;AAAA;AAEF;",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "20BB5B5A6D1D25AD64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
hash160,
|
|
6
6
|
hexToBytes,
|
|
7
7
|
without0x
|
|
8
|
-
} from "./stacks-
|
|
8
|
+
} from "./stacks-esm-cvhazvhd.js";
|
|
9
9
|
|
|
10
10
|
// src/utils/constants.ts
|
|
11
11
|
var MAX_U128 = (1n << 128n) - 1n;
|
|
@@ -80,5 +80,5 @@ function getContractAddress(deployer, contractName) {
|
|
|
80
80
|
|
|
81
81
|
export { MAX_U128, MAX_I128, MIN_I128, AddressVersion, ZERO_ADDRESS, TESTNET_ZERO_ADDRESS, MICROSTX_PER_STX, publicKeyToAddress, CONTRACT_NAME_REGEX, validateStacksAddress, isValidAddress, parsePrincipal, parseContractId, isClarityName, isAddressEqual, addressToVersion, getContractAddress };
|
|
82
82
|
|
|
83
|
-
//# debugId=
|
|
84
|
-
//# sourceMappingURL=stacks-
|
|
83
|
+
//# debugId=E5FF00B424EE8C7F64756E2164756E21
|
|
84
|
+
//# sourceMappingURL=stacks-esm-2mc7ebrm.js.map
|
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
"import { c32address, c32addressDecode } from \"./c32.ts\";\nimport { AddressVersion } from \"./constants.ts\";\nimport { bytesToHex, hexToBytes, without0x } from \"./encoding.ts\";\nimport { hash160 } from \"./hash.ts\";\n\nexport { c32address, c32addressDecode };\n\n/**\n * Derive the single-sig Stacks address for a compressed public key.\n */\nexport function publicKeyToAddress(\n\tpublicKey: string | Uint8Array,\n\tnetwork: \"mainnet\" | \"testnet\" = \"mainnet\",\n): string {\n\tconst bytes =\n\t\ttypeof publicKey === \"string\"\n\t\t\t? hexToBytes(without0x(publicKey))\n\t\t\t: publicKey;\n\tconst version =\n\t\tnetwork === \"mainnet\"\n\t\t\t? AddressVersion.MainnetSingleSig\n\t\t\t: AddressVersion.TestnetSingleSig;\n\treturn c32address(version, bytesToHex(hash160(bytes)));\n}\n\n/** Clarity contract-name grammar: leading letter, then letters/digits/`-`/`_`.\n * Underscore is legal (SIP-002) and deployed contracts use it — matches the\n * pattern the Index API already accepts for contract ids. */\nexport const CONTRACT_NAME_REGEX: RegExp = /^[a-zA-Z][a-zA-Z0-9_-]{0,127}$/;\n\nexport function validateStacksAddress(address: string): boolean {\n\ttry {\n\t\tc32addressDecode(address);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/** Alias for validateStacksAddress — matches future.md naming. */\nexport const isValidAddress: (address: string) => boolean =\n\tvalidateStacksAddress;\n\n/** Parse a principal into its parts, or null when malformed. The single\n * definition of \"valid principal\" for this package: exactly one optional\n * `.name` segment (never two), a c32-decodable address, and a contract name\n * matching the Clarity grammar. */\nexport function parsePrincipal(\n\tvalue: string,\n): { address: string; contractName?: string } | null {\n\tconst parts = value.split(\".\");\n\tif (parts.length > 2) return null;\n\tconst [address, contractName] = parts as [string, string | undefined];\n\tif (!validateStacksAddress(address)) return null;\n\tif (contractName === undefined) return { address };\n\tif (!CONTRACT_NAME_REGEX.test(contractName)) return null;\n\treturn { address, contractName };\n}\n\n/** Split `address.name` into its parts. Throws on anything `parsePrincipal`\n * rejects, and on a bare address with no contract name. */\nexport function parseContractId(contractId: string): [string, string] {\n\tconst parsed = parsePrincipal(contractId);\n\tif (!parsed?.contractName)\n\t\tthrow new Error(`Invalid contract identifier: ${contractId}`);\n\treturn [parsed.address, parsed.contractName];\n}\n\nexport function isClarityName(name: string): boolean {\n\tconst regex = /^[a-zA-Z]([a-zA-Z0-9]|[-_!?+<>=/*])*$|^[-+=/*]$|^[<>]=?$/;\n\treturn regex.test(name) && name.length < 128;\n}\n\n/**\n * Compare two Stacks addresses for equality (case-insensitive, version-aware).\n * Throws if either address is invalid.\n */\nexport function isAddressEqual(a: string, b: string): boolean {\n\tconst [versionA, hashA] = c32addressDecode(a);\n\tconst [versionB, hashB] = c32addressDecode(b);\n\treturn versionA === versionB && hashA.toLowerCase() === hashB.toLowerCase();\n}\n\n/** Extract the version byte from a Stacks address (22, 20, 26, or 21). */\nexport function addressToVersion(address: string): number {\n\treturn c32addressDecode(address)[0];\n}\n\n/**\n * Build a contract address from deployer + contract name.\n * Validates both parts; returns `deployer.contractName`.\n */\nexport function getContractAddress(\n\tdeployer: string,\n\tcontractName: string,\n): string {\n\tif (!validateStacksAddress(deployer)) {\n\t\tthrow new Error(`Invalid deployer address: ${deployer}`);\n\t}\n\tif (!isClarityName(contractName)) {\n\t\tthrow new Error(`Invalid contract name: ${contractName}`);\n\t}\n\treturn `${deployer}.${contractName}`;\n}\n"
|
|
7
7
|
],
|
|
8
8
|
"mappings": ";;;;;;;;;;AACO,IAAM,YAAoB,MAAM,QAAQ;AACxC,IAAM,YAAoB,MAAM,QAAQ;AACxC,IAAM,WAAmB,EAAE,MAAM;AAGjC,IAAM,iBAAiB;AAAA,EAC7B,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,iBAAiB;AAClB;AAKO,IAAM,eAAe;AAErB,IAAM,uBAAuB;AAG7B,IAAM,mBAAmB;;;ACXzB,SAAS,kBAAkB,CACjC,WACA,UAAiC,WACxB;AAAA,EACT,MAAM,QACL,OAAO,cAAc,WAClB,WAAW,UAAU,SAAS,CAAC,IAC/B;AAAA,EACJ,MAAM,UACL,YAAY,YACT,eAAe,mBACf,eAAe;AAAA,EACnB,OAAO,WAAW,SAAS,WAAW,QAAQ,KAAK,CAAC,CAAC;AAAA;AAM/C,IAAM,sBAA8B;AAEpC,SAAS,qBAAqB,CAAC,SAA0B;AAAA,EAC/D,IAAI;AAAA,IACH,iBAAiB,OAAO;AAAA,IACxB,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAKF,IAAM,iBACZ;AAMM,SAAS,cAAc,CAC7B,OACoD;AAAA,EACpD,MAAM,QAAQ,MAAM,MAAM,GAAG;AAAA,EAC7B,IAAI,MAAM,SAAS;AAAA,IAAG,OAAO;AAAA,EAC7B,OAAO,SAAS,gBAAgB;AAAA,EAChC,IAAI,CAAC,sBAAsB,OAAO;AAAA,IAAG,OAAO;AAAA,EAC5C,IAAI,iBAAiB;AAAA,IAAW,OAAO,EAAE,QAAQ;AAAA,EACjD,IAAI,CAAC,oBAAoB,KAAK,YAAY;AAAA,IAAG,OAAO;AAAA,EACpD,OAAO,EAAE,SAAS,aAAa;AAAA;AAKzB,SAAS,eAAe,CAAC,YAAsC;AAAA,EACrE,MAAM,SAAS,eAAe,UAAU;AAAA,EACxC,IAAI,CAAC,QAAQ;AAAA,IACZ,MAAM,IAAI,MAAM,gCAAgC,YAAY;AAAA,EAC7D,OAAO,CAAC,OAAO,SAAS,OAAO,YAAY;AAAA;AAGrC,SAAS,aAAa,CAAC,MAAuB;AAAA,EACpD,MAAM,QAAQ;AAAA,EACd,OAAO,MAAM,KAAK,IAAI,KAAK,KAAK,SAAS;AAAA;AAOnC,SAAS,cAAc,CAAC,GAAW,GAAoB;AAAA,EAC7D,OAAO,UAAU,SAAS,iBAAiB,CAAC;AAAA,EAC5C,OAAO,UAAU,SAAS,iBAAiB,CAAC;AAAA,EAC5C,OAAO,aAAa,YAAY,MAAM,YAAY,MAAM,MAAM,YAAY;AAAA;AAIpE,SAAS,gBAAgB,CAAC,SAAyB;AAAA,EACzD,OAAO,iBAAiB,OAAO,EAAE;AAAA;AAO3B,SAAS,kBAAkB,CACjC,UACA,cACS;AAAA,EACT,IAAI,CAAC,sBAAsB,QAAQ,GAAG;AAAA,IACrC,MAAM,IAAI,MAAM,6BAA6B,UAAU;AAAA,EACxD;AAAA,EACA,IAAI,CAAC,cAAc,YAAY,GAAG;AAAA,IACjC,MAAM,IAAI,MAAM,0BAA0B,cAAc;AAAA,EACzD;AAAA,EACA,OAAO,GAAG,YAAY;AAAA;",
|
|
9
|
-
"debugId": "
|
|
9
|
+
"debugId": "E5FF00B424EE8C7F64756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
fromHex,
|
|
3
3
|
parsePostConditionAmount
|
|
4
|
-
} from "./stacks-
|
|
4
|
+
} from "./stacks-esm-skmcf5n2.js";
|
|
5
5
|
import {
|
|
6
6
|
parseContractId,
|
|
7
7
|
validateStacksAddress
|
|
8
|
-
} from "./stacks-
|
|
8
|
+
} from "./stacks-esm-2mc7ebrm.js";
|
|
9
9
|
|
|
10
10
|
// src/postconditions/builder.ts
|
|
11
11
|
class PartialPcWithPrincipal {
|
|
@@ -151,5 +151,5 @@ var Pc = {
|
|
|
151
151
|
};
|
|
152
152
|
export { Pc };
|
|
153
153
|
|
|
154
|
-
//# debugId=
|
|
155
|
-
//# sourceMappingURL=stacks-
|
|
154
|
+
//# debugId=633164308263DBCA64756E2164756E21
|
|
155
|
+
//# sourceMappingURL=stacks-esm-3g33bqsm.js.map
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"import type { ClarityValue } from \"../clarity/types.ts\";\nimport { parseContractId, validateStacksAddress } from \"../utils/address.ts\";\nimport type { IntegerType } from \"../utils/encoding.ts\";\nimport { fromHex, parsePostConditionAmount } from \"./convert.ts\";\nimport type {\n\tFtPostCondition,\n\tFungibleComparator,\n\tNftPostCondition,\n\tNonFungibleComparator,\n\tPostCondition,\n\tPoxPostCondition,\n\tStakingPostCondition,\n\tStxPostCondition,\n} from \"./types.ts\";\n\nclass PartialPcWithPrincipal {\n\tconstructor(private address: string) {}\n\n\twillSendEq(amount: IntegerType) {\n\t\treturn new PartialPcFtWithCode(this.address, amount, \"eq\");\n\t}\n\twillSendGte(amount: IntegerType) {\n\t\treturn new PartialPcFtWithCode(this.address, amount, \"gte\");\n\t}\n\twillSendGt(amount: IntegerType) {\n\t\treturn new PartialPcFtWithCode(this.address, amount, \"gt\");\n\t}\n\twillSendLte(amount: IntegerType) {\n\t\treturn new PartialPcFtWithCode(this.address, amount, \"lte\");\n\t}\n\twillSendLt(amount: IntegerType) {\n\t\treturn new PartialPcFtWithCode(this.address, amount, \"lt\");\n\t}\n\twillSendAsset() {\n\t\treturn new PartialPcNftWithCode(this.address, \"sent\");\n\t}\n\twillNotSendAsset() {\n\t\treturn new PartialPcNftWithCode(this.address, \"not-sent\");\n\t}\n\twillMaybeSendAsset() {\n\t\treturn new PartialPcNftWithCode(this.address, \"maybe-sent\");\n\t}\n\twillPerformPox(): PoxPostCondition {\n\t\treturn {\n\t\t\ttype: \"pox-postcondition\",\n\t\t\taddress: this.address,\n\t\t\tcondition: \"will-perform\",\n\t\t};\n\t}\n\twillNotPerformPox(): PoxPostCondition {\n\t\treturn {\n\t\t\ttype: \"pox-postcondition\",\n\t\t\taddress: this.address,\n\t\t\tcondition: \"will-not-perform\",\n\t\t};\n\t}\n\tmayPerformPox(): PoxPostCondition {\n\t\treturn {\n\t\t\ttype: \"pox-postcondition\",\n\t\t\taddress: this.address,\n\t\t\tcondition: \"may-perform\",\n\t\t};\n\t}\n}\n\nclass PartialPcFtWithCode {\n\tconstructor(\n\t\tprivate address: string,\n\t\tprivate amount: IntegerType,\n\t\tprivate code: FungibleComparator,\n\t) {}\n\n\tustx(): StxPostCondition {\n\t\treturn {\n\t\t\ttype: \"stx-postcondition\",\n\t\t\taddress: this.address,\n\t\t\tcondition: this.code,\n\t\t\tamount: parsePostConditionAmount(this.amount).toString(),\n\t\t};\n\t}\n\n\tustxToLock(): StakingPostCondition {\n\t\treturn {\n\t\t\ttype: \"staking-postcondition\",\n\t\t\taddress: this.address,\n\t\t\tcondition: this.code,\n\t\t\tamount: parsePostConditionAmount(this.amount).toString(),\n\t\t};\n\t}\n\n\tft(contractId: string, tokenName: string): FtPostCondition {\n\t\tconst [address, name] = contractId.split(\".\");\n\t\tif (!address || !validateStacksAddress(address) || !name) {\n\t\t\tthrow new Error(`Invalid contract id: ${contractId}`);\n\t\t}\n\t\treturn {\n\t\t\ttype: \"ft-postcondition\",\n\t\t\taddress: this.address,\n\t\t\tcondition: this.code,\n\t\t\tamount: parsePostConditionAmount(this.amount).toString(),\n\t\t\tasset: `${contractId}::${tokenName}`,\n\t\t};\n\t}\n}\n\nclass PartialPcNftWithCode {\n\tconstructor(\n\t\tprivate address: string,\n\t\tprivate code: NonFungibleComparator,\n\t) {}\n\n\tnft(\n\t\tassetOrContractId: string,\n\t\ttokenNameOrAssetId: string | ClarityValue,\n\t\tassetId?: ClarityValue,\n\t): NftPostCondition {\n\t\tlet contractAddress: string;\n\t\tlet contractName: string;\n\t\tlet tokenName: string;\n\t\tlet id: ClarityValue;\n\n\t\tif (assetId !== undefined) {\n\t\t\t// 3 args: contractId, tokenName, assetId\n\t\t\t[contractAddress, contractName] = parseContractId(assetOrContractId);\n\t\t\ttokenName = tokenNameOrAssetId as string;\n\t\t\tid = assetId;\n\t\t} else {\n\t\t\t// 2 args: assetString (addr.contract::token), assetId\n\t\t\tconst [principal, tName] = assetOrContractId.split(\"::\");\n\t\t\tif (!principal || !tName)\n\t\t\t\tthrow new Error(`Invalid asset name: ${assetOrContractId}`);\n\t\t\t[contractAddress, contractName] = parseContractId(principal);\n\t\t\ttokenName = tName;\n\t\t\tid = tokenNameOrAssetId as ClarityValue;\n\t\t}\n\n\t\tif (!validateStacksAddress(contractAddress)) {\n\t\t\tthrow new Error(`Invalid contract address: ${contractAddress}`);\n\t\t}\n\n\t\treturn {\n\t\t\ttype: \"nft-postcondition\",\n\t\t\taddress: this.address,\n\t\t\tcondition: this.code,\n\t\t\tasset: `${contractAddress}.${contractName}::${tokenName}`,\n\t\t\tassetId: id,\n\t\t};\n\t}\n}\n\nexport const Pc = {\n\tprincipal(address: string) {\n\t\tconst [addr, name] = address.split(\".\");\n\t\tif (\n\t\t\t!addr ||\n\t\t\t!validateStacksAddress(addr) ||\n\t\t\t(typeof name === \"string\" && !name)\n\t\t) {\n\t\t\tthrow new Error(`Invalid principal: ${address}`);\n\t\t}\n\t\treturn new PartialPcWithPrincipal(address);\n\t},\n\torigin() {\n\t\treturn new PartialPcWithPrincipal(\"origin\");\n\t},\n\tfromHex: (hex: string): PostCondition => fromHex(hex),\n};\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": "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",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "633164308263DBCA64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
parsePrincipal
|
|
3
|
-
} from "./stacks-
|
|
3
|
+
} from "./stacks-esm-2mc7ebrm.js";
|
|
4
4
|
|
|
5
5
|
// src/filters/event-types.ts
|
|
6
6
|
var DECODED_EVENT_TYPES = [
|
|
@@ -16,6 +16,20 @@ var DECODED_EVENT_TYPES = [
|
|
|
16
16
|
"nft_burn",
|
|
17
17
|
"print"
|
|
18
18
|
];
|
|
19
|
+
var VM_EVENT_TYPES = [
|
|
20
|
+
"nested_contract_call",
|
|
21
|
+
"var_set",
|
|
22
|
+
"map_set",
|
|
23
|
+
"map_insert",
|
|
24
|
+
"map_delete"
|
|
25
|
+
];
|
|
26
|
+
var VM_NODE_TO_STORED_TYPE = {
|
|
27
|
+
contract_call_event: "nested_contract_call",
|
|
28
|
+
var_set_event: "var_set",
|
|
29
|
+
map_set_event: "map_set",
|
|
30
|
+
map_insert_event: "map_insert",
|
|
31
|
+
map_delete_event: "map_delete"
|
|
32
|
+
};
|
|
19
33
|
var CHAIN_EVENT_FILTER_TYPES = [
|
|
20
34
|
"stx_transfer",
|
|
21
35
|
"stx_mint",
|
|
@@ -30,6 +44,11 @@ var CHAIN_EVENT_FILTER_TYPES = [
|
|
|
30
44
|
"contract_call",
|
|
31
45
|
"contract_deploy",
|
|
32
46
|
"print_event",
|
|
47
|
+
"nested_contract_call",
|
|
48
|
+
"var_set",
|
|
49
|
+
"map_set",
|
|
50
|
+
"map_insert",
|
|
51
|
+
"map_delete",
|
|
33
52
|
"sbtc_deposit",
|
|
34
53
|
"sbtc_withdrawal_create",
|
|
35
54
|
"sbtc_withdrawal_accept",
|
|
@@ -107,7 +126,7 @@ function assertNoWildcards(surface, spec) {
|
|
|
107
126
|
const candidates = Array.isArray(value) ? value : [value];
|
|
108
127
|
for (const candidate of candidates) {
|
|
109
128
|
if (typeof candidate === "string" && hasWildcard(candidate)) {
|
|
110
|
-
unsupported(surface, `${key} wildcard "${candidate}"`, "wildcard patterns are
|
|
129
|
+
unsupported(surface, `${key} wildcard "${candidate}"`, "wildcard patterns are Webhooks/Subgraphs-only");
|
|
111
130
|
}
|
|
112
131
|
}
|
|
113
132
|
}
|
|
@@ -125,10 +144,10 @@ function toChainTrigger(spec) {
|
|
|
125
144
|
if (DECORATIVE_FIELDS.has(key))
|
|
126
145
|
continue;
|
|
127
146
|
if (key === "factory") {
|
|
128
|
-
unsupported("
|
|
147
|
+
unsupported("Webhooks", "factory", "dynamic factory discovery is a Subgraphs-only concept — a trigger targets addresses known when it is created");
|
|
129
148
|
}
|
|
130
149
|
if (Array.isArray(value)) {
|
|
131
|
-
unsupported("
|
|
150
|
+
unsupported("Webhooks", `${key} set`, "a chain trigger targets ONE contract — create one subscription per contract, or use Index/Subgraphs which accept the set");
|
|
132
151
|
}
|
|
133
152
|
out[key] = typeof value === "bigint" ? value.toString() : value;
|
|
134
153
|
}
|
|
@@ -147,44 +166,64 @@ function toIndexParams(spec, extra = {}) {
|
|
|
147
166
|
unsupported("Index events", "factory", "dynamic factory discovery is a Subgraphs-only concept");
|
|
148
167
|
}
|
|
149
168
|
if (AMOUNT_FIELDS.has(key)) {
|
|
150
|
-
unsupported("Index events", key, "amount predicates are
|
|
169
|
+
unsupported("Index events", key, "amount predicates are Webhooks/Subgraphs-only; filter client-side on the decoded rows");
|
|
151
170
|
}
|
|
152
171
|
if (key === "topic") {
|
|
153
|
-
unsupported("Index events", "topic", "per-topic reads are Subgraphs/
|
|
172
|
+
unsupported("Index events", "topic", "per-topic reads are Subgraphs/Webhooks-only (or read the contract's print feed and switch on topic)");
|
|
154
173
|
}
|
|
155
174
|
if (key === "lockedAddress") {
|
|
156
175
|
out.sender = value;
|
|
157
176
|
continue;
|
|
158
177
|
}
|
|
159
|
-
if (key === "caller") {
|
|
160
|
-
unsupported("Index events", "caller", "contract-call fields live on index.contractCalls");
|
|
178
|
+
if (key === "caller" && spec.type !== "nested_contract_call") {
|
|
179
|
+
unsupported("Index events", "caller", "outer contract-call fields live on index.contractCalls");
|
|
161
180
|
}
|
|
162
181
|
out[key] = value;
|
|
163
182
|
}
|
|
164
183
|
return { ...out, ...extra };
|
|
165
184
|
}
|
|
185
|
+
var VM_MEMBERS = new Set([
|
|
186
|
+
"nested_contract_call",
|
|
187
|
+
"var_set",
|
|
188
|
+
"map_set",
|
|
189
|
+
"map_insert",
|
|
190
|
+
"map_delete"
|
|
191
|
+
]);
|
|
192
|
+
var VM_INDEX_ONLY_FIELDS = new Set([
|
|
193
|
+
"functionName",
|
|
194
|
+
"caller",
|
|
195
|
+
"sender",
|
|
196
|
+
"map",
|
|
197
|
+
"varName"
|
|
198
|
+
]);
|
|
166
199
|
function toStreamsParams(spec, extra = {}) {
|
|
167
200
|
assertNoWildcards("Streams", spec);
|
|
168
201
|
const out = {
|
|
169
202
|
types: [spec.type === "print_event" ? "print" : spec.type]
|
|
170
203
|
};
|
|
204
|
+
const isVm = VM_MEMBERS.has(spec.type);
|
|
205
|
+
if (isVm)
|
|
206
|
+
out.clock = "vm";
|
|
171
207
|
for (const [key, value] of specEntries(spec)) {
|
|
172
208
|
if (DECORATIVE_FIELDS.has(key))
|
|
173
209
|
continue;
|
|
210
|
+
if (isVm && VM_INDEX_ONLY_FIELDS.has(key)) {
|
|
211
|
+
unsupported("Streams", key, "vm payload predicates are Index/Subgraphs/Subscriptions-only; Streams clock=vm narrows by types and contractId");
|
|
212
|
+
}
|
|
174
213
|
if (key === "factory") {
|
|
175
214
|
unsupported("Streams", "factory", "dynamic factory discovery is a Subgraphs-only concept");
|
|
176
215
|
}
|
|
177
216
|
if (AMOUNT_FIELDS.has(key)) {
|
|
178
|
-
unsupported("Streams", key, "amount predicates are
|
|
217
|
+
unsupported("Streams", key, "amount predicates are Webhooks/Subgraphs-only");
|
|
179
218
|
}
|
|
180
219
|
if (key === "trait") {
|
|
181
220
|
unsupported("Streams", "trait", "Streams has no trait resolution — Index and Subgraphs do");
|
|
182
221
|
}
|
|
183
222
|
if (key === "topic") {
|
|
184
|
-
unsupported("Streams", "topic", "per-topic filtering is Subgraphs/
|
|
223
|
+
unsupported("Streams", "topic", "per-topic filtering is Subgraphs/Webhooks-only");
|
|
185
224
|
}
|
|
186
225
|
if (key === "lockedAddress") {
|
|
187
|
-
unsupported("Streams", "lockedAddress", "stx_lock address filtering is
|
|
226
|
+
unsupported("Streams", "lockedAddress", "stx_lock address filtering is Webhooks/Subgraphs-only");
|
|
188
227
|
}
|
|
189
228
|
out[key] = value;
|
|
190
229
|
}
|
|
@@ -232,7 +271,7 @@ function makeChainEventFilter(type, fields) {
|
|
|
232
271
|
validateSpec(spec);
|
|
233
272
|
const filter = { ...spec };
|
|
234
273
|
filter.toChainTrigger = () => toChainTrigger(spec);
|
|
235
|
-
if (DECODED_MEMBERS.has(type)) {
|
|
274
|
+
if (DECODED_MEMBERS.has(type) || VM_MEMBERS.has(type)) {
|
|
236
275
|
filter.toIndexParams = (extra) => toIndexParams(spec, extra);
|
|
237
276
|
filter.toStreamsParams = (extra) => toStreamsParams(spec, extra);
|
|
238
277
|
}
|
|
@@ -262,13 +301,18 @@ var on = {
|
|
|
262
301
|
contractCall: (fields = {}) => makeChainEventFilter("contract_call", fields),
|
|
263
302
|
contractDeploy: (fields = {}) => makeChainEventFilter("contract_deploy", fields),
|
|
264
303
|
print: (fields = {}) => makeChainEventFilter("print_event", fields),
|
|
304
|
+
nestedCall: (fields = {}) => makeChainEventFilter("nested_contract_call", fields),
|
|
305
|
+
varSet: (fields = {}) => makeChainEventFilter("var_set", fields),
|
|
306
|
+
mapSet: (fields = {}) => makeChainEventFilter("map_set", fields),
|
|
307
|
+
mapInsert: (fields = {}) => makeChainEventFilter("map_insert", fields),
|
|
308
|
+
mapDelete: (fields = {}) => makeChainEventFilter("map_delete", fields),
|
|
265
309
|
sbtcDeposit: (fields = {}) => makeChainEventFilter("sbtc_deposit", fields),
|
|
266
310
|
sbtcWithdrawalCreate: (fields = {}) => makeChainEventFilter("sbtc_withdrawal_create", fields),
|
|
267
311
|
sbtcWithdrawalAccept: (fields = {}) => makeChainEventFilter("sbtc_withdrawal_accept", fields),
|
|
268
312
|
sbtcWithdrawalReject: (fields = {}) => makeChainEventFilter("sbtc_withdrawal_reject", fields),
|
|
269
313
|
sbtcWithdrawalSweptConfirmed: (fields = {}) => makeChainEventFilter("sbtc_withdrawal_swept_confirmed", fields)
|
|
270
314
|
};
|
|
271
|
-
export { DECODED_EVENT_TYPES, CHAIN_EVENT_FILTER_TYPES, assetId, isPrincipal, hasWildcard, assertPrincipalish, assertAssetIdentifier, assertContractId, makeChainEventFilter, fromSubgraphSource, on };
|
|
315
|
+
export { DECODED_EVENT_TYPES, VM_EVENT_TYPES, VM_NODE_TO_STORED_TYPE, CHAIN_EVENT_FILTER_TYPES, assetId, isPrincipal, hasWildcard, assertPrincipalish, assertAssetIdentifier, assertContractId, makeChainEventFilter, fromSubgraphSource, on };
|
|
272
316
|
|
|
273
|
-
//# debugId=
|
|
274
|
-
//# sourceMappingURL=stacks-
|
|
317
|
+
//# debugId=FA856E878E2D0A0064756E2164756E21
|
|
318
|
+
//# sourceMappingURL=stacks-esm-3pv5avgr.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/filters/event-types.ts", "../src/filters/validate.ts", "../src/filters/factories.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"// The decoded event-type vocabulary — canonical home. Index (decoded layer)\n// and Streams (canonical firehose) expose the SAME set. This lives in\n// @secondlayer/stacks because it is the leaf of the dependency graph\n// (shared → stacks), so no package can drift a private copy upward:\n// @secondlayer/shared re-exports it for back-compat.\nexport const DECODED_EVENT_TYPES = [\n\t\"stx_transfer\",\n\t\"stx_mint\",\n\t\"stx_burn\",\n\t\"stx_lock\",\n\t\"ft_transfer\",\n\t\"ft_mint\",\n\t\"ft_burn\",\n\t\"nft_transfer\",\n\t\"nft_mint\",\n\t\"nft_burn\",\n\t\"print\",\n] as const;\n\nexport type DecodedEventType = (typeof DECODED_EVENT_TYPES)[number];\n\n/** Opt-in node vm_events, stored names. Parallel to DECODED_EVENT_TYPES — not\n * the decoded_events / Streams 1.0 vocab. Cursor second component is\n * ordinal. Inner calls are never `contract_call`. */\nexport const VM_EVENT_TYPES = [\n\t\"nested_contract_call\",\n\t\"var_set\",\n\t\"map_set\",\n\t\"map_insert\",\n\t\"map_delete\",\n] as const;\n\nexport type VmEventType = (typeof VM_EVENT_TYPES)[number];\n\n/** Node `/new_block.vm_events[].type` → stored/Index/Streams name. One map,\n * shared by the indexer parser and any consumer that reads raw observer\n * bodies, so the two dialects cannot drift. Inner calls are never\n * `contract_call` (that is the signed outer tx). */\nexport const VM_NODE_TO_STORED_TYPE = {\n\tcontract_call_event: \"nested_contract_call\",\n\tvar_set_event: \"var_set\",\n\tmap_set_event: \"map_set\",\n\tmap_insert_event: \"map_insert\",\n\tmap_delete_event: \"map_delete\",\n} as const satisfies Record<string, VmEventType>;\n\nexport type VmNodeEventType = keyof typeof VM_NODE_TO_STORED_TYPE;\n\n/** Every chain-event filter member across all four surfaces: the 10 decoded\n * token/STX types, the three contract-shaped types (spelled as subgraphs and\n * triggers spell them — Index/Streams project `print_event` → `print`), and\n * the five sBTC lifecycle types (Webhooks-only). */\nexport const CHAIN_EVENT_FILTER_TYPES = [\n\t\"stx_transfer\",\n\t\"stx_mint\",\n\t\"stx_burn\",\n\t\"stx_lock\",\n\t\"ft_transfer\",\n\t\"ft_mint\",\n\t\"ft_burn\",\n\t\"nft_transfer\",\n\t\"nft_mint\",\n\t\"nft_burn\",\n\t\"contract_call\",\n\t\"contract_deploy\",\n\t\"print_event\",\n\t\"nested_contract_call\",\n\t\"var_set\",\n\t\"map_set\",\n\t\"map_insert\",\n\t\"map_delete\",\n\t\"sbtc_deposit\",\n\t\"sbtc_withdrawal_create\",\n\t\"sbtc_withdrawal_accept\",\n\t\"sbtc_withdrawal_reject\",\n\t\"sbtc_withdrawal_swept_confirmed\",\n] as const;\n\nexport type ChainEventFilterType = (typeof CHAIN_EVENT_FILTER_TYPES)[number];\n",
|
|
6
|
+
"import { parsePrincipal } from \"../utils/address.ts\";\n\n/** A validated Stacks principal (standard or contract). Branded so downstream\n * code can require \"already validated\" without re-checking. */\nexport type Principal = string & { readonly __principal: unique symbol };\n\n/**\n * `<contract>::<asset-name>` — the shape a fungible/non-fungible asset filter\n * takes, expressed so the compiler can check it.\n *\n * The most common mistake in this API is passing a CONTRACT ID\n * (`SP….sbtc-token`) where an asset identifier (`SP….sbtc-token::sbtc-token`)\n * belongs, and the failure mode is a query that quietly returns zero rows. The\n * two differ structurally by `::`, so a template-literal type catches it at the\n * call site — no brand, no cast, literals just work.\n *\n * A value that is only known at runtime (config, env) is not narrow enough on\n * purpose; run it through {@link assetId} once, which validates and narrows.\n *\n * Wildcard patterns (Webhooks/Subgraphs-only) are admitted by the second arm — they\n * are legitimately not full identifiers (`SPB.*`), and the runtime validator\n * short-circuits on them for the same reason.\n */\nexport type AssetIdentifier = `${string}::${string}` | `${string}*${string}`;\n\n/**\n * Narrow a runtime string to an {@link AssetIdentifier}, validating it.\n *\n * The escape hatch for config-driven values: `assetId(process.env.ASSET!)`\n * throws on a contract id instead of letting it through to a zero-row query.\n */\nexport function assetId(value: string): AssetIdentifier {\n\tassertAssetIdentifier(\"assetIdentifier\", value);\n\treturn value as AssetIdentifier;\n}\n\n/** `true` for a standard (`SP…`/`ST…`) or contract (`SP….name`) principal.\n * Shares {@link parsePrincipal} with the ABI guards so the two surfaces can't\n * disagree about what a principal is. */\nexport function isPrincipal(value: string): value is Principal {\n\treturn parsePrincipal(value) !== null;\n}\n\n/** Webhooks and Subgraph sources match `*` wildcards in\n * principal/identifier patterns; every\n * other surface treats the value literally. */\nexport function hasWildcard(value: string): boolean {\n\treturn value.includes(\"*\");\n}\n\n/** Throw unless `value` is a principal or a wildcard pattern. The factories\n * call this so a swapped argument (asset id where a sender belongs, typo'd\n * address) fails at construction — not as a silent zero-row query. */\nexport function assertPrincipalish(field: string, value: string): void {\n\tif (hasWildcard(value)) return;\n\tif (!isPrincipal(value)) {\n\t\tthrow new Error(\n\t\t\t`${field} \"${value}\" is not a valid Stacks principal (SP…/ST…, optionally .contract-name).`,\n\t\t);\n\t}\n}\n\n/** Throw unless `value` looks like `SP….contract::asset` (or a wildcard). */\nexport function assertAssetIdentifier(field: string, value: string): void {\n\tif (hasWildcard(value)) return;\n\tconst [contractId, assetName, ...rest] = value.split(\"::\");\n\tif (\n\t\t!contractId ||\n\t\t!assetName ||\n\t\trest.length > 0 ||\n\t\t!contractId.includes(\".\") ||\n\t\t!isPrincipal(contractId)\n\t) {\n\t\tthrow new Error(\n\t\t\t`${field} \"${value}\" is not a valid asset identifier (SP….contract-name::asset-name). Passing a bare contract id here matches zero rows — use contractId for that.`,\n\t\t);\n\t}\n}\n\n/** Throw unless `value` is a contract id `SP….name` (or a wildcard). */\nexport function assertContractId(field: string, value: string): void {\n\tif (hasWildcard(value)) return;\n\tif (value.includes(\"::\")) {\n\t\tthrow new Error(\n\t\t\t`${field} \"${value}\" is an asset identifier, not a contract id — use assetIdentifier for that.`,\n\t\t);\n\t}\n\tif (!value.includes(\".\") || !isPrincipal(value)) {\n\t\tthrow new Error(\n\t\t\t`${field} \"${value}\" is not a valid contract id (SP….contract-name).`,\n\t\t);\n\t}\n}\n",
|
|
7
|
+
"import type { AbiContract } from \"../clarity/abi/contract.ts\";\nimport type { ChainEventFilterType } from \"./event-types.ts\";\nimport type { SubgraphMemberType, SubgraphSourceSpec } from \"./types.ts\";\nimport type {\n\tChainEventFilter,\n\tChainEventFilterSpec,\n\tChainTriggerShape,\n\tContractCallsParamsShape,\n\tIndexEventsParamsShape,\n\tPrintFieldType,\n\tSpecFor,\n\tStreamsParamsShape,\n\tStreamsVmParamsShape,\n} from \"./types.ts\";\nimport {\n\tassertAssetIdentifier,\n\tassertContractId,\n\tassertPrincipalish,\n\thasWildcard,\n} from \"./validate.ts\";\n\n// ── Field metadata driving validation and projections ────────────────────\n\nconst PRINCIPAL_FIELDS = new Set([\n\t\"sender\",\n\t\"recipient\",\n\t\"caller\",\n\t\"deployer\",\n\t\"lockedAddress\",\n]);\nconst AMOUNT_FIELDS = new Set([\"minAmount\", \"maxAmount\"]);\n/** Fields with no filtering semantics — safe to drop in a projection. */\nconst DECORATIVE_FIELDS = new Set([\"abi\", \"prints\"]);\n\nfunction specEntries(spec: ChainEventFilterSpec): Array<[string, unknown]> {\n\treturn Object.entries(spec).filter(\n\t\t([key, value]) => key !== \"type\" && value !== undefined,\n\t);\n}\n\nfunction validateSpec(spec: ChainEventFilterSpec): void {\n\tfor (const [key, value] of specEntries(spec)) {\n\t\tif (PRINCIPAL_FIELDS.has(key)) {\n\t\t\tassertPrincipalish(key, value as string);\n\t\t} else if (key === \"assetIdentifier\") {\n\t\t\tassertAssetIdentifier(key, value as string);\n\t\t} else if (key === \"contractId\") {\n\t\t\t// A contract SET validates member-wise — one bad id in a router+pools\n\t\t\t// list must fail as loudly as a bad single id.\n\t\t\tfor (const id of Array.isArray(value) ? value : [value]) {\n\t\t\t\tassertContractId(key, id as string);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/** Throw for a field the target surface cannot express — dropping it would\n * silently widen the match, which is the exact bug this module exists to\n * kill. Names the surface that CAN express it. */\nfunction unsupported(surface: string, field: string, hint: string): never {\n\tthrow new Error(\n\t\t`${field} cannot be expressed on ${surface} — ${hint}. Drop the field from the filter or use the surface that supports it.`,\n\t);\n}\n\nfunction assertNoWildcards(surface: string, spec: ChainEventFilterSpec): void {\n\tfor (const [key, value] of specEntries(spec)) {\n\t\t// Arrays too: a wildcard inside a contractId set would otherwise reach\n\t\t// the wire as a literal `IN ('SP….pool-*')` — the silent zero-row match\n\t\t// this module exists to kill.\n\t\tconst candidates = Array.isArray(value) ? value : [value];\n\t\tfor (const candidate of candidates) {\n\t\t\tif (typeof candidate === \"string\" && hasWildcard(candidate)) {\n\t\t\t\tunsupported(\n\t\t\t\t\tsurface,\n\t\t\t\t\t`${key} wildcard \"${candidate}\"`,\n\t\t\t\t\t\"wildcard patterns are Webhooks/Subgraphs-only\",\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/** The Index API treats `trait` and `contractId` as mutually exclusive (a\n * trait already resolves to a contract set). Throw here, naming the fix,\n * instead of letting the pair reach the server as a 400. Subgraphs AND them\n * — that surface accepts both. */\nfunction assertNotTraitAndContract(\n\tsurface: string,\n\tspec: ChainEventFilterSpec,\n): void {\n\tconst trait = \"trait\" in spec ? spec.trait : undefined;\n\tconst contract = \"contractId\" in spec ? spec.contractId : undefined;\n\tif (trait !== undefined && contract !== undefined) {\n\t\tunsupported(\n\t\t\tsurface,\n\t\t\t\"trait with contractId\",\n\t\t\t\"the Index treats them as mutually exclusive — drop one, or use a subgraph source, which ANDs the pair\",\n\t\t);\n\t}\n}\n\n// ── Projections ──────────────────────────────────────────────────────────\n\nfunction toChainTrigger(spec: ChainEventFilterSpec): ChainTriggerShape {\n\tconst out: Record<string, string | number> = {};\n\tfor (const [key, value] of specEntries(spec)) {\n\t\tif (DECORATIVE_FIELDS.has(key)) continue;\n\t\tif (key === \"factory\") {\n\t\t\tunsupported(\n\t\t\t\t\"Webhooks\",\n\t\t\t\t\"factory\",\n\t\t\t\t\"dynamic factory discovery is a Subgraphs-only concept — a trigger targets addresses known when it is created\",\n\t\t\t);\n\t\t}\n\t\tif (Array.isArray(value)) {\n\t\t\t// One trigger, one contract: silently taking the first would watch\n\t\t\t// a fraction of what the filter says. Create one subscription per\n\t\t\t// contract instead.\n\t\t\tunsupported(\n\t\t\t\t\"Webhooks\",\n\t\t\t\t`${key} set`,\n\t\t\t\t\"a chain trigger targets ONE contract — create one subscription per contract, or use Index/Subgraphs which accept the set\",\n\t\t\t);\n\t\t}\n\t\t// The one sanctioned bigint→string boundary.\n\t\tout[key] =\n\t\t\ttypeof value === \"bigint\" ? value.toString() : (value as string | number);\n\t}\n\treturn { type: spec.type, ...out };\n}\n\nfunction toIndexParams(\n\tspec: ChainEventFilterSpec,\n\textra: Record<string, unknown> = {},\n): IndexEventsParamsShape {\n\tassertNoWildcards(\"Index events\", spec);\n\tassertNotTraitAndContract(\"Index events\", spec);\n\tconst out: Record<string, unknown> = {\n\t\teventType: spec.type === \"print_event\" ? \"print\" : spec.type,\n\t};\n\tfor (const [key, value] of specEntries(spec)) {\n\t\tif (DECORATIVE_FIELDS.has(key)) continue;\n\t\tif (key === \"factory\") {\n\t\t\tunsupported(\n\t\t\t\t\"Index events\",\n\t\t\t\t\"factory\",\n\t\t\t\t\"dynamic factory discovery is a Subgraphs-only concept\",\n\t\t\t);\n\t\t}\n\t\tif (AMOUNT_FIELDS.has(key)) {\n\t\t\tunsupported(\n\t\t\t\t\"Index events\",\n\t\t\t\tkey,\n\t\t\t\t\"amount predicates are Webhooks/Subgraphs-only; filter client-side on the decoded rows\",\n\t\t\t);\n\t\t}\n\t\tif (key === \"topic\") {\n\t\t\tunsupported(\n\t\t\t\t\"Index events\",\n\t\t\t\t\"topic\",\n\t\t\t\t\"per-topic reads are Subgraphs/Webhooks-only (or read the contract's print feed and switch on topic)\",\n\t\t\t);\n\t\t}\n\t\tif (key === \"lockedAddress\") {\n\t\t\t// Index normalizes stx_lock's locked_address INTO the `sender` column\n\t\t\t// (the row's sender IS the locked address) — a rename, not a gap.\n\t\t\tout.sender = value;\n\t\t\tcontinue;\n\t\t}\n\t\tif (key === \"caller\" && spec.type !== \"nested_contract_call\") {\n\t\t\tunsupported(\n\t\t\t\t\"Index events\",\n\t\t\t\t\"caller\",\n\t\t\t\t\"outer contract-call fields live on index.contractCalls\",\n\t\t\t);\n\t\t}\n\t\tout[key] = value;\n\t}\n\treturn { ...out, ...extra } as IndexEventsParamsShape;\n}\n\nconst VM_MEMBERS = new Set<ChainEventFilterType>([\n\t\"nested_contract_call\",\n\t\"var_set\",\n\t\"map_set\",\n\t\"map_insert\",\n\t\"map_delete\",\n]);\n\nconst VM_INDEX_ONLY_FIELDS = new Set([\n\t\"functionName\",\n\t\"caller\",\n\t\"sender\",\n\t\"map\",\n\t\"varName\",\n]);\n\nfunction toStreamsParams(\n\tspec: ChainEventFilterSpec,\n\textra: Record<string, unknown> = {},\n): StreamsParamsShape | StreamsVmParamsShape {\n\tassertNoWildcards(\"Streams\", spec);\n\tconst out: Record<string, unknown> = {\n\t\ttypes: [spec.type === \"print_event\" ? \"print\" : spec.type],\n\t};\n\tconst isVm = VM_MEMBERS.has(spec.type);\n\tif (isVm) out.clock = \"vm\";\n\tfor (const [key, value] of specEntries(spec)) {\n\t\tif (DECORATIVE_FIELDS.has(key)) continue;\n\t\t// Streams clock=vm has no payload predicates beyond contract_id (the\n\t\t// server rejects sender on clock=vm; function/map/var live on Index).\n\t\tif (isVm && VM_INDEX_ONLY_FIELDS.has(key)) {\n\t\t\tunsupported(\n\t\t\t\t\"Streams\",\n\t\t\t\tkey,\n\t\t\t\t\"vm payload predicates are Index/Subgraphs/Subscriptions-only; Streams clock=vm narrows by types and contractId\",\n\t\t\t);\n\t\t}\n\t\tif (key === \"factory\") {\n\t\t\tunsupported(\n\t\t\t\t\"Streams\",\n\t\t\t\t\"factory\",\n\t\t\t\t\"dynamic factory discovery is a Subgraphs-only concept\",\n\t\t\t);\n\t\t}\n\t\tif (AMOUNT_FIELDS.has(key)) {\n\t\t\tunsupported(\n\t\t\t\t\"Streams\",\n\t\t\t\tkey,\n\t\t\t\t\"amount predicates are Webhooks/Subgraphs-only\",\n\t\t\t);\n\t\t}\n\t\tif (key === \"trait\") {\n\t\t\tunsupported(\n\t\t\t\t\"Streams\",\n\t\t\t\t\"trait\",\n\t\t\t\t\"Streams has no trait resolution — Index and Subgraphs do\",\n\t\t\t);\n\t\t}\n\t\tif (key === \"topic\") {\n\t\t\tunsupported(\n\t\t\t\t\"Streams\",\n\t\t\t\t\"topic\",\n\t\t\t\t\"per-topic filtering is Subgraphs/Webhooks-only\",\n\t\t\t);\n\t\t}\n\t\tif (key === \"lockedAddress\") {\n\t\t\tunsupported(\n\t\t\t\t\"Streams\",\n\t\t\t\t\"lockedAddress\",\n\t\t\t\t\"stx_lock address filtering is Webhooks/Subgraphs-only\",\n\t\t\t);\n\t\t}\n\t\tout[key] = value;\n\t}\n\treturn { ...out, ...extra } as StreamsParamsShape | StreamsVmParamsShape;\n}\n\nfunction toContractCallsParams(\n\tspec: ChainEventFilterSpec,\n\textra: Record<string, unknown> = {},\n): ContractCallsParamsShape {\n\tassertNoWildcards(\"Index contract-calls\", spec);\n\tassertNotTraitAndContract(\"Index contract-calls\", spec);\n\tconst out: Record<string, unknown> = {};\n\tfor (const [key, value] of specEntries(spec)) {\n\t\tif (DECORATIVE_FIELDS.has(key)) continue;\n\t\tif (key === \"factory\") {\n\t\t\tunsupported(\n\t\t\t\t\"Index contract-calls\",\n\t\t\t\t\"factory\",\n\t\t\t\t\"dynamic factory discovery is a Subgraphs-only concept\",\n\t\t\t);\n\t\t}\n\t\tif (key === \"caller\") {\n\t\t\t// The endpoint filters by tx sender, which IS the caller — a rename,\n\t\t\t// not a gap.\n\t\t\tout.sender = value;\n\t\t\tcontinue;\n\t\t}\n\t\tout[key] = value;\n\t}\n\treturn { ...out, ...extra } as ContractCallsParamsShape;\n}\n\nfunction toSubgraphSource(spec: ChainEventFilterSpec): ChainEventFilterSpec {\n\t// The spec IS the subgraph source shape (camelCase, bigint amounts,\n\t// literal prints/abi preserved). Strip the projection methods by copying\n\t// data fields only.\n\treturn Object.fromEntries([\n\t\t[\"type\", spec.type],\n\t\t...specEntries(spec),\n\t]) as unknown as ChainEventFilterSpec;\n}\n\n// ── Factory ──────────────────────────────────────────────────────────────\n\nconst DECODED_MEMBERS = new Set<ChainEventFilterType>([\n\t\"stx_transfer\",\n\t\"stx_mint\",\n\t\"stx_burn\",\n\t\"stx_lock\",\n\t\"ft_transfer\",\n\t\"ft_mint\",\n\t\"ft_burn\",\n\t\"nft_transfer\",\n\t\"nft_mint\",\n\t\"nft_burn\",\n\t\"print_event\",\n]);\n\n/** Build a canonical filter: validated spec + the projections its member\n * supports (methods are attached per member at runtime, matching the\n * type-level gating exactly). `const F` preserves field literals — a\n * `prints`/`abi` declaration keeps its exact type through\n * `toSubgraphSource()`, which is what feeds `defineSubgraph` narrowing. */\nexport function makeChainEventFilter<\n\tT extends ChainEventFilterType,\n\tconst F extends Omit<SpecFor<T>, \"type\">,\n>(type: T, fields: F): ChainEventFilter<T, { type: T } & F> {\n\tconst spec = { type, ...fields } as unknown as SpecFor<T>;\n\tvalidateSpec(spec);\n\n\tconst filter = { ...spec } as unknown as Record<string, unknown>;\n\tfilter.toChainTrigger = () => toChainTrigger(spec);\n\tif (DECODED_MEMBERS.has(type) || VM_MEMBERS.has(type)) {\n\t\tfilter.toIndexParams = (extra?: Record<string, unknown>) =>\n\t\t\ttoIndexParams(spec, extra);\n\t\tfilter.toStreamsParams = (extra?: Record<string, unknown>) =>\n\t\t\ttoStreamsParams(spec, extra);\n\t}\n\tif (type === \"contract_call\") {\n\t\tfilter.toContractCallsParams = (extra?: Record<string, unknown>) =>\n\t\t\ttoContractCallsParams(spec, extra);\n\t}\n\tif (!type.startsWith(\"sbtc_\")) {\n\t\tfilter.toSubgraphSource = () => toSubgraphSource(spec);\n\t}\n\treturn filter as unknown as ChainEventFilter<T, { type: T } & F>;\n}\n\n/**\n * Rehydrate a canonical filter from a subgraph-source-shaped object (the\n * inverse of `toSubgraphSource`). Powers migration and the round-trip\n * property gate: `toSubgraphSource(fromSubgraphSource(f))` must deep-equal\n * `f` for every production subgraph source.\n */\nexport function fromSubgraphSource(\n\tsource: SubgraphSourceSpec,\n): ChainEventFilter<SubgraphMemberType> {\n\tconst { type, ...fields } = source;\n\treturn makeChainEventFilter(\n\t\ttype,\n\t\tfields as Omit<SpecFor<typeof type>, \"type\">,\n\t) as unknown as ChainEventFilter<SubgraphMemberType>;\n}\n\ntype Fields<T extends ChainEventFilterType> = Omit<SpecFor<T>, \"type\">;\n\n/** The `on.*` namespace, annotated explicitly — bunup's dts emitter needs an\n * annotation on exported values (an inferred object of generic factories\n * collapses to `{}` in the emitted declarations). */\nexport interface OnNamespace {\n\tstxTransfer(\n\t\tfields?: Fields<\"stx_transfer\">,\n\t): ChainEventFilter<\"stx_transfer\">;\n\tstxMint(fields?: Fields<\"stx_mint\">): ChainEventFilter<\"stx_mint\">;\n\tstxBurn(fields?: Fields<\"stx_burn\">): ChainEventFilter<\"stx_burn\">;\n\tstxLock(fields?: Fields<\"stx_lock\">): ChainEventFilter<\"stx_lock\">;\n\tftTransfer(fields?: Fields<\"ft_transfer\">): ChainEventFilter<\"ft_transfer\">;\n\tftMint(fields?: Fields<\"ft_mint\">): ChainEventFilter<\"ft_mint\">;\n\tftBurn(fields?: Fields<\"ft_burn\">): ChainEventFilter<\"ft_burn\">;\n\tnftTransfer(\n\t\tfields?: Fields<\"nft_transfer\">,\n\t): ChainEventFilter<\"nft_transfer\">;\n\tnftMint(fields?: Fields<\"nft_mint\">): ChainEventFilter<\"nft_mint\">;\n\tnftBurn(fields?: Fields<\"nft_burn\">): ChainEventFilter<\"nft_burn\">;\n\t/** `abi` literals are preserved (`const A`) so `toSubgraphSource()` keeps\n\t * typing `event.input` inside `defineSubgraph`. */\n\tcontractCall<const A extends AbiContract | undefined = undefined>(\n\t\tfields?: Omit<SpecFor<\"contract_call\">, \"type\" | \"abi\"> & { abi?: A },\n\t): ChainEventFilter<\n\t\t\"contract_call\",\n\t\t{ type: \"contract_call\" } & Omit<\n\t\t\tSpecFor<\"contract_call\">,\n\t\t\t\"type\" | \"abi\"\n\t\t> & {\n\t\t\t\tabi?: A;\n\t\t\t}\n\t>;\n\tcontractDeploy(\n\t\tfields?: Fields<\"contract_deploy\">,\n\t): ChainEventFilter<\"contract_deploy\">;\n\t/** Canonical member is `print_event` (as Subgraphs and Webhooks spell\n\t * it); `toIndexParams`/`toStreamsParams` project to `print`. `prints`\n\t * literals are preserved (`const P`) for per-topic `event.data` narrowing. */\n\tprint<\n\t\tconst P extends\n\t\t\t| Record<string, Record<string, PrintFieldType>>\n\t\t\t| undefined = undefined,\n\t>(\n\t\tfields?: Omit<SpecFor<\"print_event\">, \"type\" | \"prints\"> & { prints?: P },\n\t): ChainEventFilter<\n\t\t\"print_event\",\n\t\t{ type: \"print_event\" } & Omit<\n\t\t\tSpecFor<\"print_event\">,\n\t\t\t\"type\" | \"prints\"\n\t\t> & {\n\t\t\t\tprints?: P;\n\t\t\t}\n\t>;\n\tnestedCall(\n\t\tfields?: Fields<\"nested_contract_call\">,\n\t): ChainEventFilter<\"nested_contract_call\">;\n\tvarSet(fields?: Fields<\"var_set\">): ChainEventFilter<\"var_set\">;\n\tmapSet(fields?: Fields<\"map_set\">): ChainEventFilter<\"map_set\">;\n\tmapInsert(fields?: Fields<\"map_insert\">): ChainEventFilter<\"map_insert\">;\n\tmapDelete(fields?: Fields<\"map_delete\">): ChainEventFilter<\"map_delete\">;\n\tsbtcDeposit(\n\t\tfields?: Fields<\"sbtc_deposit\">,\n\t): ChainEventFilter<\"sbtc_deposit\">;\n\tsbtcWithdrawalCreate(\n\t\tfields?: Fields<\"sbtc_withdrawal_create\">,\n\t): ChainEventFilter<\"sbtc_withdrawal_create\">;\n\tsbtcWithdrawalAccept(\n\t\tfields?: Fields<\"sbtc_withdrawal_accept\">,\n\t): ChainEventFilter<\"sbtc_withdrawal_accept\">;\n\tsbtcWithdrawalReject(\n\t\tfields?: Fields<\"sbtc_withdrawal_reject\">,\n\t): ChainEventFilter<\"sbtc_withdrawal_reject\">;\n\tsbtcWithdrawalSweptConfirmed(\n\t\tfields?: Fields<\"sbtc_withdrawal_swept_confirmed\">,\n\t): ChainEventFilter<\"sbtc_withdrawal_swept_confirmed\">;\n}\n\n/**\n * `on.*` — one filter vocabulary for every surface.\n *\n * ```ts\n * import { on } from \"@secondlayer/stacks/filters\";\n *\n * const usdc = on.ftTransfer({ assetIdentifier: USDC, minAmount: 1_000_000n });\n *\n * sl.index.events.list(usdc.toIndexParams({ limit: 100 })); // pull\n * sl.streams.events.consume({ ...usdc.toStreamsParams(), onBatch });\n * sl.webhooks.create({ name, url, triggers: [usdc.toChainTrigger()] });\n * defineSubgraph({ sources: { usdc: usdc.toSubgraphSource() }, schema, handlers });\n * ```\n *\n * A surface a member can't reach is a missing method (compile error), and a\n * field a surface can't express throws at projection time — never a silent\n * zero-row or over-wide match.\n */\nexport const on: OnNamespace = {\n\tstxTransfer: (fields: Fields<\"stx_transfer\"> = {}) =>\n\t\tmakeChainEventFilter(\"stx_transfer\", fields),\n\tstxMint: (fields: Fields<\"stx_mint\"> = {}) =>\n\t\tmakeChainEventFilter(\"stx_mint\", fields),\n\tstxBurn: (fields: Fields<\"stx_burn\"> = {}) =>\n\t\tmakeChainEventFilter(\"stx_burn\", fields),\n\tstxLock: (fields: Fields<\"stx_lock\"> = {}) =>\n\t\tmakeChainEventFilter(\"stx_lock\", fields),\n\tftTransfer: (fields: Fields<\"ft_transfer\"> = {}) =>\n\t\tmakeChainEventFilter(\"ft_transfer\", fields),\n\tftMint: (fields: Fields<\"ft_mint\"> = {}) =>\n\t\tmakeChainEventFilter(\"ft_mint\", fields),\n\tftBurn: (fields: Fields<\"ft_burn\"> = {}) =>\n\t\tmakeChainEventFilter(\"ft_burn\", fields),\n\tnftTransfer: (fields: Fields<\"nft_transfer\"> = {}) =>\n\t\tmakeChainEventFilter(\"nft_transfer\", fields),\n\tnftMint: (fields: Fields<\"nft_mint\"> = {}) =>\n\t\tmakeChainEventFilter(\"nft_mint\", fields),\n\tnftBurn: (fields: Fields<\"nft_burn\"> = {}) =>\n\t\tmakeChainEventFilter(\"nft_burn\", fields),\n\tcontractCall: <const A extends AbiContract | undefined = undefined>(\n\t\tfields: Omit<SpecFor<\"contract_call\">, \"type\" | \"abi\"> & { abi?: A } = {},\n\t) => makeChainEventFilter(\"contract_call\", fields),\n\tcontractDeploy: (fields: Fields<\"contract_deploy\"> = {}) =>\n\t\tmakeChainEventFilter(\"contract_deploy\", fields),\n\t/** Canonical member is `print_event` (as Subgraphs and Webhooks spell\n\t * it); `toIndexParams`/`toStreamsParams` project to `print`. */\n\tprint: <\n\t\tconst P extends\n\t\t\t| Record<string, Record<string, PrintFieldType>>\n\t\t\t| undefined = undefined,\n\t>(\n\t\tfields: Omit<SpecFor<\"print_event\">, \"type\" | \"prints\"> & {\n\t\t\tprints?: P;\n\t\t} = {},\n\t) => makeChainEventFilter(\"print_event\", fields),\n\tnestedCall: (fields: Fields<\"nested_contract_call\"> = {}) =>\n\t\tmakeChainEventFilter(\"nested_contract_call\", fields),\n\tvarSet: (fields: Fields<\"var_set\"> = {}) =>\n\t\tmakeChainEventFilter(\"var_set\", fields),\n\tmapSet: (fields: Fields<\"map_set\"> = {}) =>\n\t\tmakeChainEventFilter(\"map_set\", fields),\n\tmapInsert: (fields: Fields<\"map_insert\"> = {}) =>\n\t\tmakeChainEventFilter(\"map_insert\", fields),\n\tmapDelete: (fields: Fields<\"map_delete\"> = {}) =>\n\t\tmakeChainEventFilter(\"map_delete\", fields),\n\tsbtcDeposit: (fields: Fields<\"sbtc_deposit\"> = {}) =>\n\t\tmakeChainEventFilter(\"sbtc_deposit\", fields),\n\tsbtcWithdrawalCreate: (fields: Fields<\"sbtc_withdrawal_create\"> = {}) =>\n\t\tmakeChainEventFilter(\"sbtc_withdrawal_create\", fields),\n\tsbtcWithdrawalAccept: (fields: Fields<\"sbtc_withdrawal_accept\"> = {}) =>\n\t\tmakeChainEventFilter(\"sbtc_withdrawal_accept\", fields),\n\tsbtcWithdrawalReject: (fields: Fields<\"sbtc_withdrawal_reject\"> = {}) =>\n\t\tmakeChainEventFilter(\"sbtc_withdrawal_reject\", fields),\n\tsbtcWithdrawalSweptConfirmed: (\n\t\tfields: Fields<\"sbtc_withdrawal_swept_confirmed\"> = {},\n\t) => makeChainEventFilter(\"sbtc_withdrawal_swept_confirmed\", fields),\n};\n"
|
|
8
|
+
],
|
|
9
|
+
"mappings": "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",
|
|
10
|
+
"debugId": "FA856E878E2D0A0064756E2164756E21",
|
|
11
|
+
"names": []
|
|
12
|
+
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
deserializeCVBytes,
|
|
3
3
|
serializeCVBytes
|
|
4
|
-
} from "./stacks-
|
|
4
|
+
} from "./stacks-esm-fcfdn2zx.js";
|
|
5
5
|
import {
|
|
6
6
|
BaseError
|
|
7
|
-
} from "./stacks-
|
|
7
|
+
} from "./stacks-esm-1jae0a3r.js";
|
|
8
8
|
import {
|
|
9
9
|
parseContractId
|
|
10
|
-
} from "./stacks-
|
|
10
|
+
} from "./stacks-esm-2mc7ebrm.js";
|
|
11
11
|
import {
|
|
12
12
|
bytesToHex,
|
|
13
13
|
with0x
|
|
14
|
-
} from "./stacks-
|
|
14
|
+
} from "./stacks-esm-cvhazvhd.js";
|
|
15
15
|
|
|
16
16
|
// src/errors/response.ts
|
|
17
17
|
class MalformedResponseError extends BaseError {
|
|
@@ -46,5 +46,5 @@ async function readContract(client, params) {
|
|
|
46
46
|
|
|
47
47
|
export { MalformedResponseError, ReadContractError, readContract };
|
|
48
48
|
|
|
49
|
-
//# debugId=
|
|
50
|
-
//# sourceMappingURL=stacks-
|
|
49
|
+
//# debugId=D2D899C48176433F64756E2164756E21
|
|
50
|
+
//# sourceMappingURL=stacks-esm-743jfh10.js.map
|
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
"import { deserializeCVBytes } from \"../../clarity/deserialize.ts\";\nimport { serializeCVBytes } from \"../../clarity/serialize.ts\";\nimport type { ClarityValue } from \"../../clarity/types.ts\";\nimport type { Client } from \"../../clients/types.ts\";\nimport {\n\tMalformedResponseError,\n\tReadContractError,\n} from \"../../errors/response.ts\";\nimport { parseContractId } from \"../../utils/address.ts\";\nimport { bytesToHex, with0x } from \"../../utils/encoding.ts\";\n\nexport type ReadContractParams = {\n\tcontract: string; // \"address.name\"\n\tfunctionName: string;\n\targs?: ClarityValue[];\n\tsender?: string;\n\t/**\n\t * Nakamoto StacksBlockId to evaluate against. Without it the node answers\n\t * at its own moving tip, which makes a read non-deterministic — the same\n\t * reindex of the same block can return a different value.\n\t */\n\ttip?: string;\n};\n\nexport async function readContract<T extends ClarityValue = ClarityValue>(\n\tclient: Client,\n\tparams: ReadContractParams,\n): Promise<T> {\n\tconst [address, name] = parseContractId(params.contract);\n\tconst sender = params.sender ?? address;\n\n\tconst serializedArgs = (params.args ?? []).map((arg) =>\n\t\twith0x(bytesToHex(serializeCVBytes(arg))),\n\t);\n\n\tconst path = `/v2/contracts/call-read/${encodeURIComponent(address)}/${encodeURIComponent(name)}/${encodeURIComponent(params.functionName)}`;\n\tconst data = await client.request(\n\t\tparams.tip ? `${path}?tip=${encodeURIComponent(params.tip)}` : path,\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\tbody: {\n\t\t\t\tsender,\n\t\t\t\targuments: serializedArgs,\n\t\t\t},\n\t\t},\n\t);\n\n\tif (data.okay) {\n\t\tif (typeof data.result !== \"string\") {\n\t\t\tthrow new MalformedResponseError(\n\t\t\t\t`readContract: /v2/contracts/call-read response is missing \"result\"`,\n\t\t\t);\n\t\t}\n\t\treturn deserializeCVBytes<T>(data.result);\n\t}\n\tthrow new ReadContractError(data.cause ?? \"Read-only call failed\");\n}\n"
|
|
7
7
|
],
|
|
8
8
|
"mappings": ";;;;;;;;;;;;;;;;AAGO,MAAM,+BAA+B,UAAU;AAAA,EAC5C,OAAO;AACjB;AAAA;AAGO,MAAM,0BAA0B,UAAU;AAAA,EACvC,OAAO;AACjB;;;ACcA,eAAsB,YAAmD,CACxE,QACA,QACa;AAAA,EACb,OAAO,SAAS,QAAQ,gBAAgB,OAAO,QAAQ;AAAA,EACvD,MAAM,SAAS,OAAO,UAAU;AAAA,EAEhC,MAAM,kBAAkB,OAAO,QAAQ,CAAC,GAAG,IAAI,CAAC,QAC/C,OAAO,WAAW,iBAAiB,GAAG,CAAC,CAAC,CACzC;AAAA,EAEA,MAAM,OAAO,2BAA2B,mBAAmB,OAAO,KAAK,mBAAmB,IAAI,KAAK,mBAAmB,OAAO,YAAY;AAAA,EACzI,MAAM,OAAO,MAAM,OAAO,QACzB,OAAO,MAAM,GAAG,YAAY,mBAAmB,OAAO,GAAG,MAAM,MAC/D;AAAA,IACC,QAAQ;AAAA,IACR,MAAM;AAAA,MACL;AAAA,MACA,WAAW;AAAA,IACZ;AAAA,EACD,CACD;AAAA,EAEA,IAAI,KAAK,MAAM;AAAA,IACd,IAAI,OAAO,KAAK,WAAW,UAAU;AAAA,MACpC,MAAM,IAAI,uBACT,oEACD;AAAA,IACD;AAAA,IACA,OAAO,mBAAsB,KAAK,MAAM;AAAA,EACzC;AAAA,EACA,MAAM,IAAI,kBAAkB,KAAK,SAAS,uBAAuB;AAAA;",
|
|
9
|
-
"debugId": "
|
|
9
|
+
"debugId": "D2D899C48176433F64756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BaseError
|
|
3
|
-
} from "./stacks-
|
|
3
|
+
} from "./stacks-esm-1jae0a3r.js";
|
|
4
4
|
|
|
5
5
|
// src/errors/websocket.ts
|
|
6
6
|
class WebSocketError extends BaseError {
|
|
@@ -53,5 +53,5 @@ async function watchNftEvent(client, params) {
|
|
|
53
53
|
|
|
54
54
|
export { WebSocketError, watchBlocks, watchMempool, watchTransaction, watchAddress, watchAddressBalance, watchNftEvent };
|
|
55
55
|
|
|
56
|
-
//# debugId=
|
|
57
|
-
//# sourceMappingURL=stacks-
|
|
56
|
+
//# debugId=6B993C17FC3C083664756E2164756E21
|
|
57
|
+
//# sourceMappingURL=stacks-esm-7fpqgtyx.js.map
|
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
"import type { Client } from \"../clients/types.ts\";\nimport { WebSocketError } from \"../errors/websocket.ts\";\nimport type { WebSocketTransport } from \"../transports/webSocket.ts\";\nimport type {\n\tAddressBalanceNotification,\n\tAddressTxNotification,\n\tBlockNotification,\n\tMempoolNotification,\n\tNftEventNotification,\n\tSubscription,\n\tTxUpdateNotification,\n} from \"./types.ts\";\n\nfunction getWsTransport(client: Client): WebSocketTransport {\n\tif (client.transport.type !== \"webSocket\") {\n\t\tthrow new WebSocketError(\n\t\t\t\"Watch actions require a webSocket transport. Use `webSocket()` when creating your client.\",\n\t\t);\n\t}\n\treturn client.transport as WebSocketTransport;\n}\n\nexport type WatchBlocksParams = {\n\tonBlock: (block: BlockNotification) => void;\n};\n\nexport async function watchBlocks(\n\tclient: Client,\n\tparams: WatchBlocksParams,\n): Promise<Subscription> {\n\tconst transport = getWsTransport(client);\n\treturn transport.subscribe({ event: \"block\" }, params.onBlock);\n}\n\nexport type WatchMempoolParams = {\n\tonTransaction: (tx: MempoolNotification) => void;\n};\n\nexport async function watchMempool(\n\tclient: Client,\n\tparams: WatchMempoolParams,\n): Promise<Subscription> {\n\tconst transport = getWsTransport(client);\n\treturn transport.subscribe({ event: \"mempool\" }, params.onTransaction);\n}\n\nexport type WatchTransactionParams = {\n\ttxId: string;\n\tonUpdate: (update: TxUpdateNotification) => void;\n};\n\nexport async function watchTransaction(\n\tclient: Client,\n\tparams: WatchTransactionParams,\n): Promise<Subscription> {\n\tconst transport = getWsTransport(client);\n\treturn transport.subscribe(\n\t\t{ event: \"tx_update\", tx_id: params.txId },\n\t\tparams.onUpdate,\n\t);\n}\n\nexport type WatchAddressParams = {\n\taddress: string;\n\tonTransaction: (tx: AddressTxNotification) => void;\n};\n\nexport async function watchAddress(\n\tclient: Client,\n\tparams: WatchAddressParams,\n): Promise<Subscription> {\n\tconst transport = getWsTransport(client);\n\treturn transport.subscribe(\n\t\t{ event: \"address_tx_update\", address: params.address },\n\t\tparams.onTransaction,\n\t);\n}\n\nexport type WatchAddressBalanceParams = {\n\taddress: string;\n\tonBalance: (balance: AddressBalanceNotification) => void;\n};\n\nexport async function watchAddressBalance(\n\tclient: Client,\n\tparams: WatchAddressBalanceParams,\n): Promise<Subscription> {\n\tconst transport = getWsTransport(client);\n\treturn transport.subscribe(\n\t\t{ event: \"address_balance_update\", address: params.address },\n\t\tparams.onBalance,\n\t);\n}\n\nexport type WatchNftEventParams = {\n\tonEvent: (event: NftEventNotification) => void;\n\tassetIdentifier?: string;\n\tvalue?: string;\n};\n\nexport async function watchNftEvent(\n\tclient: Client,\n\tparams: WatchNftEventParams,\n): Promise<Subscription> {\n\tconst transport = getWsTransport(client);\n\n\tlet event: \"nft_event\" | \"nft_asset_event\" | \"nft_collection_event\";\n\tif (params.assetIdentifier && params.value) {\n\t\tevent = \"nft_event\";\n\t} else if (params.assetIdentifier) {\n\t\tevent = \"nft_collection_event\";\n\t} else {\n\t\tevent = \"nft_event\";\n\t}\n\n\treturn transport.subscribe(\n\t\t{\n\t\t\tevent,\n\t\t\tasset_identifier: params.assetIdentifier,\n\t\t\tvalue: params.value,\n\t\t},\n\t\tparams.onEvent,\n\t);\n}\n"
|
|
7
7
|
],
|
|
8
8
|
"mappings": ";;;;;AAEO,MAAM,uBAAuB,UAAU;AAAA,EACpC,OAAO;AACjB;;;ACSA,SAAS,cAAc,CAAC,QAAoC;AAAA,EAC3D,IAAI,OAAO,UAAU,SAAS,aAAa;AAAA,IAC1C,MAAM,IAAI,eACT,2FACD;AAAA,EACD;AAAA,EACA,OAAO,OAAO;AAAA;AAOf,eAAsB,WAAW,CAChC,QACA,QACwB;AAAA,EACxB,MAAM,YAAY,eAAe,MAAM;AAAA,EACvC,OAAO,UAAU,UAAU,EAAE,OAAO,QAAQ,GAAG,OAAO,OAAO;AAAA;AAO9D,eAAsB,YAAY,CACjC,QACA,QACwB;AAAA,EACxB,MAAM,YAAY,eAAe,MAAM;AAAA,EACvC,OAAO,UAAU,UAAU,EAAE,OAAO,UAAU,GAAG,OAAO,aAAa;AAAA;AAQtE,eAAsB,gBAAgB,CACrC,QACA,QACwB;AAAA,EACxB,MAAM,YAAY,eAAe,MAAM;AAAA,EACvC,OAAO,UAAU,UAChB,EAAE,OAAO,aAAa,OAAO,OAAO,KAAK,GACzC,OAAO,QACR;AAAA;AAQD,eAAsB,YAAY,CACjC,QACA,QACwB;AAAA,EACxB,MAAM,YAAY,eAAe,MAAM;AAAA,EACvC,OAAO,UAAU,UAChB,EAAE,OAAO,qBAAqB,SAAS,OAAO,QAAQ,GACtD,OAAO,aACR;AAAA;AAQD,eAAsB,mBAAmB,CACxC,QACA,QACwB;AAAA,EACxB,MAAM,YAAY,eAAe,MAAM;AAAA,EACvC,OAAO,UAAU,UAChB,EAAE,OAAO,0BAA0B,SAAS,OAAO,QAAQ,GAC3D,OAAO,SACR;AAAA;AASD,eAAsB,aAAa,CAClC,QACA,QACwB;AAAA,EACxB,MAAM,YAAY,eAAe,MAAM;AAAA,EAEvC,IAAI;AAAA,EACJ,IAAI,OAAO,mBAAmB,OAAO,OAAO;AAAA,IAC3C,QAAQ;AAAA,EACT,EAAO,SAAI,OAAO,iBAAiB;AAAA,IAClC,QAAQ;AAAA,EACT,EAAO;AAAA,IACN,QAAQ;AAAA;AAAA,EAGT,OAAO,UAAU,UAChB;AAAA,IACC;AAAA,IACA,kBAAkB,OAAO;AAAA,IACzB,OAAO,OAAO;AAAA,EACf,GACA,OAAO,OACR;AAAA;",
|
|
9
|
-
"debugId": "
|
|
9
|
+
"debugId": "6B993C17FC3C083664756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
SIP009_ABI,
|
|
3
3
|
SIP010_ABI,
|
|
4
4
|
SIP013_ABI
|
|
5
|
-
} from "./stacks-
|
|
5
|
+
} from "./stacks-esm-n53kvwmt.js";
|
|
6
6
|
import {
|
|
7
7
|
isAbiBuffer,
|
|
8
8
|
isAbiList,
|
|
@@ -18,14 +18,14 @@ import {
|
|
|
18
18
|
isUint128,
|
|
19
19
|
isUint8Array,
|
|
20
20
|
toCamelCase
|
|
21
|
-
} from "./stacks-
|
|
21
|
+
} from "./stacks-esm-hr7fpxtj.js";
|
|
22
22
|
import {
|
|
23
23
|
asciiToBytes,
|
|
24
24
|
bytesToAscii,
|
|
25
25
|
hexToBytes,
|
|
26
26
|
utf8ToBytes,
|
|
27
27
|
without0x
|
|
28
|
-
} from "./stacks-
|
|
28
|
+
} from "./stacks-esm-cvhazvhd.js";
|
|
29
29
|
// src/clarity/prettyPrint.ts
|
|
30
30
|
function prettyPrint(val, encoding = "hex") {
|
|
31
31
|
switch (val.type) {
|
|
@@ -589,5 +589,5 @@ function normalizeAbi(abi) {
|
|
|
589
589
|
}
|
|
590
590
|
export { prettyPrint, cvToJSON, cvToValue, cvToBigInt, cvToString, cvToBuffer, cvToBoolean, cvToPrincipal, ClarityConversionError, jsToClarity, prepareArgs, validateArgs, validateArgsArray, TRAIT_STANDARDS, classifyContract, parseDeclaredStandards, normalizeAccess, normalizeType, normalizeAbi };
|
|
591
591
|
|
|
592
|
-
//# debugId=
|
|
593
|
-
//# sourceMappingURL=stacks-
|
|
592
|
+
//# debugId=27A34C3548AD9B0E64756E2164756E21
|
|
593
|
+
//# sourceMappingURL=stacks-esm-9rnx0zxr.js.map
|
|
@@ -8,6 +8,6 @@
|
|
|
8
8
|
"/**\n * Normalize a Clarity ABI from any source into the canonical `AbiContract`\n * shape this package's type extractors expect.\n *\n * Sources differ in small, load-bearing ways: the Hiro API and Clarinet SDK\n * emit `buffer`/`read_only` and wrap function outputs as `{ type: … }`, while\n * the canonical shape uses `buff`/`read-only` and a bare `AbiType`. Passing a\n * raw ABI straight through produces a value that LOOKS right and silently\n * fails the `AbiContract` constraint, so `event.input` / `.read.x()` typing\n * quietly degrades. Run it through here first.\n *\n * Lives in `@secondlayer/stacks/clarity` (not the CLI) so a raw ABI can be\n * normalized anywhere — scaffolds, MCP, a user's own script — without the CLI\n * installed.\n */\n\nimport type {\n\tAbiContract,\n\tAbiFunction,\n\tAbiFungibleToken,\n\tAbiMap,\n\tAbiNonFungibleToken,\n\tAbiTraitDefinition,\n\tAbiTraitFunction,\n\tAbiVariable,\n} from \"./contract.ts\";\nimport type { AbiType } from \"./types.ts\";\n\n/**\n * Normalize function access type from various formats to internal format\n */\nexport function normalizeAccess(\n\taccess: string,\n): \"public\" | \"read-only\" | \"private\" {\n\tif (access === \"read_only\") return \"read-only\";\n\treturn access as \"public\" | \"read-only\" | \"private\";\n}\n\n/**\n * Normalize a Clarity type from API format to internal format\n * Handles buffer vs buff, and recursively normalizes nested types\n */\nexport function normalizeType(type: unknown): AbiType {\n\tif (typeof type === \"string\") {\n\t\t// Handle string primitive types\n\t\tswitch (type) {\n\t\t\tcase \"uint128\":\n\t\t\tcase \"int128\":\n\t\t\tcase \"bool\":\n\t\t\tcase \"principal\":\n\t\t\tcase \"trait_reference\":\n\t\t\t\treturn type;\n\t\t\tdefault:\n\t\t\t\t// Unknown string type, return as-is\n\t\t\t\treturn type as AbiType;\n\t\t}\n\t}\n\n\tif (typeof type !== \"object\" || type === null) {\n\t\tthrow new Error(`Invalid ABI type: expected object, got ${typeof type}`);\n\t}\n\n\tconst typeObj = type as Record<string, unknown>;\n\n\t// Handle buffer vs buff (API uses buffer, we use buff)\n\tif (\"buffer\" in typeObj) {\n\t\tconst buffer = typeObj.buffer as { length?: number };\n\t\treturn {\n\t\t\tbuff: {\n\t\t\t\tlength: buffer?.length ?? 32,\n\t\t\t},\n\t\t};\n\t}\n\n\t// Already in internal format\n\tif (\"buff\" in typeObj) {\n\t\tconst buff = typeObj.buff as { length?: number };\n\t\treturn {\n\t\t\tbuff: {\n\t\t\t\tlength: buff?.length ?? 32,\n\t\t\t},\n\t\t};\n\t}\n\n\t// String types\n\tif (\"string-ascii\" in typeObj) {\n\t\tconst strAscii = typeObj[\"string-ascii\"] as { length?: number };\n\t\treturn {\n\t\t\t\"string-ascii\": {\n\t\t\t\tlength: strAscii?.length ?? 256,\n\t\t\t},\n\t\t};\n\t}\n\n\tif (\"string-utf8\" in typeObj) {\n\t\tconst strUtf8 = typeObj[\"string-utf8\"] as { length?: number };\n\t\treturn {\n\t\t\t\"string-utf8\": {\n\t\t\t\tlength: strUtf8?.length ?? 256,\n\t\t\t},\n\t\t};\n\t}\n\n\t// Response type - recursively normalize ok and error types\n\tif (\"response\" in typeObj) {\n\t\tconst response = typeObj.response as { ok?: unknown; error?: unknown };\n\t\treturn {\n\t\t\tresponse: {\n\t\t\t\tok: normalizeType(response?.ok ?? \"bool\"),\n\t\t\t\terror: normalizeType(response?.error ?? \"uint128\"),\n\t\t\t},\n\t\t};\n\t}\n\n\t// Optional type - recursively normalize inner type\n\tif (\"optional\" in typeObj) {\n\t\treturn {\n\t\t\toptional: normalizeType(typeObj.optional),\n\t\t};\n\t}\n\n\t// List type - recursively normalize element type\n\tif (\"list\" in typeObj) {\n\t\tconst list = typeObj.list as { type?: unknown; length?: number };\n\t\treturn {\n\t\t\tlist: {\n\t\t\t\ttype: normalizeType(list?.type ?? \"uint128\"),\n\t\t\t\tlength: list?.length ?? 100,\n\t\t\t},\n\t\t};\n\t}\n\n\t// Tuple type - recursively normalize field types\n\tif (\"tuple\" in typeObj) {\n\t\tconst tuple = typeObj.tuple as Array<{ name: string; type: unknown }>;\n\t\treturn {\n\t\t\ttuple: tuple.map((field) => ({\n\t\t\t\tname: field.name,\n\t\t\t\ttype: normalizeType(field.type),\n\t\t\t})),\n\t\t};\n\t}\n\n\t// Unknown type - fail explicitly\n\tthrow new Error(`Unknown ABI type structure: ${JSON.stringify(type)}`);\n}\n\n/**\n * Normalize a function definition from API format to internal format\n */\nexport function normalizeFunction(func: Record<string, unknown>): AbiFunction {\n\tconst access = normalizeAccess(func.access as string);\n\tconst args = (func.args as Array<{ name: string; type: unknown }>) ?? [];\n\tconst outputs = func.outputs as { type?: unknown } | unknown;\n\n\treturn {\n\t\tname: func.name as string,\n\t\taccess,\n\t\targs: args.map((arg) => ({\n\t\t\tname: arg.name,\n\t\t\ttype: normalizeType(arg.type),\n\t\t})),\n\t\toutputs: normalizeType(\n\t\t\ttypeof outputs === \"object\" && outputs !== null && \"type\" in outputs\n\t\t\t\t? (outputs as { type: unknown }).type\n\t\t\t\t: outputs,\n\t\t),\n\t};\n}\n\n/**\n * Normalize a map definition from API format to internal format\n */\nexport function normalizeMap(map: Record<string, unknown>): AbiMap {\n\treturn {\n\t\tname: map.name as string,\n\t\tkey: normalizeType(map.key),\n\t\tvalue: normalizeType(map.value),\n\t};\n}\n\n/**\n * Normalize a variable definition from API format to internal format\n */\nexport function normalizeVariable(\n\tvariable: Record<string, unknown>,\n): AbiVariable {\n\treturn {\n\t\tname: variable.name as string,\n\t\ttype: normalizeType(variable.type),\n\t\taccess: variable.access as \"constant\" | \"variable\",\n\t};\n}\n\n/**\n * Normalize a fungible-token definition. Only the name is carried on the wire.\n */\nexport function normalizeFungibleToken(\n\ttoken: Record<string, unknown>,\n): AbiFungibleToken {\n\treturn { name: token.name as string };\n}\n\n/**\n * Normalize a non-fungible-token definition, including its identifier type.\n */\nexport function normalizeNonFungibleToken(\n\ttoken: Record<string, unknown>,\n): AbiNonFungibleToken {\n\treturn { name: token.name as string, type: normalizeType(token.type) };\n}\n\n/**\n * Normalize a `define-trait` definition. A trait cannot declare private\n * functions, so any that show up are dropped rather than cast through.\n */\nexport function normalizeTraitDefinition(\n\ttrait: Record<string, unknown>,\n): AbiTraitDefinition {\n\tconst rawFunctions = Array.isArray(trait.functions) ? trait.functions : [];\n\tconst functions: AbiTraitFunction[] = [];\n\n\tfor (const func of rawFunctions) {\n\t\tif (typeof func !== \"object\" || func === null) continue;\n\t\tconst normalized = normalizeFunction(func as Record<string, unknown>);\n\t\tif (normalized.access === \"private\") continue;\n\t\tfunctions.push(normalized as AbiTraitFunction);\n\t}\n\n\treturn { name: trait.name as string, functions };\n}\n\n/**\n * Normalize an entire ABI from various sources to consistent internal format\n *\n * This handles ABIs from:\n * - Hiro API responses\n * - Clarinet SDK\n * - Upstream @secondlayer/stacks types\n */\nexport function normalizeAbi(abi: unknown): AbiContract {\n\tif (typeof abi !== \"object\" || abi === null) {\n\t\treturn { functions: [] };\n\t}\n\n\tconst abiObj = abi as Record<string, unknown>;\n\n\tconst functions: AbiFunction[] = [];\n\tconst maps: AbiMap[] = [];\n\tconst variables: AbiVariable[] = [];\n\tconst fungibleTokens: AbiFungibleToken[] = [];\n\tconst nonFungibleTokens: AbiNonFungibleToken[] = [];\n\tconst implementedTraits: string[] = [];\n\tconst definedTraits: AbiTraitDefinition[] = [];\n\n\t// Normalize functions\n\tif (Array.isArray(abiObj.functions)) {\n\t\tfor (const func of abiObj.functions) {\n\t\t\tif (typeof func === \"object\" && func !== null) {\n\t\t\t\tfunctions.push(normalizeFunction(func as Record<string, unknown>));\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize maps\n\tif (Array.isArray(abiObj.maps)) {\n\t\tfor (const map of abiObj.maps) {\n\t\t\tif (typeof map === \"object\" && map !== null) {\n\t\t\t\tmaps.push(normalizeMap(map as Record<string, unknown>));\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize variables\n\tif (Array.isArray(abiObj.variables)) {\n\t\tfor (const variable of abiObj.variables) {\n\t\t\tif (typeof variable === \"object\" && variable !== null) {\n\t\t\t\tvariables.push(normalizeVariable(variable as Record<string, unknown>));\n\t\t\t}\n\t\t}\n\t}\n\n\t// Token and trait definitions are declarations, not shapes to convert — but\n\t// dropping them makes a normalized ABI lossy, and callers do read them (an\n\t// `ft_transfer` filter needs `contract::asset`, not just the contract).\n\tif (Array.isArray(abiObj.fungible_tokens)) {\n\t\tfor (const token of abiObj.fungible_tokens) {\n\t\t\tif (typeof token === \"object\" && token !== null) {\n\t\t\t\tfungibleTokens.push(\n\t\t\t\t\tnormalizeFungibleToken(token as Record<string, unknown>),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (Array.isArray(abiObj.non_fungible_tokens)) {\n\t\tfor (const token of abiObj.non_fungible_tokens) {\n\t\t\tif (typeof token === \"object\" && token !== null) {\n\t\t\t\tnonFungibleTokens.push(\n\t\t\t\t\tnormalizeNonFungibleToken(token as Record<string, unknown>),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Neither the Clarinet SDK's `IContractInterface` nor the Hiro interface\n\t// response carries traits today; these two branches keep an ABI that does\n\t// have them (a hand-written config, a source-read ABI) round-tripping.\n\tif (Array.isArray(abiObj.implemented_traits)) {\n\t\tfor (const trait of abiObj.implemented_traits) {\n\t\t\tif (typeof trait === \"string\") implementedTraits.push(trait);\n\t\t}\n\t}\n\n\tif (Array.isArray(abiObj.defined_traits)) {\n\t\tfor (const trait of abiObj.defined_traits) {\n\t\t\tif (typeof trait === \"object\" && trait !== null) {\n\t\t\t\tdefinedTraits.push(\n\t\t\t\t\tnormalizeTraitDefinition(trait as Record<string, unknown>),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tfunctions,\n\t\tmaps: maps.length > 0 ? maps : undefined,\n\t\tvariables: variables.length > 0 ? variables : undefined,\n\t\tfungible_tokens: fungibleTokens.length > 0 ? fungibleTokens : undefined,\n\t\tnon_fungible_tokens:\n\t\t\tnonFungibleTokens.length > 0 ? nonFungibleTokens : undefined,\n\t\timplemented_traits:\n\t\t\timplementedTraits.length > 0 ? implementedTraits : undefined,\n\t\tdefined_traits: definedTraits.length > 0 ? definedTraits : undefined,\n\t};\n}\n"
|
|
9
9
|
],
|
|
10
10
|
"mappings": "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",
|
|
11
|
-
"debugId": "
|
|
11
|
+
"debugId": "27A34C3548AD9B0E64756E2164756E21",
|
|
12
12
|
"names": []
|
|
13
13
|
}
|