UNPKG

jsonc-simple-parser

Version:

A simple JSON parser that supports comments and optional trailing commas.

121 lines (120 loc) 4.36 kB
declare type JSONValue = import('type-fest').JsonValue; declare type Matcher = (quasis: TemplateStringsArray, ...re: (string | RegExp | (() => string | RegExp))[]) => any; declare type ChildToken = { type: string; source: string; }; declare type ParentToken = { type: string; children: Token[]; }; declare type NewlineToken = ChildToken & { type: 'Newline'; }; declare type WhitespaceToken = ChildToken & { type: 'Whitespace'; }; declare type CommentLineToken = ChildToken & { type: 'CommentLine'; }; declare type CommentBlockToken = ChildToken & { type: 'CommentBlock'; }; declare type CommaToken = ChildToken & { type: 'Comma'; }; declare type CommaTrailingToken = ChildToken & { type: 'CommaTrailing'; }; declare type ColonToken = ChildToken & { type: 'Colon'; }; declare type NullToken = ChildToken & { type: 'Null'; }; declare type TrueToken = ChildToken & { type: 'True'; }; declare type FalseToken = ChildToken & { type: 'False'; }; declare type NumberToken = ChildToken & { type: 'Number'; }; declare type StringToken = ChildToken & { type: 'String'; }; declare type ArrayOpenToken = ChildToken & { type: 'ArrayOpen'; }; declare type ArrayCloseToken = ChildToken & { type: 'ArrayClose'; }; declare type ArrayToken = ParentToken & { type: 'Array'; }; declare type ObjectOpenToken = ChildToken & { type: 'ObjectOpen'; }; declare type ObjectCloseToken = ChildToken & { type: 'ObjectClose'; }; declare type ObjectToken = ParentToken & { type: 'Object'; }; declare type RootToken = ParentToken & { type: 'Root'; }; declare type AbstractToken = ChildToken | ParentToken; declare type IgnoredToken = TriviaToken | SeparationToken; declare type LiteralToken = NullToken | TrueToken | FalseToken | NumberToken | StringToken | ArrayToken | ObjectToken; declare type TriviaToken = NewlineToken | WhitespaceToken | CommentLineToken | CommentBlockToken; declare type OpenToken = ArrayOpenToken | ObjectOpenToken; declare type CloseToken = ArrayCloseToken | ObjectCloseToken; declare type DelimiterToken = OpenToken | CloseToken; declare type SeparationToken = CommaToken | CommaTrailingToken | ColonToken; declare type SpecialToken = RootToken; declare type Token = AbstractToken | LiteralToken | TriviaToken | DelimiterToken | SeparationToken | SpecialToken; declare type AST = RootToken; declare type ParseTokensType = 'EarlyReturn' | 'Passthrough' | 'Insufficient' | 'Invalid' | 'Newline' | 'Whitespace' | 'CommentLine' | 'CommentBlock' | 'Comma' | 'CommaTrailing' | 'Colon' | 'Null' | 'True' | 'False' | 'Number' | 'String' | 'ArrayOpen' | 'ArrayClose' | 'Array' | 'ObjectOpen' | 'ObjectClose' | 'Object' | 'Root'; declare type ParseTokensMap = Record<ParseTokensType, Function>; declare type ParseMatchersMap = Record<ParseTokensType, Matcher>; declare type LookupChildToken = { type: string; source: string; token: ChildToken; parent: LookupParentToken | null; depth: number; index: number; start: number; end: number; }; declare type LookupParentToken = { type: string; children: LookupToken[]; token: ParentToken; parent: LookupParentToken | null; depth: number; index: number; }; declare type LookupToken = LookupChildToken | LookupParentToken; declare type LookupPath = (string | number)[]; declare type LookupResultToken = { type: ParseTokensType; source: string; start: number; end: number; }; declare type LookupResult = { path: LookupPath; property: string | number | undefined; value: JSONValue | undefined; token: LookupResultToken | undefined; isInsideProperty: boolean; isInsideValue: boolean; }; export type { JSONValue }; export type { ChildToken, ParentToken, NewlineToken, WhitespaceToken, CommentLineToken, CommentBlockToken, CommaToken, CommaTrailingToken, ColonToken, NullToken, TrueToken, FalseToken, NumberToken, StringToken, ArrayOpenToken, ArrayCloseToken, ArrayToken, ObjectOpenToken, ObjectCloseToken, ObjectToken, RootToken }; export type { AbstractToken, IgnoredToken, LiteralToken, TriviaToken, OpenToken, CloseToken, DelimiterToken, SeparationToken, SpecialToken, Token, AST }; export type { ParseTokensMap, ParseMatchersMap }; export type { LookupChildToken, LookupParentToken, LookupToken, LookupPath, LookupResultToken, LookupResult };