静态模块记录
这个包提供了一个shimp for the StaticModuleRecord 合适的构造器
用于与SES shim importHook。 。 。 .
静态模块记录接受JavaScript模块并将其转换为
用于安全模拟 JavaScript 模块(ESM mjs
文件格式),有区块.
import 'ses';
import { StaticModuleRecord } from '@endo/static-module-record`;
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 StaticModuleRecord(moduleText, moduleLocation);
},
});
原始地图
这个 StaticModuleRecord 是我们最终希望称为本地人
ModuleSource 建筑师.
然而,在没有土著的情况下 ModuleSource,生成一个
可串行对象,模拟行为 ModuleSource 组合
与 Compartment 来自 ses。 。 。 .
执行过程中泄露的细节是 构造器重写
来源,来自无害环境管理 [[Module]] 语法构建为 a [[Program]]
适合与隔间封闭评价员进行限制的建筑.
这种转变试图无侵扰性,但目前会导致一些对齐 由于(希望是暂时的)对基本代码的限制而作的修改 发电机. 在过渡期间,生成出一个源地图可以有所帮助.
这个 StaticModuleRecord 构造器接受非标准轨道
sourceMapHook 财务报告和审定财务报表 sourceMapUrl 选项.
以前,唯一的选择是 string 参数 sourceUrl,这样
将它附在生成的来源后.
此更改允许新旧用法 :
new StaticModuleRecord(source, sourceUrl);
// or
new StaticModuleRecord(source, { sourceUrl, sourceMapUrl, sourceMapHook });
这个 sourceMapUrl 用于生成源地图.
URL 只会出现在生成的源图中, 因此完全合格
源地图 URL 是安全的, 如果生成了该地图, 则允许连续性
在同一主机上已调试 .
这一点很重要,因为远藤捕捉到预编译的静态模块记录
捆绑,不包括源地图,这样相对路径就无用.
这个 sourceMapHook 将会收到字符串源代码和细节包
包括:
sourcesourceUrlsourceMapUrl
这样接收器就可以将源图存储到某个地方作为副作用.
说明: sourceMapHook 同步并返回 void。 。 。 .
钩子抛出的特殊性会通过构造器传播出去. 若为
钩子返回一个承诺, 它将被丢弃, 拒绝将不被抓住.
如果钩子必须做合成工作,这些应该排成队,作为工作
等会再打电话.
错误披露
请帮助我们使用 指令在 警卫 私自报告安全隐患.
对于非安全错误,请使用 经常问题 页 次。 。 。 .