HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux wordpress-ubuntu-s-2vcpu-4gb-fra1-01 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64
User: root (0)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/linde-ai/html/node_modules/@babel/traverse/lib/scope/index.js.map
{"version":3,"names":["NOT_LOCAL_BINDING","callExpression","cloneNode","getBindingIdentifiers","identifier","isArrayExpression","isBinary","isClass","isClassBody","isClassDeclaration","isExportAllDeclaration","isExportDefaultDeclaration","isExportNamedDeclaration","isFunctionDeclaration","isIdentifier","isImportDeclaration","isLiteral","isMethod","isModuleDeclaration","isModuleSpecifier","isNullLiteral","isObjectExpression","isProperty","isPureish","isRegExpLiteral","isSuper","isTaggedTemplateExpression","isTemplateLiteral","isThisExpression","isUnaryExpression","isVariableDeclaration","matchesPattern","memberExpression","numericLiteral","toIdentifier","unaryExpression","variableDeclaration","variableDeclarator","isRecordExpression","isTupleExpression","isObjectProperty","isTopicReference","isMetaProperty","isPrivateName","gatherNodeParts","node","parts","type","source","specifiers","length","e","declaration","local","push","value","object","property","name","callee","properties","argument","key","left","id","expression","meta","openingElement","openingFragment","namespace","collectorVisitor","ForStatement","path","declar","get","isVar","scope","parentScope","getFunctionParent","getProgramParent","registerBinding","Declaration","isBlockScoped","isExportDeclaration","parent","registerDeclaration","ImportDeclaration","getBlockParent","ReferencedIdentifier","state","references","ForXStatement","isPattern","constantViolations","ExportDeclaration","exit","binding","getBinding","reference","decl","declarations","Object","keys","LabeledStatement","AssignmentExpression","assignments","UpdateExpression","UnaryExpression","operator","BlockScoped","bindings","CatchClause","Function","params","param","isFunctionExpression","has","ClassExpression","uid","Scope","constructor","block","labels","inited","globals","uids","data","crawling","cached","scopeCache","set","Map","shouldSkip","listKey","parentPath","isScope","parentBlock","hub","traverse","opts","generateDeclaredUidIdentifier","generateUidIdentifier","generateUid","replace","i","_generateUid","hasLabel","hasBinding","hasGlobal","hasReference","program","generateUidBasedOnNode","defaultName","join","slice","generateUidIdentifierBasedOnNode","isStatic","constant","maybeGenerateMemoised","dontPush","checkBlockScopedCollisions","kind","duplicate","buildError","TypeError","rename","oldName","newName","Renamer","_renameFromMap","map","dump","sep","repeat","console","log","violations","toArray","arrayLikeIsIterable","isGenericType","helperName","args","unshift","addHelper","getLabel","registerLabel","label","isLabeledStatement","declare","specifier","buildUndefinedNode","registerConstantViolation","ids","reassign","bindingPath","ReferenceError","declarators","getOuterBindingIdentifiers","getOwnBinding","Binding","addGlobal","hasUid","isPure","constantsOnly","superClass","decorators","body","method","right","elem","elements","prop","computed","static","tag","quasi","expressions","setData","val","getData","removeData","init","crawl","create","programParent","_exploded","visit","enter","typeVisitors","ref","getPatternParent","isBlockStatement","isProgram","isSwitchStatement","isLoop","isCatchClause","isFunction","ensureBlock","unique","blockHoist","_blockHoist","dataKey","declarPath","unshiftContainer","declarator","len","Error","isFunctionParent","isBlockParent","getAllBindings","getAllBindingsOfKind","kinds","bindingIdentifierEquals","getBindingIdentifier","previousPath","isArrowFunctionExpression","getOwnBindingIdentifier","hasOwnBinding","noGlobals","parentHasBinding","includes","contextVariables","moveBindingTo","info","removeOwnBinding","removeBinding","builtin"],"sources":["../../src/scope/index.ts"],"sourcesContent":["import Renamer from \"./lib/renamer\";\nimport type NodePath from \"../path\";\nimport traverse from \"../index\";\nimport type { TraverseOptions } from \"../index\";\nimport Binding from \"./binding\";\nimport type { BindingKind } from \"./binding\";\nimport globals from \"globals\";\nimport {\n  NOT_LOCAL_BINDING,\n  callExpression,\n  cloneNode,\n  getBindingIdentifiers,\n  identifier,\n  isArrayExpression,\n  isBinary,\n  isClass,\n  isClassBody,\n  isClassDeclaration,\n  isExportAllDeclaration,\n  isExportDefaultDeclaration,\n  isExportNamedDeclaration,\n  isFunctionDeclaration,\n  isIdentifier,\n  isImportDeclaration,\n  isLiteral,\n  isMethod,\n  isModuleDeclaration,\n  isModuleSpecifier,\n  isNullLiteral,\n  isObjectExpression,\n  isProperty,\n  isPureish,\n  isRegExpLiteral,\n  isSuper,\n  isTaggedTemplateExpression,\n  isTemplateLiteral,\n  isThisExpression,\n  isUnaryExpression,\n  isVariableDeclaration,\n  matchesPattern,\n  memberExpression,\n  numericLiteral,\n  toIdentifier,\n  unaryExpression,\n  variableDeclaration,\n  variableDeclarator,\n  isRecordExpression,\n  isTupleExpression,\n  isObjectProperty,\n  isTopicReference,\n  isMetaProperty,\n  isPrivateName,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport { scope as scopeCache } from \"../cache\";\nimport type { Visitor } from \"../types\";\n\ntype NodePart = string | number | boolean;\n// Recursively gathers the identifying names of a node.\nfunction gatherNodeParts(node: t.Node, parts: NodePart[]) {\n  switch (node?.type) {\n    default:\n      if (isModuleDeclaration(node)) {\n        if (\n          (isExportAllDeclaration(node) ||\n            isExportNamedDeclaration(node) ||\n            isImportDeclaration(node)) &&\n          node.source\n        ) {\n          gatherNodeParts(node.source, parts);\n        } else if (\n          (isExportNamedDeclaration(node) || isImportDeclaration(node)) &&\n          node.specifiers &&\n          node.specifiers.length\n        ) {\n          for (const e of node.specifiers) gatherNodeParts(e, parts);\n        } else if (\n          (isExportDefaultDeclaration(node) ||\n            isExportNamedDeclaration(node)) &&\n          node.declaration\n        ) {\n          gatherNodeParts(node.declaration, parts);\n        }\n      } else if (isModuleSpecifier(node)) {\n        // todo(flow->ts): should condition instead be:\n        //    ```\n        //    t.isExportSpecifier(node) ||\n        //    t.isImportDefaultSpecifier(node) ||\n        //    t.isImportNamespaceSpecifier(node) ||\n        //    t.isImportSpecifier(node)\n        //    ```\n        //    allowing only nodes with `.local`?\n        // @ts-expect-error todo(flow->ts)\n        gatherNodeParts(node.local, parts);\n      } else if (\n        isLiteral(node) &&\n        !isNullLiteral(node) &&\n        !isRegExpLiteral(node) &&\n        !isTemplateLiteral(node)\n      ) {\n        parts.push(node.value);\n      }\n      break;\n\n    case \"MemberExpression\":\n    case \"OptionalMemberExpression\":\n    case \"JSXMemberExpression\":\n      gatherNodeParts(node.object, parts);\n      gatherNodeParts(node.property, parts);\n      break;\n\n    case \"Identifier\":\n    case \"JSXIdentifier\":\n      parts.push(node.name);\n      break;\n\n    case \"CallExpression\":\n    case \"OptionalCallExpression\":\n    case \"NewExpression\":\n      gatherNodeParts(node.callee, parts);\n      break;\n\n    case \"ObjectExpression\":\n    case \"ObjectPattern\":\n      for (const e of node.properties) {\n        gatherNodeParts(e, parts);\n      }\n      break;\n\n    case \"SpreadElement\":\n    case \"RestElement\":\n      gatherNodeParts(node.argument, parts);\n      break;\n\n    case \"ObjectProperty\":\n    case \"ObjectMethod\":\n    case \"ClassProperty\":\n    case \"ClassMethod\":\n    case \"ClassPrivateProperty\":\n    case \"ClassPrivateMethod\":\n      gatherNodeParts(node.key, parts);\n      break;\n\n    case \"ThisExpression\":\n      parts.push(\"this\");\n      break;\n\n    case \"Super\":\n      parts.push(\"super\");\n      break;\n\n    case \"Import\":\n      parts.push(\"import\");\n      break;\n\n    case \"DoExpression\":\n      parts.push(\"do\");\n      break;\n\n    case \"YieldExpression\":\n      parts.push(\"yield\");\n      gatherNodeParts(node.argument, parts);\n      break;\n\n    case \"AwaitExpression\":\n      parts.push(\"await\");\n      gatherNodeParts(node.argument, parts);\n      break;\n\n    case \"AssignmentExpression\":\n      gatherNodeParts(node.left, parts);\n      break;\n\n    case \"VariableDeclarator\":\n      gatherNodeParts(node.id, parts);\n      break;\n\n    case \"FunctionExpression\":\n    case \"FunctionDeclaration\":\n    case \"ClassExpression\":\n    case \"ClassDeclaration\":\n      gatherNodeParts(node.id, parts);\n      break;\n\n    case \"PrivateName\":\n      gatherNodeParts(node.id, parts);\n      break;\n\n    case \"ParenthesizedExpression\":\n      gatherNodeParts(node.expression, parts);\n      break;\n\n    case \"UnaryExpression\":\n    case \"UpdateExpression\":\n      gatherNodeParts(node.argument, parts);\n      break;\n\n    case \"MetaProperty\":\n      gatherNodeParts(node.meta, parts);\n      gatherNodeParts(node.property, parts);\n      break;\n\n    case \"JSXElement\":\n      gatherNodeParts(node.openingElement, parts);\n      break;\n\n    case \"JSXOpeningElement\":\n      gatherNodeParts(node.name, parts);\n      break;\n\n    case \"JSXFragment\":\n      gatherNodeParts(node.openingFragment, parts);\n      break;\n\n    case \"JSXOpeningFragment\":\n      parts.push(\"Fragment\");\n      break;\n\n    case \"JSXNamespacedName\":\n      gatherNodeParts(node.namespace, parts);\n      gatherNodeParts(node.name, parts);\n      break;\n  }\n}\n\n//\ninterface CollectVisitorState {\n  assignments: NodePath<t.AssignmentExpression>[];\n  references: NodePath<t.Identifier | t.JSXIdentifier>[];\n  constantViolations: NodePath[];\n}\n\nconst collectorVisitor: Visitor<CollectVisitorState> = {\n  ForStatement(path) {\n    const declar = path.get(\"init\");\n    // delegate block scope handling to the `BlockScoped` method\n    if (declar.isVar()) {\n      const { scope } = path;\n      const parentScope = scope.getFunctionParent() || scope.getProgramParent();\n      parentScope.registerBinding(\"var\", declar);\n    }\n  },\n\n  Declaration(path) {\n    // delegate block scope handling to the `BlockScoped` method\n    if (path.isBlockScoped()) return;\n\n    // delegate import handing to the `ImportDeclaration` method\n    if (path.isImportDeclaration()) return;\n\n    // this will be hit again once we traverse into it after this iteration\n    if (path.isExportDeclaration()) return;\n\n    // we've ran into a declaration!\n    const parent =\n      path.scope.getFunctionParent() || path.scope.getProgramParent();\n    parent.registerDeclaration(path);\n  },\n\n  ImportDeclaration(path) {\n    // import may only appear in the top level or inside a module/namespace (for TS/flow)\n    const parent = path.scope.getBlockParent();\n\n    parent.registerDeclaration(path);\n  },\n\n  ReferencedIdentifier(path, state) {\n    state.references.push(path);\n  },\n\n  ForXStatement(path, state) {\n    const left = path.get(\"left\");\n    if (left.isPattern() || left.isIdentifier()) {\n      state.constantViolations.push(path);\n    }\n    // delegate block scope handling to the `BlockScoped` method\n    else if (left.isVar()) {\n      const { scope } = path;\n      const parentScope = scope.getFunctionParent() || scope.getProgramParent();\n      parentScope.registerBinding(\"var\", left);\n    }\n  },\n\n  ExportDeclaration: {\n    exit(path) {\n      const { node, scope } = path;\n      // ExportAllDeclaration does not have `declaration`\n      if (isExportAllDeclaration(node)) return;\n      const declar = node.declaration;\n      if (isClassDeclaration(declar) || isFunctionDeclaration(declar)) {\n        const id = declar.id;\n        if (!id) return;\n\n        const binding = scope.getBinding(id.name);\n        binding?.reference(path);\n      } else if (isVariableDeclaration(declar)) {\n        for (const decl of declar.declarations) {\n          for (const name of Object.keys(getBindingIdentifiers(decl))) {\n            const binding = scope.getBinding(name);\n            binding?.reference(path);\n          }\n        }\n      }\n    },\n  },\n\n  LabeledStatement(path) {\n    path.scope.getBlockParent().registerDeclaration(path);\n  },\n\n  AssignmentExpression(path, state) {\n    state.assignments.push(path);\n  },\n\n  UpdateExpression(path, state) {\n    state.constantViolations.push(path);\n  },\n\n  UnaryExpression(path, state) {\n    if (path.node.operator === \"delete\") {\n      state.constantViolations.push(path);\n    }\n  },\n\n  BlockScoped(path) {\n    let scope = path.scope;\n    if (scope.path === path) scope = scope.parent;\n\n    const parent = scope.getBlockParent();\n    parent.registerDeclaration(path);\n\n    // Register class identifier in class' scope if this is a class declaration.\n    if (path.isClassDeclaration() && path.node.id) {\n      const id = path.node.id;\n      const name = id.name;\n\n      path.scope.bindings[name] = path.scope.parent.getBinding(name);\n    }\n  },\n\n  CatchClause(path) {\n    path.scope.registerBinding(\"let\", path);\n  },\n\n  Function(path) {\n    const params: Array<NodePath> = path.get(\"params\");\n    for (const param of params) {\n      path.scope.registerBinding(\"param\", param);\n    }\n\n    // Register function expression id after params. When the id\n    // collides with a function param, the id effectively can't be\n    // referenced: here we registered it as a constantViolation\n    if (\n      path.isFunctionExpression() &&\n      path.has(\"id\") &&\n      // @ts-expect-error Fixme: document symbol ast properties\n      !path.get(\"id\").node[NOT_LOCAL_BINDING]\n    ) {\n      path.scope.registerBinding(\"local\", path.get(\"id\"), path);\n    }\n  },\n\n  ClassExpression(path) {\n    if (\n      path.has(\"id\") &&\n      // @ts-expect-error Fixme: document symbol ast properties\n      !path.get(\"id\").node[NOT_LOCAL_BINDING]\n    ) {\n      path.scope.registerBinding(\"local\", path);\n    }\n  },\n};\n\nlet uid = 0;\n\nexport type { Binding };\n\nexport default class Scope {\n  uid;\n\n  path: NodePath;\n  block: t.Pattern | t.Scopable;\n\n  labels;\n  inited;\n\n  bindings: { [name: string]: Binding };\n  references: { [name: string]: true };\n  globals: { [name: string]: t.Identifier | t.JSXIdentifier };\n  uids: { [name: string]: boolean };\n  data: { [key: string | symbol]: unknown };\n  crawling: boolean;\n\n  /**\n   * This searches the current \"scope\" and collects all references/bindings\n   * within.\n   */\n  constructor(path: NodePath<t.Pattern | t.Scopable>) {\n    const { node } = path;\n    const cached = scopeCache.get(node);\n    // Sometimes, a scopable path is placed higher in the AST tree.\n    // In these cases, have to create a new Scope.\n    if (cached?.path === path) {\n      return cached;\n    }\n    scopeCache.set(node, this);\n\n    this.uid = uid++;\n\n    this.block = node;\n    this.path = path;\n\n    this.labels = new Map();\n    this.inited = false;\n  }\n\n  /**\n   * Globals.\n   */\n\n  static globals = Object.keys(globals.builtin);\n\n  /**\n   * Variables available in current context.\n   */\n\n  static contextVariables = [\"arguments\", \"undefined\", \"Infinity\", \"NaN\"];\n\n  get parent() {\n    let parent,\n      path = this.path;\n    do {\n      // Skip method scope if coming from inside computed key or decorator expression\n      const shouldSkip = path.key === \"key\" || path.listKey === \"decorators\";\n      path = path.parentPath;\n      if (shouldSkip && path.isMethod()) path = path.parentPath;\n      if (path && path.isScope()) parent = path;\n    } while (path && !parent);\n\n    return parent?.scope;\n  }\n\n  get parentBlock() {\n    return this.path.parent;\n  }\n\n  get hub() {\n    return this.path.hub;\n  }\n\n  traverse<S>(\n    node: t.Node | t.Node[],\n    opts: TraverseOptions<S>,\n    state: S,\n  ): void;\n  traverse(node: t.Node | t.Node[], opts?: TraverseOptions, state?: any): void;\n  /**\n   * Traverse node with current scope and path.\n   */\n  traverse<S>(node: any, opts: any, state?: S) {\n    traverse(node, opts, this, state, this.path);\n  }\n\n  /**\n   * Generate a unique identifier and add it to the current scope.\n   */\n\n  generateDeclaredUidIdentifier(name?: string) {\n    const id = this.generateUidIdentifier(name);\n    this.push({ id });\n    return cloneNode(id);\n  }\n\n  /**\n   * Generate a unique identifier.\n   */\n\n  generateUidIdentifier(name?: string) {\n    return identifier(this.generateUid(name));\n  }\n\n  /**\n   * Generate a unique `_id1` binding.\n   */\n\n  generateUid(name: string = \"temp\"): string {\n    name = toIdentifier(name)\n      .replace(/^_+/, \"\")\n      .replace(/[0-9]+$/g, \"\");\n\n    let uid;\n    let i = 1;\n    do {\n      uid = this._generateUid(name, i);\n      i++;\n    } while (\n      this.hasLabel(uid) ||\n      this.hasBinding(uid) ||\n      this.hasGlobal(uid) ||\n      this.hasReference(uid)\n    );\n\n    const program = this.getProgramParent();\n    program.references[uid] = true;\n    program.uids[uid] = true;\n\n    return uid;\n  }\n\n  /**\n   * Generate an `_id1`.\n   */\n\n  _generateUid(name: string, i: number) {\n    let id = name;\n    if (i > 1) id += i;\n    return `_${id}`;\n  }\n\n  generateUidBasedOnNode(node: t.Node, defaultName?: string) {\n    const parts: NodePart[] = [];\n    gatherNodeParts(node, parts);\n\n    let id = parts.join(\"$\");\n    id = id.replace(/^_/, \"\") || defaultName || \"ref\";\n\n    return this.generateUid(id.slice(0, 20));\n  }\n\n  /**\n   * Generate a unique identifier based on a node.\n   */\n\n  generateUidIdentifierBasedOnNode(node: t.Node, defaultName?: string) {\n    return identifier(this.generateUidBasedOnNode(node, defaultName));\n  }\n\n  /**\n   * Determine whether evaluating the specific input `node` is a consequenceless reference. ie.\n   * evaluating it wont result in potentially arbitrary code from being ran. The following are\n   * allowed and determined not to cause side effects:\n   *\n   *  - `this` expressions\n   *  - `super` expressions\n   *  - Bound identifiers\n   */\n\n  isStatic(node: t.Node): boolean {\n    if (isThisExpression(node) || isSuper(node) || isTopicReference(node)) {\n      return true;\n    }\n\n    if (isIdentifier(node)) {\n      const binding = this.getBinding(node.name);\n      if (binding) {\n        return binding.constant;\n      } else {\n        return this.hasBinding(node.name);\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Possibly generate a memoised identifier if it is not static and has consequences.\n   */\n\n  maybeGenerateMemoised(node: t.Node, dontPush?: boolean) {\n    if (this.isStatic(node)) {\n      return null;\n    } else {\n      const id = this.generateUidIdentifierBasedOnNode(node);\n      if (!dontPush) {\n        this.push({ id });\n        return cloneNode(id);\n      }\n      return id;\n    }\n  }\n\n  checkBlockScopedCollisions(\n    local: Binding,\n    kind: BindingKind,\n    name: string,\n    id: any,\n  ) {\n    // ignore parameters\n    if (kind === \"param\") return;\n\n    // Ignore existing binding if it's the name of the current function or\n    // class expression\n    if (local.kind === \"local\") return;\n\n    const duplicate =\n      // don't allow duplicate bindings to exist alongside\n      kind === \"let\" ||\n      local.kind === \"let\" ||\n      local.kind === \"const\" ||\n      local.kind === \"module\" ||\n      // don't allow a local of param with a kind of let\n      (local.kind === \"param\" && kind === \"const\");\n\n    if (duplicate) {\n      throw this.hub.buildError(\n        id,\n        `Duplicate declaration \"${name}\"`,\n        TypeError,\n      );\n    }\n  }\n\n  rename(oldName: string, newName?: string, block?: t.Pattern | t.Scopable) {\n    const binding = this.getBinding(oldName);\n    if (binding) {\n      newName = newName || this.generateUidIdentifier(oldName).name;\n      return new Renamer(binding, oldName, newName).rename(block);\n    }\n  }\n\n  /** @deprecated Not used in our codebase */\n  _renameFromMap(\n    map: Record<string | symbol, unknown>,\n    oldName: string | symbol,\n    newName: string | symbol,\n    value: unknown,\n  ) {\n    if (map[oldName]) {\n      map[newName] = value;\n      map[oldName] = null;\n    }\n  }\n\n  dump() {\n    const sep = \"-\".repeat(60);\n    console.log(sep);\n    let scope: Scope = this;\n    do {\n      console.log(\"#\", scope.block.type);\n      for (const name of Object.keys(scope.bindings)) {\n        const binding = scope.bindings[name];\n        console.log(\" -\", name, {\n          constant: binding.constant,\n          references: binding.references,\n          violations: binding.constantViolations.length,\n          kind: binding.kind,\n        });\n      }\n    } while ((scope = scope.parent));\n    console.log(sep);\n  }\n\n  // TODO: (Babel 8) Split i in two parameters, and use an object of flags\n  toArray(\n    node: t.Node,\n    i?: number | boolean,\n    arrayLikeIsIterable?: boolean | void,\n  ) {\n    if (isIdentifier(node)) {\n      const binding = this.getBinding(node.name);\n      if (binding?.constant && binding.path.isGenericType(\"Array\")) {\n        return node;\n      }\n    }\n\n    if (isArrayExpression(node)) {\n      return node;\n    }\n\n    if (isIdentifier(node, { name: \"arguments\" })) {\n      return callExpression(\n        memberExpression(\n          memberExpression(\n            memberExpression(identifier(\"Array\"), identifier(\"prototype\")),\n            identifier(\"slice\"),\n          ),\n          identifier(\"call\"),\n        ),\n        [node],\n      );\n    }\n\n    let helperName;\n    const args = [node];\n    if (i === true) {\n      // Used in array-spread to create an array.\n      helperName = \"toConsumableArray\";\n    } else if (i) {\n      args.push(numericLiteral(i));\n\n      // Used in array-rest to create an array from a subset of an iterable.\n      helperName = \"slicedToArray\";\n      // TODO if (this.hub.isLoose(\"es6.forOf\")) helperName += \"-loose\";\n    } else {\n      // Used in array-rest to create an array\n      helperName = \"toArray\";\n    }\n\n    if (arrayLikeIsIterable) {\n      args.unshift(this.hub.addHelper(helperName));\n      helperName = \"maybeArrayLike\";\n    }\n\n    // @ts-expect-error todo(flow->ts): t.Node is not valid to use in args, function argument typeneeds to be clarified\n    return callExpression(this.hub.addHelper(helperName), args);\n  }\n\n  hasLabel(name: string) {\n    return !!this.getLabel(name);\n  }\n\n  getLabel(name: string) {\n    return this.labels.get(name);\n  }\n\n  registerLabel(path: NodePath<t.LabeledStatement>) {\n    this.labels.set(path.node.label.name, path);\n  }\n\n  registerDeclaration(path: NodePath) {\n    if (path.isLabeledStatement()) {\n      this.registerLabel(path);\n    } else if (path.isFunctionDeclaration()) {\n      this.registerBinding(\"hoisted\", path.get(\"id\"), path);\n    } else if (path.isVariableDeclaration()) {\n      const declarations = path.get(\"declarations\");\n      for (const declar of declarations) {\n        this.registerBinding(path.node.kind, declar);\n      }\n    } else if (path.isClassDeclaration()) {\n      if (path.node.declare) return;\n      this.registerBinding(\"let\", path);\n    } else if (path.isImportDeclaration()) {\n      const specifiers = path.get(\"specifiers\");\n      for (const specifier of specifiers) {\n        this.registerBinding(\"module\", specifier);\n      }\n    } else if (path.isExportDeclaration()) {\n      // todo: improve babel-types\n      const declar = path.get(\"declaration\") as NodePath;\n      if (\n        declar.isClassDeclaration() ||\n        declar.isFunctionDeclaration() ||\n        declar.isVariableDeclaration()\n      ) {\n        this.registerDeclaration(declar);\n      }\n    } else {\n      this.registerBinding(\"unknown\", path);\n    }\n  }\n\n  buildUndefinedNode() {\n    return unaryExpression(\"void\", numericLiteral(0), true);\n  }\n\n  registerConstantViolation(path: NodePath) {\n    const ids = path.getBindingIdentifiers();\n    for (const name of Object.keys(ids)) {\n      const binding = this.getBinding(name);\n      if (binding) binding.reassign(path);\n    }\n  }\n\n  registerBinding(\n    kind: Binding[\"kind\"],\n    path: NodePath,\n    bindingPath: NodePath = path,\n  ) {\n    if (!kind) throw new ReferenceError(\"no `kind`\");\n\n    if (path.isVariableDeclaration()) {\n      const declarators: Array<NodePath> = path.get(\"declarations\");\n      for (const declar of declarators) {\n        this.registerBinding(kind, declar);\n      }\n      return;\n    }\n\n    const parent = this.getProgramParent();\n    const ids = path.getOuterBindingIdentifiers(true);\n\n    for (const name of Object.keys(ids)) {\n      parent.references[name] = true;\n\n      for (const id of ids[name]) {\n        const local = this.getOwnBinding(name);\n\n        if (local) {\n          // same identifier so continue safely as we're likely trying to register it\n          // multiple times\n          if (local.identifier === id) continue;\n\n          this.checkBlockScopedCollisions(local, kind, name, id);\n        }\n\n        // A redeclaration of an existing variable is a modification\n        if (local) {\n          this.registerConstantViolation(bindingPath);\n        } else {\n          this.bindings[name] = new Binding({\n            identifier: id,\n            scope: this,\n            path: bindingPath,\n            kind: kind,\n          });\n        }\n      }\n    }\n  }\n\n  addGlobal(node: t.Identifier | t.JSXIdentifier) {\n    this.globals[node.name] = node;\n  }\n\n  hasUid(name: string): boolean {\n    let scope: Scope = this;\n\n    do {\n      if (scope.uids[name]) return true;\n    } while ((scope = scope.parent));\n\n    return false;\n  }\n\n  hasGlobal(name: string): boolean {\n    let scope: Scope = this;\n\n    do {\n      if (scope.globals[name]) return true;\n    } while ((scope = scope.parent));\n\n    return false;\n  }\n\n  hasReference(name: string): boolean {\n    return !!this.getProgramParent().references[name];\n  }\n\n  isPure(node: t.Node, constantsOnly?: boolean): boolean {\n    if (isIdentifier(node)) {\n      const binding = this.getBinding(node.name);\n      if (!binding) return false;\n      if (constantsOnly) return binding.constant;\n      return true;\n    } else if (\n      isThisExpression(node) ||\n      isMetaProperty(node) ||\n      isTopicReference(node) ||\n      isPrivateName(node)\n    ) {\n      return true;\n    } else if (isClass(node)) {\n      if (node.superClass && !this.isPure(node.superClass, constantsOnly)) {\n        return false;\n      }\n      if (node.decorators?.length > 0) {\n        return false;\n      }\n      return this.isPure(node.body, constantsOnly);\n    } else if (isClassBody(node)) {\n      for (const method of node.body) {\n        if (!this.isPure(method, constantsOnly)) return false;\n      }\n      return true;\n    } else if (isBinary(node)) {\n      return (\n        this.isPure(node.left, constantsOnly) &&\n        this.isPure(node.right, constantsOnly)\n      );\n    } else if (isArrayExpression(node) || isTupleExpression(node)) {\n      for (const elem of node.elements) {\n        if (elem !== null && !this.isPure(elem, constantsOnly)) return false;\n      }\n      return true;\n    } else if (isObjectExpression(node) || isRecordExpression(node)) {\n      for (const prop of node.properties) {\n        if (!this.isPure(prop, constantsOnly)) return false;\n      }\n      return true;\n    } else if (isMethod(node)) {\n      if (node.computed && !this.isPure(node.key, constantsOnly)) return false;\n      if (node.decorators?.length > 0) {\n        return false;\n      }\n      return true;\n    } else if (isProperty(node)) {\n      // @ts-expect-error todo(flow->ts): computed in not present on private properties\n      if (node.computed && !this.isPure(node.key, constantsOnly)) return false;\n      if (node.decorators?.length > 0) {\n        return false;\n      }\n      if (isObjectProperty(node) || node.static) {\n        if (node.value !== null && !this.isPure(node.value, constantsOnly)) {\n          return false;\n        }\n      }\n      return true;\n    } else if (isUnaryExpression(node)) {\n      return this.isPure(node.argument, constantsOnly);\n    } else if (isTaggedTemplateExpression(node)) {\n      return (\n        matchesPattern(node.tag, \"String.raw\") &&\n        !this.hasBinding(\"String\", true) &&\n        this.isPure(node.quasi, constantsOnly)\n      );\n    } else if (isTemplateLiteral(node)) {\n      for (const expression of node.expressions) {\n        if (!this.isPure(expression, constantsOnly)) return false;\n      }\n      return true;\n    } else {\n      return isPureish(node);\n    }\n  }\n\n  /**\n   * Set some arbitrary data on the current scope.\n   */\n\n  setData(key: string | symbol, val: any) {\n    return (this.data[key] = val);\n  }\n\n  /**\n   * Recursively walk up scope tree looking for the data `key`.\n   */\n\n  getData(key: string | symbol): any {\n    let scope: Scope = this;\n    do {\n      const data = scope.data[key];\n      if (data != null) return data;\n    } while ((scope = scope.parent));\n  }\n\n  /**\n   * Recursively walk up scope tree looking for the data `key` and if it exists,\n   * remove it.\n   */\n\n  removeData(key: string) {\n    let scope: Scope = this;\n    do {\n      const data = scope.data[key];\n      if (data != null) scope.data[key] = null;\n    } while ((scope = scope.parent));\n  }\n\n  init() {\n    if (!this.inited) {\n      this.inited = true;\n      this.crawl();\n    }\n  }\n\n  crawl() {\n    const path = this.path;\n\n    this.references = Object.create(null);\n    this.bindings = Object.create(null);\n    this.globals = Object.create(null);\n    this.uids = Object.create(null);\n    this.data = Object.create(null);\n\n    const programParent = this.getProgramParent();\n    if (programParent.crawling) return;\n\n    const state: CollectVisitorState = {\n      references: [],\n      constantViolations: [],\n      assignments: [],\n    };\n\n    this.crawling = true;\n    // traverse does not visit the root node, here we explicitly collect\n    // root node binding info when the root is not a Program.\n    if (path.type !== \"Program\" && collectorVisitor._exploded) {\n      // @ts-expect-error when collectorVisitor is exploded, `enter` always exists\n      for (const visit of collectorVisitor.enter) {\n        visit(path, state);\n      }\n      const typeVisitors = collectorVisitor[path.type];\n      if (typeVisitors) {\n        // @ts-expect-error when collectorVisitor is exploded, `enter` always exists\n        for (const visit of typeVisitors.enter) {\n          visit(path, state);\n        }\n      }\n    }\n    path.traverse(collectorVisitor, state);\n    this.crawling = false;\n\n    // register assignments\n    for (const path of state.assignments) {\n      // register undeclared bindings as globals\n      const ids = path.getBindingIdentifiers();\n      for (const name of Object.keys(ids)) {\n        if (path.scope.getBinding(name)) continue;\n        programParent.addGlobal(ids[name]);\n      }\n\n      // register as constant violation\n      path.scope.registerConstantViolation(path);\n    }\n\n    // register references\n    for (const ref of state.references) {\n      const binding = ref.scope.getBinding(ref.node.name);\n      if (binding) {\n        binding.reference(ref);\n      } else {\n        programParent.addGlobal(ref.node);\n      }\n    }\n\n    // register constant violations\n    for (const path of state.constantViolations) {\n      path.scope.registerConstantViolation(path);\n    }\n  }\n\n  push(opts: {\n    id: t.LVal;\n    init?: t.Expression;\n    unique?: boolean;\n    _blockHoist?: number | undefined;\n    kind?: \"var\" | \"let\" | \"const\";\n  }) {\n    let path = this.path;\n\n    if (path.isPattern()) {\n      path = this.getPatternParent().path;\n    } else if (!path.isBlockStatement() && !path.isProgram()) {\n      path = this.getBlockParent().path;\n    }\n\n    if (path.isSwitchStatement()) {\n      path = (this.getFunctionParent() || this.getProgramParent()).path;\n    }\n\n    if (path.isLoop() || path.isCatchClause() || path.isFunction()) {\n      // @ts-expect-error TS can not infer NodePath<Loop> | NodePath<CatchClause> as NodePath<Loop | CatchClause>\n      path.ensureBlock();\n      // @ts-expect-error todo(flow->ts): improve types\n      path = path.get(\"body\");\n    }\n\n    const unique = opts.unique;\n    const kind = opts.kind || \"var\";\n    const blockHoist = opts._blockHoist == null ? 2 : opts._blockHoist;\n\n    const dataKey = `declaration:${kind}:${blockHoist}`;\n    let declarPath = !unique && path.getData(dataKey);\n\n    if (!declarPath) {\n      const declar = variableDeclaration(kind, []);\n      // @ts-expect-error todo(flow->ts): avoid modifying nodes\n      declar._blockHoist = blockHoist;\n\n      [declarPath] = (path as NodePath<t.BlockStatement>).unshiftContainer(\n        \"body\",\n        [declar],\n      );\n      if (!unique) path.setData(dataKey, declarPath);\n    }\n\n    const declarator = variableDeclarator(opts.id, opts.init);\n    const len = declarPath.node.declarations.push(declarator);\n    path.scope.registerBinding(kind, declarPath.get(\"declarations\")[len - 1]);\n  }\n\n  /**\n   * Walk up to the top of the scope tree and get the `Program`.\n   */\n\n  getProgramParent() {\n    let scope: Scope = this;\n    do {\n      if (scope.path.isProgram()) {\n        return scope;\n      }\n    } while ((scope = scope.parent));\n    throw new Error(\"Couldn't find a Program\");\n  }\n\n  /**\n   * Walk up the scope tree until we hit either a Function or return null.\n   */\n\n  getFunctionParent(): Scope | null {\n    let scope: Scope = this;\n    do {\n      if (scope.path.isFunctionParent()) {\n        return scope;\n      }\n    } while ((scope = scope.parent));\n    return null;\n  }\n\n  /**\n   * Walk up the scope tree until we hit either a BlockStatement/Loop/Program/Function/Switch or reach the\n   * very top and hit Program.\n   */\n\n  getBlockParent() {\n    let scope: Scope = this;\n    do {\n      if (scope.path.isBlockParent()) {\n        return scope;\n      }\n    } while ((scope = scope.parent));\n    throw new Error(\n      \"We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...\",\n    );\n  }\n\n  /**\n   * Walk up from a pattern scope (function param initializer) until we hit a non-pattern scope,\n   * then returns its block parent\n   * @returns An ancestry scope whose path is a block parent\n   */\n  getPatternParent() {\n    let scope: Scope = this;\n    do {\n      if (!scope.path.isPattern()) {\n        return scope.getBlockParent();\n      }\n    } while ((scope = scope.parent.parent));\n    throw new Error(\n      \"We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...\",\n    );\n  }\n\n  /**\n   * Walks the scope tree and gathers **all** bindings.\n   */\n\n  getAllBindings(): Record<string, Binding> {\n    const ids = Object.create(null);\n\n    let scope: Scope = this;\n    do {\n      for (const key of Object.keys(scope.bindings)) {\n        if (key in ids === false) {\n          ids[key] = scope.bindings[key];\n        }\n      }\n      scope = scope.parent;\n    } while (scope);\n\n    return ids;\n  }\n\n  /**\n   * Walks the scope tree and gathers all declarations of `kind`.\n   */\n\n  getAllBindingsOfKind(...kinds: string[]): Record<string, Binding> {\n    const ids = Object.create(null);\n\n    for (const kind of kinds) {\n      let scope: Scope = this;\n      do {\n        for (const name of Object.keys(scope.bindings)) {\n          const binding = scope.bindings[name];\n          if (binding.kind === kind) ids[name] = binding;\n        }\n        scope = scope.parent;\n      } while (scope);\n    }\n\n    return ids;\n  }\n\n  bindingIdentifierEquals(name: string, node: t.Node): boolean {\n    return this.getBindingIdentifier(name) === node;\n  }\n\n  getBinding(name: string): Binding | undefined {\n    let scope: Scope = this;\n    let previousPath;\n\n    do {\n      const binding = scope.getOwnBinding(name);\n      if (binding) {\n        // Check if a pattern is a part of parameter expressions.\n        // Note: for performance reason we skip checking previousPath.parentPath.isFunction()\n        // because `scope.path` is validated as scope in packages/babel-types/src/validators/isScope.js\n        // That is, if a scope path is pattern, its parent must be Function/CatchClause\n\n        // Spec 9.2.10.28: The closure created by this expression should not have visibility of\n        // declarations in the function body. If the binding is not a `param`-kind (as function parameters)\n        // or `local`-kind (as id in function expression),\n        // then it must be defined inside the function body, thus it should be skipped\n        if (\n          previousPath?.isPattern() &&\n          binding.kind !== \"param\" &&\n          binding.kind !== \"local\"\n        ) {\n          // do nothing\n        } else {\n          return binding;\n        }\n      } else if (\n        !binding &&\n        name === \"arguments\" &&\n        scope.path.isFunction() &&\n        !scope.path.isArrowFunctionExpression()\n      ) {\n        break;\n      }\n      previousPath = scope.path;\n    } while ((scope = scope.parent));\n  }\n\n  getOwnBinding(name: string): Binding | undefined {\n    return this.bindings[name];\n  }\n\n  // todo: return probably can be undefined…\n  getBindingIdentifier(name: string): t.Identifier {\n    return this.getBinding(name)?.identifier;\n  }\n\n  // todo: flow->ts return probably can be undefined\n  getOwnBindingIdentifier(name: string): t.Identifier {\n    const binding = this.bindings[name];\n    return binding?.identifier;\n  }\n\n  hasOwnBinding(name: string) {\n    return !!this.getOwnBinding(name);\n  }\n\n  hasBinding(name: string, noGlobals?: boolean) {\n    if (!name) return false;\n    if (this.hasOwnBinding(name)) return true;\n    if (this.parentHasBinding(name, noGlobals)) return true;\n    if (this.hasUid(name)) return true;\n    if (!noGlobals && Scope.globals.includes(name)) return true;\n    if (!noGlobals && Scope.contextVariables.includes(name)) return true;\n    return false;\n  }\n\n  parentHasBinding(name: string, noGlobals?: boolean) {\n    return this.parent?.hasBinding(name, noGlobals);\n  }\n\n  /**\n   * Move a binding of `name` to another `scope`.\n   */\n\n  moveBindingTo(name: string, scope: Scope) {\n    const info = this.getBinding(name);\n    if (info) {\n      info.scope.removeOwnBinding(name);\n      info.scope = scope;\n      scope.bindings[name] = info;\n    }\n  }\n\n  removeOwnBinding(name: string) {\n    delete this.bindings[name];\n  }\n\n  removeBinding(name: string) {\n    // clear literal binding\n    this.getBinding(name)?.scope.removeOwnBinding(name);\n\n    // clear uids with this name - https://github.com/babel/babel/issues/2101\n    let scope: Scope = this;\n    do {\n      if (scope.uids[name]) {\n        scope.uids[name] = false;\n      }\n    } while ((scope = scope.parent));\n  }\n}\n"],"mappings":"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"}