{"version":3,"file":"channel.cjs","names":["Emitter","uuid","useDispose"],"sources":["../../../src/common/msg/channel.ts"],"sourcesContent":["import { useDispose } from '../dispose-defer'\nimport { uuid } from '../uuid'\nimport { Emitter } from './emitter'\n\n/** See http://developer.mozilla.org/en-US/docs/Web/API/MessageEvent */\nexport interface ChannelMessageEvent<T = any> {\n  data: T\n  origin?: string\n  lastEventId?: string\n}\n\n/**\n * Inspired by\n * http://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel\n * https://deno.com/deploy/docs/runtime-broadcast-channel\n */\nexport abstract class Channel<T = any, ContextType = Record<string, any>> extends Emitter<{\n  message: (event: ChannelMessageEvent<T>) => void\n  messageerror: (event: ChannelMessageEvent<T>) => void // optional\n  connect: () => void // optional\n  disconnect: () => void // optional\n  close: () => void\n}> {\n  id: string = uuid()\n\n  // Put you own channel context here\n  context: ContextType = {} as ContextType\n\n  abstract isConnected?: boolean\n  abstract postMessage(data: T): void\n\n  dispose = useDispose()\n\n  /** @deprecated use .dispose() */\n  close() {\n    void this.dispose()\n  }\n}\n"],"mappings":";;;;;;;;;;;AAgBA,IAAsB,UAAtB,cAAkFA,mCAM/E;CACD,KAAaC,0BAAM;CAGnB,UAAuB,EAAE;CAKzB,UAAUC,yCAAY;;CAGtB,QAAQ;AACN,EAAK,KAAK,SAAS"}