| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 | import { Type, YAMLSyntaxError } from './util'export default function parseCST(str: string): ParsedCSTexport interface ParsedCST extends Array<CST.Document> {  setOrigRanges(): boolean}export namespace CST {  interface Range {    start: number    end: number    origStart?: number    origEnd?: number    isEmpty(): boolean  }  interface ParseContext {    /** Node starts at beginning of line */    atLineStart: boolean    /** true if currently in a collection context */    inCollection: boolean    /** true if currently in a flow context */    inFlow: boolean    /** Current level of indentation */    indent: number    /** Start of the current line */    lineStart: number    /** The parent of the node */    parent: Node    /** Source of the YAML document */    src: string  }  interface Node {    context: ParseContext | null    /** if not null, indicates a parser failure */    error: YAMLSyntaxError | null    /** span of context.src parsed into this node */    range: Range | null    valueRange: Range | null    /** anchors, tags and comments */    props: Range[]    /** specific node type */    type: Type    /** if non-null, overrides source value */    value: string | null    readonly anchor: string | null    readonly comment: string | null    readonly hasComment: boolean    readonly hasProps: boolean    readonly jsonLike: boolean    readonly rangeAsLinePos: null | {      start: { line: number; col: number }      end?: { line: number; col: number }    }    readonly rawValue: string | null    readonly tag:      | null      | { verbatim: string }      | { handle: string; suffix: string }    readonly valueRangeContainsNewline: boolean  }  interface Alias extends Node {    type: Type.ALIAS    /** contain the anchor without the * prefix */    readonly rawValue: string  }  type Scalar = BlockValue | PlainValue | QuoteValue  interface BlockValue extends Node {    type: Type.BLOCK_FOLDED | Type.BLOCK_LITERAL    chomping: 'CLIP' | 'KEEP' | 'STRIP'    blockIndent: number | null    header: Range    readonly strValue: string | null  }  interface BlockFolded extends BlockValue {    type: Type.BLOCK_FOLDED  }  interface BlockLiteral extends BlockValue {    type: Type.BLOCK_LITERAL  }  interface PlainValue extends Node {    type: Type.PLAIN    readonly strValue: string | null  }  interface QuoteValue extends Node {    type: Type.QUOTE_DOUBLE | Type.QUOTE_SINGLE    readonly strValue:      | null      | string      | { str: string; errors: YAMLSyntaxError[] }  }  interface QuoteDouble extends QuoteValue {    type: Type.QUOTE_DOUBLE  }  interface QuoteSingle extends QuoteValue {    type: Type.QUOTE_SINGLE  }  interface Comment extends Node {    type: Type.COMMENT    readonly anchor: null    readonly comment: string    readonly rawValue: null    readonly tag: null  }  interface BlankLine extends Node {    type: Type.BLANK_LINE  }  interface MapItem extends Node {    type: Type.MAP_KEY | Type.MAP_VALUE    node: ContentNode | null  }  interface MapKey extends MapItem {    type: Type.MAP_KEY  }  interface MapValue extends MapItem {    type: Type.MAP_VALUE  }  interface Map extends Node {    type: Type.MAP    /** implicit keys are not wrapped */    items: Array<BlankLine | Comment | Alias | Scalar | MapItem>  }  interface SeqItem extends Node {    type: Type.SEQ_ITEM    node: ContentNode | null  }  interface Seq extends Node {    type: Type.SEQ    items: Array<BlankLine | Comment | SeqItem>  }  interface FlowChar {    char: '{' | '}' | '[' | ']' | ',' | '?' | ':'    offset: number    origOffset?: number  }  interface FlowCollection extends Node {    type: Type.FLOW_MAP | Type.FLOW_SEQ    items: Array<      FlowChar | BlankLine | Comment | Alias | Scalar | FlowCollection    >  }  interface FlowMap extends FlowCollection {    type: Type.FLOW_MAP  }  interface FlowSeq extends FlowCollection {    type: Type.FLOW_SEQ  }  type ContentNode = Alias | Scalar | Map | Seq | FlowCollection  interface Directive extends Node {    type: Type.DIRECTIVE    name: string    readonly anchor: null    readonly parameters: string[]    readonly tag: null  }  interface Document extends Node {    type: Type.DOCUMENT    directives: Array<BlankLine | Comment | Directive>    contents: Array<BlankLine | Comment | ContentNode>    readonly anchor: null    readonly comment: null    readonly tag: null  }}
 |