@eraserlabs/resolve

中文文档
0.5.2发布于 2026/11/12MITTypeScriptES Module构建来源已验证近 30 天下载 1.1万

纯擦除器解析引擎

中文使用文档
文档目录6 节
  1. 导言
  2. 为什么
  3. 使用量
  4. 子集和同步解析
  5. 主题和内部油漆
  6. 图表标记

@ eraserlabs/ 解析

导言

@eraserlabs/resolve 将作者的图表文档转换成完全解析的元素数据。 它根据模板库验证标记,应用衍生的道具规范化器,对文本进行消毒,内含图标,并发出分割 { entities, connections } 有效载荷 @eraserlabs/render。没有自己的服务器、文件系统或网络:呼叫者注入图标加载和类似的I/O.

它拥有作者输入语法. 文档是一个对象信封—— 也可以 { elements } 或分割 { entities, connections } 需要两个键。 拒绝一个赤裸的JSON阵列(E_ENVELOPE) 被授权类型脚本形状(AuthoredEntity, (中文(简体) ), AuthoredConnection, (中文(简体) ), DiagramInput从此包中导出; @eraserlabs/protocol 拥有已解决的合同.

所有被写入的维度在解析过程中被四舍五入到最近的整数:每个元素的 x编号 :y编号 :width编号 :height,每个连接方式 points,则 labelPlacement 框中输入。 布局引擎在整数网格上工作,因此分数坐标(从app输出出浮出尘来或被测量出来回行走)是被能动化而不是被携带.

为什么

分辨率必须在节点运行,在CLI运行,在浏览器游乐场运行,结果相同. 将它与铬或一个框架相接会迫使每个消费者接受这种依赖。 失败的图书库或模板检查 createResolver,所以没有解析器存在于引擎尚未证明可以运行的词汇上.

使用量

import { createResolver } from '@eraserlabs/resolve';
import { stockLibrary } from '@eraserlabs/diagram-templates';
import { stockNormalizers } from '@eraserlabs/diagram-templates/normalizers';

const resolver = await createResolver({
  library: stockLibrary,
  normalizers: stockNormalizers,
});

const result = await resolver.resolve({
  entities: [
    { tag: 'Shape', id: 'a', x: 0, y: 0 },
    { tag: 'Shape', id: 'b', x: 200, y: 0 },
  ],
  connections: [{ from: 'a', to: 'b' }],
});

createResolver 编译了一次库. resolve 返回时 { ok, entities, connections, icons, warnings, errors }· ; validate 运行同一管道而不内置图标字节。 供应 iconLoader 以名称获取 SVG; onUnknownIcon 实值 'placeholder' 或者说 'error'。装入的SVG通过一个允许列表 sanitizer,通过浏览器的HTML规则来解析:静态绘图元素和仅本地引用. 任何其它的都拒绝这个图标,它就落在下面 onUnknownIcon,但编辑器元数据除外(Inkscape/Sodipodi, <metadata>,额外命名空间声明),过滤效果,以及许可列表外的样式属性,这些属性被删除.

可移植文件、组件、字体和模拟合同 @eraserlabs/protocol。兼容性再出口保持在 @eraserlabs/resolve/schema。组件作者在 计算机化.md。 。 。 .

子集和同步解析

resolve(input, { partial: true }) 财务报告和审定财务报表 validate(input, { partial: true }) 允许引用省略元素。 Schema出错,重复的ID,包括错误的目标,封存周期仍然是出错. 默认呼叫严格;部分结果不会提供缺失的路由几何.

resolveForLayout(input, options?) 返回与占位符图标同步,而不加载图标或检查其存在。 所有其他解决阶段都是共同的。 它支持在模板给出真实和占位符图标相同界限时在资产加载前进行测量.

主题和内部油漆

过 { theme: 'dark' } 用于任何一种解析方法。 调色板的外观和常态器首先运行,然后每个被宣布的图案颜色会一次被改变,包括巢色和内色. 授权输入保持不变 。 渲染器自动应用由此产生的主题元数据;改变主题需要再次解析原始输入.

常态器计算出光-空涂. 宣布2003年新的内部产出 library.renderProps,比如说. renderProps: { Card: { fillColor: CssColor } }。这些授权模板绑定和规范化后的内容/颜色政策,而无需在撰写计划中出现。 在正常化前,对已提交的内部田地进行警告并剥离。 名称不能与作者字段相重叠; 派生颜色使用 CssColor没有 PaletteColor。规范化器本身具有结构有效性;使声明不适用默认或重复全面计划验证.

自定义 CSS 需要主题意识默认; 股票 CSS 提供 --er-text, (中文(简体) ), --er-surface, (中文(简体) ), --er-line,以及代码/语法符号。 固定颜色的艺术品没有变化. currentColor 保留继承; 使用混凝土颜色来保存锡的转换.

图表标记

块文本支持段落,标题(被封为第三级),平面列表,简单的引文,规则,出击,和有栅栏的代码. 标签使用内线 Markdown. 被嵌入的块,表格,图像,和生的HTML在演示文稿合同之外;生的HTML被逃脱. 这些规则也影响到现有的文件.

Prose新行画出分行符;空白行会分出段落. 保留了附加和后行的空行 。 四相相相入入入入还作是道相. 被标记的手柄有代码的跨度和链接;被栅栏的代码保存了内部的白空间并包裹了长的符号. 可选 highlightCode 返回必须准确复制输入的文本/类运行;失败返回到普通代码.

版本与发布记录

@eraserlabs/resolve 共发布 11 个版本,首次发布于 2026/08/19;过去 12 个月发布了 11 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.5.2latest2026/11/122 天前
0.5.12026/11/058 天前
0.5.02026/11/0311 天前
0.4.32026/10/2816 天前
0.4.22026/10/2817 天前
0.4.12026/10/2817 天前

关于 @eraserlabs/resolve 的常见问题

@eraserlabs/resolve 是什么?

纯擦除器解析引擎

如何安装 @eraserlabs/resolve?

在项目目录运行 npm install @eraserlabs/resolve,或使用 pnpm add / yarn add / bun add。

@eraserlabs/resolve 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@eraserlabs/resolve 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@eraserlabs/resolve 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js ^22.23.4 || ^24.22.1 || >=26.12.1。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@eraserlabs/resolve 可以商用吗?

@eraserlabs/resolve 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@eraserlabs/resolve 的下载量有多少?

根据 npm 官方下载统计,@eraserlabs/resolve 在 2026/10/14 – 2026/11/12 这 30 天内被下载 10,683 次,日均约 356 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@eraserlabs/resolve 还在维护吗?

最新版本 0.5.2 发布于 2026/11/12(2 天前);至今共发布 11 个版本,其中过去 12 个月发布了 11 个;首次发布于 2026/08/19。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。