minor adjustment to readme
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / tsutils / util / convert-ast.js
1 "use strict";
2 Object.defineProperty(exports, "__esModule", { value: true });
3 const ts = require("typescript");
4 const util_1 = require("./util");
5 function convertAst(sourceFile) {
6     const wrapped = {
7         node: sourceFile,
8         parent: undefined,
9         kind: ts.SyntaxKind.SourceFile,
10         children: [],
11         next: undefined,
12         skip: undefined,
13     };
14     const flat = [];
15     let current = wrapped;
16     let previous = current;
17     ts.forEachChild(sourceFile, function wrap(node) {
18         flat.push(node);
19         const parent = current;
20         previous.next = current = {
21             node,
22             parent,
23             kind: node.kind,
24             children: [],
25             next: undefined,
26             skip: undefined,
27         };
28         if (previous !== parent)
29             setSkip(previous, current);
30         previous = current;
31         parent.children.push(current);
32         if (util_1.isNodeKind(node.kind))
33             ts.forEachChild(node, wrap);
34         current = parent;
35     });
36     return {
37         wrapped,
38         flat,
39     };
40 }
41 exports.convertAst = convertAst;
42 function setSkip(node, skip) {
43     do {
44         node.skip = skip;
45         node = node.parent;
46     } while (node !== skip.parent);
47 }