npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@mldong/jeeflow

v1.8.18

Published

jeeflow workflow engine — Node.js / TypeScript implementation

Readme

jeeflow · Node.js / TypeScript

jeeflow 引擎规范的 TypeScript 实现。仅依赖 node:* 标准库,零外部依赖(引擎核心)。

v1.1.0:新增管理扩展(流程设计/历史/委托 + ProcessExtRepository)与统一门面 JeeflowFacade.flow(action, args);assignee 变量解析与 flow.auto/flow.admin 系统代执行对齐 boot2/boot3。

npm install @mldong/jeeflow   # 等发布到 npm 后

快速开始

import { EngineImpl, MemoryRepository } from '@mldong/jeeflow'

const repo = new MemoryRepository()
const engine = new EngineImpl(repo)

const def = {
  id: '1', name: 'leave', displayName: '请假审批',
  content: JSON.stringify({ nodes: [...], edges: [...] })
}
repo.addDefine(def)

const inst = await engine.startProcessInstanceById(def.id, '张三')
const tasks = await repo.findDoingTasks(inst.id)
await engine.executeProcessTask(tasks[0].id, 'leader')

⚠️ id 全程 string(issue 38 E9):引擎内部与 API 契约的 id(流程定义/实例/任务/设计)一律为字符串。 Java 雪花 id(>2^53)超出 JS 安全整数,Number() 转换必丢精度;字符串可无损承载,保证四语言同库共享流程。

JDBC(MySQL/PostgreSQL)

import mysql from 'mysql2/promise'
import { JdbcRepository, TsIDGenerator, MysqlAdapter } from '@mldong/jeeflow/jdbc'

// ⚠️ 必须配置 bigNumberStrings(issue 38 E9):BIGINT 列以 string 返回,
// 否则 mysql2 默认转 number,Java 雪花 id(>2^53)在驱动层就已丢精度
const pool = mysql.createPool({
  host: 'localhost', user: 'root', password: '***', database: 'wf',
  supportBigNumbers: true,
  bigNumberStrings: true,
})
const repo = new JdbcRepository(new MysqlAdapter(pool), new TsIDGenerator())
  • MySQL 连接池必须带 supportBigNumbers: true, bigNumberStrings: true;PostgreSQL 的 int8 默认即字符串,无此要求
  • 引擎侧已做驱动兜底:rowId() 把驱动返回的 number/string 统一归一化为 string,未开 bigNumberStrings 时小 id(Node 自建)仍可用
  • MysqlAdapterquery() 不走 execute():mysql2 预处理绑 LIMIT ? 会失败,分页整段 99999999(issues/66)

运行演示

git clone https://github.com/mldong/jeeflow-node
cd jeeflow-node
npm install
npm run demo     # http://localhost:8082

目录

| 路径 | 说明 | |------|------| | src/engine.ts | 引擎核心 | | src/model.ts | 域类型 | | src/spi.ts | SPI 接口 | | src/memory.ts | 内存仓储 | | src/jdbc/ | JDBC 多库实现(shared 核心 + mysql/postgres 适配器) | | demo/main.ts | Express 演示 | | __tests__/ | 9 项合规测试 |

节点支持

对齐 SPEC.md v1.0——与 Java/Go 版一致。

License

Apache-2.0