dd -wasm -js -重写器
原生 AST 重写基于 快速网络编译器 o SWC 编译器 用于仪器Javascript源文件.
工作流程
- 解析 Javascript 代码以获取 AST
- 替换某些 AST 表达式 - > 目前它集中于某些操作者,例如:
+财务报告和审定财务报表+=,模板文字和一些字符串方法 - 从修改的 AST 生成新的 Javascript 代码 - > 除了Javascript代码之外,相应的源图在必要时会用原始源图将其与链接回.
使用量
const Rewriter = require('@datadog/wasm-js-rewriter')
const rewriter = new Rewriter(rewriterConfig)
const result = rewriter.rewrite(code, filename)
配置选项
RewriterConfig {
// enable/disable sourceMap chaining - false by default
chainSourceMap?: boolean
// enable/disable comments printing - false by default
comments?: boolean
// establishes the prefix for the injected local variables - 6 random characters by default
localVarPrefix?: string
// sets the list of methods or operators to be rewritten
csiMethods?: Array<CsiMethod>
// extracts hardcoded string literals - true by default
literals?: boolean
}
CsiMethod {
// name of the String method to rewrite
src: string
// optional name of the replacement method. If not specified a convention shall be used
dst?: string
// indicates if it is an operator like +
operator?: boolean
}
示例
const Rewriter = require('@datadog/wasm-js-rewriter')
const rewriterConfig = {
csiMethods: [{ src: 'substring' }],
localVarPrefix: 'test',
}
const rewriter = new Rewriter(rewriterConfig)
const code = `function sub(a) {
return a.substring(1)
}`
const result = rewriter.rewrite(code, filename)
console.log(result.content)
/*
function sub(a) {
let __datadog_test_0, __datadog_test_1;
return (__datadog_test_0 = a, __datadog_test_1 = __datadog_test_0.substring, _ddiast.stringSubstring(__datadog_test_1.call(__datadog_test_0, 1), __datadog_test_1, __datadog_test_0, 1));
}
*/
本地设置
要在当地设置工程,请安装 cargo 财务报告和审定财务报表 wasm-pack数字 :
$ curl https://sh.rustup.rs -sSf | sh
$ cargo install wasm-pack
和项目依赖关系:
$ npm install
构建
以
$ npm run build
它默认会编译 WASM 二进制 然后就可以用
$ npm t