jsonc-simple-parser
Version:
A simple JSON parser that supports comments and optional trailing commas.
121 lines (120 loc) • 4.36 kB
TypeScript
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 };