跳到正文
豫言包管理
← 全部包

浏览器宿主 0.1.0

豫言 · 库

浏览器宿主能力的豫言封装。

浏览器宿主库

广播频道。豫 提供 BroadcastChannel 的创建、名称、结构化值和字节发送、事件读取及关闭。宿主把 message、messageerror 送入豫言事件队列,豫言决定收到消息后的逻辑。真实 Chrome 已验页面内两个豫言频道双向通信、00 FF 41 字节传递,以及页面和 Dedicated Worker 各运行豫言 Wasm 的跨上下文通信。复杂结构化克隆、跨标签页和 messageerror 仍待验,详 广播频道接口.清单.tsv 与 HTML 广播频道规范。

空闲回调。豫 把 Window 的 requestIdleCallback、cancelIdleCallback 接入豫言事件队列。豫言可选择无期限或带 timeout 毫秒的请求;宿主在原生回调内立即读取 IdleDeadline.didTimeout 和 timeRemaining(),投递 {名称:"空闲",空闲号,标记,已超时,剩余毫秒}。真实 Chrome 已验两种请求和取消。空闲时刻由浏览器决定,限时请求可能在期限前触发;Safari 缺少原生接口时会明确报错。详 定时接口.清单.tsv 与 W3C 后台任务规范。

动画帧。豫 把 Window 和有页面所有者的 Dedicated Worker 的 requestAnimationFrame、cancelAnimationFrame 接入统一豫言事件队列。宿主只投递帧号、豫言标记和原生时间戳,豫言决定绘制与下一帧请求;宿主结束时取消剩余请求。真实 Chrome 已分别验证页面与 Worker 的申请、取消和事件送达;Worker 内的豫言 Wasm 也验了一次定时器取消、两次周期事件及另一次性事件。详 定时接口.清单.tsv 与 HTML 动画帧标准。

工作线程。豫 现支持从豫言创建 module 或 classic Worker,发送 JSON 兼容值与转移列表,并终止 Worker。宿主在构造时立即安装 message、messageerror、error 监听,把消息送入统一事件队列;因此 Worker 立刻发送的 ready 消息也不会在豫言订阅前丢失。相对网址以应用构建目录解析。工作线程自动启动.mjs 是构建器固定复制的外壳,可在 Dedicated Worker 内加载另一份豫言 Wasm;该豫言程序用自身句柄订阅主线程消息,用 浏览器工作线程向主线程发值 回信。真实 Chrome 已验页面和 Worker 两侧都是豫言 Wasm,完成 ready、回显和终止;复杂结构化克隆与转移列表待验。若两侧使用不同豫言程序,可分别构建到页面目录及 Worker 子目录,页面创建指向子目录外壳的 Worker,见 工作线程接口.清单.tsv。

事件。豫 的订阅选项可预声明 键盘阻止默认 规则数组。每条规则须有 key,可选 ctrlKey、metaKey、altKey、shiftKey 布尔条件;未指定的修饰键不参与匹配。宿主在原生键盘回调中同步匹配并执行 preventDefault(),随后把键、代码、修饰键、重复和输入法组字状态投递给豫言。真实 Chrome 已验无 Ctrl/Meta 的 Tab 被阻止默认,输入框焦点保留;其他组合待验。豫言可用已有定时器为编译阶段和运行阶段分别设超时。

真实 Chrome 还验了 Worker 的 MessagePort 与 ArrayBuffer 同次转移:页面豫言 Wasm 发送 00 FF 41,发送后原缓冲区 byteLength 为 0,Worker 豫言 Wasm 读回 3 字节和原值,并经转入端口回复。具名 Worker 在内部读回名称,也在回信后调用 close();同源缺失脚本的 error 事件送达页面豫言。messageerror、反向转移和关闭竞态待验。Worker 消息中的对象句柄可由 浏览器工作线程事件数据字段句柄 从事件 JSON 读取。接口依据见 HTML Worker 标准。

