MetadataReader
MetadataReader<
T> = (asset,ctx) =>Promise<T|null>
Defined in: packages/schema/src/plugin.ts:113
元数据读取函数(依赖反转)。
某些 Plugin 能力本质是“元数据查询”而非“资产变换”(如 EXIF 读取: Blob → ExifData),既不符合 Engine 层 Blob↔Blob 纯函数约束,也不符合 CapabilityImplementation 的 Asset[]→Asset[] 契约。这类能力通过 MetadataReader 注册:Plugin 提供读取函数,Runtime 持有引用并按名调用。
与 registerCapability 的区别:
- registerCapability:注册变换能力(Asset→Asset),走 WorkflowExecutor
- registerMetadataReader:注册查询函数(Asset→T),走 Runtime 直接调用
优点(相对 Capability execute + data Asset 序列化方案):
- 无需创建临时 data Asset(避免手动 removeAsset 清理 / 泄漏)
- 无 JSON marshal/unmarshal 开销
- 类型直接透传(ExifData),无需序列化
Type Parameters
Section titled “Type Parameters”T = unknown
Parameters
Section titled “Parameters”输入资产
读取上下文(提供 log 可观测信号;TD-3.4 长期方案)
Returns
Section titled “Returns”Promise<T | null>
读取结果;无数据 / 解析失败返回 null