{"version":3,"sources":["../../../src/adaptors/dao3/client.ts"],"sourcesContent":["import EventEmitter from 'eventemitter3'\r\nimport { isRemoteAdaptorData } from '../../remote'\r\nimport { type AdaptorPackageData } from '../../adaptor'\r\n\r\ninterface RemoteChannel {\r\n  onClientEvent(fn: (e: unknown) => void): void\r\n}\r\n\r\n/**\r\n * 这是 [dao3 游戏](https://dao3.fun/) 代码客户端适配器。\r\n * ```ts\r\n * const remoteManager = new ClientSideRemoteChannelEventManager(remoteChannel)\r\n *\r\n * export const remoteAdaptor = {\r\n *   every: remoteManager.onEvery.bind(remoteManager),\r\n *   off: remoteManager.off.bind(remoteManager),\r\n *   on: remoteManager.on.bind(remoteManager),\r\n *   once: remoteManager.once.bind(remoteManager),\r\n *   emit: (e) => {\r\n *     remoteChannel.sendServerEvent(e)\r\n *   },\r\n * } satisfies Adaptor\r\n *\r\n * export const remote = new Remote<RemoteFuncsFromClient, RemoteFuncsFromServer>(\r\n *   remoteAdaptor,\r\n *   {\r\n *     deviceId: `client-${Math.random().toString(36).slice(2)}`,\r\n *   }\r\n * )\r\n *\r\n * void remote._.initConnection()\r\n * ```\r\n */\r\nexport class ClientSideRemoteChannelEventManager extends EventEmitter<{\r\n  [key: string]: [AdaptorPackageData]\r\n}> {\r\n  constructor(remoteChannel: RemoteChannel) {\r\n    super()\r\n    remoteChannel.onClientEvent((e) => {\r\n      if (!isRemoteAdaptorData(e)) {\r\n        return\r\n      }\r\n      if (!e.name.startsWith('__REMOTE_VALUE_REQ__')) {\r\n        this.emit('__remote_every__', e)\r\n      }\r\n      this.emit(e.name, e)\r\n    })\r\n  }\r\n\r\n  onEvery(fn: (args: AdaptorPackageData) => void): void {\r\n    this.on('__remote_every__', fn)\r\n  }\r\n}\r\n"],"mappings":"AAAA,OAAOA,MAAkB,gBACzB,OAAS,uBAAAC,MAA2B,eAgC7B,MAAMC,UAA4CF,CAEtD,CACD,YAAYG,EAA8B,CACxC,MAAM,EACNA,EAAc,cAAe,GAAM,CAC5BF,EAAoB,CAAC,IAGrB,EAAE,KAAK,WAAW,sBAAsB,GAC3C,KAAK,KAAK,mBAAoB,CAAC,EAEjC,KAAK,KAAK,EAAE,KAAM,CAAC,EACrB,CAAC,CACH,CAEA,QAAQG,EAA8C,CACpD,KAAK,GAAG,mBAAoBA,CAAE,CAChC,CACF","names":["EventEmitter","isRemoteAdaptorData","ClientSideRemoteChannelEventManager","remoteChannel","fn"]}