@saga-sync/client 0.1.3 → 0.1.4

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 ADDED
@@ -0,0 +1,198 @@
1
+ # @saga-sync/client
2
+
3
+ The consumer side of **saga-sync** — the reference implementation of
4
+ [privacy-protocol-state-distribution](../../README.md). Given a manifest URL it
5
+ reconstructs a privacy protocol's event history by downloading the published
6
+ static files and **verifying every one** against the manifest — no trust in the
7
+ publisher beyond the manifest itself (and, optionally, its Ed25519 signature).
8
+
9
+ Install just this package to consume published state — it pulls in
10
+ [`@saga-sync/core`](../core) and `@noble/*`, and **nothing else**: no viem, no
11
+ `@google-cloud/storage`, no scraper.
12
+
13
+ ```bash
14
+ npm install @saga-sync/client
15
+ ```
16
+
17
+ Ships a library (`@saga-sync/client`) and a CLI (`state-client`). The library
18
+ entry is **browser-safe** — gzip via the web-standard `DecompressionStream`,
19
+ `Uint8Array` + `TextDecoder` instead of `Buffer`, no `node:` imports (a guard test
20
+ enforces it). The CLI and the optional disk cache are Node-only.
21
+
22
+ ## Quick start (library)
23
+
24
+ ```ts
25
+ import { Client, HttpStore } from "@saga-sync/client";
26
+
27
+ // `source` is the Store the manifest + chunks live behind (a CDN/bucket URL).
28
+ const client = new Client({ source: new HttpStore("https://cdn.example/pp-state/") });
29
+
30
+ // List what's published.
31
+ for (const id of await client.listProtocols()) console.log(id);
32
+
33
+ // Stream one protocol's full event history in block order.
34
+ for await (const event of client.streamEvents("tornado-cash-1-eth-0.1")) {
35
+ // event: CanonicalEvent — { contractAddress, eventTopic, topics, data, blockNumber, logIndex }
36
+ handle(event);
37
+ }
38
+ ```
39
+
40
+ `streamEvents` returns an **`AsyncGenerator<CanonicalEvent>`**, not an array — you
41
+ consume it once with `for await`. That's a deliberate memory choice: events are
42
+ produced lazily and peak memory is bounded to roughly one decompressed chunk
43
+ (~10 MiB) × the fetch concurrency, **independent of total history size**, so you
44
+ can process a stream larger than RAM. It also means an early `break` never
45
+ downloads or verifies the chunks you didn't reach, and you start processing the
46
+ first chunk while later ones are still downloading. If you genuinely want the whole
47
+ array, collect it yourself:
48
+
49
+ ```ts
50
+ const all: CanonicalEvent[] = [];
51
+ for await (const e of client.streamEvents(id)) all.push(e);
52
+ ```
53
+
54
+ ### Filtering
55
+
56
+ `streamEvents(id, opts)` accepts:
57
+
58
+ - **`from` / `to`** — restrict to a block range (`[from, to)`); only overlapping
59
+ chunks are fetched.
60
+ - **`addresses`** — keep only events from these contract addresses.
61
+ - **`eventTopics`** — keep only these event `topic0`s (event types).
62
+
63
+ `addresses`/`eventTopics` are validated against the manifest's `trackedAddresses` /
64
+ `trackedEventTopics` and **throw** if you ask for something the stream doesn't track
65
+ — a mismatched filter is a bug, not a silently-empty result.
66
+
67
+ ```ts
68
+ for await (const e of client.streamEvents(id, {
69
+ from: "0x8b1d26",
70
+ eventTopics: ["0xa945e51e…"], // Deposit only
71
+ })) { … }
72
+ ```
73
+
74
+ ### Selecting a stream by address
75
+
76
+ Don't know (or want to hardcode) the stream id? Pass a **selector** — a contract
77
+ address, optionally with a chain-id guard — instead of an id. The client resolves
78
+ it against the manifest's `trackedAddresses` (and `chainId`) to exactly one stream
79
+ and streams it, implicitly filtered to that address:
80
+
81
+ ```ts
82
+ for await (const e of client.streamEvents({ address: "0x12d66f87…", chainId: "0x1" })) {
83
+ handle(e);
84
+ }
85
+
86
+ // Or resolve without streaming:
87
+ const id = await client.resolveProtocolId({ address: "0x12d66f87…" });
88
+ ```
89
+
90
+ `chainId` is optional. A manifest is single-chain in practice (mainnet and Sepolia
91
+ are separate buckets), so it mostly guards against pointing at the wrong one.
92
+ Resolution **throws** if the address matches no stream, or more than one — a
93
+ selector must name exactly one stream (pass an explicit id to disambiguate).
94
+ Combining a selector with `opts.addresses` also throws (the address is the
95
+ selector).
96
+
97
+ ## Verification model
98
+
99
+ Everything the client serves is verified — **cache hits included**:
100
+
101
+ - **`verifyDigest(meta, bytes)`** recomputes the sha256 of a chunk's uncompressed
102
+ JSONL and compares it to the manifest entry; a mismatch throws
103
+ `DigestMismatchError`.
104
+ - **`verifyChunkEvents(meta, events)`** then enforces the canonical form the digest
105
+ can't catch on its own — every event within the chunk's `[from, to)` range and
106
+ strictly ascending by `(blockNumber, logIndex)`; violations throw
107
+ `CanonicalFormError`.
108
+ - A missing file throws `ChunkNotFoundError`, kept distinct from a digest mismatch
109
+ so callers can tell "absent" from "tampered".
110
+
111
+ ### Manifest signatures (optional)
112
+
113
+ Supply a publisher public key and the client fetches `index.json.sig` and verifies
114
+ the **Ed25519 signature over the raw `index.json` bytes before parsing** — mandatory
115
+ once enabled (missing or mismatched signature throws). Because the manifest holds
116
+ every chunk's digest, one signature transitively authenticates the whole dataset.
117
+
118
+ ```ts
119
+ const client = new Client({ source: new HttpStore(baseUrl), publicKey: "0x…" });
120
+ ```
121
+
122
+ ## Library API
123
+
124
+ - **`Client`** — `streamEvents(target, opts?)` (merged sealed chunks then the hot
125
+ head, sealed fetched with a bounded-concurrency sliding window and optionally
126
+ cached to a local `Store`). `target` is a protocol id **or** a
127
+ `{ address, chainId? }` selector. `resolveProtocolId(selector)` resolves a
128
+ selector to an id without streaming; `listProtocols(prefix?)` enumerates ids;
129
+ plus manifest inspection helpers.
130
+ - **`loadManifest(store, key, { publicKey? })`** — one fetch; verifies the signature
131
+ when a key is supplied. Re-uses core's `Manifest` so the shape is defined once.
132
+ - **`decodeAndVerify` / `fetchChunkFrom(store, meta)`** — the fetch→gunzip→verify→
133
+ parse→verify-canonical pipeline for a single chunk.
134
+ - **`verifyDigest` / `verifyChunkEvents`** and the error types above.
135
+
136
+ Reads go through core's `Store` seam (`HttpStore` for the network, an optional
137
+ local cache `Store`). Sealed chunks are safe to cache — immutable, content-
138
+ addressed, and re-verified on every read; the hot head is re-fetched every call and
139
+ never cached.
140
+
141
+ ## CLI (`state-client`)
142
+
143
+ Subcommands take a `<manifest-url>` (the manifest is read from `<url>/index.json`);
144
+ the query commands fetch **only** the manifest — no chunk downloads.
145
+
146
+ ```
147
+ state-client <command> <manifest-url> [<protocol-id>] [options]
148
+
149
+ protocols <url> list every protocol + summary (alias: ls)
150
+ info <url> <id> range, size, metadata, hot head, gap/contiguity check
151
+ head <url> <id> latest covered block (alias: latest)
152
+ chunks <url> <id> list a protocol's chunks
153
+ stream <url> [<id>] download + verify + emit NDJSON
154
+
155
+ --json machine-readable output instead of human tables
156
+ --from-block <hex> info/chunks/stream: lower bound of the block range
157
+ --to-block <hex> info/chunks/stream: upper bound (exclusive)
158
+ --address <hex> stream: with an <id>, a repeatable post-decode filter;
159
+ without an <id>, a single --address selects the stream
160
+ --chain <hex> stream: chain-id guard when selecting a stream by --address
161
+ --event-topic <hex> stream: keep only these event topic0s (repeatable)
162
+ --since-block <hex> head: exit 3 if no block beyond this is covered
163
+ --hot chunks: include the mutable hot head
164
+ --cache-dir <path> stream: local cache of verified sealed chunks
165
+ --concurrency <n> stream: parallel chunk fetches (default 4)
166
+ --public-key <hex> require + verify the manifest's Ed25519 signature
167
+ ```
168
+
169
+ Stream by address instead of naming the id:
170
+
171
+ ```bash
172
+ state-client stream https://cdn.example/pp-state/ --address 0x12d66f87… --chain 0x1
173
+ ```
174
+
175
+ `stream` emits NDJSON on stdout + a summary on stderr; the query commands print a
176
+ human table or, with `--json`, structured JSON. `--public-key` applies to all
177
+ commands and verifies `index.json.sig` before trusting the manifest.
178
+
179
+ Exit codes: `0` ok · `1` usage / fetch / not-found · `3` `head --since-block` found
180
+ nothing newer.
181
+
182
+ ```bash
183
+ # serve some published chunks, then:
184
+ node packages/client/dist/cli.js info http://localhost:8080/ tornado-cash-1-eth-0.1
185
+ node packages/client/dist/cli.js stream http://localhost:8080/ tornado-cash-1-eth-0.1 \
186
+ --cache-dir ./client-cache > events.ndjson
187
+ ```
188
+
189
+ ## Modules
190
+
191
+ - **`verify.ts`** — `verifyDigest` + `verifyChunkEvents` (both mandatory on every chunk).
192
+ - **`fetch.ts`** — `decodeAndVerify` + `fetchChunkFrom`; the per-chunk pipeline.
193
+ - **`manifest.ts`** — `loadManifest` + pure `selectSealedChunks` / `selectHotHead`
194
+ range-overlap helpers + signature check.
195
+ - **`client.ts`** — the `Client` class and the merged streaming logic.
196
+ - **`format.ts`** — `humanBytes` + `table`, the CLI's rendering helpers.
197
+ - **`cli.ts`** — the `state-client` entry point.
198
+ - **`index.ts`** — the browser-safe library barrel.
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAyDrC,KAAK,KAAK,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAKtD,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA0B3F;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,KAAK,GAC9B,OAAO,CAAC,MAAM,CAAC,CA2CjB;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CA6B3C;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAAG,KAAK,GAC5C,OAAO,CAAC,MAAM,CAAC,CAoBjB"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAkErC,KAAK,KAAK,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAKtD,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA0B3F;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,KAAK,GAC9B,OAAO,CAAC,MAAM,CAAC,CAuDjB;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CA6B3C;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAAG,KAAK,GAC5C,OAAO,CAAC,MAAM,CAAC,CAoBjB"}
package/dist/cli.js CHANGED
@@ -24,15 +24,23 @@ Commands:
24
24
  info <manifest-url> <protocol-id> detailed summary for one protocol
