.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / @typescript-eslint / typescript-estree / dist / simple-traverse.js
1 "use strict";
2 Object.defineProperty(exports, "__esModule", { value: true });
3 exports.simpleTraverse = void 0;
4 const visitor_keys_1 = require("@typescript-eslint/visitor-keys");
5 // eslint-disable-next-line @typescript-eslint/no-explicit-any
6 function isValidNode(x) {
7     return x !== null && typeof x === 'object' && typeof x.type === 'string';
8 }
9 function getVisitorKeysForNode(allVisitorKeys, node) {
10     const keys = allVisitorKeys[node.type];
11     return (keys !== null && keys !== void 0 ? keys : []);
12 }
13 class SimpleTraverser {
14     constructor(selectors, setParentPointers = false) {
15         this.allVisitorKeys = visitor_keys_1.visitorKeys;
16         this.selectors = selectors;
17         this.setParentPointers = setParentPointers;
18     }
19     traverse(node, parent) {
20         if (!isValidNode(node)) {
21             return;
22         }
23         if (this.setParentPointers) {
24             node.parent = parent;
25         }
26         if ('enter' in this.selectors) {
27             this.selectors.enter(node, parent);
28         }
29         else if (node.type in this.selectors) {
30             this.selectors[node.type](node, parent);
31         }
32         const keys = getVisitorKeysForNode(this.allVisitorKeys, node);
33         if (keys.length < 1) {
34             return;
35         }
36         for (const key of keys) {
37             const childOrChildren = node[key];
38             if (Array.isArray(childOrChildren)) {
39                 for (const child of childOrChildren) {
40                     this.traverse(child, node);
41                 }
42             }
43             else {
44                 this.traverse(childOrChildren, node);
45             }
46         }
47     }
48 }
49 function simpleTraverse(startingNode, options, setParentPointers = false) {
50     new SimpleTraverser(options, setParentPointers).traverse(startingNode, undefined);
51 }
52 exports.simpleTraverse = simpleTraverse;
53 //# sourceMappingURL=simple-traverse.js.map