@notuslabs/yail 0.2.1 → 0.4.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 +31 -4
- package/dist/addresses/registry.d.ts +1 -1
- package/dist/addresses/registry.d.ts.map +1 -1
- package/dist/addresses/registry.js +4 -5
- package/dist/addresses/registry.js.map +1 -1
- package/dist/cache/cached.d.ts.map +1 -1
- package/dist/cache/cached.js +5 -3
- package/dist/cache/cached.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +7 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/config/create-config.d.ts +1 -1
- package/dist/config/create-config.d.ts.map +1 -1
- package/dist/config/create-config.js +5 -2
- package/dist/config/create-config.js.map +1 -1
- package/dist/config/types.d.ts +10 -5
- package/dist/config/types.d.ts.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/indexer/context.d.ts +6 -5
- package/dist/indexer/context.d.ts.map +1 -1
- package/dist/indexer/context.js.map +1 -1
- package/dist/indexer/events.d.ts +26 -2
- package/dist/indexer/events.d.ts.map +1 -1
- package/dist/indexer/events.js +17 -1
- package/dist/indexer/events.js.map +1 -1
- package/dist/indexer/indexer.d.ts +2 -12
- package/dist/indexer/indexer.d.ts.map +1 -1
- package/dist/indexer/indexer.js +27 -27
- package/dist/indexer/indexer.js.map +1 -1
- package/dist/indexer/jobs.d.ts +12 -1
- package/dist/indexer/jobs.d.ts.map +1 -1
- package/dist/indexer/jobs.js +65 -19
- package/dist/indexer/jobs.js.map +1 -1
- package/dist/indexer/plan.d.ts +6 -7
- package/dist/indexer/plan.d.ts.map +1 -1
- package/dist/indexer/plan.js +13 -36
- package/dist/indexer/plan.js.map +1 -1
- package/dist/indexer/runtime.d.ts +13 -8
- package/dist/indexer/runtime.d.ts.map +1 -1
- package/dist/indexer/runtime.js +70 -48
- package/dist/indexer/runtime.js.map +1 -1
- package/dist/schema/ddl.d.ts +5 -1
- package/dist/schema/ddl.d.ts.map +1 -1
- package/dist/schema/ddl.js +10 -2
- package/dist/schema/ddl.js.map +1 -1
- package/dist/sources/cached.d.ts.map +1 -1
- package/dist/sources/cached.js +37 -21
- package/dist/sources/cached.js.map +1 -1
- package/dist/sources/esplora.d.ts.map +1 -1
- package/dist/sources/esplora.js +8 -37
- package/dist/sources/esplora.js.map +1 -1
- package/dist/sources/fixture.d.ts +23 -2
- package/dist/sources/fixture.d.ts.map +1 -1
- package/dist/sources/fixture.js +34 -0
- package/dist/sources/fixture.js.map +1 -1
- package/dist/sources/hypersync.d.ts +10 -1
- package/dist/sources/hypersync.d.ts.map +1 -1
- package/dist/sources/hypersync.js +6 -0
- package/dist/sources/hypersync.js.map +1 -1
- package/dist/sources/index.d.ts +5 -4
- package/dist/sources/index.d.ts.map +1 -1
- package/dist/sources/index.js +2 -1
- package/dist/sources/index.js.map +1 -1
- package/dist/sources/rpc.d.ts +7 -1
- package/dist/sources/rpc.d.ts.map +1 -1
- package/dist/sources/rpc.js +7 -16
- package/dist/sources/rpc.js.map +1 -1
- package/dist/sources/solana/hypersync.d.ts +25 -0
- package/dist/sources/solana/hypersync.d.ts.map +1 -0
- package/dist/sources/solana/hypersync.js +117 -0
- package/dist/sources/solana/hypersync.js.map +1 -0
- package/dist/sources/solana/rpc.d.ts +25 -0
- package/dist/sources/solana/rpc.d.ts.map +1 -0
- package/dist/sources/solana/rpc.js +134 -0
- package/dist/sources/solana/rpc.js.map +1 -0
- package/dist/sources/solana/shared.d.ts +12 -0
- package/dist/sources/solana/shared.d.ts.map +1 -0
- package/dist/sources/solana/shared.js +30 -0
- package/dist/sources/solana/shared.js.map +1 -0
- package/dist/sources/types.d.ts +69 -11
- package/dist/sources/types.d.ts.map +1 -1
- package/dist/sources/types.js +2 -2
- package/dist/sources/types.js.map +1 -1
- package/dist/sources/union.d.ts +12 -0
- package/dist/sources/union.d.ts.map +1 -0
- package/dist/sources/union.js +65 -0
- package/dist/sources/union.js.map +1 -0
- package/dist/testing/index.d.ts +5 -4
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +22 -5
- package/dist/testing/index.js.map +1 -1
- package/dist/util.d.ts +9 -0
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +58 -0
- package/dist/util.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -60,7 +60,7 @@ yail dev # index, restart on change; status API on :42069
|
|
|
60
60
|
| | Ponder | HyperIndex (Envio) | yail |
|
|
61
61
|
|---|---|---|---|
|
|
62
62
|
| Handlers | `ponder.on("C:Event")` | `Contract.Event.handler` | `indexer.on("C:Event")` |
|
|
63
|
-
| Data source | JSON-RPC | HyperSync | HyperSync, JSON-RPC, Esplora (Bitcoin), or a cache in front of any |
|
|
63
|
+
| Data source | JSON-RPC | HyperSync | HyperSync (EVM, Solana), JSON-RPC, Esplora (Bitcoin), a `union()` of them, or a cache in front of any |
|
|
64
64
|
| Storage | Postgres | Postgres | ClickHouse |
|
|
65
65
|
| Dynamic addresses | factory pattern | `contractRegister` | factory pattern **and** runtime address sets with backfill |
|
|
66
66
|
| Re-index one entity | re-sync | re-sync | `yail reindex --scope wallet=0x…` |
|
|
@@ -72,17 +72,34 @@ Everything the indexer writes is a plain ClickHouse table. An API reads it with
|
|
|
72
72
|
|
|
73
73
|
### Sources
|
|
74
74
|
|
|
75
|
-
A source is one interface: `getHeight()` + `fetch(query)` yielding ordered batches of blocks, transactions and logs.
|
|
75
|
+
A source is one interface: `getHeight()` + `fetch(query)` yielding ordered batches of blocks, transactions and logs. Sources are named after the provider; `kind` picks the chain when a provider serves more than one (`hypersync()` and `rpc()` are EVM unless given `kind: "solana"`).
|
|
76
76
|
|
|
77
77
|
| source | use |
|
|
78
78
|
|---|---|
|
|
79
79
|
| `hypersync({ url, apiToken, traces? })` | production EVM. Token from `ENVIO_API_TOKEN` if omitted. `traces: { url, fromBlock? }` names the trace-enabled endpoint for the queries that ask for traces, from the first block it holds (`base-traces` starts at 24,000,000: before that, those queries go to `url` without traces). |
|
|
80
80
|
| `rpc({ url })` | any JSON-RPC node; slower, no token, used to record fixtures |
|
|
81
81
|
| `esplora({ url })` | Bitcoin address history through mempool.space / blockstream / electrs |
|
|
82
|
+
| `hypersync({ kind: "solana", apiToken? })` | Solana wallets through Solana HyperSync: their SOL and the token accounts they own. Recent slots only (from ~2026-01 as of 2026-10); long ranges are read in parallel windows |
|
|
83
|
+
| `rpc({ kind: "solana", url })` | Solana wallets over JSON-RPC, address by address (`getSignaturesForAddress` on the wallet and its token accounts, then `getTransaction`). Any slot; cost grows with the wallets' transactions |
|
|
84
|
+
| `union(a, b, …)` | one chain from several sources: each range goes to the first source that holds it (see below) |
|
|
82
85
|
| `cached(source, { db, chain })` | ClickHouse page cache in front of any source; `cache: { source: true }` in the config does this for every chain |
|
|
83
86
|
| `fixtureSource(fixture)` | replay recorded data in tests |
|
|
84
87
|
|
|
85
|
-
|
|
88
|
+
A source may report the first block it holds (`firstBlock()`). `union()` uses it so that a source with partial history only ever gets ranges it can serve:
|
|
89
|
+
|
|
90
|
+
```ts
|
|
91
|
+
solana: { id: "solana", source: union(hypersync({ kind: "solana" }), rpc({ kind: "solana", url: process.env.SOLANA_RPC_URL! })) },
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Recent slots come from HyperSync (a range scan: cheap per wallet set, any number of wallets), older ones from RPC (per address: cheap for the rare wallet with old history). Address backfills fetch their whole range in one go, so the RPC pages each wallet once. Solana HyperSync finds where its history starts with one-slot probes that match nothing (a binary search the first time, then one probe per hour, since the floor only moves down). The head is the first source's.
|
|
95
|
+
|
|
96
|
+
A chain's `backfillSource` is where address history is read: `backfill_address` and `reindex_scope` jobs fetch through it, the live loop and `reindex_range` through `source`. It must be of the same kind as `source`, defaults to `source`, and `cache.source` wraps it too. A HyperSync scan costs its block range whatever the number of wallets, so one new Solana wallet's history is cheaper over RPC:
|
|
97
|
+
|
|
98
|
+
```ts
|
|
99
|
+
solana: { id: "solana", source: union(hypersync({ kind: "solana" }), rpc({ kind: "solana", url })), backfillSource: rpc({ kind: "solana", url }) },
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
The runtime only ever indexes blocks `<= head - finality` (default 20 blocks on EVM, 3 on Bitcoin, 32 slots on Solana), so reorgs are a non-issue in practice. HyperSync's rollback guard is still checked; on a mismatch the last window is re-indexed automatically.
|
|
86
103
|
|
|
87
104
|
### Schema
|
|
88
105
|
|
|
@@ -119,6 +136,9 @@ export const dailyMv = materializedView("wallet_daily_mv", {
|
|
|
119
136
|
re-run their SELECT on a schedule into a real table, so they can join across rows and tables, which an insert-time
|
|
120
137
|
view cannot. With `append` the query covers a recent window and the target's ReplacingMergeTree key dedups it;
|
|
121
138
|
`populate` is the unwindowed query `yail migrate --populate` runs once for the history. ClickHouse >= 24.
|
|
139
|
+
- `yail migrate --populate` fills a view's target by column name: it selects each of the target's columns from the
|
|
140
|
+
query by name (the `_yail_*` ones too, unless the target has `indexMeta: false`). The order of the query's columns
|
|
141
|
+
does not matter, and a column the query lacks fails the populate instead of shifting the others.
|
|
122
142
|
- Plain views (``view("balances", sql`SELECT … FROM ${ledger} FINAL …`)``) hold no data: they run on every read, so they
|
|
123
143
|
always agree with their tables. `yail migrate` creates or replaces them, each after the views it reads.
|
|
124
144
|
|
|
@@ -138,9 +158,12 @@ indexer.on("Pool:Swap", async ({ event, context }) => {
|
|
|
138
158
|
});
|
|
139
159
|
indexer.on("Wallets:transaction", ...) // EVM: { transaction, block, address, direction, logs, traces }
|
|
140
160
|
// Bitcoin: { tx, block, address, received, sent, net, fee, isSender }
|
|
161
|
+
// Solana: { transaction, block, address, balances, lamports, tokens }
|
|
141
162
|
indexer.on("setup", ...) // once per chain before indexing starts
|
|
142
163
|
```
|
|
143
164
|
|
|
165
|
+
On Solana a "block" is a slot. An event is a transaction that changed the wallet's SOL or the tokens of an account it owns: `lamports` is the wallet's SOL change (fee included when it paid), `tokens` the change per token account, `balances` the rows before and after. Every Solana source reports the same rows (an account is listed only where its SOL or tokens changed); `transactionIndex` orders transactions within a slot, though HyperSync counts only non-vote transactions and RPC counts all of them.
|
|
166
|
+
|
|
144
167
|
Writes are buffered per source batch and flushed as one INSERT per table before the checkpoint is written. Events are processed in `(block, txIndex, logIndex)` order per chain; chains run concurrently. Only events with a registered handler are fetched from the source.
|
|
145
168
|
|
|
146
169
|
`context.db.find(table, key)` looks at the current batch's buffer first, then ClickHouse. It is fine for last-value state (a pool's current tick), but the ClickHouse way is to write immutable facts and let `SummingMergeTree`/`AggregatingMergeTree` materialized views maintain aggregates.
|
|
@@ -206,6 +229,8 @@ curl -X POST :42069/addresses -d '{"set":"wallets","address":["0xabc…"]}'
|
|
|
206
229
|
|
|
207
230
|
What happens: the live loop adopts the address at its current block `N` and includes it from then on; a job backfills `[fromBlock, N)` with a query restricted to that address; the address flips to `live`. No gaps, no double processing. Progress is visible on `/status` and `/jobs`. Handlers see `context.backfill === true` during the backfill.
|
|
208
231
|
|
|
232
|
+
A job that throws (a source or ClickHouse outage, a handler error) is retried up to 8 times: 30 s after the first failure, then twice as long after each one, about an hour in all. The wait lives in memory, so after a restart a pending job runs at once. Address backfills and range re-indexes keep a checkpoint: a retry starts after the last batch they wrote, and the checkpoint is saved to `_yail_jobs` at most once a minute, so a restarted indexer resumes near it too (a range re-index then deletes and rewrites from the checkpoint on). When an address backfill fails for good, the address becomes `failed` and stays live: `failed` only means its history is incomplete. Registering it again re-runs that history, `[fromBlock, N)` where `N` is the block it was first adopted at. Find failed addresses with `SELECT * FROM _yail_addresses FINAL WHERE status = 'failed'`.
|
|
233
|
+
|
|
209
234
|
`factory({ address, event, parameter })` (Ponder style) discovers child contracts from a factory event; children found inside a batch have their logs fetched for the rest of that batch, so ordering is exact.
|
|
210
235
|
|
|
211
236
|
### Re-indexing
|
|
@@ -251,6 +276,7 @@ HTTP status API (`server.port`, default 42069): `/health`, `/ready` (caught up o
|
|
|
251
276
|
import { startTestClickHouse, fixtureSource, readFixture } from "@notuslabs/yail/testing";
|
|
252
277
|
|
|
253
278
|
const ch = await startTestClickHouse(); // YAIL_TEST_CLICKHOUSE_URL or a testcontainer
|
|
279
|
+
afterAll(() => ch.stop()); // stops the container, or drops the databases ch.database() named
|
|
254
280
|
const fixture = readFixture("test/fixtures/base-univ3-weth-usdc.json");
|
|
255
281
|
const config = createConfig({ database: ch.database(), chains: { base: { id: 8453, source: fixtureSource(fixture), finality: 0 } }, contracts: { … } });
|
|
256
282
|
const indexer = createIndexer({ config, schema });
|
|
@@ -259,7 +285,7 @@ await indexer.run(); // index to the fixture h
|
|
|
259
285
|
expect((await indexer.db.find(poolState, { pool }))!.liquidity).toBe(fixture.expected.liquidity);
|
|
260
286
|
```
|
|
261
287
|
|
|
262
|
-
Fixtures are recorded from a real chain (`yail record --chain base --from … --to … --out fixture.json`, or `recordEvmFixture` in a script) and can carry `expected` ground truth read at the same block. `packages/yail/test/real-data.test.ts` checks a Uniswap V3 pool's price and liquidity against `slot0()`, USDC wallet deltas against `balanceOf()`,
|
|
288
|
+
Fixtures are recorded from a real chain (`yail record --chain base --from … --to … --out fixture.json`, or `recordEvmFixture` in a script) and can carry `expected` ground truth read at the same block. `packages/yail/test/real-data.test.ts` checks a Uniswap V3 pool's price and liquidity against `slot0()`, USDC wallet deltas against `balanceOf()`, Bitcoin address totals against Esplora stats, and a Solana wallet's whole history (through `union()` of a HyperSync and an RPC recording) against its SOL and 50 token balances.
|
|
263
289
|
|
|
264
290
|
## CLI
|
|
265
291
|
|
|
@@ -276,6 +302,7 @@ yail status --url http://localhost:42069
|
|
|
276
302
|
## Limits and notes
|
|
277
303
|
|
|
278
304
|
- Bitcoin is scanned per address through Esplora (HyperSync has no Bitcoin, Bitcoin Core has no address index). Fine for wallet sets in the thousands; for more, point `esplora({ url })` at your own electrs.
|
|
305
|
+
- Solana HyperSync keeps only recent slots, and plain Solana RPC throttles `getTransaction` (the public endpoint to ~0.5/s): use a paid RPC behind `rpc({ kind: "solana" })` for older history at any scale. Transfers into a token account do not name its owner, so the Solana `rpc` also walks the wallet's token accounts (open ones from `getTokenAccountsByOwner`, closed ones from the wallet's own transactions).
|
|
279
306
|
- Internal ETH transfers are only visible through traces, which HyperSync serves on a few chains as a paid add-on (see Wallet activity).
|
|
280
307
|
- ClickHouse has no transactions: a crash between a table flush and the checkpoint is repaired by the ReplacingMergeTree key on the next run, so give every table a real identity key.
|
|
281
308
|
- Cross-chain ordering is not enforced (chains are independent loops).
|
|
@@ -33,7 +33,7 @@ export declare class AddressRegistry {
|
|
|
33
33
|
onChange(fn: (row: AddressRow) => void): () => void;
|
|
34
34
|
get(set: string, chain: string, address: string): AddressRow | undefined;
|
|
35
35
|
has(set: string, chain: string, address: string): boolean;
|
|
36
|
-
/** Addresses the live loop should include for a set on a chain
|
|
36
|
+
/** Addresses the live loop should include for a set on a chain: everything adopted, and failed addresses registered again (live since they were first adopted). */
|
|
37
37
|
live(set: string, chain: string): string[];
|
|
38
38
|
list(filter?: {
|
|
39
39
|
set?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/addresses/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGnD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC1E,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,cAAc,CAAC,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,+GAA+G;IAC/G,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,+EAA+E;IAC/E,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAMD;;;GAGG;AACH,qBAAa,eAAe;IAId,OAAO,CAAC,QAAQ,CAAC,EAAE;IAAM,OAAO,CAAC,QAAQ,CAAC,SAAS;IAH/D,OAAO,CAAC,IAAI,CAAiC;IAC7C,OAAO,CAAC,SAAS,CAAwC;IAEzD,YAA6B,EAAE,EAAE,EAAE,EAAmB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,EAAI;IAE/G;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ1B;IAED,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI,CAGlD;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEvE;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/addresses/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,14 +40,13 @@ export class AddressRegistry {
|
|
|
40
40
|
return this.rows.get(key(set, chain, this.normalize(chain, address)));
|
|
41
41
|
}
|
|
42
42
|
has(set, chain, address) {
|
|
43
|
-
|
|
44
|
-
return r !== undefined && r.status !== "failed";
|
|
43
|
+
return this.get(set, chain, address) !== undefined;
|
|
45
44
|
}
|
|
46
|
-
/** Addresses the live loop should include for a set on a chain
|
|
45
|
+
/** Addresses the live loop should include for a set on a chain: everything adopted, and failed addresses registered again (live since they were first adopted). */
|
|
47
46
|
live(set, chain) {
|
|
48
47
|
const out = [];
|
|
49
48
|
for (const r of this.rows.values()) {
|
|
50
|
-
if (r.set === set && r.chain === chain && r.
|
|
49
|
+
if (r.set === set && r.chain === chain && (r.adopted || r.adoptedAtBlock > 0n))
|
|
51
50
|
out.push(r.address);
|
|
52
51
|
}
|
|
53
52
|
return out.sort(); // deterministic order: query shapes (and cache keys) must not depend on load order
|
|
@@ -77,7 +76,7 @@ export class AddressRegistry {
|
|
|
77
76
|
status: i.status ?? "pending",
|
|
78
77
|
fromBlock: BigInt(i.fromBlock ?? 0),
|
|
79
78
|
adopted: i.adoptedAtBlock !== undefined,
|
|
80
|
-
adoptedAtBlock: BigInt(i.adoptedAtBlock ?? 0),
|
|
79
|
+
adoptedAtBlock: BigInt(i.adoptedAtBlock ?? existing?.adoptedAtBlock ?? 0),
|
|
81
80
|
meta: i.meta ?? {},
|
|
82
81
|
error: "",
|
|
83
82
|
registeredAt: existing?.registeredAt ?? now,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/addresses/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAiBrC,SAAS,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,OAAe;IACtD,OAAO,GAAG,GAAG,SAAS,KAAK,SAAS,OAAO,EAAE,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,eAAe;IAIG,EAAE;IAAuB,SAAS;IAHvD,IAAI,GAAG,IAAI,GAAG,EAAsB,CAAC;IACrC,SAAS,GAAG,IAAI,GAAG,EAA6B,CAAC;IAEzD,YAA6B,EAAM,EAAmB,SAAqD;kBAA9E,EAAE;yBAAuB,SAAS;IAA+C,CAAC;IAE/G;;;;OAIG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAChD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE;gBAAE,SAAS;YAC/E,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,EAA6B;QACpC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvB,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,OAAe;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,OAAe;QAC7C,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/addresses/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cached.d.ts","sourceRoot":"","sources":["../../src/cache/cached.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAED,8EAA8E;AAC9E,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,OAAO,EAAE,CAAC;AAEnD,sHAAsH;AACtH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,GAAG,EAAE,QAAQ,CAAC;IACd,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;CAC3B;AAED,qEAAqE;AACrE,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEhD;AAED,eAAO,MAAM,QAAQ,UAAW,MAAM,OAAO,QAAQ,WAAiE,CAAC;AAEvH;;;GAGG;AACH,qBAAa,WAAW;IAGV,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAc,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAU,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAFzG,OAAO,CAAC,QAAQ,CAAuC;IAEvD,YAA6B,KAAK,EAAE,UAAU,EAAmB,KAAK,EAAE,MAAM,EAAmB,OAAO,CAAC,GAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,aAAA,EAAI;IAE/H,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"cached.d.ts","sourceRoot":"","sources":["../../src/cache/cached.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAED,8EAA8E;AAC9E,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,OAAO,EAAE,CAAC;AAEnD,sHAAsH;AACtH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,GAAG,EAAE,QAAQ,CAAC;IACd,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;CAC3B;AAED,qEAAqE;AACrE,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEhD;AAED,eAAO,MAAM,QAAQ,UAAW,MAAM,OAAO,QAAQ,WAAiE,CAAC;AAEvH;;;GAGG;AACH,qBAAa,WAAW;IAGV,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAc,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAU,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAFzG,OAAO,CAAC,QAAQ,CAAuC;IAEvD,YAA6B,KAAK,EAAE,UAAU,EAAmB,KAAK,EAAE,MAAM,EAAmB,OAAO,CAAC,GAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,aAAA,EAAI;IAE/H,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAiBxD;CACF;AAED,sEAAsE;AACtE,wBAAsB,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/G"}
|
package/dist/cache/cached.js
CHANGED
|
@@ -25,12 +25,14 @@ export class CacheRunner {
|
|
|
25
25
|
return JSON.parse(cached);
|
|
26
26
|
let pending = this.inflight.get(full);
|
|
27
27
|
if (!pending) {
|
|
28
|
-
pending =
|
|
28
|
+
pending = Promise.resolve()
|
|
29
|
+
.then(handler)
|
|
30
|
+
.then(async (result) => {
|
|
29
31
|
await this.store.set(full, canonical(result));
|
|
30
32
|
return result;
|
|
31
|
-
})
|
|
33
|
+
})
|
|
34
|
+
.finally(() => this.inflight.delete(full));
|
|
32
35
|
this.inflight.set(full, pending);
|
|
33
|
-
pending.finally(() => this.inflight.delete(full));
|
|
34
36
|
}
|
|
35
37
|
return pending;
|
|
36
38
|
}
|
package/dist/cache/cached.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cached.js","sourceRoot":"","sources":["../../src/cache/cached.ts"],"names":[],"mappings":"AAeA,qEAAqE;AACrE,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvN,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,GAAa,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AAEvH;;;GAGG;AACH,MAAM,OAAO,WAAW;IAGO,KAAK;IAA+B,KAAK;IAA2B,OAAO;IAFhG,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEvD,YAA6B,KAAiB,EAAmB,KAAa,EAAmB,OAAgC;qBAApG,KAAK;qBAA+B,KAAK;uBAA2B,OAAO;IAA4B,CAAC;IAErI,KAAK,CAAC,GAAG,CAAI,EAAE,GAAG,EAAE,OAAO,EAAiB;QAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAM,CAAC;QACzD,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAA2B,CAAC;QAChE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"cached.js","sourceRoot":"","sources":["../../src/cache/cached.ts"],"names":[],"mappings":"AAeA,qEAAqE;AACrE,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvN,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,GAAa,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AAEvH;;;GAGG;AACH,MAAM,OAAO,WAAW;IAGO,KAAK;IAA+B,KAAK;IAA2B,OAAO;IAFhG,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEvD,YAA6B,KAAiB,EAAmB,KAAa,EAAmB,OAAgC;qBAApG,KAAK;qBAA+B,KAAK;uBAA2B,OAAO;IAA4B,CAAC;IAErI,KAAK,CAAC,GAAG,CAAI,EAAE,GAAG,EAAE,OAAO,EAAiB;QAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAM,CAAC;QACzD,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAA2B,CAAC;QAChE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE;iBACxB,IAAI,CAAC,OAAO,CAAC;iBACb,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBACrB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9C,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,sEAAsE;AACtE,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAiB,EAAE,KAAa,EAAE,GAAa,EAAE,MAAe;IAC9F,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AA4BA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AA4BA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0HvD"}
|
package/dist/cli/index.js
CHANGED
|
@@ -4,9 +4,9 @@ import { existsSync, watch } from "node:fs";
|
|
|
4
4
|
import { spawn } from "node:child_process";
|
|
5
5
|
import { pathToFileURL } from "node:url";
|
|
6
6
|
import { schemaDdl } from "../db/migrate.js";
|
|
7
|
-
import { recordEvmFixture, recordBitcoinFixture, writeFixture } from "../sources/fixture.js";
|
|
7
|
+
import { recordEvmFixture, recordBitcoinFixture, recordSolanaFixture, writeFixture } from "../sources/fixture.js";
|
|
8
8
|
import { bigintReplacer } from "../util.js";
|
|
9
|
-
import {
|
|
9
|
+
import { buildAddressQuery, buildEvmQuery } from "../indexer/plan.js";
|
|
10
10
|
const HELP = `yail <command> [options]
|
|
11
11
|
|
|
12
12
|
Commands
|
|
@@ -133,11 +133,14 @@ export async function run(argv) {
|
|
|
133
133
|
const to = Number(values.to);
|
|
134
134
|
const source = plan.config.source;
|
|
135
135
|
let fixture;
|
|
136
|
-
if (
|
|
136
|
+
if (source.kind === "evm") {
|
|
137
137
|
fixture = await recordEvmFixture(source, buildEvmQuery(plan, from, to, registry), { name: values.chain, chainId: Number(plan.config.id) });
|
|
138
138
|
}
|
|
139
|
+
else if (source.kind === "solana") {
|
|
140
|
+
fixture = await recordSolanaFixture(source, buildAddressQuery(plan, from, to, registry), { name: values.chain });
|
|
141
|
+
}
|
|
139
142
|
else {
|
|
140
|
-
fixture = await recordBitcoinFixture(source,
|
|
143
|
+
fixture = await recordBitcoinFixture(source, buildAddressQuery(plan, from, to, registry), { name: values.chain });
|
|
141
144
|
}
|
|
142
145
|
writeFixture(resolve(values.out), fixture);
|
|
143
146
|
console.log(`wrote ${values.out}`);
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,YAAY,EAAgB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,5 +5,5 @@ import type { AccountConfig, ChainConfig, Config, ContractConfig } from "./types
|
|
|
5
5
|
* `event.args` are fully typed.
|
|
6
6
|
*/
|
|
7
7
|
export declare function createConfig<const chains extends Record<string, ChainConfig>, const contracts extends Record<string, ContractConfig<any>> = {}, const accounts extends Record<string, AccountConfig> = {}>(config: Config<chains, contracts, accounts>): Config<chains, contracts, accounts>;
|
|
8
|
-
export declare function validateConfig(config: Config
|
|
8
|
+
export declare function validateConfig(config: Config): void;
|
|
9
9
|
//# sourceMappingURL=create-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-config.d.ts","sourceRoot":"","sources":["../../src/config/create-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"create-config.d.ts","sourceRoot":"","sources":["../../src/config/create-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMrF;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,KAAK,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAChD,KAAK,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAChE,KAAK,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,EACzD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAGlF;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAuDnD"}
|
|
@@ -21,6 +21,9 @@ export function validateConfig(config) {
|
|
|
21
21
|
throw new Error(`chain "${name}": source is required`);
|
|
22
22
|
if (chain.id === undefined)
|
|
23
23
|
throw new Error(`chain "${name}": id is required`);
|
|
24
|
+
if (chain.backfillSource && chain.backfillSource.kind !== chain.source.kind) {
|
|
25
|
+
throw new Error(`chain "${name}": backfillSource ${chain.backfillSource.name} is a ${chain.backfillSource.kind} source, source ${chain.source.name} is ${chain.source.kind}`);
|
|
26
|
+
}
|
|
24
27
|
}
|
|
25
28
|
const sets = new Set(Object.keys(config.addressSets ?? {}));
|
|
26
29
|
const checkChainRef = (owner, ref) => {
|
|
@@ -42,7 +45,7 @@ export function validateConfig(config) {
|
|
|
42
45
|
throw new Error(`${owner}: invalid EVM address "${String(a)}"`);
|
|
43
46
|
}
|
|
44
47
|
};
|
|
45
|
-
for (const [name, c] of Object.entries(
|
|
48
|
+
for (const [name, c] of Object.entries(config.contracts ?? {})) {
|
|
46
49
|
if (!c.abi)
|
|
47
50
|
throw new Error(`contract "${name}": abi is required`);
|
|
48
51
|
checkChainRef(`contract "${name}"`, c.chain);
|
|
@@ -67,7 +70,7 @@ export function validateConfig(config) {
|
|
|
67
70
|
}
|
|
68
71
|
}
|
|
69
72
|
}
|
|
70
|
-
for (const [name, a] of Object.entries(
|
|
73
|
+
for (const [name, a] of Object.entries(config.accounts ?? {})) {
|
|
71
74
|
checkChainRef(`account "${name}"`, a.chain);
|
|
72
75
|
if (a.address === undefined)
|
|
73
76
|
throw new Error(`account "${name}": address is required`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-config.js","sourceRoot":"","sources":["../../src/config/create-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-config.js","sourceRoot":"","sources":["../../src/config/create-config.ts"],"names":[],"mappings":"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"}
|
package/dist/config/types.d.ts
CHANGED
|
@@ -5,17 +5,22 @@ import type { AddressSetRef, FactoryRef } from "./address.js";
|
|
|
5
5
|
import type { CacheStore } from "../cache/cached.js";
|
|
6
6
|
export type AddressSpec = string | readonly string[] | AddressSetRef | FactoryRef;
|
|
7
7
|
export interface ChainConfig<S extends Source = Source> {
|
|
8
|
-
/** Chain id (EVM) or a string id such as "bitcoin". */
|
|
8
|
+
/** Chain id (EVM) or a string id such as "bitcoin" or "solana". */
|
|
9
9
|
id: number | string;
|
|
10
|
-
/** Data source: `hypersync()`, `rpc()
|
|
10
|
+
/** Data source: `hypersync()`, `rpc()` (EVM, or Solana with `kind: "solana"`), `esplora()`, a `union()` of one chain's sources, or any of them wrapped in `cached()`. */
|
|
11
11
|
source: S;
|
|
12
|
+
/**
|
|
13
|
+
* Source for address history: `backfill_address` and `reindex_scope` jobs read through it, the live loop and
|
|
14
|
+
* `reindex_range` through `source`. Same kind as `source`. Default: `source`.
|
|
15
|
+
*/
|
|
16
|
+
backfillSource?: S;
|
|
12
17
|
/** Optional JSON-RPC URL, enables `context.client.readContract` (EVM only). */
|
|
13
18
|
rpc?: string;
|
|
14
|
-
/** Blocks behind the source head treated as final. Default: 20 (EVM), 3 (Bitcoin). */
|
|
19
|
+
/** Blocks behind the source head treated as final. Default: 20 (EVM), 3 (Bitcoin), 32 slots (Solana). */
|
|
15
20
|
finality?: number;
|
|
16
21
|
/** Poll interval in ms once caught up. Default: 2000 (EVM), 30000 (Bitcoin). */
|
|
17
22
|
pollInterval?: number;
|
|
18
|
-
/** Max blocks per planned query. Default: 100000 (HyperSync), 2000 (RPC), 50000 (Bitcoin). */
|
|
23
|
+
/** Max blocks per planned query. Default: 100000 (HyperSync), 2000 (RPC), 50000 (Bitcoin), 5000000 slots (Solana). */
|
|
19
24
|
maxBlockRange?: number;
|
|
20
25
|
}
|
|
21
26
|
export type BlockRef = number | "latest";
|
|
@@ -50,7 +55,7 @@ export interface ChainScopedAccount {
|
|
|
50
55
|
startBlock?: BlockRef;
|
|
51
56
|
endBlock?: number;
|
|
52
57
|
}
|
|
53
|
-
/** Index transactions sent from/to a set of addresses (EVM native transfers, Bitcoin UTXO movements). */
|
|
58
|
+
/** Index transactions sent from/to a set of addresses (EVM native transfers, Bitcoin UTXO movements, Solana SOL and token balance changes). */
|
|
54
59
|
export interface AccountConfig {
|
|
55
60
|
chain: string | Readonly<Record<string, ChainScopedAccount>>;
|
|
56
61
|
address: AddressSpec;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,aAAa,GAAG,UAAU,CAAC;AAElF,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACpD,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,14 +4,14 @@ export { t, table, materializedView, view, tableDdl, materializedViewDdl, viewDd
|
|
|
4
4
|
export type { Table, TableOptions, TableEngine, Column, InsertRow, InferRow, MaterializedView, Refresh, View } from "./schema/index.js";
|
|
5
5
|
export { createDb, sql, migrate, schemaDdl, BatchWriter, internalTables } from "./db/index.js";
|
|
6
6
|
export type { Db, DatabaseConfig, SqlFragment, MigrateOptions } from "./db/index.js";
|
|
7
|
-
export { hypersync, rpc, cached, esplora, fixtureSource } from "./sources/index.js";
|
|
8
|
-
export type { Source, EvmSource, BitcoinSource, EvmQuery, EvmBatch, EvmLog, EvmBlock, EvmTransaction, EvmTrace, EvmTraceFilter, BitcoinQuery, BitcoinBatch, BitcoinTransaction, HypersyncOptions, RpcSourceOptions, EsploraOptions, CachedSourceOptions } from "./sources/index.js";
|
|
7
|
+
export { hypersync, rpc, cached, esplora, union, fixtureSource } from "./sources/index.js";
|
|
8
|
+
export type { Source, EvmSource, BitcoinSource, EvmQuery, EvmBatch, EvmLog, EvmBlock, EvmTransaction, EvmTrace, EvmTraceFilter, BitcoinQuery, BitcoinBatch, BitcoinTransaction, SolanaSource, SolanaQuery, SolanaBatch, SolanaBlock, SolanaTransaction, SolanaBalance, HypersyncOptions, SolanaHypersyncOptions, RpcSourceOptions, SolanaRpcOptions, EsploraOptions, CachedSourceOptions } from "./sources/index.js";
|
|
9
9
|
export { createIndexer } from "./indexer/indexer.js";
|
|
10
10
|
export type { CacheStore, CacheKey, CacheQuery } from "./cache/cached.js";
|
|
11
11
|
export { memory, redis } from "./cache/stores.js";
|
|
12
12
|
export type { Indexer, IndexerOptions, StatusSnapshot, ReindexRequest } from "./indexer/indexer.js";
|
|
13
13
|
export type { HandlerContext, HandlerDb, AddressesApi } from "./indexer/context.js";
|
|
14
|
-
export type { ContractEvent, EvmAccountEvent, BitcoinAccountEvent, SetupEvent, EventNames, EventOf } from "./indexer/events.js";
|
|
14
|
+
export type { ContractEvent, EvmAccountEvent, BitcoinAccountEvent, SolanaAccountEvent, SetupEvent, EventNames, EventOf } from "./indexer/events.js";
|
|
15
15
|
export type { HttpClient, HttpResponse, HttpRequestInit, HttpCacheOptions } from "./http/client.js";
|
|
16
16
|
export type { CachedClient, ReadContractParams } from "./rpc/cached-client.js";
|
|
17
17
|
export type { AddressRow, AddressStatus } from "./addresses/registry.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACtE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGnO,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC7G,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACxI,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/F,YAAY,EAAE,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGrF,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACtE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGnO,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC7G,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACxI,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/F,YAAY,EAAE,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGrF,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC3F,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGrZ,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACpG,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpF,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACpJ,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpG,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGzE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAC9F,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ export { createConfig, addressSet, factory } from "./config/index.js";
|
|
|
4
4
|
export { t, table, materializedView, view, tableDdl, materializedViewDdl, viewDdl } from "./schema/index.js";
|
|
5
5
|
export { createDb, sql, migrate, schemaDdl, BatchWriter, internalTables } from "./db/index.js";
|
|
6
6
|
// Sources
|
|
7
|
-
export { hypersync, rpc, cached, esplora, fixtureSource } from "./sources/index.js";
|
|
7
|
+
export { hypersync, rpc, cached, esplora, union, fixtureSource } from "./sources/index.js";
|
|
8
8
|
// Indexer
|
|
9
9
|
export { createIndexer } from "./indexer/indexer.js";
|
|
10
10
|
export { memory, redis } from "./cache/stores.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGtE,oBAAoB;AACpB,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE7G,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/F,UAAU;AACV,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGtE,oBAAoB;AACpB,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE7G,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/F,UAAU;AACV,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAG3F,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAQlD,gBAAgB;AAChB,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,mBAAmB;AACnB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC"}
|
|
@@ -9,21 +9,22 @@ import { CacheRunner, type CacheQuery } from "../cache/cached.js";
|
|
|
9
9
|
import type { InferRow, InsertRow, Table } from "../schema/table.js";
|
|
10
10
|
import type { WideLogger } from "../observability/logger.js";
|
|
11
11
|
import type { Config } from "../config/types.js";
|
|
12
|
+
import type { SourceKind } from "../sources/types.js";
|
|
12
13
|
/** `context.db`: same as `Db` but inserts are buffered and flushed per batch. */
|
|
13
14
|
export interface HandlerDb extends Omit<Db, "insert"> {
|
|
14
15
|
/** Buffered insert. Rows become visible in ClickHouse after the batch flushes (before the checkpoint is written). */
|
|
15
16
|
insert<T extends Table<any>>(table: T): {
|
|
16
17
|
values(rows: InsertRow<T> | InsertRow<T>[]): void;
|
|
17
18
|
};
|
|
18
|
-
/**
|
|
19
|
+
/** Returns the latest row buffered for the key, else reads ClickHouse (FINAL). */
|
|
19
20
|
find<T extends Table<any>>(table: T, key: Partial<InferRow<T>>): Promise<InferRow<T> | null>;
|
|
20
21
|
/** Force a flush now (rarely needed). */
|
|
21
22
|
flush(): Promise<void>;
|
|
22
23
|
}
|
|
23
24
|
export interface AddressesApi {
|
|
24
|
-
/** Is the address a
|
|
25
|
+
/** Is the address a member of the set on the current chain, whatever its status? */
|
|
25
26
|
has(set: string, address: string, chain?: string): boolean;
|
|
26
|
-
/** Register an address for backfill + live indexing. Idempotent. */
|
|
27
|
+
/** Register an address for backfill + live indexing. Idempotent, except that a `failed` address re-runs its history. */
|
|
27
28
|
register(set: string, address: string, options?: {
|
|
28
29
|
chain?: string;
|
|
29
30
|
fromBlock?: number;
|
|
@@ -35,7 +36,7 @@ export interface HandlerContext<C extends Config<any, any, any> = Config<any, an
|
|
|
35
36
|
chain: {
|
|
36
37
|
name: chain;
|
|
37
38
|
id: number | string;
|
|
38
|
-
kind:
|
|
39
|
+
kind: SourceKind;
|
|
39
40
|
};
|
|
40
41
|
db: HandlerDb;
|
|
41
42
|
/** Cached contract reads; only defined for EVM chains with `rpc` configured. */
|
|
@@ -65,7 +66,7 @@ export interface ContextDeps {
|
|
|
65
66
|
chain: {
|
|
66
67
|
name: string;
|
|
67
68
|
id: number | string;
|
|
68
|
-
kind:
|
|
69
|
+
kind: SourceKind;
|
|
69
70
|
};
|
|
70
71
|
contracts: Record<string, {
|
|
71
72
|
abi: Abi;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/indexer/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/indexer/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/indexer/context.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAI7C,OAAO,EAAE,WAAW,EAAmB,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/indexer/context.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAI7C,OAAO,EAAE,WAAW,EAAmB,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAK5C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAsDrC,MAAM,UAAU,eAAe,CAAC,EAAM,EAAE,MAAmB,EAAE,IAA0B;IACrF,MAAM,SAAS,GAAc;QAC3B,GAAG,EAAE;QACL,MAAM,CAAC,KAAK;YACV,OAAO;gBACL,MAAM,CAAC,IAAI;oBACT,KAAK,MAAM,CAAC,IAAI,OAAO,CAA0B,IAAI,CAAC;wBAAE,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC7F,CAAC;aACF,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG;YACnB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzC,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;YAC9B,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,KAAK;YACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;KACF,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAiB;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvE,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;QACpD,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QAClC,SAAS,EAAE;YACT,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;YACvF,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAClC,IAAI,CAAC,QAAQ;iBACV,QAAQ,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;iBACtJ,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC;YAC7B,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SACnF;QACD,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
|