流式编码。豫 提供 TextEncoderStream、TextDecoderStream 的构造、属性和读写端句柄;流。豫 新增文字写器及安全文字读取入口。真实 Chrome 已验证“甲”“乙”两段写入生成六字节 UTF-8、拆开的汉字和 BOM 被正确组合;坏 UTF-8 在严格模式返回 TypeError,非严格模式产出替换字符。详 流式编码接口.清单.tsv 与 Encoding 标准。

网络。豫 的可取消请求先返回在途 Promise 句柄,豫言可中止其 AbortSignal,再调用 浏览器请求候回应安全 取得 Response 句柄或错误;浏览器回应文字安全 读取正文。真实 Chrome 已验证同源 HTTP 200、在途 AbortError、预先中止的自定理由和无效等待句柄。详 网络中断接口.清单.tsv 与 Fetch 标准。

中断。豫 让豫言创建 AbortController、取得信号、传入文字或对象理由、检查 throwIfAborted(),并使用 AbortSignal.abort()、any()、timeout() 及异步等待 abort 事件。真实 Chrome 已验证上述行为;timeout(-1) 安全返回 RangeError。详 中断接口.清单.tsv 和 DOM 中断标准。

网址。豫 提供返回成功标记与文本的 encodeURI、encodeURIComponent、decodeURI、decodeURIComponent;句柄。豫 的 浏览器调用全局安全 将同步异常和 Promise 拒绝转为错误 JSON。真实 Chrome 已验证坏 %、非法 UTF-8 和无效 URL 的错误结果,详 网址编解码接口.清单.tsv 与 ECMAScript URI 函数。

事件。豫 可创建 EventTarget/Event、发送事件、登记 capture/once/passive/AbortSignal 等监听选项,并读取事件状态。同目标同名可通过 浏览器事件订阅多 登记多个监听器,再按订阅号单独撤销。豫言预先决定是否阻止默认动作或传播;宿主在原生回调中同步执行,并保存 target、currentTarget、composedPath、eventPhase 等快照供豫言稍后处理。真实 Chrome 已验证捕获顺序、一次监听、信号撤听、多监听器、被动监听不取消默认及同步止同处;其他边界待验,详 事件接口.清单.tsv 与 DOM 标准。

表单数据。豫 把 FormData 的空构造、表格与提交按钮构造、文字和文件字段修改、查询与有序枚举交给豫言;文件项用句柄保存原字。真实 Chrome 已验证 00 FF 41 经 Request multipart 往返。详 表单数据接口.清单.tsv 和 XMLHttpRequest 标准。

表单的 formdata 事件可订阅并从豫言事件队列取得,FormDataEvent 也可由豫言创建。原生事件同步完成;队列处理无法追改已经发生的提交。要让豫言决定提交正文,应先用 浏览器表单拦截提交 登记阻止默认动作,再从队列取 SubmitEvent.submitter,由豫言调用 浏览器表单从表格、修改字段并发起请求。真实 Chrome 已验证此流程及 multipart 解析。HTML 表单提交标准给出事件顺序。

物字与文件。豫 为 Blob/File 提供字节和组合构造、元数据、切片、原生 arrayBuffer()/bytes()、text()、stream() 和安全 textStream();流。豫 可逐块读文字。真实 Chrome 已验 00 FF 41 无损往返、Blob+UTF-8 文本组合、负索引切片及 File 名称、MIME 和修改时;textStream() 读回“甲”。文件读取。豫 提供 FileReader 四种读取方式、状态与事件队列,以及 file input 的 FileList 数量和逐项 File 句柄;真实 Chrome 已验二进制保真、loadstart/load/loadend/abort、程序注入 FileList 和越界。真实用户选择文件及错误事件待验,详 物字文件接口.清单.tsv、文件读取接口.清单.tsv。W3C File API列出规范语义。

