模块来源
此套件提供了一个小马填充器 ModuleSource 合适的构造器
用于SES Shim的模块描述符.
模块源接受 JavaScript 模块并将其转换为
用于模拟和限制 JavaScript 模块(ESM
mjs 文件格式),有区块.
import 'ses';
import { ModuleSource } from '@endo/module-source';
const c1 = new Compartment({}, {}, {
name: "first compartment",
resolveHook: (moduleSpecifier, moduleReferrer) => {
return resolve(moduleSpecifier, moduleReferrer);
},
importHook: async moduleSpecifier => {
const moduleLocation = locate(moduleSpecifier);
const moduleText = await retrieve(moduleLocation);
return new ModuleSource(moduleText, moduleLocation);
},
});
原始地图
这个 ModuleSource 是我们最终希望称为本地人
ModuleSource 建筑师.
然而,在没有土著的情况下 ModuleSource,生成一个
可串行对象,模拟行为 ModuleSource 组合
与 Compartment 来自 ses。 。 。 .
执行过程中泄露的细节是 构造器重写
来源,来自无害环境管理 [[Module]] 语法构建为 a [[Program]]
适合与隔间封闭评价员进行限制的建筑.
这种转变试图无侵扰性,但目前会导致一些对齐 由于(希望是暂时的)对基本代码的限制而作的修改 发电机. 在过渡期间,生成出一个源地图可以有所帮助.
这个 ModuleSource 构造器接受非标准轨道
sourceMapHook 财务报告和审定财务报表 sourceMapUrl 选项.
以前,唯一的选择是 string 参数 sourceUrl,这样
将它附在生成的来源后.
此更改允许新旧用法 :
new ModuleSource(source, sourceUrl);
// or
new ModuleSource(source, { sourceUrl, sourceMapUrl, sourceMapHook });
这个 sourceMapUrl 用于生成源地图.
URL 只会出现在生成的源图中, 因此完全合格
源地图 URL 是安全的, 如果生成了该地图, 则允许连续性
在同一主机上已调试 .
这一点很重要,因为远藤捕捉到预编译的静态模块记录
捆绑,不包括源地图,这样相对路径就无用.
这个 sourceMapHook 将会收到字符串源代码和细节包
包括:
sourcesourceUrlsourceMapUrl
这样接收器就可以将源图存储到某个地方作为副作用.
说明: sourceMapHook 同步并返回 void。 。 。 .
钩子抛出的特殊性会通过构造器传播出去. 若为
钩子返回一个承诺, 它将被丢弃, 拒绝将不被抓住.
如果钩子必须做合成工作,这些应该排成队,作为工作
等会再打电话.
XS 具体备选案文
与 xs 条件, @endo/module-source 也不会把巴比勒和巴比勒
只要适应本地人 ModuleSource 到此显示的旧界面
软件包.
也就是说 XS本地人 bindings 将翻译为 imports, (中文(简体) ), exports, (中文(简体) ),
财务报告和审定财务报表 reexports 获取器.
这种形式的 ModuleSource 忽略所有选项.
通用JS- 特定变式
在默认/节点变量中 @endo/module-source页:1 CjsModuleSource
构造器为CommonJS模块提供了类似的接口. 它接受
与 ModuleSource 生成一个 CjsModuleSourceRecord 对象
包含分析数据加一个预建的真菌源字符串.
说明: xs 条件目前仅提供 ModuleSource· ;
CjsModuleSource 无法在 xs。 。 。 .
错误披露
请帮助我们使用 指令在 警卫 私自报告安全隐患.
对于非安全错误,请使用 经常问题 页 次。 。 。 .