@hlang-org/ir

中文文档
1.0.1发布于 2026/11/01MITTypeScriptESM + CJS零依赖

hlang中间表示:图形类型、验证以及解释器和编译器共享的执行计划。

中文使用文档
文档目录5 节
  1. 安装
  2. IGraph
  3. planGraph
  4. 出口
  5. 许可证

hlang ir

@hlang-org红外

hlang中间表示。 IGraph 是hlang程序的JSON形式。 planGraph 验证图形并将其降低为执行计划。解释器和编译器都从这个计划开始,所以它们应用相同的规则。

npm license

安装

npm install @hlang-org/ir

相同的构建发布为 @hlang-tech/ir。没有运行时依赖项。ESM和CommonJS的构建带有类型声明。

IGraph

import type { IGraph } from '@hlang-org/ir';

const graph: IGraph = {
  nodeList: [
    { nodeId: 'a', code: 'numbers', name: 'Numbers', type: 'R', bizData: { params: { count: 3 } } },
    { nodeId: 'b', code: 'log', name: 'Log', type: 'W' },
  ],
  connections: [
    { Output: { nodeId: 'a', portConf: { id: 'out' } }, Input: { nodeId: 'b', portConf: { id: 'in' } } },
  ],
};
  • type 为节点类型: 'R' (读), 'T' (变换),或 'W' (可写)。
  • code 选择节点实现。后端将其映射到类或模块。
  • bizData 传递给节点构造函数为 config;参数在 bizData.params.
  • 在某种意义上, Output 上行输出端口和 Input 是下行输入端口。丢失的端口号默认为 Output 和 Input。传统拼写 portConfig.id 也是读的。

planGraph

import { planGraph, GraphError } from '@hlang-org/ir';

const plan = planGraph(graph);
// {
//   nodes: [{ nodeId: 'a', code: 'numbers', kind: 'R', config: { params: { count: 3 } } }, ...],
//   connections: [{ source: { nodeId: 'a', portId: 'out' }, target: { nodeId: 'b', portId: 'in' } }],
//   roots: ['a'],
// }

平面图保持图形顺序。 config 是一份 bizData 与 params 默认 {}.

planGraph 抛出一个 GraphError 用下列代码之一:

code导致
duplicate-node-id两个节点共用一个 nodeId.
invalid-node-kind一个节点 type 不是 R, T,或者 W.
unknown-node连接引用不在中的节点 nodeList.
invalid-connection可写节点是源,可读节点是目标,或 @node/error 是一个目标。
no-readable-root图没有可读节点可运行。

转换到转换循环是有效的。

出口

  • 类型: IGraph, INodeInfo, IConnection, IConnectionEndpoint, IBizData, IPortInfo, IPackageInfo, ParamBag, ParamValue, IParamObject, NodeKind, ExecutionPlan, PlannedNode, PlannedConnection, PlannedEndpoint, GraphErrorCode.
  • 价值观: planGraph, GraphError, ERROR_PORT_NAME ('@node/error')。

来源和文件: github.com/hlang-tech/hlang.

许可证

麻省理工学院

版本与发布记录

@hlang-org/ir 共发布 3 个版本,首次发布于 2026/11/01;过去 12 个月发布了 3 个版本。

版本发布日期距今
1.0.1latest2026/11/012 天前
1.0.02026/11/012 天前
0.0.0-stage2026/11/012 天前

关于 @hlang-org/ir 的常见问题

@hlang-org/ir 是什么?

hlang中间表示:图形类型、验证以及解释器和编译器共享的执行计划。

如何安装 @hlang-org/ir?

在项目目录运行 npm install @hlang-org/ir,或使用 pnpm add / yarn add / bun add。

@hlang-org/ir 支持 TypeScript 吗?

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

@hlang-org/ir 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@hlang-org/ir 需要什么版本的 Node.js?

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

@hlang-org/ir 可以商用吗?

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

@hlang-org/ir 还在维护吗?

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