流。豫 现有通用 WritableStream writer:取得写器、查询锁和队列容量、等待 ready/closed、发起字节写入及关闭并领取 Promise 句柄,豫言可先读下游再等待操作结果。真实 Chrome 以 gzip 流验证两块在途写入、关闭、读取和 00 FF 41 无损解压;有效写器 abort() 后锁解除、无效句柄安全返回也已验。满载背压与可读侧错误传播待验,详 可写流接口.清单.tsv。Streams 标准定义写器状态与背压。

压缩流。豫 提供 CompressionStream、DecompressionStream 的构造及读写端句柄,也提供短字节安全转换。真实 Chrome 已验 gzip、deflate、deflate-raw 对 00 FF 41 的压缩解压往返;豫言主动写两块字节,经 浏览器流接转换 的压缩与解压管道后亦读回原字。坏 gzip 和无效格式返回失败与 UTF-8 错误字节。一次转换会在宿主内缓冲全部输出,大流应使用读写端;满载背压和取消仍待验。Brotli 是否可用依浏览器原生支持,见 压缩流接口.清单.tsv 和 Compression 标准。

定时。豫 提供 浏览器定时一次、浏览器定时重复、浏览器取消定时。到期时宿主只投递 {名称:"定时",定时号,种类,标记,时刻} 到豫言事件队列;同一周期器尚有未交付事件时合并后续触发,取消会移除未交付事件,宿主结束时清理定时器。每个宿主同时最多有 64 个活动定时器。真实 Chrome 已验三次周期事件、取消和一次事件。业务可用 60000 毫秒订阅周期刷新,并在 等待浏览器事件 中决定何时请求数据。浏览器可能延迟后台页定时器,不能把间隔当成精确时钟;见 定时接口.清单.tsv。HTML 定时器规范说明时序。

事件源。豫 接入浏览器 EventSource 的 URL、withCredentials、自定义事件、状态和关闭。真实 Chrome 从带 CORS 标头的本地 SSE 服务收到 notice、数据“甲”和事件号 7,由豫言关闭。普通 message、错误、自动重连及凭据模式待验,详 事件源接口.清单.tsv。HTML EventSource 规范为接口依据。

消息通道。豫 提供 MessageChannel 的端口创建、JSON 兼容值与原始字节发送、转移列表、消息等待及关闭。真实 Chrome 已验证 JSON 值、转移字节缓冲区、00 FF 41 无损往返,以及转入端口后继续通信。创建时宿主会安装监听并启动端口;豫言通过 JSPI 等待消息。完整的结构化克隆类型与跨 Worker 转移尚待验,见 消息通道接口.清单.tsv。HTML 消息端口规范为接口依据。

套接字。豫 将 WebSocket 的 open、message、close、error 事件送入豫言事件队列。文字消息直接传文,二进制消息用临时字节句柄;浏览器套接字事件字节 无损取出并释放该句柄。真实 Chrome 与本地 workerd 的双豫言 Wasm 完成文字、“00 FF 41”二进制往返和正常关闭,详 套接字接口.清单.tsv。

浏览器套接字连接 接受豫言给出的协议数组;浏览器套接字协议 读取服务端选中的协议。真实 Chrome 提议 yuyan.v1、backup.v1,本地 Worker 豫言程序选中 yuyan.v1,浏览器确认后完成文字往返。

对 Durable Object 的本地验收也提议 yuyan.do.v1、backup.v1,读回对象豫言程序选择的 yuyan.do.v1,随后自动回复、附件状态和正常关闭流程均通过。

浏览器请求文字安全 返回 (是否取得响应, JSON 响应或错误文字);HTTP 404 仍是取得响应,连接拒绝返回失败。Chrome 中的豫言 Wasm 已验证两种情况后仍可继续运行,详 网络请求接口.清单.tsv。

