@zhiaiwan/ebus
v1.0.0
Published
面向全场景的类型安全事件总线,支持模式匹配、中间件、emitCollect、replay/sticky、策略控制(timeout/retry/cancel/concurrency)、跨运行时适配器与可观测能力
Maintainers
Readme
@zhiaiwan/ebus
面向全场景的类型安全事件总线:模式匹配、中间件、emitCollect、replay/sticky、策略控制(timeout/retry/cancel/concurrency)、跨运行时适配器与可观测能力。
安装
npm install @zhiaiwan/ebus
# 或
pnpm add @zhiaiwan/ebus使用
默认实例(推荐)
import bus from '@zhiaiwan/ebus';
bus.on('user.login', ([id]) => console.log(id));
await bus.emit('user.login', ['u1']);多实例
import { ZhiaiwanEbus, createZhiaiwanEbus } from '@zhiaiwan/ebus';
type Events = { 'user.login': [id: string] };
const a = new ZhiaiwanEbus<Events>();
const b = createZhiaiwanEbus<Events>({ debug: true });Node.js(CommonJS)
const bus = require('@zhiaiwan/ebus').default;
const { createZhiaiwanEbus } = require('@zhiaiwan/ebus');浏览器(UMD 全局变量)
<script src="https://unpkg.com/@zhiaiwan/ebus/dist/umd/zhiaiwan-ebus.min.js"></script>
<script>
const app = ZhiaiwanEbus.createZhiaiwanEbus();
console.log(ZhiaiwanEbus.version);
</script>API 一览
| 导出 | 说明 |
|------|------|
| default | 开箱即用的默认总线实例 |
| ZhiaiwanEbus | 事件总线主类 |
| createZhiaiwanEbus(options?) | 创建独立实例的工厂 |
| version | 库版本号 |
| 适配器 | InMemoryAdapter / BroadcastChannelAdapter / WebWorkerAdapter / NodeWorkerThreadsAdapter |
| 工具 | isPatternMatch / patternToRegExp / isRetriableNetworkError |
实例方法:on / onPattern / emit / emitCollect / offGroup / unsubscribeByTag / pause / resume / eventNames / listenerCount / replayFor / metrics / destroy。
发布产物
| 目录 | 格式 | 说明 |
|------|------|------|
| dist/cjs/ | CommonJS | require |
| dist/esm/ | ESM | import |
| dist/types/ | TypeScript 声明 | 与 package.json 的 exports 映射 |
| dist/umd/ | UMD 单文件 | .js / .min.js,全局名 ZhiaiwanEbus |
开发脚本
pnpm test # Jest 单元测试
pnpm test:coverage # 覆盖率(阈值 80%)
pnpm bench # 性能基准测试
pnpm lint # ESLint