{"version":3,"file":"mitt.mjs","sources":["../../../../packages/utils/mitt.ts"],"sourcesContent":["import mitt, { Emitter, EventType, Handler } from 'mitt'\n\n// 扩展Emitter类型，添加asyncOn方法\n// interface ExtendedEmitter<T = Record<EventType, unknown>> extends Emitter<T> {\n//   once: <T = any>(eventName: EventType) => Promise<T>\n// }\n// 1. 定义你的事件类型映射\ntype Events = {\n  [key: string]: any\n}\ntype CustomEmitter<T extends Record<EventType, unknown>> = Emitter<T> & {\n  once<K extends keyof T>(eventName: K): Promise<T[K]>\n}\nexport const bus = mitt<Events>() as CustomEmitter<Events>\nbus.once = (eventName) => {\n  return new Promise((resolve) => {\n    const handler: Handler<Events[typeof eventName]> = (payload) => {\n      // 触发后立即注销，防止内存泄漏\n      bus.off(eventName, handler)\n      resolve(payload)\n    }\n    bus.on(eventName, handler)\n  })\n}\n"],"names":[],"mappings":";;AAaO,MAAM,MAAM,IAAA;AACnB,GAAA,CAAI,IAAA,GAAO,CAAC,SAAA,KAAc;AACxB,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,KAAY;AAC9B,IAAA,MAAM,OAAA,GAA6C,CAAC,OAAA,KAAY;AAE9D,MAAA,GAAA,CAAI,GAAA,CAAI,WAAW,OAAO,CAAA;AAC1B,MAAA,OAAA,CAAQ,OAAO,CAAA;AAAA,IACjB,CAAA;AACA,IAAA,GAAA,CAAI,EAAA,CAAG,WAAW,OAAO,CAAA;AAAA,EAC3B,CAAC,CAAA;AACH,CAAA;;;;"}