You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							192 lines
						
					
					
						
							4.4 KiB
						
					
					
				
			
		
		
	
	
							192 lines
						
					
					
						
							4.4 KiB
						
					
					
				import { Type, YAMLSyntaxError } from './util'
 | 
						|
 | 
						|
export default function parseCST(str: string): ParsedCST
 | 
						|
 | 
						|
export 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
 | 
						|
  }
 | 
						|
}
 |