@endo/evasive-transform

中文文档
2.3.1发布于 2026/08/18Apache-2.0TypeScriptES Module近 30 天下载 4.1万

源代码转换以逃避SES审查

中文使用文档
文档目录4 节
  1. 使用量
  2. 选项
  3. 示例
  4. 许可证

@ endo/ 回避- 转换

逃避审查的源变化 用户- 辅助应用程序

这个软件包提供了一个功能,可以转换源代码,否则会被SES彻底拒绝. 变相是有意义的保留.

它覆盖类似 HTML 注释和动态的序列 import 内 :

  • 评论
  • 字符串
  • 模板字符串(但没有标记模板字符串)
  • 正则表达式文字

并额外覆盖与代码本身内部的 HTML 注释相类似的序列(例如, if (a-->b)) (中文(简体) ).

使用量

选项

两者 evadeCensor 财务报告和审定财务报表 evadeCensorSync 接受源字符串为第一个参数,接受选项对象为第二个参数:

选项类型说明
sourceUrlstring源文件的 URL 或文件名 。 用于源地图生成和出错消息.
sourceMapstring | object可选的 现有的源图(作为JSON字符串或对象),要随变换的映射而更新.
sourceType'script' | 'module'可选的 指定来源是否为普通JS脚本('script')或ES模块('module') (中文(简体) ). 当提供时,它帮助解析器正确处理代码.
elideCommentsboolean可选的 若为 true,在保留新行的同时删除注释内容。 默认为 false。 。 。 .
onlyCommentsboolean可选的 若为 true,将变换限制为仅注释内容,使代码不变。 默认为 false。 。 。 .

示例

参见下文的例子,或参见第二个测试 包/组装-mapper/测试/逃避-转换.test.js 以显示其在车厢内的用途.

// ESM example
import { evadeCensor } from '@endo/evasive-transform';
import fs from 'node:fs/promises';

/**
 * Imagine this file contains a comment like `@property {import('foo').Bar} bar`. SES will refuse to run this code.
 */
const source = await fs.readFile('./dist/index.js', 'utf8');
const sourceMap = await fs.readFile('./dist/index.js.map', 'utf8');
const sourceUrl = 'index.js'; // assuming the source map references index.js
// sourceType can be "script" (CJS) or "module" (ESM)
const sourceType = 'script';

const { code, map } = await evadeCensor(source, {
  sourceMap,
  sourceUrl,
  // always provide a sourceType, if known!
  sourceType,
  elideComments: true,
  onlyComments: true,
});

/**
 * The resulting file will now contain `@property {IMPORT('foo').Bar} bar`, which SES will allow (and TypeScript no longer understands, but that should be fine for the use-case). 
 * 
 * Note that this could be avoided entirely by stripping comments during, say, a bundling phase.
 */
await fs.writeFile('./dist/index.ses.js', code);
await fs.writeFile('./dist/index.ses.js.map', JSON.stringify(map));

许可证

阿帕奇 - 2.0

版本与发布记录

@endo/evasive-transform 共发布 24 个版本,首次发布于 2023/10/27;过去 12 个月发布了 4 个版本。

版本发布日期距今
2.3.1latest2026/08/182 个月前
2.3.02026/06/125 个月前
2.2.02026/05/285 个月前
2.1.02026/02/278 个月前
2.0.22025/07/121.3 年前
2.0.12025/06/181.4 年前

关于 @endo/evasive-transform 的常见问题

@endo/evasive-transform 是什么?

源代码转换以逃避SES审查

如何安装 @endo/evasive-transform?

在项目目录运行 npm install @endo/evasive-transform,或使用 pnpm add / yarn add / bun add。

@endo/evasive-transform 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@endo/evasive-transform 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@endo/evasive-transform 可以商用吗?

@endo/evasive-transform 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@endo/evasive-transform 的下载量有多少?

根据 npm 官方下载统计,@endo/evasive-transform 在 2026/10/14 – 2026/11/12 这 30 天内被下载 40,801 次,日均约 1,360 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@endo/evasive-transform 还在维护吗?

最新版本 2.3.1 发布于 2026/08/18(2 个月前);至今共发布 24 个版本,其中过去 12 个月发布了 4 个;首次发布于 2023/10/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。