25
25
  head <manifest-url> <protocol-id> latest covered block / freshness (alias: latest)
26
26
  chunks <manifest-url> <protocol-id> list this protocol's chunks
27
- stream <manifest-url> <protocol-id> download + verify + emit NDJSON
27
+ stream <manifest-url> [<protocol-id>] download + verify + emit NDJSON
28
28
 
29
29
  The manifest is read from <manifest-url>/index.json. The query commands
30
30
  (protocols/info/head/chunks) fetch only the manifest — no chunk downloads.
31
+ For stream, omit <protocol-id> and pass a single --address (optionally --chain)
32
+ to select the stream by contract address instead of its id.
31
33
 
32
34
  Options:
33
35
  --json machine-readable output instead of human tables
34
36
  --from-block <hex> info/chunks/stream: lower bound of the block range
35
37
  --to-block <hex> info/chunks/stream: upper bound (exclusive)
38
+ --address <0xhex> stream: only emit events from this contract address
39
+ (repeatable filter with a <protocol-id>; or, without an
40
+ id, a single --address selects the stream)
41
+ --chain <0xhex> stream: chain-id guard when selecting a stream by --address
42
+ --event-topic <0xhex> stream: only emit events with this topic0 / event type
43
+ (repeatable; must be one the stream tracks)
36
44
  --since-block <hex> head: exit 3 if no block beyond this is covered
