跳到主要内容

DevToolsProviderRegistry

Defined in: v2/endpoint.ts:59

端点访问 provider 的全部接缝。

Remarks​

只有三个成员,且都不带 host 概念:端点不认识 OPFS、SQLite 或 Rust 命令,它只知道 「按领域取一个 provider」「为一次传输开一个 sink」。真实 host 与 fake 在这里同形, conformance suite 才能对两者跑同一份断言。

Extended by​

Properties​

descriptors​

readonly descriptors: readonly DevToolsProviderDescriptor[];

Defined in: v2/endpoint.ts:61

本 session 存在的 provider 声明;顺序即 wire 上的顺序。

Methods​

createChunkSink()​

createChunkSink(name): DevToolsChunkSink;

Defined in: v2/endpoint.ts:71

为一次传输开一个分块落盘接收器;只有合法 COMPLETE 会 commit。

Parameters​

ParameterType
namestring

Returns​

DevToolsChunkSink


createChunkSource()​

createChunkSource(requestId): DevToolsChunkSource | undefined;

Defined in: v2/endpoint.ts:87

为一次已成功的 files.download 开一个字节来源。

Parameters​

ParameterTypeDescription
requestIdstring触发这次下载的 REQUEST ID。

Returns​

DevToolsChunkSource | undefined

要送上 wire 的字节来源,或 undefined。

Remarks​

返回 undefined 的含义是字节已在源侧交付(浏览器 OPFS 由页面自己保存,见 browser/opfs-files-provider.ts 模块头第 2 条),而不是「这个 provider 不支持下载」—— 后者在 descriptor 的 operations 里就已经说清楚了,授权层会先一步拦下,轮不到这里表达。 两者共用一个空值会让「没接线」和「有意不流式」在端点看来完全一样。

用 requestId 而不是另铸一个 ID 作键:provider 认回「我刚答应下载的那个文件」唯一可靠的 依据就是那次调用本身,而 transferId 此刻还不存在(它由端点在本方法返回之后才铸造)。


provider()​

provider(domain): DevToolsProvider;

Defined in: v2/endpoint.ts:69

取某个领域的 provider。

Parameters​

ParameterType
domain"database" | "files" | "settings"

Returns​

DevToolsProvider

Remarks​

不返回 undefined:领域不可用由 provider 自己答 provider_unavailable, 「领域缺席」则在授权层就以 provider_unsupported 拦下,两者不能混成一个空值。