mirror of
https://github.com/fooflington/selfdefined.git
synced 2025-12-16 00:59:05 +00:00
update
This commit is contained in:
47
node_modules/tsutils/util/convert-ast.js
generated
vendored
Normal file
47
node_modules/tsutils/util/convert-ast.js
generated
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const ts = require("typescript");
|
||||
const util_1 = require("./util");
|
||||
function convertAst(sourceFile) {
|
||||
const wrapped = {
|
||||
node: sourceFile,
|
||||
parent: undefined,
|
||||
kind: ts.SyntaxKind.SourceFile,
|
||||
children: [],
|
||||
next: undefined,
|
||||
skip: undefined,
|
||||
};
|
||||
const flat = [];
|
||||
let current = wrapped;
|
||||
let previous = current;
|
||||
ts.forEachChild(sourceFile, function wrap(node) {
|
||||
flat.push(node);
|
||||
const parent = current;
|
||||
previous.next = current = {
|
||||
node,
|
||||
parent,
|
||||
kind: node.kind,
|
||||
children: [],
|
||||
next: undefined,
|
||||
skip: undefined,
|
||||
};
|
||||
if (previous !== parent)
|
||||
setSkip(previous, current);
|
||||
previous = current;
|
||||
parent.children.push(current);
|
||||
if (util_1.isNodeKind(node.kind))
|
||||
ts.forEachChild(node, wrap);
|
||||
current = parent;
|
||||
});
|
||||
return {
|
||||
wrapped,
|
||||
flat,
|
||||
};
|
||||
}
|
||||
exports.convertAst = convertAst;
|
||||
function setSkip(node, skip) {
|
||||
do {
|
||||
node.skip = skip;
|
||||
node = node.parent;
|
||||
} while (node !== skip.parent);
|
||||
}
|
||||
Reference in New Issue
Block a user