vectorjson 0.3.0 → 0.3.1

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 CHANGED
@@ -59,6 +59,24 @@ parser.destroy();
59
59
 
60
60
  `getValue()` returns a **live JS object** that grows incrementally on each `feed()`. No re-parsing — each byte is scanned exactly once.
61
61
 
62
+ **Schema-driven streaming** — pass a schema, get only what it defines. An LLM streams a 50KB tool call with `name`, `age`, `bio`, `metadata` — but your schema only needs `name` and `age`. Everything else is skipped at the byte level, never allocated in JS:
63
+
64
+ ```js
65
+ import { z } from "zod";
66
+ import { createParser } from "vectorjson";
67
+
68
+ const User = z.object({ name: z.string(), age: z.number() });
69
+
70
+ for await (const partial of createParser({ schema: User, source: response.body })) {
71
+ console.log(partial);
72
+ // { name: "Ali" } ← partial, render immediately
73
+ // { name: "Alice" }
74
+ // { name: "Alice", age: 30 } ← validated on complete
75
+ }
76
+ ```
77
+
78
+ The schema defines what to parse. Fields outside the schema are ignored during scanning — no objects created, no strings decoded, no memory wasted.
79
+
62
80
  **Or skip intermediate access entirely** — if you only need the final value:
63
81
 
64
82
  ```js
@@ -308,56 +326,42 @@ parser.onText((text) => thinkingPanel.append(text)); // opt-in
308
326
  parser.feed(llmOutput);
309
327
  ```
310
328
 
311
- ### Field picking — only parse what you need
329
+ ### Schema-driven streamingparse only what the schema defines
312
330
 
313
- When streaming a large tool call, you often only need 2-3 fields. `pick` tells the parser to skip everything else during byte scanning skipped fields never allocate JS objects:
331
+ Pass a schema and VectorJSON extracts only the fields it defines. Everything else is skipped at the byte level no objects created, no strings decoded. Arrays are transparent: `{ users: z.array(z.object({ name })) }` picks through arrays automatically.
314
332
 
315
333
  ```js
334
+ import { z } from "zod";
316
335
  import { createParser } from "vectorjson";
317
336
 
318
- const parser = createParser({ pick: ["name", "age"] });
319
- parser.feed('{"name":"Alice","age":30,"bio":"...10KB of text...","metadata":{}}');
320
- parser.getValue(); // { name: "Alice", age: 30 } — bio and metadata never materialized
321
- parser.destroy();
322
- ```
323
-
324
- Nested paths work with dot notation:
337
+ const User = z.object({ name: z.string(), age: z.number() });
325
338
 
326
- ```js
327
- const parser = createParser({ pick: ["user.name", "user.age"] });
328
- parser.feed('{"user":{"name":"Bob","age":25,"role":"admin"},"extra":"data"}');
329
- parser.getValue(); // { user: { name: "Bob", age: 25 } }
330
- parser.destroy();
339
+ for await (const partial of createParser({ schema: User, source: response.body })) {
340
+ console.log(partial);
341
+ // { name: "Ali" } ← partial, render immediately
342
+ // { name: "Alice", age: 30 } validated on complete
343
+ }
331
344
  ```
332
345
 
333
- ### `for await`pull-based streaming from any source
334
-
335
- Pass a `source` (ReadableStream or AsyncIterable) and iterate with `for await`. Each iteration yields the growing partial value:
346
+ Works on dirty LLM output think tags, code fences, and leading prose are stripped automatically when a schema is provided:
336
347
 
337
348
  ```js
338
- import { createParser } from "vectorjson";
339
-
340
- const parser = createParser({ source: response.body });
341
-
342
- for await (const partial of parser) {
343
- console.log(partial);
344
- // { name: "Ali" }
345
- // { name: "Alice" }
346
- // { name: "Alice", age: 30 }
347
- }
348
- // Parser auto-destroys when the source ends or you break out of the loop
349
+ // All of these work with createParser(schema):
350
+ // <think>reasoning</think>{"name":"Alice","age":30}
351
+ // ```json\n{"name":"Alice","age":30}\n```
352
+ // Here's the result: {"name":"Alice","age":30}
349
353
  ```
350
354
 
351
- Combine `pick` + `source` for minimal allocation streaming:
355
+ Both `createParser` and `createEventParser` support `source` + `for await`:
352
356
 
353
357
  ```js
354
- const parser = createParser({
355
- pick: ["name", "age"],
356
- source: response.body,
357
- });
358
+ import { createEventParser } from "vectorjson";
359
+
360
+ const parser = createEventParser({ source: response.body });
361
+ parser.on('tool', (e) => showToolUI(e.value));
358
362
 
359
363
  for await (const partial of parser) {
360
- updateUI(partial); // only picked fields, growing incrementally
364
+ updateUI(partial); // growing partial value
361
365
  }
362
366
  ```
363
367
 
