0.0.1 • Published 1 year ago

estree-safe-id v0.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

介绍

基于estree,生成一个唯一且安全的标识符名称

引用

import SafeIdGenerator from 'estree-safe-id'
// const SafeIdGenerator = window.SafeIdGenerator

用法

import acorn from 'acorn'
import SafeIdGenerator from 'estree-safe-id'
const script = `const a = 10; function fn() { console.log(1) }`
const retry = (old) => '$' + old

const generator = new SafeIdGenerator(acorn.parse(script, { esmaVersion: 'latest', sourceType: 'module' }), retry)
console.log(generator.generate('b')) // b
console.log(generator.generate('a')) // $a (a已经存在,generator会调用retry并将'a'传入以获取新的标识符名称)
// $console. console它在函数fn中使用,且在fn对应的函数作用域内没有声明console,对fn来说,console来自祖先级作用域(在这里是全局作用域)
// 在这种情况下,generator也会调用retry来获取新名称——generator不会生成一个可能被子级作用域所使用的标识符
console.log(generator.generate('console'))
console.log(generator.generate('const')) // $const