37
45
  --hot chunks: include the mutable hot head
38
46
  --cache-dir <path> stream: local cache of verified sealed chunks
@@ -98,6 +106,11 @@ export async function cmdInfo(client, id, opts) {
98
106
  if (opts.json) {
99
107
  return JSON.stringify({
100
108
  protocolId: id,
109
+ protocol: manifest.protocolName(id) ?? null,
110
+ protocolMetadata: manifest.protocolMetadata(id) ?? null,
111
+ chainId: manifest.chainId(id) ?? null,
112
+ trackedAddresses: manifest.trackedAddresses(id) ?? [],
113
+ trackedEventTopics: manifest.trackedEventTopics(id) ?? [],
101
114
  manifestVersion: manifest.version(),
102
115
  updatedAt: manifest.updatedAt() ?? null,
103
116
  fromBlock: hexOrNull(first),
@@ -109,8 +122,15 @@ export async function cmdInfo(client, id, opts) {
109
122
  }, null, 2);
110
123
  }
111
124
  const ranged = opts.fromBlock !== undefined || opts.toBlock !== undefined;
125
+ const meta = manifest.protocolMetadata(id);
126
+ const tracked = manifest.trackedAddresses(id) ?? [];
127
+ const topics = manifest.trackedEventTopics(id) ?? [];
112
128
  return [
113
129
  `protocol: ${id}`,
130
+ `type: ${manifest.protocolName(id) ?? "-"}${manifest.chainId(id) ? ` (chain ${manifest.chainId(id)})` : ""}`,
131
+ ...(meta && Object.keys(meta).length ? [`metadata: ${JSON.stringify(meta)}`] : []),
132
+ ...(tracked.length ? [`tracked addrs: ${tracked.join(", ")}`] : []),
133
+ ...(topics.length ? [`tracked topics: ${topics.join(", ")}`] : []),
114
134
  `manifest: v${manifest.version()}${manifest.updatedAt() ? `, updated ${manifest.updatedAt()}` : ""}`,
115
135
  `block range: ${hexOrNull(first) ?? "-"} → ${hexOrNull(last) ?? "-"}`,
116
136
  `sealed chunks: ${sealed.length}`,
@@ -167,7 +187,7 @@ export async function cmdChunks(client, id, opts) {
167
187
  c.digest.data,
168
188
  ]));
169
189
  }