浏览器请求JSON安全(方法, 网址, 正文) 支持 POST、PUT、PATCH,显式设置 Content-Type: application/json; charset=utf-8,结果结构与安全文本请求相同。真实 Chrome 的豫言 Wasm 向本地回显服务 POST,回显确认标头和正文;同页原 浏览器请求文字安全 GET 回显没有该标头。账户接口可使用此入口提交 JSON。

索引库。豫 另提供四种原生键范围、includes、边界属性和有上限的游标快照。宿主在 IndexedDB 请求成功回调内执行 cursor.continue(),因此不会在事务自动提交后尝试推进。真实 Chrome 已验证对象仓逆序游标和索引键游标;动态游标操作仍待实现。W3C IndexedDB列出方向与键范围语义。

索引库。豫 以数据库句柄接入 IndexedDB。浏览器索引库打开 的 JSON 方案在 upgradeneeded 中同步建立对象仓和索引;浏览器索引库事务 接收豫言预列的操作数组,在同一个活动事务中排队,并在提交后返回 JSON 结果。浏览器索引库事务安全 使豫言收到成功标志或错误文字。真实 Chrome 已验证基本往返和重复键导致的整事务回滚。IndexedDB 会在事务离开可提交请求的时机后自动提交,跨其他异步事件动态追加请求仍需另一种协议;接口依据见 W3C IndexedDB,逐项边界见 索引库接口.清单.tsv。

导航与饼。豫 提供 浏览器读取饼安全、浏览器写饼安全、浏览器历史改态安全,在 SecurityError 时返回未获准状态。既有 浏览器读取饼 以空字符串继续,写入和 History 改态也继续,使旧版已编译豫言应用在受限文档中仍可切换页面语言。仅这几种权限拒绝会被转换;其他异常继续报告。旧版 Wasm 的 JSDOM 沙箱与新接口测试均通过,正常浏览器路径在 Chrome 通过,详 导航接口.清单.tsv。

储存。豫 现按“本地”或“会话”选择 localStorage、sessionStorage,提供读取、写入、删除、清空、序键和计数;读取结果用布尔值区分缺失与空字符串。原有 读取浏览器储存、写入浏览器储存 仍可调用。浏览器订阅储存变化 接收其他同源文档更新后的 storage 事件,事件队列保留区域、键、旧值、新值和网址。Chrome 中两个豫言 Wasm 页面经 iframe 验证了跨文档通知,逐项限制见 储存接口.清单.tsv。

公开操作。豫 提供页面调用豫言的通用协议:豫言注册命名空间和方法,页面调用返回 Promise;宿主把方法、参数及调用号送入豫言事件队列,豫言按调用号完成或拒绝。自动启动.mjs 另导出 就绪、完成 和 宿主;就绪 在豫言开始等待事件后解析。真实 Chrome 已验对象返回、拒绝、两个并发调用逆序回复、程序退出清理,以及既有自动启动与跳过条件。公开方法最多允许 1024 个在途调用。当前 Wasm 应用只导出 _start,因此这个协议不能提供 window.豫言界面.译() 一类同步返回值;调用方须等待 Promise,或待编译器支持额外的豫言同步导出。详 公开操作接口.清单.tsv。

饼仓。豫 现提供 Cookie Store 标准的异步 get、getAll、set、delete 和 change 事件订阅;真实 Chrome 已验证写入、读回、枚举、删除及事件。History 回退和前进也已在 Chrome 分别触发 popstate,豫言读回对应 URL 与 state。MutationObserver 回调中的记录句柄现可在豫言读取类型、目标及新增节点;takeRecords 已验回调后的空队列。其余选项与边界见 饼仓接口.清单.tsv、导航接口.清单.tsv 和 文树观察接口.清单.tsv。

官网共享界面所需的 导航与饼。豫 已提供 document.cookie 读写、当前 URL、Location 导航与 History 状态操作;文树观察。豫 提供 MutationObserver 事件队列接入和 TreeWalker 文本节点遍历。真实 Chrome 已验 Cookie 往返、History 的 pushState/replaceState、文树变动回调与文本节点遍历。完整方法和未验边界见 导航接口.清单.tsv、文树观察接口.清单.tsv;自动启动模块由构建器打包,页面只需加载模块。

