initial commit
This commit is contained in:
		
							
								
								
									
										167
									
								
								node_modules/acorn-walk/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										167
									
								
								node_modules/acorn-walk/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,167 @@ | ||||
| ## 8.2.0 (2021-09-06) | ||||
|  | ||||
| ### New features | ||||
|  | ||||
| Add support for walking ES2022 class static blocks. | ||||
|  | ||||
| ## 8.1.1 (2021-06-29) | ||||
|  | ||||
| ### Bug fixes | ||||
|  | ||||
| Include `base` in the type declarations. | ||||
|  | ||||
| ## 8.1.0 (2021-04-24) | ||||
|  | ||||
| ### New features | ||||
|  | ||||
| Support node types for class fields and private methods. | ||||
|  | ||||
| ## 8.0.2 (2021-01-25) | ||||
|  | ||||
| ### Bug fixes | ||||
|  | ||||
| Adjust package.json to work with Node 12.16.0 and 13.0-13.6. | ||||
|  | ||||
| ## 8.0.0 (2021-01-05) | ||||
|  | ||||
| ### Bug fixes | ||||
|  | ||||
| Fix a bug where `full` and `fullAncestor` would skip nodes with overridden types. | ||||
|  | ||||
| ## 8.0.0 (2020-08-12) | ||||
|  | ||||
| ### New features | ||||
|  | ||||
| The package can now be loaded directly as an ECMAScript module in node 13+. | ||||
|  | ||||
| ## 7.2.0 (2020-06-17) | ||||
|  | ||||
| ### New features | ||||
|  | ||||
| Support optional chaining and nullish coalescing. | ||||
|  | ||||
| Support `import.meta`. | ||||
|  | ||||
| Add support for `export * as ns from "source"`. | ||||
|  | ||||
| ## 7.1.1 (2020-02-13) | ||||
|  | ||||
| ### Bug fixes | ||||
|  | ||||
| Clean up the type definitions to actually work well with the main parser. | ||||
|  | ||||
| ## 7.1.0 (2020-02-11) | ||||
|  | ||||
| ### New features | ||||
|  | ||||
| Add a TypeScript definition file for the library. | ||||
|  | ||||
| ## 7.0.0 (2017-08-12) | ||||
|  | ||||
| ### New features | ||||
|  | ||||
| Support walking `ImportExpression` nodes. | ||||
|  | ||||
| ## 6.2.0 (2017-07-04) | ||||
|  | ||||
| ### New features | ||||
|  | ||||
| Add support for `Import` nodes. | ||||
|  | ||||
| ## 6.1.0 (2018-09-28) | ||||
|  | ||||
| ### New features | ||||
|  | ||||
| The walker now walks `TemplateElement` nodes. | ||||
|  | ||||
| ## 6.0.1 (2018-09-14) | ||||
|  | ||||
| ### Bug fixes | ||||
|  | ||||
| Fix bad "main" field in package.json. | ||||
|  | ||||
| ## 6.0.0 (2018-09-14) | ||||
|  | ||||
| ### Breaking changes | ||||
|  | ||||
| This is now a separate package, `acorn-walk`, rather than part of the main `acorn` package. | ||||
|  | ||||
| The `ScopeBody` and `ScopeExpression` meta-node-types are no longer supported. | ||||
|  | ||||
| ## 5.7.1 (2018-06-15) | ||||
|  | ||||
| ### Bug fixes | ||||
|  | ||||
| Make sure the walker and bin files are rebuilt on release (the previous release didn't get the up-to-date versions). | ||||
|  | ||||
| ## 5.7.0 (2018-06-15) | ||||
|  | ||||
| ### Bug fixes | ||||
|  | ||||
| Fix crash in walker when walking a binding-less catch node. | ||||
|  | ||||
| ## 5.6.2 (2018-06-05) | ||||
|  | ||||
| ### Bug fixes | ||||
|  | ||||
| In the walker, go back to allowing the `baseVisitor` argument to be null to default to the default base everywhere. | ||||
|  | ||||
| ## 5.6.1 (2018-06-01) | ||||
|  | ||||
| ### Bug fixes | ||||
|  | ||||
| Fix regression when passing `null` as fourth argument to `walk.recursive`. | ||||
|  | ||||
| ## 5.6.0 (2018-05-31) | ||||
|  | ||||
| ### Bug fixes | ||||
|  | ||||
| Fix a bug in the walker that caused a crash when walking an object pattern spread. | ||||
|  | ||||
| ## 5.5.1 (2018-03-06) | ||||
|  | ||||
| ### Bug fixes | ||||
|  | ||||
| Fix regression in walker causing property values in object patterns to be walked as expressions. | ||||
|  | ||||
| ## 5.5.0 (2018-02-27) | ||||
|  | ||||
| ### Bug fixes | ||||
|  | ||||
| Support object spread in the AST walker. | ||||
|  | ||||
| ## 5.4.1 (2018-02-02) | ||||
|  | ||||
| ### Bug fixes | ||||
|  | ||||
| 5.4.0 somehow accidentally included an old version of walk.js. | ||||
|  | ||||
| ## 5.2.0 (2017-10-30) | ||||
|  | ||||
| ### Bug fixes | ||||
|  | ||||
| The `full` and `fullAncestor` walkers no longer visit nodes multiple times. | ||||
|  | ||||
| ## 5.1.0 (2017-07-05) | ||||
|  | ||||
| ### New features | ||||
|  | ||||
| New walker functions `full` and `fullAncestor`. | ||||
|  | ||||
| ## 3.2.0 (2016-06-07) | ||||
|  | ||||
| ### New features | ||||
|  | ||||
| Make it possible to use `visit.ancestor` with a walk state. | ||||
|  | ||||
| ## 3.1.0 (2016-04-18) | ||||
|  | ||||
| ### New features | ||||
|  | ||||
| The walker now allows defining handlers for `CatchClause` nodes. | ||||
|  | ||||
| ## 2.5.2 (2015-10-27) | ||||
|  | ||||
| ### Fixes | ||||
|  | ||||
| Fix bug where the walker walked an exported `let` statement as an expression. | ||||
							
								
								
									
										21
									
								
								node_modules/acorn-walk/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								node_modules/acorn-walk/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| MIT License | ||||
|  | ||||
| Copyright (C) 2012-2020 by various contributors (see AUTHORS) | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in | ||||
| all copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| THE SOFTWARE. | ||||
							
								
								
									
										126
									
								
								node_modules/acorn-walk/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								node_modules/acorn-walk/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,126 @@ | ||||
| # Acorn AST walker | ||||
|  | ||||
| An abstract syntax tree walker for the | ||||
| [ESTree](https://github.com/estree/estree) format. | ||||
|  | ||||
| ## Community | ||||
|  | ||||
| Acorn is open source software released under an | ||||
| [MIT license](https://github.com/acornjs/acorn/blob/master/acorn-walk/LICENSE). | ||||
|  | ||||
| You are welcome to | ||||
| [report bugs](https://github.com/acornjs/acorn/issues) or create pull | ||||
| requests on [github](https://github.com/acornjs/acorn). For questions | ||||
| and discussion, please use the | ||||
| [Tern discussion forum](https://discuss.ternjs.net). | ||||
|  | ||||
| ## Installation | ||||
|  | ||||
| The easiest way to install acorn is from [`npm`](https://www.npmjs.com/): | ||||
|  | ||||
| ```sh | ||||
| npm install acorn-walk | ||||
| ``` | ||||
|  | ||||
| Alternately, you can download the source and build acorn yourself: | ||||
|  | ||||
| ```sh | ||||
| git clone https://github.com/acornjs/acorn.git | ||||
| cd acorn | ||||
| npm install | ||||
| ``` | ||||
|  | ||||
| ## Interface | ||||
|  | ||||
| An algorithm for recursing through a syntax tree is stored as an | ||||
| object, with a property for each tree node type holding a function | ||||
| that will recurse through such a node. There are several ways to run | ||||
| such a walker. | ||||
|  | ||||
| **simple**`(node, visitors, base, state)` does a 'simple' walk over a | ||||
| tree. `node` should be the AST node to walk, and `visitors` an object | ||||
| with properties whose names correspond to node types in the [ESTree | ||||
| spec](https://github.com/estree/estree). The properties should contain | ||||
| functions that will be called with the node object and, if applicable | ||||
| the state at that point. The last two arguments are optional. `base` | ||||
| is a walker algorithm, and `state` is a start state. The default | ||||
| walker will simply visit all statements and expressions and not | ||||
| produce a meaningful state. (An example of a use of state is to track | ||||
| scope at each point in the tree.) | ||||
|  | ||||
| ```js | ||||
| const acorn = require("acorn") | ||||
| const walk = require("acorn-walk") | ||||
|  | ||||
| walk.simple(acorn.parse("let x = 10"), { | ||||
|   Literal(node) { | ||||
|     console.log(`Found a literal: ${node.value}`) | ||||
|   } | ||||
| }) | ||||
| ``` | ||||
|  | ||||
| **ancestor**`(node, visitors, base, state)` does a 'simple' walk over | ||||
| a tree, building up an array of ancestor nodes (including the current node) | ||||
| and passing the array to the callbacks as a third parameter. | ||||
|  | ||||
| ```js | ||||
| const acorn = require("acorn") | ||||
| const walk = require("acorn-walk") | ||||
|  | ||||
| walk.ancestor(acorn.parse("foo('hi')"), { | ||||
|   Literal(_, ancestors) { | ||||
|     console.log("This literal's ancestors are:", ancestors.map(n => n.type)) | ||||
|   } | ||||
| }) | ||||
| ``` | ||||
|  | ||||
| **recursive**`(node, state, functions, base)` does a 'recursive' | ||||
| walk, where the walker functions are responsible for continuing the | ||||
| walk on the child nodes of their target node. `state` is the start | ||||
| state, and `functions` should contain an object that maps node types | ||||
| to walker functions. Such functions are called with `(node, state, c)` | ||||
| arguments, and can cause the walk to continue on a sub-node by calling | ||||
| the `c` argument on it with `(node, state)` arguments. The optional | ||||
| `base` argument provides the fallback walker functions for node types | ||||
| that aren't handled in the `functions` object. If not given, the | ||||
| default walkers will be used. | ||||
|  | ||||
| **make**`(functions, base)` builds a new walker object by using the | ||||
| walker functions in `functions` and filling in the missing ones by | ||||
| taking defaults from `base`. | ||||
|  | ||||
| **full**`(node, callback, base, state)` does a 'full' walk over a | ||||
| tree, calling the callback with the arguments (node, state, type) for | ||||
| each node | ||||
|  | ||||
| **fullAncestor**`(node, callback, base, state)` does a 'full' walk | ||||
| over a tree, building up an array of ancestor nodes (including the | ||||
| current node) and passing the array to the callbacks as a third | ||||
| parameter. | ||||
|  | ||||
| ```js | ||||
| const acorn = require("acorn") | ||||
| const walk = require("acorn-walk") | ||||
|  | ||||
| walk.full(acorn.parse("1 + 1"), node => { | ||||
|   console.log(`There's a ${node.type} node at ${node.ch}`) | ||||
| }) | ||||
| ``` | ||||
|  | ||||
| **findNodeAt**`(node, start, end, test, base, state)` tries to locate | ||||
| a node in a tree at the given start and/or end offsets, which | ||||
| satisfies the predicate `test`. `start` and `end` can be either `null` | ||||
| (as wildcard) or a number. `test` may be a string (indicating a node | ||||
| type) or a function that takes `(nodeType, node)` arguments and | ||||
| returns a boolean indicating whether this node is interesting. `base` | ||||
| and `state` are optional, and can be used to specify a custom walker. | ||||
| Nodes are tested from inner to outer, so if two nodes match the | ||||
| boundaries, the inner one will be preferred. | ||||
|  | ||||
| **findNodeAround**`(node, pos, test, base, state)` is a lot like | ||||
| `findNodeAt`, but will match any node that exists 'around' (spanning) | ||||
| the given position. | ||||
|  | ||||
| **findNodeAfter**`(node, pos, test, base, state)` is similar to | ||||
| `findNodeAround`, but will match all nodes *after* the given position | ||||
| (testing outer nodes before inner nodes). | ||||
							
								
								
									
										114
									
								
								node_modules/acorn-walk/dist/walk.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								node_modules/acorn-walk/dist/walk.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,114 @@ | ||||
| import {Node} from 'acorn'; | ||||
|  | ||||
| declare module "acorn-walk" { | ||||
|   type FullWalkerCallback<TState> = ( | ||||
|     node: Node, | ||||
|     state: TState, | ||||
|     type: string | ||||
|   ) => void; | ||||
|  | ||||
|   type FullAncestorWalkerCallback<TState> = ( | ||||
|     node: Node, | ||||
|     state: TState | Node[], | ||||
|     ancestors: Node[], | ||||
|     type: string | ||||
|   ) => void; | ||||
|   type WalkerCallback<TState> = (node: Node, state: TState) => void; | ||||
|  | ||||
|   type SimpleWalkerFn<TState> = ( | ||||
|     node: Node, | ||||
|     state: TState | ||||
|   ) => void; | ||||
|    | ||||
|   type AncestorWalkerFn<TState> = ( | ||||
|     node: Node, | ||||
|     state: TState| Node[], | ||||
|     ancestors: Node[] | ||||
|   ) => void; | ||||
|  | ||||
|   type RecursiveWalkerFn<TState> = ( | ||||
|     node: Node, | ||||
|     state: TState, | ||||
|     callback: WalkerCallback<TState> | ||||
|   ) => void; | ||||
|    | ||||
|   type SimpleVisitors<TState> = { | ||||
|     [type: string]: SimpleWalkerFn<TState> | ||||
|   }; | ||||
|  | ||||
|   type AncestorVisitors<TState> = { | ||||
|     [type: string]: AncestorWalkerFn<TState> | ||||
|   }; | ||||
|    | ||||
|   type RecursiveVisitors<TState> = { | ||||
|     [type: string]: RecursiveWalkerFn<TState> | ||||
|   }; | ||||
|  | ||||
|   type FindPredicate = (type: string, node: Node) => boolean; | ||||
|  | ||||
|   interface Found<TState> { | ||||
|     node: Node, | ||||
|     state: TState | ||||
|   } | ||||
|  | ||||
|   export function simple<TState>( | ||||
|     node: Node, | ||||
|     visitors: SimpleVisitors<TState>, | ||||
|     base?: RecursiveVisitors<TState>, | ||||
|     state?: TState | ||||
|   ): void; | ||||
|  | ||||
|   export function ancestor<TState>( | ||||
|     node: Node, | ||||
|     visitors: AncestorVisitors<TState>, | ||||
|     base?: RecursiveVisitors<TState>, | ||||
|     state?: TState | ||||
|   ): void; | ||||
|  | ||||
|   export function recursive<TState>( | ||||
|     node: Node, | ||||
|     state: TState, | ||||
|     functions: RecursiveVisitors<TState>, | ||||
|     base?: RecursiveVisitors<TState> | ||||
|   ): void; | ||||
|  | ||||
|   export function full<TState>( | ||||
|     node: Node, | ||||
|     callback: FullWalkerCallback<TState>, | ||||
|     base?: RecursiveVisitors<TState>, | ||||
|     state?: TState | ||||
|   ): void; | ||||
|  | ||||
|   export function fullAncestor<TState>( | ||||
|     node: Node, | ||||
|     callback: FullAncestorWalkerCallback<TState>, | ||||
|     base?: RecursiveVisitors<TState>, | ||||
|     state?: TState | ||||
|   ): void; | ||||
|  | ||||
|   export function make<TState>( | ||||
|     functions: RecursiveVisitors<TState>, | ||||
|     base?: RecursiveVisitors<TState> | ||||
|   ): RecursiveVisitors<TState>; | ||||
|  | ||||
|   export function findNodeAt<TState>( | ||||
|     node: Node, | ||||
|     start: number | undefined, | ||||
|     end?: number | undefined, | ||||
|     type?: FindPredicate | string, | ||||
|     base?: RecursiveVisitors<TState>, | ||||
|     state?: TState | ||||
|   ): Found<TState> | undefined; | ||||
|  | ||||
|   export function findNodeAround<TState>( | ||||
|     node: Node, | ||||
|     start: number | undefined, | ||||
|     type?: FindPredicate | string, | ||||
|     base?: RecursiveVisitors<TState>, | ||||
|     state?: TState | ||||
|   ): Found<TState> | undefined; | ||||
|  | ||||
|   export const findNodeAfter: typeof findNodeAround; | ||||
|  | ||||
|   export const base: RecursiveVisitors<any>; | ||||
| } | ||||
							
								
								
									
										463
									
								
								node_modules/acorn-walk/dist/walk.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										463
									
								
								node_modules/acorn-walk/dist/walk.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,463 @@ | ||||
| (function (global, factory) { | ||||
|   typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : | ||||
|   typeof define === 'function' && define.amd ? define(['exports'], factory) : | ||||
|   (global = global || self, factory((global.acorn = global.acorn || {}, global.acorn.walk = {}))); | ||||
| }(this, (function (exports) { 'use strict'; | ||||
|  | ||||
|   // AST walker module for Mozilla Parser API compatible trees | ||||
|  | ||||
|   // A simple walk is one where you simply specify callbacks to be | ||||
|   // called on specific nodes. The last two arguments are optional. A | ||||
|   // simple use would be | ||||
|   // | ||||
|   //     walk.simple(myTree, { | ||||
|   //         Expression: function(node) { ... } | ||||
|   //     }); | ||||
|   // | ||||
|   // to do something with all expressions. All Parser API node types | ||||
|   // can be used to identify node types, as well as Expression and | ||||
|   // Statement, which denote categories of nodes. | ||||
|   // | ||||
|   // The base argument can be used to pass a custom (recursive) | ||||
|   // walker, and state can be used to give this walked an initial | ||||
|   // state. | ||||
|  | ||||
|   function simple(node, visitors, baseVisitor, state, override) { | ||||
|     if (!baseVisitor) { baseVisitor = base | ||||
|     ; }(function c(node, st, override) { | ||||
|       var type = override || node.type, found = visitors[type]; | ||||
|       baseVisitor[type](node, st, c); | ||||
|       if (found) { found(node, st); } | ||||
|     })(node, state, override); | ||||
|   } | ||||
|  | ||||
|   // An ancestor walk keeps an array of ancestor nodes (including the | ||||
|   // current node) and passes them to the callback as third parameter | ||||
|   // (and also as state parameter when no other state is present). | ||||
|   function ancestor(node, visitors, baseVisitor, state, override) { | ||||
|     var ancestors = []; | ||||
|     if (!baseVisitor) { baseVisitor = base | ||||
|     ; }(function c(node, st, override) { | ||||
|       var type = override || node.type, found = visitors[type]; | ||||
|       var isNew = node !== ancestors[ancestors.length - 1]; | ||||
|       if (isNew) { ancestors.push(node); } | ||||
|       baseVisitor[type](node, st, c); | ||||
|       if (found) { found(node, st || ancestors, ancestors); } | ||||
|       if (isNew) { ancestors.pop(); } | ||||
|     })(node, state, override); | ||||
|   } | ||||
|  | ||||
|   // A recursive walk is one where your functions override the default | ||||
|   // walkers. They can modify and replace the state parameter that's | ||||
|   // threaded through the walk, and can opt how and whether to walk | ||||
|   // their child nodes (by calling their third argument on these | ||||
|   // nodes). | ||||
|   function recursive(node, state, funcs, baseVisitor, override) { | ||||
|     var visitor = funcs ? make(funcs, baseVisitor || undefined) : baseVisitor | ||||
|     ;(function c(node, st, override) { | ||||
|       visitor[override || node.type](node, st, c); | ||||
|     })(node, state, override); | ||||
|   } | ||||
|  | ||||
|   function makeTest(test) { | ||||
|     if (typeof test === "string") | ||||
|       { return function (type) { return type === test; } } | ||||
|     else if (!test) | ||||
|       { return function () { return true; } } | ||||
|     else | ||||
|       { return test } | ||||
|   } | ||||
|  | ||||
|   var Found = function Found(node, state) { this.node = node; this.state = state; }; | ||||
|  | ||||
|   // A full walk triggers the callback on each node | ||||
|   function full(node, callback, baseVisitor, state, override) { | ||||
|     if (!baseVisitor) { baseVisitor = base; } | ||||
|     var last | ||||
|     ;(function c(node, st, override) { | ||||
|       var type = override || node.type; | ||||
|       baseVisitor[type](node, st, c); | ||||
|       if (last !== node) { | ||||
|         callback(node, st, type); | ||||
|         last = node; | ||||
|       } | ||||
|     })(node, state, override); | ||||
|   } | ||||
|  | ||||
|   // An fullAncestor walk is like an ancestor walk, but triggers | ||||
|   // the callback on each node | ||||
|   function fullAncestor(node, callback, baseVisitor, state) { | ||||
|     if (!baseVisitor) { baseVisitor = base; } | ||||
|     var ancestors = [], last | ||||
|     ;(function c(node, st, override) { | ||||
|       var type = override || node.type; | ||||
|       var isNew = node !== ancestors[ancestors.length - 1]; | ||||
|       if (isNew) { ancestors.push(node); } | ||||
|       baseVisitor[type](node, st, c); | ||||
|       if (last !== node) { | ||||
|         callback(node, st || ancestors, ancestors, type); | ||||
|         last = node; | ||||
|       } | ||||
|       if (isNew) { ancestors.pop(); } | ||||
|     })(node, state); | ||||
|   } | ||||
|  | ||||
|   // Find a node with a given start, end, and type (all are optional, | ||||
|   // null can be used as wildcard). Returns a {node, state} object, or | ||||
|   // undefined when it doesn't find a matching node. | ||||
|   function findNodeAt(node, start, end, test, baseVisitor, state) { | ||||
|     if (!baseVisitor) { baseVisitor = base; } | ||||
|     test = makeTest(test); | ||||
|     try { | ||||
|       (function c(node, st, override) { | ||||
|         var type = override || node.type; | ||||
|         if ((start == null || node.start <= start) && | ||||
|             (end == null || node.end >= end)) | ||||
|           { baseVisitor[type](node, st, c); } | ||||
|         if ((start == null || node.start === start) && | ||||
|             (end == null || node.end === end) && | ||||
|             test(type, node)) | ||||
|           { throw new Found(node, st) } | ||||
|       })(node, state); | ||||
|     } catch (e) { | ||||
|       if (e instanceof Found) { return e } | ||||
|       throw e | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   // Find the innermost node of a given type that contains the given | ||||
|   // position. Interface similar to findNodeAt. | ||||
|   function findNodeAround(node, pos, test, baseVisitor, state) { | ||||
|     test = makeTest(test); | ||||
|     if (!baseVisitor) { baseVisitor = base; } | ||||
|     try { | ||||
|       (function c(node, st, override) { | ||||
|         var type = override || node.type; | ||||
|         if (node.start > pos || node.end < pos) { return } | ||||
|         baseVisitor[type](node, st, c); | ||||
|         if (test(type, node)) { throw new Found(node, st) } | ||||
|       })(node, state); | ||||
|     } catch (e) { | ||||
|       if (e instanceof Found) { return e } | ||||
|       throw e | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   // Find the outermost matching node after a given position. | ||||
|   function findNodeAfter(node, pos, test, baseVisitor, state) { | ||||
|     test = makeTest(test); | ||||
|     if (!baseVisitor) { baseVisitor = base; } | ||||
|     try { | ||||
|       (function c(node, st, override) { | ||||
|         if (node.end < pos) { return } | ||||
|         var type = override || node.type; | ||||
|         if (node.start >= pos && test(type, node)) { throw new Found(node, st) } | ||||
|         baseVisitor[type](node, st, c); | ||||
|       })(node, state); | ||||
|     } catch (e) { | ||||
|       if (e instanceof Found) { return e } | ||||
|       throw e | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   // Find the outermost matching node before a given position. | ||||
|   function findNodeBefore(node, pos, test, baseVisitor, state) { | ||||
|     test = makeTest(test); | ||||
|     if (!baseVisitor) { baseVisitor = base; } | ||||
|     var max | ||||
|     ;(function c(node, st, override) { | ||||
|       if (node.start > pos) { return } | ||||
|       var type = override || node.type; | ||||
|       if (node.end <= pos && (!max || max.node.end < node.end) && test(type, node)) | ||||
|         { max = new Found(node, st); } | ||||
|       baseVisitor[type](node, st, c); | ||||
|     })(node, state); | ||||
|     return max | ||||
|   } | ||||
|  | ||||
|   // Used to create a custom walker. Will fill in all missing node | ||||
|   // type properties with the defaults. | ||||
|   function make(funcs, baseVisitor) { | ||||
|     var visitor = Object.create(baseVisitor || base); | ||||
|     for (var type in funcs) { visitor[type] = funcs[type]; } | ||||
|     return visitor | ||||
|   } | ||||
|  | ||||
|   function skipThrough(node, st, c) { c(node, st); } | ||||
|   function ignore(_node, _st, _c) {} | ||||
|  | ||||
|   // Node walkers. | ||||
|  | ||||
|   var base = {}; | ||||
|  | ||||
|   base.Program = base.BlockStatement = base.StaticBlock = function (node, st, c) { | ||||
|     for (var i = 0, list = node.body; i < list.length; i += 1) | ||||
|       { | ||||
|       var stmt = list[i]; | ||||
|  | ||||
|       c(stmt, st, "Statement"); | ||||
|     } | ||||
|   }; | ||||
|   base.Statement = skipThrough; | ||||
|   base.EmptyStatement = ignore; | ||||
|   base.ExpressionStatement = base.ParenthesizedExpression = base.ChainExpression = | ||||
|     function (node, st, c) { return c(node.expression, st, "Expression"); }; | ||||
|   base.IfStatement = function (node, st, c) { | ||||
|     c(node.test, st, "Expression"); | ||||
|     c(node.consequent, st, "Statement"); | ||||
|     if (node.alternate) { c(node.alternate, st, "Statement"); } | ||||
|   }; | ||||
|   base.LabeledStatement = function (node, st, c) { return c(node.body, st, "Statement"); }; | ||||
|   base.BreakStatement = base.ContinueStatement = ignore; | ||||
|   base.WithStatement = function (node, st, c) { | ||||
|     c(node.object, st, "Expression"); | ||||
|     c(node.body, st, "Statement"); | ||||
|   }; | ||||
|   base.SwitchStatement = function (node, st, c) { | ||||
|     c(node.discriminant, st, "Expression"); | ||||
|     for (var i$1 = 0, list$1 = node.cases; i$1 < list$1.length; i$1 += 1) { | ||||
|       var cs = list$1[i$1]; | ||||
|  | ||||
|       if (cs.test) { c(cs.test, st, "Expression"); } | ||||
|       for (var i = 0, list = cs.consequent; i < list.length; i += 1) | ||||
|         { | ||||
|         var cons = list[i]; | ||||
|  | ||||
|         c(cons, st, "Statement"); | ||||
|       } | ||||
|     } | ||||
|   }; | ||||
|   base.SwitchCase = function (node, st, c) { | ||||
|     if (node.test) { c(node.test, st, "Expression"); } | ||||
|     for (var i = 0, list = node.consequent; i < list.length; i += 1) | ||||
|       { | ||||
|       var cons = list[i]; | ||||
|  | ||||
|       c(cons, st, "Statement"); | ||||
|     } | ||||
|   }; | ||||
|   base.ReturnStatement = base.YieldExpression = base.AwaitExpression = function (node, st, c) { | ||||
|     if (node.argument) { c(node.argument, st, "Expression"); } | ||||
|   }; | ||||
|   base.ThrowStatement = base.SpreadElement = | ||||
|     function (node, st, c) { return c(node.argument, st, "Expression"); }; | ||||
|   base.TryStatement = function (node, st, c) { | ||||
|     c(node.block, st, "Statement"); | ||||
|     if (node.handler) { c(node.handler, st); } | ||||
|     if (node.finalizer) { c(node.finalizer, st, "Statement"); } | ||||
|   }; | ||||
|   base.CatchClause = function (node, st, c) { | ||||
|     if (node.param) { c(node.param, st, "Pattern"); } | ||||
|     c(node.body, st, "Statement"); | ||||
|   }; | ||||
|   base.WhileStatement = base.DoWhileStatement = function (node, st, c) { | ||||
|     c(node.test, st, "Expression"); | ||||
|     c(node.body, st, "Statement"); | ||||
|   }; | ||||
|   base.ForStatement = function (node, st, c) { | ||||
|     if (node.init) { c(node.init, st, "ForInit"); } | ||||
|     if (node.test) { c(node.test, st, "Expression"); } | ||||
|     if (node.update) { c(node.update, st, "Expression"); } | ||||
|     c(node.body, st, "Statement"); | ||||
|   }; | ||||
|   base.ForInStatement = base.ForOfStatement = function (node, st, c) { | ||||
|     c(node.left, st, "ForInit"); | ||||
|     c(node.right, st, "Expression"); | ||||
|     c(node.body, st, "Statement"); | ||||
|   }; | ||||
|   base.ForInit = function (node, st, c) { | ||||
|     if (node.type === "VariableDeclaration") { c(node, st); } | ||||
|     else { c(node, st, "Expression"); } | ||||
|   }; | ||||
|   base.DebuggerStatement = ignore; | ||||
|  | ||||
|   base.FunctionDeclaration = function (node, st, c) { return c(node, st, "Function"); }; | ||||
|   base.VariableDeclaration = function (node, st, c) { | ||||
|     for (var i = 0, list = node.declarations; i < list.length; i += 1) | ||||
|       { | ||||
|       var decl = list[i]; | ||||
|  | ||||
|       c(decl, st); | ||||
|     } | ||||
|   }; | ||||
|   base.VariableDeclarator = function (node, st, c) { | ||||
|     c(node.id, st, "Pattern"); | ||||
|     if (node.init) { c(node.init, st, "Expression"); } | ||||
|   }; | ||||
|  | ||||
|   base.Function = function (node, st, c) { | ||||
|     if (node.id) { c(node.id, st, "Pattern"); } | ||||
|     for (var i = 0, list = node.params; i < list.length; i += 1) | ||||
|       { | ||||
|       var param = list[i]; | ||||
|  | ||||
|       c(param, st, "Pattern"); | ||||
|     } | ||||
|     c(node.body, st, node.expression ? "Expression" : "Statement"); | ||||
|   }; | ||||
|  | ||||
|   base.Pattern = function (node, st, c) { | ||||
|     if (node.type === "Identifier") | ||||
|       { c(node, st, "VariablePattern"); } | ||||
|     else if (node.type === "MemberExpression") | ||||
|       { c(node, st, "MemberPattern"); } | ||||
|     else | ||||
|       { c(node, st); } | ||||
|   }; | ||||
|   base.VariablePattern = ignore; | ||||
|   base.MemberPattern = skipThrough; | ||||
|   base.RestElement = function (node, st, c) { return c(node.argument, st, "Pattern"); }; | ||||
|   base.ArrayPattern = function (node, st, c) { | ||||
|     for (var i = 0, list = node.elements; i < list.length; i += 1) { | ||||
|       var elt = list[i]; | ||||
|  | ||||
|       if (elt) { c(elt, st, "Pattern"); } | ||||
|     } | ||||
|   }; | ||||
|   base.ObjectPattern = function (node, st, c) { | ||||
|     for (var i = 0, list = node.properties; i < list.length; i += 1) { | ||||
|       var prop = list[i]; | ||||
|  | ||||
|       if (prop.type === "Property") { | ||||
|         if (prop.computed) { c(prop.key, st, "Expression"); } | ||||
|         c(prop.value, st, "Pattern"); | ||||
|       } else if (prop.type === "RestElement") { | ||||
|         c(prop.argument, st, "Pattern"); | ||||
|       } | ||||
|     } | ||||
|   }; | ||||
|  | ||||
|   base.Expression = skipThrough; | ||||
|   base.ThisExpression = base.Super = base.MetaProperty = ignore; | ||||
|   base.ArrayExpression = function (node, st, c) { | ||||
|     for (var i = 0, list = node.elements; i < list.length; i += 1) { | ||||
|       var elt = list[i]; | ||||
|  | ||||
|       if (elt) { c(elt, st, "Expression"); } | ||||
|     } | ||||
|   }; | ||||
|   base.ObjectExpression = function (node, st, c) { | ||||
|     for (var i = 0, list = node.properties; i < list.length; i += 1) | ||||
|       { | ||||
|       var prop = list[i]; | ||||
|  | ||||
|       c(prop, st); | ||||
|     } | ||||
|   }; | ||||
|   base.FunctionExpression = base.ArrowFunctionExpression = base.FunctionDeclaration; | ||||
|   base.SequenceExpression = function (node, st, c) { | ||||
|     for (var i = 0, list = node.expressions; i < list.length; i += 1) | ||||
|       { | ||||
|       var expr = list[i]; | ||||
|  | ||||
|       c(expr, st, "Expression"); | ||||
|     } | ||||
|   }; | ||||
|   base.TemplateLiteral = function (node, st, c) { | ||||
|     for (var i = 0, list = node.quasis; i < list.length; i += 1) | ||||
|       { | ||||
|       var quasi = list[i]; | ||||
|  | ||||
|       c(quasi, st); | ||||
|     } | ||||
|  | ||||
|     for (var i$1 = 0, list$1 = node.expressions; i$1 < list$1.length; i$1 += 1) | ||||
|       { | ||||
|       var expr = list$1[i$1]; | ||||
|  | ||||
|       c(expr, st, "Expression"); | ||||
|     } | ||||
|   }; | ||||
|   base.TemplateElement = ignore; | ||||
|   base.UnaryExpression = base.UpdateExpression = function (node, st, c) { | ||||
|     c(node.argument, st, "Expression"); | ||||
|   }; | ||||
|   base.BinaryExpression = base.LogicalExpression = function (node, st, c) { | ||||
|     c(node.left, st, "Expression"); | ||||
|     c(node.right, st, "Expression"); | ||||
|   }; | ||||
|   base.AssignmentExpression = base.AssignmentPattern = function (node, st, c) { | ||||
|     c(node.left, st, "Pattern"); | ||||
|     c(node.right, st, "Expression"); | ||||
|   }; | ||||
|   base.ConditionalExpression = function (node, st, c) { | ||||
|     c(node.test, st, "Expression"); | ||||
|     c(node.consequent, st, "Expression"); | ||||
|     c(node.alternate, st, "Expression"); | ||||
|   }; | ||||
|   base.NewExpression = base.CallExpression = function (node, st, c) { | ||||
|     c(node.callee, st, "Expression"); | ||||
|     if (node.arguments) | ||||
|       { for (var i = 0, list = node.arguments; i < list.length; i += 1) | ||||
|         { | ||||
|           var arg = list[i]; | ||||
|  | ||||
|           c(arg, st, "Expression"); | ||||
|         } } | ||||
|   }; | ||||
|   base.MemberExpression = function (node, st, c) { | ||||
|     c(node.object, st, "Expression"); | ||||
|     if (node.computed) { c(node.property, st, "Expression"); } | ||||
|   }; | ||||
|   base.ExportNamedDeclaration = base.ExportDefaultDeclaration = function (node, st, c) { | ||||
|     if (node.declaration) | ||||
|       { c(node.declaration, st, node.type === "ExportNamedDeclaration" || node.declaration.id ? "Statement" : "Expression"); } | ||||
|     if (node.source) { c(node.source, st, "Expression"); } | ||||
|   }; | ||||
|   base.ExportAllDeclaration = function (node, st, c) { | ||||
|     if (node.exported) | ||||
|       { c(node.exported, st); } | ||||
|     c(node.source, st, "Expression"); | ||||
|   }; | ||||
|   base.ImportDeclaration = function (node, st, c) { | ||||
|     for (var i = 0, list = node.specifiers; i < list.length; i += 1) | ||||
|       { | ||||
|       var spec = list[i]; | ||||
|  | ||||
|       c(spec, st); | ||||
|     } | ||||
|     c(node.source, st, "Expression"); | ||||
|   }; | ||||
|   base.ImportExpression = function (node, st, c) { | ||||
|     c(node.source, st, "Expression"); | ||||
|   }; | ||||
|   base.ImportSpecifier = base.ImportDefaultSpecifier = base.ImportNamespaceSpecifier = base.Identifier = base.PrivateIdentifier = base.Literal = ignore; | ||||
|  | ||||
|   base.TaggedTemplateExpression = function (node, st, c) { | ||||
|     c(node.tag, st, "Expression"); | ||||
|     c(node.quasi, st, "Expression"); | ||||
|   }; | ||||
|   base.ClassDeclaration = base.ClassExpression = function (node, st, c) { return c(node, st, "Class"); }; | ||||
|   base.Class = function (node, st, c) { | ||||
|     if (node.id) { c(node.id, st, "Pattern"); } | ||||
|     if (node.superClass) { c(node.superClass, st, "Expression"); } | ||||
|     c(node.body, st); | ||||
|   }; | ||||
|   base.ClassBody = function (node, st, c) { | ||||
|     for (var i = 0, list = node.body; i < list.length; i += 1) | ||||
|       { | ||||
|       var elt = list[i]; | ||||
|  | ||||
|       c(elt, st); | ||||
|     } | ||||
|   }; | ||||
|   base.MethodDefinition = base.PropertyDefinition = base.Property = function (node, st, c) { | ||||
|     if (node.computed) { c(node.key, st, "Expression"); } | ||||
|     if (node.value) { c(node.value, st, "Expression"); } | ||||
|   }; | ||||
|  | ||||
|   exports.ancestor = ancestor; | ||||
|   exports.base = base; | ||||
|   exports.findNodeAfter = findNodeAfter; | ||||
|   exports.findNodeAround = findNodeAround; | ||||
|   exports.findNodeAt = findNodeAt; | ||||
|   exports.findNodeBefore = findNodeBefore; | ||||
|   exports.full = full; | ||||
|   exports.fullAncestor = fullAncestor; | ||||
|   exports.make = make; | ||||
|   exports.recursive = recursive; | ||||
|   exports.simple = simple; | ||||
|  | ||||
|   Object.defineProperty(exports, '__esModule', { value: true }); | ||||
|  | ||||
| }))); | ||||
							
								
								
									
										443
									
								
								node_modules/acorn-walk/dist/walk.mjs
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										443
									
								
								node_modules/acorn-walk/dist/walk.mjs
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,443 @@ | ||||
| // AST walker module for Mozilla Parser API compatible trees | ||||
|  | ||||
| // A simple walk is one where you simply specify callbacks to be | ||||
| // called on specific nodes. The last two arguments are optional. A | ||||
| // simple use would be | ||||
| // | ||||
| //     walk.simple(myTree, { | ||||
| //         Expression: function(node) { ... } | ||||
| //     }); | ||||
| // | ||||
| // to do something with all expressions. All Parser API node types | ||||
| // can be used to identify node types, as well as Expression and | ||||
| // Statement, which denote categories of nodes. | ||||
| // | ||||
| // The base argument can be used to pass a custom (recursive) | ||||
| // walker, and state can be used to give this walked an initial | ||||
| // state. | ||||
|  | ||||
| function simple(node, visitors, baseVisitor, state, override) { | ||||
|   if (!baseVisitor) { baseVisitor = base | ||||
|   ; }(function c(node, st, override) { | ||||
|     var type = override || node.type, found = visitors[type]; | ||||
|     baseVisitor[type](node, st, c); | ||||
|     if (found) { found(node, st); } | ||||
|   })(node, state, override); | ||||
| } | ||||
|  | ||||
| // An ancestor walk keeps an array of ancestor nodes (including the | ||||
| // current node) and passes them to the callback as third parameter | ||||
| // (and also as state parameter when no other state is present). | ||||
| function ancestor(node, visitors, baseVisitor, state, override) { | ||||
|   var ancestors = []; | ||||
|   if (!baseVisitor) { baseVisitor = base | ||||
|   ; }(function c(node, st, override) { | ||||
|     var type = override || node.type, found = visitors[type]; | ||||
|     var isNew = node !== ancestors[ancestors.length - 1]; | ||||
|     if (isNew) { ancestors.push(node); } | ||||
|     baseVisitor[type](node, st, c); | ||||
|     if (found) { found(node, st || ancestors, ancestors); } | ||||
|     if (isNew) { ancestors.pop(); } | ||||
|   })(node, state, override); | ||||
| } | ||||
|  | ||||
| // A recursive walk is one where your functions override the default | ||||
| // walkers. They can modify and replace the state parameter that's | ||||
| // threaded through the walk, and can opt how and whether to walk | ||||
| // their child nodes (by calling their third argument on these | ||||
| // nodes). | ||||
| function recursive(node, state, funcs, baseVisitor, override) { | ||||
|   var visitor = funcs ? make(funcs, baseVisitor || undefined) : baseVisitor | ||||
|   ;(function c(node, st, override) { | ||||
|     visitor[override || node.type](node, st, c); | ||||
|   })(node, state, override); | ||||
| } | ||||
|  | ||||
| function makeTest(test) { | ||||
|   if (typeof test === "string") | ||||
|     { return function (type) { return type === test; } } | ||||
|   else if (!test) | ||||
|     { return function () { return true; } } | ||||
|   else | ||||
|     { return test } | ||||
| } | ||||
|  | ||||
| var Found = function Found(node, state) { this.node = node; this.state = state; }; | ||||
|  | ||||
| // A full walk triggers the callback on each node | ||||
| function full(node, callback, baseVisitor, state, override) { | ||||
|   if (!baseVisitor) { baseVisitor = base; } | ||||
|   var last | ||||
|   ;(function c(node, st, override) { | ||||
|     var type = override || node.type; | ||||
|     baseVisitor[type](node, st, c); | ||||
|     if (last !== node) { | ||||
|       callback(node, st, type); | ||||
|       last = node; | ||||
|     } | ||||
|   })(node, state, override); | ||||
| } | ||||
|  | ||||
| // An fullAncestor walk is like an ancestor walk, but triggers | ||||
| // the callback on each node | ||||
| function fullAncestor(node, callback, baseVisitor, state) { | ||||
|   if (!baseVisitor) { baseVisitor = base; } | ||||
|   var ancestors = [], last | ||||
|   ;(function c(node, st, override) { | ||||
|     var type = override || node.type; | ||||
|     var isNew = node !== ancestors[ancestors.length - 1]; | ||||
|     if (isNew) { ancestors.push(node); } | ||||
|     baseVisitor[type](node, st, c); | ||||
|     if (last !== node) { | ||||
|       callback(node, st || ancestors, ancestors, type); | ||||
|       last = node; | ||||
|     } | ||||
|     if (isNew) { ancestors.pop(); } | ||||
|   })(node, state); | ||||
| } | ||||
|  | ||||
| // Find a node with a given start, end, and type (all are optional, | ||||
| // null can be used as wildcard). Returns a {node, state} object, or | ||||
| // undefined when it doesn't find a matching node. | ||||
| function findNodeAt(node, start, end, test, baseVisitor, state) { | ||||
|   if (!baseVisitor) { baseVisitor = base; } | ||||
|   test = makeTest(test); | ||||
|   try { | ||||
|     (function c(node, st, override) { | ||||
|       var type = override || node.type; | ||||
|       if ((start == null || node.start <= start) && | ||||
|           (end == null || node.end >= end)) | ||||
|         { baseVisitor[type](node, st, c); } | ||||
|       if ((start == null || node.start === start) && | ||||
|           (end == null || node.end === end) && | ||||
|           test(type, node)) | ||||
|         { throw new Found(node, st) } | ||||
|     })(node, state); | ||||
|   } catch (e) { | ||||
|     if (e instanceof Found) { return e } | ||||
|     throw e | ||||
|   } | ||||
| } | ||||
|  | ||||
| // Find the innermost node of a given type that contains the given | ||||
| // position. Interface similar to findNodeAt. | ||||
| function findNodeAround(node, pos, test, baseVisitor, state) { | ||||
|   test = makeTest(test); | ||||
|   if (!baseVisitor) { baseVisitor = base; } | ||||
|   try { | ||||
|     (function c(node, st, override) { | ||||
|       var type = override || node.type; | ||||
|       if (node.start > pos || node.end < pos) { return } | ||||
|       baseVisitor[type](node, st, c); | ||||
|       if (test(type, node)) { throw new Found(node, st) } | ||||
|     })(node, state); | ||||
|   } catch (e) { | ||||
|     if (e instanceof Found) { return e } | ||||
|     throw e | ||||
|   } | ||||
| } | ||||
|  | ||||
| // Find the outermost matching node after a given position. | ||||
| function findNodeAfter(node, pos, test, baseVisitor, state) { | ||||
|   test = makeTest(test); | ||||
|   if (!baseVisitor) { baseVisitor = base; } | ||||
|   try { | ||||
|     (function c(node, st, override) { | ||||
|       if (node.end < pos) { return } | ||||
|       var type = override || node.type; | ||||
|       if (node.start >= pos && test(type, node)) { throw new Found(node, st) } | ||||
|       baseVisitor[type](node, st, c); | ||||
|     })(node, state); | ||||
|   } catch (e) { | ||||
|     if (e instanceof Found) { return e } | ||||
|     throw e | ||||
|   } | ||||
| } | ||||
|  | ||||
| // Find the outermost matching node before a given position. | ||||
| function findNodeBefore(node, pos, test, baseVisitor, state) { | ||||
|   test = makeTest(test); | ||||
|   if (!baseVisitor) { baseVisitor = base; } | ||||
|   var max | ||||
|   ;(function c(node, st, override) { | ||||
|     if (node.start > pos) { return } | ||||
|     var type = override || node.type; | ||||
|     if (node.end <= pos && (!max || max.node.end < node.end) && test(type, node)) | ||||
|       { max = new Found(node, st); } | ||||
|     baseVisitor[type](node, st, c); | ||||
|   })(node, state); | ||||
|   return max | ||||
| } | ||||
|  | ||||
| // Used to create a custom walker. Will fill in all missing node | ||||
| // type properties with the defaults. | ||||
| function make(funcs, baseVisitor) { | ||||
|   var visitor = Object.create(baseVisitor || base); | ||||
|   for (var type in funcs) { visitor[type] = funcs[type]; } | ||||
|   return visitor | ||||
| } | ||||
|  | ||||
| function skipThrough(node, st, c) { c(node, st); } | ||||
| function ignore(_node, _st, _c) {} | ||||
|  | ||||
| // Node walkers. | ||||
|  | ||||
| var base = {}; | ||||
|  | ||||
| base.Program = base.BlockStatement = base.StaticBlock = function (node, st, c) { | ||||
|   for (var i = 0, list = node.body; i < list.length; i += 1) | ||||
|     { | ||||
|     var stmt = list[i]; | ||||
|  | ||||
|     c(stmt, st, "Statement"); | ||||
|   } | ||||
| }; | ||||
| base.Statement = skipThrough; | ||||
| base.EmptyStatement = ignore; | ||||
| base.ExpressionStatement = base.ParenthesizedExpression = base.ChainExpression = | ||||
|   function (node, st, c) { return c(node.expression, st, "Expression"); }; | ||||
| base.IfStatement = function (node, st, c) { | ||||
|   c(node.test, st, "Expression"); | ||||
|   c(node.consequent, st, "Statement"); | ||||
|   if (node.alternate) { c(node.alternate, st, "Statement"); } | ||||
| }; | ||||
| base.LabeledStatement = function (node, st, c) { return c(node.body, st, "Statement"); }; | ||||
| base.BreakStatement = base.ContinueStatement = ignore; | ||||
| base.WithStatement = function (node, st, c) { | ||||
|   c(node.object, st, "Expression"); | ||||
|   c(node.body, st, "Statement"); | ||||
| }; | ||||
| base.SwitchStatement = function (node, st, c) { | ||||
|   c(node.discriminant, st, "Expression"); | ||||
|   for (var i$1 = 0, list$1 = node.cases; i$1 < list$1.length; i$1 += 1) { | ||||
|     var cs = list$1[i$1]; | ||||
|  | ||||
|     if (cs.test) { c(cs.test, st, "Expression"); } | ||||
|     for (var i = 0, list = cs.consequent; i < list.length; i += 1) | ||||
|       { | ||||
|       var cons = list[i]; | ||||
|  | ||||
|       c(cons, st, "Statement"); | ||||
|     } | ||||
|   } | ||||
| }; | ||||
| base.SwitchCase = function (node, st, c) { | ||||
|   if (node.test) { c(node.test, st, "Expression"); } | ||||
|   for (var i = 0, list = node.consequent; i < list.length; i += 1) | ||||
|     { | ||||
|     var cons = list[i]; | ||||
|  | ||||
|     c(cons, st, "Statement"); | ||||
|   } | ||||
| }; | ||||
| base.ReturnStatement = base.YieldExpression = base.AwaitExpression = function (node, st, c) { | ||||
|   if (node.argument) { c(node.argument, st, "Expression"); } | ||||
| }; | ||||
| base.ThrowStatement = base.SpreadElement = | ||||
|   function (node, st, c) { return c(node.argument, st, "Expression"); }; | ||||
| base.TryStatement = function (node, st, c) { | ||||
|   c(node.block, st, "Statement"); | ||||
|   if (node.handler) { c(node.handler, st); } | ||||
|   if (node.finalizer) { c(node.finalizer, st, "Statement"); } | ||||
| }; | ||||
| base.CatchClause = function (node, st, c) { | ||||
|   if (node.param) { c(node.param, st, "Pattern"); } | ||||
|   c(node.body, st, "Statement"); | ||||
| }; | ||||
| base.WhileStatement = base.DoWhileStatement = function (node, st, c) { | ||||
|   c(node.test, st, "Expression"); | ||||
|   c(node.body, st, "Statement"); | ||||
| }; | ||||
| base.ForStatement = function (node, st, c) { | ||||
|   if (node.init) { c(node.init, st, "ForInit"); } | ||||
|   if (node.test) { c(node.test, st, "Expression"); } | ||||
|   if (node.update) { c(node.update, st, "Expression"); } | ||||
|   c(node.body, st, "Statement"); | ||||
| }; | ||||
| base.ForInStatement = base.ForOfStatement = function (node, st, c) { | ||||
|   c(node.left, st, "ForInit"); | ||||
|   c(node.right, st, "Expression"); | ||||
|   c(node.body, st, "Statement"); | ||||
| }; | ||||
| base.ForInit = function (node, st, c) { | ||||
|   if (node.type === "VariableDeclaration") { c(node, st); } | ||||
|   else { c(node, st, "Expression"); } | ||||
| }; | ||||
| base.DebuggerStatement = ignore; | ||||
|  | ||||
| base.FunctionDeclaration = function (node, st, c) { return c(node, st, "Function"); }; | ||||
| base.VariableDeclaration = function (node, st, c) { | ||||
|   for (var i = 0, list = node.declarations; i < list.length; i += 1) | ||||
|     { | ||||
|     var decl = list[i]; | ||||
|  | ||||
|     c(decl, st); | ||||
|   } | ||||
| }; | ||||
| base.VariableDeclarator = function (node, st, c) { | ||||
|   c(node.id, st, "Pattern"); | ||||
|   if (node.init) { c(node.init, st, "Expression"); } | ||||
| }; | ||||
|  | ||||
| base.Function = function (node, st, c) { | ||||
|   if (node.id) { c(node.id, st, "Pattern"); } | ||||
|   for (var i = 0, list = node.params; i < list.length; i += 1) | ||||
|     { | ||||
|     var param = list[i]; | ||||
|  | ||||
|     c(param, st, "Pattern"); | ||||
|   } | ||||
|   c(node.body, st, node.expression ? "Expression" : "Statement"); | ||||
| }; | ||||
|  | ||||
| base.Pattern = function (node, st, c) { | ||||
|   if (node.type === "Identifier") | ||||
|     { c(node, st, "VariablePattern"); } | ||||
|   else if (node.type === "MemberExpression") | ||||
|     { c(node, st, "MemberPattern"); } | ||||
|   else | ||||
|     { c(node, st); } | ||||
| }; | ||||
| base.VariablePattern = ignore; | ||||
| base.MemberPattern = skipThrough; | ||||
| base.RestElement = function (node, st, c) { return c(node.argument, st, "Pattern"); }; | ||||
| base.ArrayPattern = function (node, st, c) { | ||||
|   for (var i = 0, list = node.elements; i < list.length; i += 1) { | ||||
|     var elt = list[i]; | ||||
|  | ||||
|     if (elt) { c(elt, st, "Pattern"); } | ||||
|   } | ||||
| }; | ||||
| base.ObjectPattern = function (node, st, c) { | ||||
|   for (var i = 0, list = node.properties; i < list.length; i += 1) { | ||||
|     var prop = list[i]; | ||||
|  | ||||
|     if (prop.type === "Property") { | ||||
|       if (prop.computed) { c(prop.key, st, "Expression"); } | ||||
|       c(prop.value, st, "Pattern"); | ||||
|     } else if (prop.type === "RestElement") { | ||||
|       c(prop.argument, st, "Pattern"); | ||||
|     } | ||||
|   } | ||||
| }; | ||||
|  | ||||
| base.Expression = skipThrough; | ||||
| base.ThisExpression = base.Super = base.MetaProperty = ignore; | ||||
| base.ArrayExpression = function (node, st, c) { | ||||
|   for (var i = 0, list = node.elements; i < list.length; i += 1) { | ||||
|     var elt = list[i]; | ||||
|  | ||||
|     if (elt) { c(elt, st, "Expression"); } | ||||
|   } | ||||
| }; | ||||
| base.ObjectExpression = function (node, st, c) { | ||||
|   for (var i = 0, list = node.properties; i < list.length; i += 1) | ||||
|     { | ||||
|     var prop = list[i]; | ||||
|  | ||||
|     c(prop, st); | ||||
|   } | ||||
| }; | ||||
| base.FunctionExpression = base.ArrowFunctionExpression = base.FunctionDeclaration; | ||||
| base.SequenceExpression = function (node, st, c) { | ||||
|   for (var i = 0, list = node.expressions; i < list.length; i += 1) | ||||
|     { | ||||
|     var expr = list[i]; | ||||
|  | ||||
|     c(expr, st, "Expression"); | ||||
|   } | ||||
| }; | ||||
| base.TemplateLiteral = function (node, st, c) { | ||||
|   for (var i = 0, list = node.quasis; i < list.length; i += 1) | ||||
|     { | ||||
|     var quasi = list[i]; | ||||
|  | ||||
|     c(quasi, st); | ||||
|   } | ||||
|  | ||||
|   for (var i$1 = 0, list$1 = node.expressions; i$1 < list$1.length; i$1 += 1) | ||||
|     { | ||||
|     var expr = list$1[i$1]; | ||||
|  | ||||
|     c(expr, st, "Expression"); | ||||
|   } | ||||
| }; | ||||
| base.TemplateElement = ignore; | ||||
| base.UnaryExpression = base.UpdateExpression = function (node, st, c) { | ||||
|   c(node.argument, st, "Expression"); | ||||
| }; | ||||
| base.BinaryExpression = base.LogicalExpression = function (node, st, c) { | ||||
|   c(node.left, st, "Expression"); | ||||
|   c(node.right, st, "Expression"); | ||||
| }; | ||||
| base.AssignmentExpression = base.AssignmentPattern = function (node, st, c) { | ||||
|   c(node.left, st, "Pattern"); | ||||
|   c(node.right, st, "Expression"); | ||||
| }; | ||||
| base.ConditionalExpression = function (node, st, c) { | ||||
|   c(node.test, st, "Expression"); | ||||
|   c(node.consequent, st, "Expression"); | ||||
|   c(node.alternate, st, "Expression"); | ||||
| }; | ||||
| base.NewExpression = base.CallExpression = function (node, st, c) { | ||||
|   c(node.callee, st, "Expression"); | ||||
|   if (node.arguments) | ||||
|     { for (var i = 0, list = node.arguments; i < list.length; i += 1) | ||||
|       { | ||||
|         var arg = list[i]; | ||||
|  | ||||
|         c(arg, st, "Expression"); | ||||
|       } } | ||||
| }; | ||||
| base.MemberExpression = function (node, st, c) { | ||||
|   c(node.object, st, "Expression"); | ||||
|   if (node.computed) { c(node.property, st, "Expression"); } | ||||
| }; | ||||
| base.ExportNamedDeclaration = base.ExportDefaultDeclaration = function (node, st, c) { | ||||
|   if (node.declaration) | ||||
|     { c(node.declaration, st, node.type === "ExportNamedDeclaration" || node.declaration.id ? "Statement" : "Expression"); } | ||||
|   if (node.source) { c(node.source, st, "Expression"); } | ||||
| }; | ||||
| base.ExportAllDeclaration = function (node, st, c) { | ||||
|   if (node.exported) | ||||
|     { c(node.exported, st); } | ||||
|   c(node.source, st, "Expression"); | ||||
| }; | ||||
| base.ImportDeclaration = function (node, st, c) { | ||||
|   for (var i = 0, list = node.specifiers; i < list.length; i += 1) | ||||
|     { | ||||
|     var spec = list[i]; | ||||
|  | ||||
|     c(spec, st); | ||||
|   } | ||||
|   c(node.source, st, "Expression"); | ||||
| }; | ||||
| base.ImportExpression = function (node, st, c) { | ||||
|   c(node.source, st, "Expression"); | ||||
| }; | ||||
| base.ImportSpecifier = base.ImportDefaultSpecifier = base.ImportNamespaceSpecifier = base.Identifier = base.PrivateIdentifier = base.Literal = ignore; | ||||
|  | ||||
| base.TaggedTemplateExpression = function (node, st, c) { | ||||
|   c(node.tag, st, "Expression"); | ||||
|   c(node.quasi, st, "Expression"); | ||||
| }; | ||||
| base.ClassDeclaration = base.ClassExpression = function (node, st, c) { return c(node, st, "Class"); }; | ||||
| base.Class = function (node, st, c) { | ||||
|   if (node.id) { c(node.id, st, "Pattern"); } | ||||
|   if (node.superClass) { c(node.superClass, st, "Expression"); } | ||||
|   c(node.body, st); | ||||
| }; | ||||
| base.ClassBody = function (node, st, c) { | ||||
|   for (var i = 0, list = node.body; i < list.length; i += 1) | ||||
|     { | ||||
|     var elt = list[i]; | ||||
|  | ||||
|     c(elt, st); | ||||
|   } | ||||
| }; | ||||
| base.MethodDefinition = base.PropertyDefinition = base.Property = function (node, st, c) { | ||||
|   if (node.computed) { c(node.key, st, "Expression"); } | ||||
|   if (node.value) { c(node.value, st, "Expression"); } | ||||
| }; | ||||
|  | ||||
| export { ancestor, base, findNodeAfter, findNodeAround, findNodeAt, findNodeBefore, full, fullAncestor, make, recursive, simple }; | ||||
							
								
								
									
										45
									
								
								node_modules/acorn-walk/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								node_modules/acorn-walk/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| { | ||||
|   "name": "acorn-walk", | ||||
|   "description": "ECMAScript (ESTree) AST walker", | ||||
|   "homepage": "https://github.com/acornjs/acorn", | ||||
|   "main": "dist/walk.js", | ||||
|   "types": "dist/walk.d.ts", | ||||
|   "module": "dist/walk.mjs", | ||||
|   "exports": { | ||||
|     ".": [ | ||||
|       { | ||||
|         "import": "./dist/walk.mjs", | ||||
|         "require": "./dist/walk.js", | ||||
|         "default": "./dist/walk.js" | ||||
|       }, | ||||
|       "./dist/walk.js" | ||||
|     ], | ||||
|     "./package.json": "./package.json" | ||||
|   }, | ||||
|   "version": "8.2.0", | ||||
|   "engines": {"node": ">=0.4.0"}, | ||||
|   "maintainers": [ | ||||
|     { | ||||
|       "name": "Marijn Haverbeke", | ||||
|       "email": "marijnh@gmail.com", | ||||
|       "web": "https://marijnhaverbeke.nl" | ||||
|     }, | ||||
|     { | ||||
|       "name": "Ingvar Stepanyan", | ||||
|       "email": "me@rreverser.com", | ||||
|       "web": "https://rreverser.com/" | ||||
|     }, | ||||
|     { | ||||
|       "name": "Adrian Heine", | ||||
|       "web": "http://adrianheine.de" | ||||
|     } | ||||
|   ], | ||||
|   "repository": { | ||||
|     "type": "git", | ||||
|     "url": "https://github.com/acornjs/acorn.git" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "prepare": "cd ..; npm run build:walk" | ||||
|   }, | ||||
|   "license": "MIT" | ||||
| } | ||||
		Reference in New Issue
	
	Block a user