@@ -522,25 +526,31 @@ Each `feed()` processes only new bytes — O(n) total. Three overloads:
522
526
 
523
527
  ```ts
524
528
  createParser(); // no validation
525
- createParser(schema); // schema validation (Zod, Valibot, etc.)
526
- createParser({ pick, schema, source }); // options object
529
+ createParser(schema); // schema validation + auto-pick + dirty input handling
530
+ createParser({ schema, source }); // options object
527
531
  ```
528
532
 
529
533
  **Options object:**
530
534
 
531
535
  ```ts
532
536
  interface CreateParserOptions<T = unknown> {
533
- pick?: string[]; // only include these fields (dot-separated paths)
534
- schema?: ZodLike<T>; // validate on complete
537
+ schema?: ZodLike<T>; // validate on complete, auto-pick from shape, skip dirty input
535
538
  source?: ReadableStream<Uint8Array> | AsyncIterable<Uint8Array | string>;
539
+ pick?: string[]; // advanced: explicit field paths (overrides schema auto-pick)
536
540
  }
537
541
  ```
538
542
 
543
+ When a `schema` is provided:
544
+ - Fields are auto-picked from the schema's `.shape` — only matching fields are parsed
545
+ - Arrays are transparent — `{ users: z.array(z.object({ name })) }` picks `users.name` through arrays
546
+ - Dirty input (think tags, code fences, leading prose) is stripped before parsing
547
+ - On complete, `safeParse()` validates the final value
548
+
539
549
  When `source` is provided, the parser becomes async-iterable — use `for await` to consume partial values:
540
550
 
541
551
  ```ts
542
- for await (const partial of createParser({ source: stream, pick: ["name"] })) {
543
- console.log(partial); // growing object with only picked fields
552
+ for await (const partial of createParser({ schema: User, source: stream })) {
553
+ console.log(partial); // growing object with only schema fields
544
554
  }
545
555
  ```
546
556
 
@@ -594,6 +604,33 @@ type DeepPartial<T> = T extends object
594
604
 
595
605
  Event-driven streaming parser. Events fire synchronously during `feed()`.
596
606
 
607
+ ```ts
608
+ createEventParser(); // basic
609
+ createEventParser({ source: stream }); // for-await iteration
610
+ createEventParser({ multiRoot: true, onRoot }); // NDJSON
611
+ ```
612
+
613
+ **Options:**
614
+
615
+ ```ts
616
+ {
617
+ multiRoot?: boolean; // auto-reset between JSON values (NDJSON)
618
+ onRoot?: (event: RootEvent) => void;
619
+ source?: ReadableStream<Uint8Array> | AsyncIterable<Uint8Array | string>;
620
+ }
621
+ ```
622
+
623
+ When `source` is provided, the parser becomes async-iterable — `for await` yields growing partial values, just like `createParser`:
624
+
625
+ ```ts
626
+ const parser = createEventParser({ source: stream });
627
+ parser.on('tool', (e) => showToolUI(e.value));
628
+
629
+ for await (const partial of parser) {
630
+ updateUI(partial);
631
+ }
632
+ ```
633
+
597
634
  ```ts
598
635
  interface EventParser {
599
636
  on(path: string, callback: (event: PathEvent) => void): EventParser;
@@ -608,6 +645,7 @@ interface EventParser {
608
645
  getRawBuffer(): ArrayBuffer | null; // transferable buffer for Worker postMessage
609
646
  getStatus(): FeedStatus;
610
647
  destroy(): void;
648
+ [Symbol.asyncIterator](): AsyncIterableIterator<unknown | undefined>; // requires source
611
649
  }
612
650
  ```
613
651
 
@@ -648,6 +686,18 @@ interface RootEvent {
648
686
  }
