Website Structure
This commit is contained in:
parent
62812f2090
commit
71f0676a62
22365 changed files with 4265753 additions and 791 deletions
119
Frontend-Learner/node_modules/ast-walker-scope/README.md
generated
vendored
Normal file
119
Frontend-Learner/node_modules/ast-walker-scope/README.md
generated
vendored
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
# ast-walker-scope
|
||||
|
||||
[![npm version][npm-version-src]][npm-version-href]
|
||||
[![npm downloads][npm-downloads-src]][npm-downloads-href]
|
||||
[![Unit Test][unit-test-src]][unit-test-href]
|
||||
|
||||
Traverse Babel AST with scope information.
|
||||
|
||||
Inherited from [estree-walker](https://github.com/Rich-Harris/estree-walker).
|
||||
|
||||
## Install
|
||||
|
||||
```bash
|
||||
npm i ast-walker-scope
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Basic Example
|
||||
|
||||
For a real example, you can refer to [example.ts](./example.ts)
|
||||
|
||||
```ts
|
||||
import { walk } from 'ast-walker-scope'
|
||||
|
||||
const code = `
|
||||
const a = 'root level'
|
||||
|
||||
{
|
||||
const a = 'second level'
|
||||
let secondLevel = true
|
||||
console.log(a, secondLevel)
|
||||
}
|
||||
|
||||
var err = undefined
|
||||
try {
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
}
|
||||
|
||||
console.log(a)
|
||||
`.trim()
|
||||
|
||||
walk(code, {
|
||||
leave(this, node) {
|
||||
if (node.type === 'CallExpression') {
|
||||
console.log(`\nLevel: ${this.level}`)
|
||||
for (const [name, node] of Object.entries(this.scope)) {
|
||||
console.log(
|
||||
`variable ${name} is located at line ${node.loc?.start.line}, column ${node.loc?.start.column}`,
|
||||
)
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```
|
||||
Level: 2
|
||||
variable a is located at line 4, column 8
|
||||
variable secondLevel is located at line 5, column 6
|
||||
|
||||
Level: 2
|
||||
variable a is located at line 1, column 6
|
||||
variable err is located at line 12, column 9
|
||||
|
||||
Level: 1
|
||||
variable a is located at line 1, column 6
|
||||
variable err is located at line 9, column 4
|
||||
```
|
||||
|
||||
## Typings
|
||||
|
||||
```ts
|
||||
export type Scope = Record<string, Node>
|
||||
export interface HookContext extends WalkerContext {
|
||||
// inherited from estree-walker
|
||||
skip: () => void
|
||||
remove: () => void
|
||||
replace: (node: Node) => void
|
||||
|
||||
// arguments of estree-walker hook
|
||||
parent: Node
|
||||
key: string
|
||||
index: number
|
||||
|
||||
// scope info
|
||||
scope: Scope
|
||||
scopes: Scope[]
|
||||
level: number
|
||||
}
|
||||
```
|
||||
|
||||
## Sponsors
|
||||
|
||||
<p align="center">
|
||||
<a href="https://cdn.jsdelivr.net/gh/sxzz/sponsors/sponsors.svg">
|
||||
<img src='https://cdn.jsdelivr.net/gh/sxzz/sponsors/sponsors.svg'/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
## Credits
|
||||
|
||||
- [@vue/reactivity-transform](https://github.com/vuejs/core/blob/v3.2.37/packages/reactivity-transform/src/reactivityTransform.ts) - almost copy-like referenced
|
||||
|
||||
## License
|
||||
|
||||
[MIT](./LICENSE) License © 2022-PRESENT [三咲智子](https://github.com/sxzz)
|
||||
|
||||
<!-- Badges -->
|
||||
|
||||
[npm-version-src]: https://img.shields.io/npm/v/ast-walker-scope.svg
|
||||
[npm-version-href]: https://npmjs.com/package/ast-walker-scope
|
||||
[npm-downloads-src]: https://img.shields.io/npm/dm/ast-walker-scope
|
||||
[npm-downloads-href]: https://www.npmcharts.com/compare/ast-walker-scope?interval=30
|
||||
[unit-test-src]: https://github.com/sxzz/ast-walker-scope/actions/workflows/unit-test.yml/badge.svg
|
||||
[unit-test-href]: https://github.com/sxzz/ast-walker-scope/actions/workflows/unit-test.yml
|
||||
Loading…
Add table
Add a link
Reference in a new issue