Skip to content

公开 API

@dopejs/pingo 的导出即公开契约。内部包(@dopejs/pingo-host 等)不承诺稳定性, 迁移扫描器会阻止业务直接依赖它们。

快照即契约

公开面被固化在 benchmarks/api/facade.v1.d.ts 中,任何签名变化都必须显式更新该快照并经过审阅, pnpm api:check 在漂移时失败。

根与宿主

ts
createHostedCanvasRoot(canvas, options?): Promise<HostedCanvasRoot>
createCanvasRoot(context, core, options?): DoperRoot   // 主线程 M1 路径
createWasmCore(width, height, input?): Promise<CoreClient>

HostedCanvasRoot 方法:

方法说明
render(node)提交一帧组件树
close()关闭 root、Worker 与 Core
mode实际传输路径:sab / post-message / main-thread
beginScroll / scrollBy / endScroll / cancelScroll直接操纵滚动
focusEditable / blurEditable激活或结束原生编辑会话
updateEditingGeometry手动提供 IME 几何(通常自动完成)
transportMetrics() / inputTransportMetrics()传输与背压快照

常用选项:onFrameonHostErroronEditTransactiononEventTransactiononSemanticsonNonPassiveRegionstransportrasterCacheaccessibilitynativeTextInputMode

元素与 JSX

ts
createElement(type, props, key?): DoperElement
Fragment

主机元素:containertextscrollvirtualListeditableText。 类型:CommonPropsContainerPropsTextPropsScrollPropsVirtualListPropsEditableTextPropsEditableInputModeColorEdgeInsetsNodeHandleRefDoperNodeFunctionComponent

JSX 运行时通过 @dopejs/pingo/jsx-runtime@dopejs/pingo/jsx-dev-runtime 提供。

响应式与 hooks

ts
(signal, computed, effect, batch, untracked);
(useState, useSignal, useMemo, useCallback, useRef, useEffect);

类型:SignalReadonlySignalRefObjectUnsubscribe

编辑

ts
TextEditingController;
useTextEditingController(options);

类型:EditTransactionEditingGeometryEditingSelectionNativeTextInputMode

Widgets

ts
TextField(props): DoperNode
TextArea(props): DoperNode

无障碍

ts
SemanticTreeMirror
getByRole(root, role, { name? }): HTMLElement
queryAllByRole(root, role, { name? }): HTMLElement[]

类型:SemanticNodeSemanticMirrorNodeSemanticTreeMirrorOptions

字体

ts
createFont(options): DoperFont
loadFont(source, options?): Promise<DoperFont>

支持 TTF / OTF / TTC / WOFF / WOFF2(WOFF2 解码器按需动态加载)。 类型:DoperFontSourceDoperFontOptionsDoperFontLoadOptionsDoperFontLoadErrorDoperFontLoadErrorCodeWoff2Decoder

发布与诊断

ts
ENGINE_VERSION: string
ENGINE_ABI_VERSION: number
engineIdentity(): { version, abiVersion }
verifyWasmIntegrity(bytes, manifest): Promise<void>

WasmIntegrityError 在自托管 WASM 与构建 manifest 不一致时抛出。见诊断

迁移边界

@dopejs/pingo-compat 是独立的边界包,提供 mountCompatPage 做按页面灰度与回退。 详见迁移指南

最后更新:

MIT 许可发布