170
- async function runStream(manifestUrl, id, opts) {
190
+ async function runStream(manifestUrl, target, opts) {
171
191
  const source = new HttpStore(manifestUrl);
172
192
  const cache = opts.cacheDir ? new DiskStore(opts.cacheDir) : undefined;
173
193
  const client = new Client({
@@ -176,10 +196,13 @@ async function runStream(manifestUrl, id, opts) {
176
196
  concurrency: opts.concurrency,
177
197
  publicKey: opts.publicKey,
178
198
  });
199
+ const label = typeof target === "string" ? target : target.address;
179
200
  let count = 0;
180
- for await (const event of client.streamEvents(id, {
201
+ for await (const event of client.streamEvents(target, {
181
202
  fromBlock: opts.fromBlock,
182
203
  toBlock: opts.toBlock,
204
+ ...(opts.addresses ? { addresses: opts.addresses } : {}),
205
+ ...(opts.eventTopics ? { eventTopics: opts.eventTopics } : {}),
183
206
  })) {
184
207
  process.stdout.write(JSON.stringify(event) + "\n");
185
208
  count++;
@@ -188,7 +211,7 @@ async function runStream(manifestUrl, id, opts) {
188
211
  ? ` in [${opts.fromBlock !== undefined ? numberToHex(opts.fromBlock) : "*"},` +
189
212
  `${opts.toBlock !== undefined ? numberToHex(opts.toBlock) : "*"})`
190
213
  : "";
191
- process.stderr.write(`state-client: ${count} event(s) for ${id}${range}` +
214
+ process.stderr.write(`state-client: ${count} event(s) for ${label}${range}` +
192
215
  (opts.cacheDir ? ` (cache=${opts.cacheDir})` : "") +
193
216
  `\n`);
194
217
  }
@@ -205,6 +228,9 @@ async function main() {
205
228
  hot: { type: "boolean", default: false },
206
229
  concurrency: { type: "string" },
207
230
  "public-key": { type: "string" },
231
+ address: { type: "string", multiple: true },
232
+ "event-topic": { type: "string", multiple: true },
233
+ chain: { type: "string" },
208
234
  },
209
235
  });
210
236
  if (values.help || positionals.length === 0) {
@@ -252,10 +278,32 @@ async function main() {
252
278
  if (!Number.isInteger(concurrency) || concurrency < 1) {
253
279
  fail(`--concurrency must be a positive integer; got ${values.concurrency}`);
254
280
  }
255
- await runStream(manifestUrl, needId(), {
281
+ const addresses = values.address;
282
+ const id = positionals[2];
283
+ let target;
284
+ if (id) {
285
+ target = id;
286
+ }
287
+ else {
288
+ // No protocol id → select the stream by exactly one --address (with an
289
+ // optional --chain guard). The address doubles as the post-decode filter.
290
+ if (!addresses || addresses.length !== 1) {
291
+ fail(`stream needs a <protocol-id>, or exactly one --address ` +
292
+ `(with optional --chain) to select a stream\n\n${USAGE}`);
293
+ }
294
+ target = {
295
+ address: addresses[0],
296
+ ...(values.chain ? { chainId: values.chain } : {}),
297
+ };
298
+ }
299
+ await runStream(manifestUrl, target, {
256
300
  cacheDir: values["cache-dir"] ? resolve(values["cache-dir"]) : undefined,
257
301
  concurrency,
258
302
  publicKey,
303
+ // Pass --address as a post-decode filter only when a protocol id was
304
+ // named; with a selector the address is the selector, not opts.addresses.
305
+ ...(id && addresses ? { addresses } : {}),
306
+ ...(values["event-topic"] ? { eventTopics: values["event-topic"] } : {}),
259
307
  ...range,
260
308
  });
261
309
  return;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { CanonicalEvent } from "@saga-sync/core";
2
+ import type { Hex } from "@saga-sync/core";
2
3
  import type { Store } from "@saga-sync/core";
3
4
  import type { ChunkMeta } from "@saga-sync/core";
4
5
  import { Manifest } from "@saga-sync/core";
@@ -11,7 +12,14 @@ export type ClientOptions = {
11
12
  export type StreamOptions = {
12
13
  fromBlock?: bigint;
13
14
  toBlock?: bigint;
15
+ addresses?: Hex[];
16
+ eventTopics?: Hex[];
14
17
  };
18
+ export type ProtocolSelector = {
19
+ address: Hex;
20
+ chainId?: Hex;
21
+ };
22
+ export type StreamTarget = string | ProtocolSelector;
15
23
  export declare class Client {
16
24
  private readonly source;
17
25
  private readonly cache;
@@ -23,7 +31,8 @@ export declare class Client {
23
31
  hot?: boolean;
24
32
  }): Promise<CanonicalEvent[]>;
25
33
  listProtocols(prefix?: string): Promise<string[]>;
26
- streamEvents(protocolId: string, opts?: StreamOptions): AsyncGenerator<CanonicalEvent, void, void>;
34
+ resolveProtocolId(selector: ProtocolSelector): Promise<string>;
35
+ streamEvents(target: StreamTarget, opts?: StreamOptions): AsyncGenerator<CanonicalEvent, void, void>;
27
36
  private fetchSealed;
28
37
  private fetchSealedOrdered;
29
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAI3C,MAAM,MAAM,aAAa,GAAG;IAG1B,MAAM,EAAE,KAAK,CAAC;IAKd,KAAK,CAAC,EAAE,KAAK,CAAC;IAGd,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAOF,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;gBAEnC,IAAI,EAAE,aAAa;IAY/B,aAAa,CAAC,GAAG,GAAE,MAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAO5D,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,GAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAS9E,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQhD,YAAY,CACjB,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,aAAkB,GACvB,cAAc,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC;YAkB/B,WAAW;YAiBV,kBAAkB;CAclC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAI3C,MAAM,MAAM,aAAa,GAAG;IAG1B,MAAM,EAAE,KAAK,CAAC;IAKd,KAAK,CAAC,EAAE,KAAK,CAAC;IAGd,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAOjB,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;IAMlB,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;CACrB,CAAC;AAKF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,GAAG,CAAC;IAIb,OAAO,CAAC,EAAE,GAAG,CAAC;CACf,CAAC;AAGF,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,gBAAgB,CAAC;AAOrD,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;gBAEnC,IAAI,EAAE,aAAa;IAY/B,aAAa,CAAC,GAAG,GAAE,MAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAO5D,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,GAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAS9E,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAOjD,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAS7D,YAAY,CACjB,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,aAAkB,GACvB,cAAc,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC;YA8C/B,WAAW;YAiBV,kBAAkB;CAclC"}
package/dist/client.js CHANGED
@@ -38,21 +38,45 @@ export class Client {
38
38
  const ids = (await this.fetchManifest()).protocolIds();
39
39
  return (prefix === undefined ? ids : ids.filter((id) => matchesFamily(id, prefix))).sort();
40
40
  }
41
+ // Resolve an address selector to exactly one stream id (or throw if none / more
42
+ // than one match). Exposed so a caller can resolve without streaming.
43
+ async resolveProtocolId(selector) {
44
+ return resolveOne(await this.fetchManifest(), selector);
45
+ }
41
46
  // Layer 3: merged event stream for a protocol. Yields events in block order
42
47
  // across all sealed chunks in the optional [fromBlock, toBlock) window,
43
- // then the hot head (re-fetched every call, never cached).
44
- async *streamEvents(protocolId, opts = {}) {
48
+ // then the hot head (re-fetched every call, never cached). `target` is either
49
+ // a protocol id or an address selector; a selector resolves to one stream and
50
+ // implicitly filters to that address.
51
+ async *streamEvents(target, opts = {}) {
45
52
  const manifest = await this.fetchManifest();
46
- const sealed = selectSealedChunks(manifest.sealedChunks(protocolId), opts);
47
- const hot = selectHotHead(manifest.hotHead(protocolId), opts);
53
+ let protocolId;
54
+ let effectiveOpts = opts;
55
+ if (typeof target === "string") {
56
+ protocolId = target;
57
+ }
58
+ else {
59
+ if (opts.addresses !== undefined) {
60
+ throw new Error("streamEvents: pass the address via the selector, not opts.addresses");
61
+ }
62
+ protocolId = resolveOne(manifest, target);
63
+ effectiveOpts = { ...opts, addresses: [target.address] };
64
+ }
65
+ const sealed = selectSealedChunks(manifest.sealedChunks(protocolId), effectiveOpts);
66
+ const hot = selectHotHead(manifest.hotHead(protocolId), effectiveOpts);
67
+ const keepAddress = buildSetFilter(protocolId, effectiveOpts.addresses, manifest.trackedAddresses(protocolId), "address(es)", (e) => e.contractAddress);
68
+ const keepTopic = buildSetFilter(protocolId, effectiveOpts.eventTopics, manifest.trackedEventTopics(protocolId), "event topic(s)", (e) => e.eventTopic);
69
+ const keep = (e) => keepAddress(e) && keepTopic(e);
48
70
  for await (const events of this.fetchSealedOrdered(sealed)) {
49
71
  for (const event of events)
50
- yield event;
72
+ if (keep(event))
73
+ yield event;
51
74
  }
52
75
  if (hot) {
53
76
  const events = await fetchChunkFrom(this.source, hot);
54
77
  for (const event of events)
55
- yield event;
78
+ if (keep(event))
79
+ yield event;
56
80
  }
57
81
  }
58
82
  // Cache-aware sealed fetch: check cache → on miss, fetch from source, verify,
@@ -97,4 +121,59 @@ export class Client {
97
121
  function matchesFamily(id, prefix) {
98
122
  return id === prefix || id.startsWith(`${prefix}-`);
99
123
  }
124
+ // Resolve an address selector against a manifest to exactly one protocol id.
125
+ // Matches on `trackedAddresses` (case-insensitive) and, when given, `chainId`
126
+ // (compared numerically). Throws on zero or multiple matches — a selector must
127
+ // name one stream.
128
+ function resolveOne(manifest, selector) {
129
+ const addr = selector.address.toLowerCase();
130
+ const matches = manifest.protocolIds().filter((id) => {
131
+ const addrs = manifest.trackedAddresses(id);
132
+ if (!addrs?.some((a) => a.toLowerCase() === addr))
133
+ return false;
134
+ if (selector.chainId === undefined)
135
+ return true;
136
+ const cid = manifest.chainId(id);
137
+ return cid !== undefined && sameQuantity(cid, selector.chainId);
138
+ });
139
+ const on = selector.chainId ? ` on chain ${selector.chainId}` : "";
140
+ if (matches.length === 0) {
141
+ throw new Error(`streamEvents: no stream tracks address ${selector.address}${on} in this manifest`);
142
+ }
143
+ if (matches.length > 1) {
144
+ throw new Error(`streamEvents: address ${selector.address}${on} matches multiple streams ` +
145
+ `(${matches.join(", ")}); pass a protocol id to disambiguate`);
146
+ }
147
+ return matches[0];
148
+ }
149
+ // Compare two 0x-hex quantities numerically ("0x1" == "0x01"), falling back to
150
+ // a case-insensitive string match if either is not a valid quantity.
151
+ function sameQuantity(a, b) {
152
+ try {
153
+ return BigInt(a) === BigInt(b);
154
+ }
155
+ catch {
156
+ return a.toLowerCase() === b.toLowerCase();
157
+ }
158
+ }
159
+ // Build a per-event predicate for streamEvents' `addresses`/`eventTopics`
160
+ // filters. No `requested` → keep everything. Otherwise match (case-insensitively)
161
+ // on the field `pick` returns, after asserting every requested value is one the
162
+ // stream actually tracks — a typo'd or wrong-stream value fails loudly instead
163
+ // of silently yielding nothing. `tracked` is the manifest's advertised set (may
164
+ // be undefined on a pre-metadata manifest, in which case the guard is skipped).
165
+ function buildSetFilter(protocolId, requested, tracked, label, pick) {
166
+ if (requested === undefined)
167
+ return () => true;
168
+ const want = new Set(requested.map((v) => v.toLowerCase()));
169
+ if (tracked) {
170
+ const trackedSet = new Set(tracked.map((v) => v.toLowerCase()));
171
+ const unknown = [...want].filter((v) => !trackedSet.has(v));
172
+ if (unknown.length > 0) {
173
+ throw new Error(`stream "${protocolId}" does not track ${label}: ${unknown.join(", ")}. ` +
174
+ `Tracked: ${tracked.join(", ")}`);
175
+ }
176
+ }
177
+ return (event) => want.has(pick(event).toLowerCase());
178
+ }
100
179
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAmDhF,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,+EAA+E;AAC/E,+EAA+E;AAC/E,uCAAuC;AACvC,MAAM,OAAO,MAAM;IACA,MAAM,CAAQ;IACd,KAAK,CAAoB;IACzB,WAAW,CAAS;IACpB,SAAS,CAAqB;IAE/C,YAAY,IAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,mBAAmB,CAAC;QAC3D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,uBAAuB;IACvB,aAAa,CAAC,MAAc,YAAY;QACtC,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,yEAAyE;IACzE,iEAAiE;IACjE,gBAAgB;IAChB,UAAU,CAAC,IAAe,EAAE,OAA0B,EAAE;QACtD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/E,CAAC;IAED,6EAA6E;IAC7E,+EAA+E;IAC/E,6EAA6E;IAC7E,2EAA2E;IAC3E,oEAAoE;IACpE,KAAK,CAAC,aAAa,CAAC,MAAe;QACjC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACvD,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7F,CAAC;IAED,gFAAgF;IAChF,sEAAsE;IACtE,KAAK,CAAC,iBAAiB,CAAC,QAA0B;QAChD,OAAO,UAAU,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED,4EAA4E;IAC5E,wEAAwE;IACxE,8EAA8E;IAC9E,8EAA8E;IAC9E,sCAAsC;IACtC,KAAK,CAAC,CAAC,YAAY,CACjB,MAAoB,EACpB,OAAsB,EAAE;QAExB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5C,IAAI,UAAkB,CAAC;QACvB,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,UAAU,GAAG,MAAM,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;YACJ,CAAC;YACD,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC1C,aAAa,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,CAAC;QACD,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;QACpF,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;QACvE,MAAM,WAAW,GAAG,cAAc,CAChC,UAAU,EACV,aAAa,CAAC,SAAS,EACvB,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,EACrC,aAAa,EACb,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CACzB,CAAC;QACF,MAAM,SAAS,GAAG,cAAc,CAC9B,UAAU,EACV,aAAa,CAAC,WAAW,EACzB,QAAQ,CAAC,kBAAkB,CAAC,UAAU,CAAC,EACvC,gBAAgB,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CACpB,CAAC;QACF,MAAM,IAAI,GAAG,CAAC,CAAiB,EAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;QAE5E,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3D,KAAK,MAAM,KAAK,IAAI,MAAM;gBAAE,IAAI,IAAI,CAAC,KAAK,CAAC;oBAAE,MAAM,KAAK,CAAC;QAC3D,CAAC;QAED,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACtD,KAAK,MAAM,KAAK,IAAI,MAAM;gBAAE,IAAI,IAAI,CAAC,KAAK,CAAC;oBAAE,MAAM,KAAK,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,oEAAoE;IACpE,sCAAsC;IAC9B,KAAK,CAAC,WAAW,CAAC,IAAe;QACvC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,MAAM;gBAAE,OAAO,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC5D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,4EAA4E;IAC5E,qEAAqE;IACrE,wEAAwE;IACxE,uEAAuE;IACvE,4BAA4B;IACpB,KAAK,CAAC,CAAC,kBAAkB,CAC/B,KAAkB;QAElB,MAAM,KAAK,GAAgC,EAAE,CAAC;QAC9C,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,OAAO,IAAI,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAE,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,EAAG,CAAC;YACpC,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAE,CAAC,CAAC,CAAC;YACtE,MAAM,MAAM,CAAC;QACf,CAAC;IACH,CAAC;CACF;AAED,+EAA+E;AAC/E,+EAA+E;AAC/E,4DAA4D;AAC5D,SAAS,aAAa,CAAC,EAAU,EAAE,MAAc;IAC/C,OAAO,EAAE,KAAK,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,mBAAmB;AACnB,SAAS,UAAU,CAAC,QAAkB,EAAE,QAA0B;IAChE,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;QACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAChE,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,GAAG,KAAK,SAAS,IAAI,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,0CAA0C,QAAQ,CAAC,OAAO,GAAG,EAAE,mBAAmB,CACnF,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,yBAAyB,QAAQ,CAAC,OAAO,GAAG,EAAE,4BAA4B;YACxE,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAChE,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAE,CAAC;AACrB,CAAC;AAED,+EAA+E;AAC/E,qEAAqE;AACrE,SAAS,YAAY,CAAC,CAAM,EAAE,CAAM;IAClC,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,kFAAkF;AAClF,gFAAgF;AAChF,+EAA+E;AAC/E,gFAAgF;AAChF,gFAAgF;AAChF,SAAS,cAAc,CACrB,UAAkB,EAClB,SAA4B,EAC5B,OAA0B,EAC1B,KAAa,EACb,IAAoC;IAEpC,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC5D,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,WAAW,UAAU,oBAAoB,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;gBACvE,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACxD,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { Client } from "./client.js";
2
- export type { ClientOptions, StreamOptions } from "./client.js";
2
+ export type { ClientOptions, StreamOptions, ProtocolSelector, StreamTarget } from "./client.js";
3
3
  export { HttpStore } from "@saga-sync/core";
4
4
  export type { Store } from "@saga-sync/core";
5
5
  export { decodeAndVerify, fetchChunkFrom, ChunkNotFoundError } from "./fetch.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGlF,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAElF,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGlF,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAElF,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saga-sync/client",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Consumer library + CLI for saga-sync: fetch, verify, and stream published privacy-protocol state",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
@@ -27,10 +27,10 @@
27
27
  "dist"
28
28
  ],
29
29
  "dependencies": {
30
- "@saga-sync/core": "0.1.3"
30
+ "@saga-sync/core": "0.1.4"
31
31
  },
32
32
  "devDependencies": {
33
- "@saga-sync/producer": "0.1.3"
33
+ "@saga-sync/producer": "0.1.4"
34
34
  },
35
35
  "scripts": {
36
36
  "build": "tsc -b"