{"version":3,"sources":["../../src/bus/EventBus.ts","../../src/bus/InMemoryBus.ts","../../src/internal/context.ts","../../src/api/emitEvents.ts","../../src/cli/index.ts","../../package.json"],"sourcesContent":["import { IEventBus, EventHandler, EventPayload } from '../types';\n\n/**\n * EventBus 抽象基类，提供 emit/on/off 的基础能力\n */\nexport abstract class EventBus implements IEventBus {\n  protected handlers: Map<string, Set<EventHandler>> = new Map();\n\n  /**\n   * 触发事件\n   * @param eventName - 事件名称\n   * @param payload - 事件数据\n   */\n  async emit(eventName: string, payload: EventPayload): Promise<void> {\n    const handlers = this.handlers.get(eventName);\n    if (handlers) {\n      for (const handler of handlers) {\n        try {\n          await handler(payload);\n        } catch (err) {\n          console.error(`[FlowLab EventBus] Error handling event ${eventName}`, err);\n        }\n      }\n    }\n  }\n\n  /**\n   * 绑定事件处理器\n   * @param eventName - 事件名称\n   * @param handler - 事件处理函数\n   */\n  on(eventName: string, handler: EventHandler): void {\n    if (!this.handlers.has(eventName)) {\n      this.handlers.set(eventName, new Set());\n    }\n    this.handlers.get(eventName)?.add(handler);\n  }\n\n  /**\n   * 解绑事件处理器\n   * @param eventName - 事件名称\n   * @param handler - 事件处理函数\n   */\n  off(eventName: string, handler: EventHandler): void {\n    this.handlers.get(eventName)?.delete(handler);\n  }\n\n  /**\n   * 启动事件监听（由子类实现）\n   */\n  abstract start(): Promise<void>;\n\n  /**\n   * 停止事件监听（由子类实现）\n   */\n  abstract stop(): Promise<void>;\n}\n","import { EventBus } from './EventBus';\n\n/**\n * InMemoryBus 是默认的事件总线实现，基于内存事件分发\n */\nexport class InMemoryBus extends EventBus {\n  private running: boolean = false;\n\n  async start(): Promise<void> {\n    this.running = true;\n    console.log('[FlowLab] ✅ InMemory EventBus started successfully');\n  }\n\n  async stop(): Promise<void> {\n    this.running = false;\n    console.log('[FlowLab] 🛑 InMemory EventBus stopped');\n  }\n\n  isRunning(): boolean {\n    return this.running;\n  }\n}","import { IEventBus } from '../types';\nimport { InMemoryBus } from '../bus/InMemoryBus';\n\n/**\n * 当前事件总线实例（默认使用内存实现）\n */\nlet currentEventBus: IEventBus = new InMemoryBus();\n\n/**\n * 获取当前事件总线实例\n */\nexport function getCurrentEventBus(): IEventBus {\n  return currentEventBus;\n}\n\n/**\n * 替换当前使用的事件总线（可用于 Redis/Kafka）\n * @param bus 自定义实现的事件总线\n */\nexport function useEventBus(bus: IEventBus): void {\n  currentEventBus = bus;\n}","// src/api/emitEvent.ts\n\nimport { EventPayload } from '../types';\nimport { getCurrentEventBus } from '../internal/context';\n\n/**\n * 触发事件\n * @param eventName - 事件名称\n * @param payload - 传递的数据\n */\nexport async function emitEvent(eventName: string, payload: EventPayload): Promise<void> {\n  const bus = getCurrentEventBus();\n  await bus.emit(eventName, payload);\n}\n","import { emitEvent } from '../../src/index';\nimport { cac } from 'cac';\nimport colors from 'picocolors';\nimport packageJson from '../../package.json' assert { type: 'json' };\nimport pc from 'picocolors';\n\nconst cli = cac('flowlab-event');\n\ncli\n  .version(packageJson.version)\n  .help()\n\n// emit 命令\ncli\n  .command('emit <event> [data]', '触发一个事件（JSON 字符串或文件）')\n  .option('--pretty', '美化输出')\n  .action(async (eventName, data, options) => {\n    console.log(colors.cyan(`\\n🚀 正在触发事件: ${colors.bold(eventName)}\\n`));\n\n    let parsed: any = {};\n    try {\n      parsed = JSON.parse(data);\n    } catch (e) {\n      console.warn(colors.yellow('⚠️ 参数不是有效 JSON，使用空对象替代'));\n    }\n\n    try {\n      await emitEvent(eventName, parsed);\n      console.log(colors.green(`✅ 已成功触发事件 ${eventName}`));\n    } catch (err) {\n      console.error(colors.red(`❌ 触发失败: ${(err as Error).message}`));\n      process.exit(1);\n    }\n  });\n\ncli\n.command('welcome', '显示欢迎信息')\n.action(() => {\n  console.log('\\n' + pc.bold(pc.cyan('🎉 欢迎使用 FlowLab CLI - 事件引擎模块')));\n  console.log(pc.dim('--------------------------------------------'));\n  console.log(pc.blue(`📦 模块名: ${packageJson.name}`));\n  console.log(pc.green(`🔧 版本号: v${packageJson.version}`));\n  console.log(pc.yellow('👤 作者: Luke'));\n  console.log(pc.magenta('📘 文档: https://github.com/countstarss/flowlab'));\n  console.log(pc.dim('--------------------------------------------'));\n  console.log(pc.cyan('\\n🚀 你可以开始使用如下命令:'));\n  console.log(pc.dim('   $ event emit user.signup \\'{\"email\": \"test@example.com\"}\\''));\n  console.log('\\n');\n});\n\ncli.parse();","{\n  \"name\": \"@flowlab/event\",\n  \"version\": \"0.1.0\",\n  \"description\": \"FlowLab event-driven system\",\n  \"main\": \"dist/index.js\",\n  \"types\": \"dist/index.d.ts\",\n  \"bin\": {\n    \"flow-event\": \"./dist/cli/index.js\"\n  },\n  \"exports\": {\n    \".\": {\n      \"import\": \"./dist/index.js\",\n      \"require\": \"./dist/index.js\"\n    }\n  },\n  \"files\": [\n    \"dist\"\n  ],\n  \"scripts\": {\n    \"build\": \"tsup --config tsup.config.ts\",\n    \"dev\": \"tsup src/index.ts --watch\",\n    \"test\": \"jest\"\n  },\n  \"keywords\": [\n    \"event\",\n    \"event-driven\",\n    \"event-bus\",\n    \"event-emitter\",\n    \"event-handler\",\n    \"event-listener\",\n    \"event-dispatcher\"\n  ],\n  \"author\": \"luke king\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"cac\": \"^6.7.14\",\n    \"eventemitter3\": \"^5.0.1\",\n    \"ioredis\": \"^5.6.0\",\n    \"picocolors\": \"^1.1.1\"\n  },\n  \"devDependencies\": {\n    \"@types/jest\": \"^29.5.14\",\n    \"jest\": \"^29.7.0\",\n    \"ts-jest\": \"^29.3.0\",\n    \"tsup\": \"^7.2.0\",\n    \"typescript\": \"^5.3.3\"\n  }\n}\n"],"mappings":"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","names":[]}