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
| Parameter | Type |
|---|---|
name | string |
Returns
createChunkSource()
createChunkSource(requestId): DevToolsChunkSource | undefined;
Defined in: v2/endpoint.ts:87
为一次已成功的 files.download 开一个字节来源。
Parameters
| Parameter | Type | Description |
|---|---|---|
requestId | string | 触发这次下载的 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
| Parameter | Type |
|---|---|
domain | "database" | "files" | "settings" |
Returns
Remarks
不返回 undefined:领域不可用由 provider 自己答 provider_unavailable,
「领域缺席」则在授权层就以 provider_unsupported 拦下,两者不能混成一个空值。