This repository has been archived on 2026-04-03. You can view files and clone it, but cannot push or open issues or pull requests.
nyx/node_modules/ast-walker-scope
Nico e2667f8e12 Initial nyx project — fork of hermes-frontend
Forked from hermes-frontend, stripped openclaw/bun specifics:
- Auth tokens: openclaw_session -> nyx_session
- Vite proxy: localhost:3003 -> localhost:8000 (assay)
- Prod WS: wss://assay.loop42.de/ws
- Workspace paths: removed openclaw-specific paths
- Added missing deps: @heroicons/vue, overlayscrollbars-vue
- Branding: title -> nyx

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 20:23:27 +02:00
..

ast-walker-scope

npm version npm downloads Unit Test

Traverse Babel AST with scope information.

Inherited from estree-walker.

Install

npm i ast-walker-scope

Usage

Basic Example

For a real example, you can refer to example.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

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

Credits

License

MIT License © 2022-PRESENT 三咲智子