/// import {Duplex, DuplexOptions} from 'node:stream'; import {Flushable, Many, none} from 'stream-chain/defs.js'; export = parser; /** * Creates a streaming JSON parser that consumes text and produces a SAX-like token stream. * * Supports both standard JSON and JSON Streaming (concatenated/line-delimited). * Individual keys, strings, and numbers can be streamed piece-wise or packed into single tokens. * * @param options - Parser configuration including packing, streaming, and JSON streaming options. * @returns A flushable function for use in a `chain()` pipeline. */ declare function parser(options?: parser.ParserOptions): Flushable | typeof none>; declare namespace parser { /** A single token emitted by the parser (e.g., `startObject`, `stringValue`). */ export interface Token { /** Token type name (e.g., `'startObject'`, `'keyValue'`, `'numberValue'`). */ name: string; /** Token payload. Present for value tokens; `undefined` for structural tokens. */ value?: any; } /** Options for the JSON parser. Extends Node.js `DuplexOptions`. */ export interface ParserOptions extends DuplexOptions { /** Initial value for `packKeys`, `packStrings`, and `packNumbers`. */ packValues?: boolean; /** Pack object keys into `keyValue` tokens. Default: `true`. */ packKeys?: boolean; /** Pack strings into `stringValue` tokens. Default: `true`. */ packStrings?: boolean; /** Pack numbers into `numberValue` tokens. Default: `true`. */ packNumbers?: boolean; /** Initial value for `streamKeys`, `streamStrings`, and `streamNumbers`. */ streamValues?: boolean; /** Emit `startKey`/`endKey`/`stringChunk` tokens for keys. Default: `true`. */ streamKeys?: boolean; /** Emit `startString`/`endString`/`stringChunk` tokens for strings. Default: `true`. */ streamStrings?: boolean; /** Emit `startNumber`/`endNumber`/`numberChunk` tokens for numbers. Default: `true`. */ streamNumbers?: boolean; /** Enable JSON Streaming (concatenated/line-delimited JSON). Default: `false`. */ jsonStreaming?: boolean; } /** * Creates a parser wrapped as a Duplex stream. * * Writable side accepts text (Buffer/string), readable side emits token objects. */ export function asStream(options?: ParserOptions): Duplex; /** Self-reference for destructuring: `const {parser} = require('stream-json/parser.js')`. */ export {parser}; }