///
import {Duplex, DuplexOptions} from 'node:stream';
import {Flushable, Many, none} from 'stream-chain/defs.js';
export = jsoncParser;
/**
* Creates a streaming JSONC parser that consumes text and produces a SAX-like token stream.
*
* Extends the standard JSON parser with support for single-line (`//`) and multi-line
* (`/* ... */`) comments, trailing commas, and optional whitespace tokens.
*
* @param options - Parser configuration including packing, streaming, comment, and whitespace options.
* @returns A flushable function for use in a `chain()` pipeline.
*/
declare function jsoncParser(options?: jsoncParser.JsoncParserOptions): Flushable | typeof none>;
declare namespace jsoncParser {
/** A single token emitted by the parser (e.g., `startObject`, `whitespace`, `comment`). */
export interface Token {
/** Token type name (e.g., `'startObject'`, `'whitespace'`, `'comment'`). */
name: string;
/** Token payload. Present for value, whitespace, and comment tokens; `undefined` for structural tokens. */
value?: any;
}
/** Options for the JSONC parser. Extends Node.js `DuplexOptions`. */
export interface JsoncParserOptions 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;
/** Emit `whitespace` tokens. Default: `true`. */
streamWhitespace?: boolean;
/** Emit `comment` tokens. Default: `true`. */
streamComments?: boolean;
}
/**
* Creates a JSONC parser wrapped as a Duplex stream.
*
* Writable side accepts text (Buffer/string), readable side emits token objects.
*/
export function asStream(options?: JsoncParserOptions): Duplex;
/** Self-reference for destructuring: `const {parser} = require('stream-json/jsonc/parser.js')`. */
export {jsoncParser as parser};
/** Self-reference for destructuring: `const {jsoncParser} = require('stream-json/jsonc/parser.js')`. */
export {jsoncParser};
}