649
687
  ```
650
688
 
689
+ ### Parser comparison
690
+
691
+ | | `createParser` | `createEventParser` |
692
+ |---|---|---|
693
+ | **Use case** | Get a growing partial object | React to individual fields as they arrive |
694
+ | **Schema auto-pick** | Yes — schema `.shape` drives field selection | No — use `skip()` and `on()` for filtering |
695
+ | **Dirty input handling** | Yes (when schema provided) | Yes (always) |
696
+ | **`for await` with source** | Yes | Yes |
697
+ | **Field subscriptions** | No | `on()`, `onDelta()`, `skip()` |
698
+ | **Multi-root / NDJSON** | No | Yes (`multiRoot: true`) |
699
+ | **Text callbacks** | No | `onText()` for non-JSON text |
700
+
651
701
  ### `deepCompare(a, b, options?): boolean`
652
702
 
653
703
  Compare two values for deep equality without materializing JS objects. When both values are VJ proxies, comparison runs entirely in WASM memory — zero allocations, zero Proxy traps.
package/dist/index.d.ts CHANGED
@@ -117,6 +117,8 @@ export interface EventParser {
117
117
  /** Copy the accumulated stream buffer into a new ArrayBuffer (for Worker postMessage transfer). */
118
118
  getRawBuffer(): ArrayBuffer | null;
119
119
  destroy(): void;
120
+ /** Async iteration over partial values when a source was provided. */
121
+ [Symbol.asyncIterator](): AsyncIterableIterator<unknown | undefined>;
120
122
  }
121
123
  export interface VectorJSON {
122
124
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/js/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAeH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,gBAAgB,GAAG,YAAY,GAAG,SAAS,CAAC;AACnF,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,CAAC;AAE3E,oEAAoE;AACpE,MAAM,MAAM,gBAAgB,GACxB,kBAAkB,GAClB,gBAAgB,GAChB,cAAc,CAAC;AAEnB,yEAAyE;AACzE,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,OAAO,IACrC;IAAE,KAAK,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,kBAAkB,CAAA;CAAE,GACvC;IAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE,GACjD;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,CAAC;AAEhD,sFAAsF;AACtF,MAAM,MAAM,WAAW,CAAC,CAAC,IACvB,CAAC,SAAS,MAAM,GACZ,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACtB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GACrB;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACxC,CAAC,CAAC;AAER,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,uFAAuF;IACvF,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;IAC7C,qIAAqI;IACrI,QAAQ,IAAI,CAAC,GAAG,SAAS,CAAC;IAC1B,+DAA+D;IAC/D,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC;IAClC,mDAAmD;IACnD,SAAS,IAAI,UAAU,CAAC;IACxB,mGAAmG;IACnG,YAAY,IAAI,WAAW,GAAG,IAAI,CAAC;IACnC,iDAAiD;IACjD,OAAO,IAAI,IAAI,CAAC;IAChB,sEAAsE;IACtE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;CAChE;AAED,qDAAqD;AACrD,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IAAE,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAA;KAAE,CAAA;CAAE,CAAC;AAEvF,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO;IAC9C,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,gDAAgD;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,qEAAqE;IACrE,MAAM,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uGAAuG;IACvG,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IACpC,uFAAuF;IACvF,MAAM,IAAI,OAAO,CAAC;CACnB;AAID,0EAA0E;AAC1E,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,WAAW,CAAC;IACpE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAA;SAAE,CAAA;KAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG;QAAE,KAAK,EAAE,CAAC,CAAA;KAAE,KAAK,IAAI,GAAG,WAAW,CAAC;IAC7J,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,WAAW,CAAC;IAC1E,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,WAAW,CAAC;IACtD,IAAI,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;IACtC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IACpD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;IAC7C,QAAQ,IAAI,OAAO,GAAG,SAAS,CAAC;IAChC,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC;IAClC,SAAS,IAAI,UAAU,CAAC;IACxB,mGAAmG;IACnG,YAAY,IAAI,WAAW,GAAG,IAAI,CAAC;IACnC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;IAC/C;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,IAAI,eAAe,CAAC;IAChC;;;;;;;;;;OAUG;IACH,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IACxD;;;;;;;;;;;;;OAaG;IACH,YAAY,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IAC/E;;;;;;;;OAQG;IACH,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;IACrF;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IACrC;;;;;;;;;;;;OAYG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACnD;;;;;;;;;;;;;;;OAeG;IACH,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAA;SAAE,CAAA;KAAE,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7I;;;OAGG;IACH,iBAAiB,CAAC,OAAO,CAAC,EAAE;QAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;KACrC,GAAG,WAAW,CAAC;CACjB;AAgED;;;GAGG;AACH,wBAAsB,IAAI,CAAC,OAAO,CAAC,EAAE;IACnC,UAAU,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,YAAY,CAAC;CAC1C,GAAG,OAAO,CAAC,UAAU,CAAC,CAoxDtB;AAKD,uEAAuE;AACvE,eAAO,MAAM,KAAK,UAr8DH,MAAM,GAAG,UAAU,KAAG,WAq8DP,CAAC;AAE/B,uFAAuF;AACvF,eAAO,MAAM,gBAAgB;YA73DH,MAAM,GAAG,iBAAiB;KAiBjC,CAAC,SAAS,MAAM,UAAU;QAAE,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAA;SAAE,CAAA;KAAE,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CA42D1F,CAAC;AAErD,wFAAwF;AACxF,eAAO,MAAM,WAAW,MAn5DP,OAAO,KAAK,OAAO,YAAY;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,KAAG,OAm5DrC,CAAC;AAE3C,8DAA8D;AAC9D,eAAO,MAAM,YAAY;QA37DP,eAAe;KAYlB,CAAC,UAAU,OAAO,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;KAe1C,CAAC,qBAAqB,mBAAmB,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;CAg6DpC,CAAC;AAE7C,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,aAh3DA;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACrC,KAAG,WA62DgD,CAAC;AAEvD,8DAA8D;AAC9D,eAAO,MAAM,WAAW,UAv5DH,OAAO,KAAG,OAu5DW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/js/index.ts"],"names":[],"mappings":"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"}