Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
parseAST (text: string) {
const cst = YAML.parseCST(text)
cst.setOrigRanges() // Workaround for CRLF eol, https://github.com/eemeli/yaml/issues/127
const doc = new YAML.Document({ keepCstNodes: true }).parse(cst[0])
const findPairs = (node: YAML.ast.AstNode | YAML.ast.Pair | null, path: string[] = []): KeyInDocument[] => {
if (!node)
return []
if (node.type === 'MAP' || node.type === 'SEQ')
// @ts-ignore
return _.flatMap(node.items, m => findPairs(m, path))
if (node.type === 'PAIR' && node.value != null && node.key != null) {
if (!['BLOCK_FOLDED', 'BLOCK_LITERAL', 'PLAIN', 'QUOTE_DOUBLE', 'QUOTE_SINGLE'].includes(node.value.type)) {
return findPairs(node.value, [...path, node.key.toString()])
}
else {
const valueCST = node.value.cstNode
if (!valueCST || !valueCST.valueRange)