密钥生命周期接口现支持生成可选导出性的 AES-GCM 密钥并导出原始字节,以及 PBKDF2、HKDF 的 deriveBits 和派生 AES-GCM 密钥。真实 Chrome 已验证生成、导出、重新导入、PBKDF2/HKDF 派生结果与 AES 加解密互通。测试使用低迭代次数仅为验收,应用须根据自身安全要求选择参数。

密码。豫 提供随机 UUID、随机字节、摘要、AES-GCM 与 HMAC 的具名豫言接口。密钥保留在浏览器宿主,以句柄传给豫言;AES-GCM 的随机数必须由调用方保证在同一密钥下不重复。真实 Chrome 已验 SHA-256 对 abc 的摘要长度与首字节、AES-GCM 含附加认证数据的加解密往返和 HMAC 正反验签。完整 Web Crypto 方法及其他算法仍在 密码接口.清单.tsv 中标为待补或部分,范围依据 W3C Web Cryptography Level 2。

本库把豫言 WasmGC 程序接到浏览器。应用在豫言中调用 核心。豫 的具名能力;宿主.mjs 只执行 DOM、事件、请求和储存操作。事件按 JSON 交给豫言,由豫言决定后续操作。

构建器须将豫言应用编译为 WasmGC,并提供值桥 Wasm(按 库/编译器核心/编译步骤/代码生成/回收值桥接。豫 的结构化表示写出,yy双宿主构建 自动生成)。外层 JS 调用 创建浏览器宿主({程序模块, 值桥模块})。豫言入口可循环调用 等待浏览器事件;JSPI 在等待期间让出浏览器事件循环。

当前能力:点击、输入、变更、表单提交事件;按标识设置文字与属性、读取输入;文字 HTTP 请求;本地储存;不透明对象句柄、二进制值交换及可读流的逐块读写。构建器已能生成装载外壳。DOM 接入尚未包含所有 Web IDL 接口;新增能力仍需独立的豫言声明、宿主适配及行为验证。

网址。豫 提供 URL 与 URLSearchParams 的具名豫言接口,包括活动 searchParams、重复查询参数、相对 URL、静态解析和对象 URL。真实 Chrome 已加载构建出的外层 JS 与豫言 Wasm,显示“网址操作通过”;逐项状态见 网址接口.清单.tsv。原生回调及部分边界仍需继续验收。

页面可直接引用 自动启动.mjs?标识=应用根;只有该 DOM id 存在时才加载 Wasm,省略查询参数时直接启动。它与 入口.mjs 一起由双宿主构建器复制,调用 JS 无需由应用另写。真实 Chrome 已验证启动与跳过两种路径。

文树。豫 现可取得宿主实际使用的 Document 根句柄,再由豫言创建、查询、插入、移除和修改节点;NodeList 可转换为不透明句柄列表。真实 Chrome 已验证一轮 DOM 创建与删除,逐项状态见 文树接口.清单.tsv。

类名与样式。豫 让豫言操作活动 classList 与内联 CSSStyleDeclaration,真实 Chrome 的 Wasm 往返测试已通过;逐项验证状态见 类名样式接口.清单.tsv。

浏览器订阅并阻止默认 由豫言预先登记目标句柄和事件名。宿主在非 passive 的原生回调中同步调用 preventDefault(),随后仍将事件送入豫言队列;浏览器取消订阅事件 可撤销该监听器。真实 Chrome 已验证普通 GET 表单提交被取消,页面保持原址。当前策略按目标和事件种类预先决定,尚不能在异步收到每个事件后再决定是否取消同一事件的默认动作。

依赖

查看包配置

上传历史

当前上传修订:1 ·

  1. 上传修订 1
    下载 ZIP

包层级

父包:共用库

没有子包。