{"version":3,"file":"message-callback.cjs","names":["handler: WebSocketListener"],"sources":["../../../src/realtime/utils/message-callback.ts"],"sourcesContent":["import type { WebSocketInterface } from '../../index.js';\n\ninterface WebSocketListener {\n\t(data: MessageEvent<string>): any;\n}\n\n/**\n * Wait for a websocket response\n *\n * @param socket WebSocket\n * @param number timeout\n *\n * @returns Incoming message object\n */\nexport const messageCallback = (\n\tsocket: WebSocketInterface,\n\ttimeout = 1000,\n): Promise<Record<string, any> | MessageEvent<string> | undefined> =>\n\tnew Promise<Record<string, any> | MessageEvent<string> | undefined>((resolve, reject) => {\n\t\tconst handler: WebSocketListener = (data: MessageEvent<string>) => {\n\t\t\ttry {\n\t\t\t\tconst message = JSON.parse(data.data) as Record<string, any>;\n\n\t\t\t\tif (typeof message === 'object' && !Array.isArray(message) && message !== null) {\n\t\t\t\t\tunbind();\n\t\t\t\t\tresolve(message);\n\t\t\t\t} else {\n\t\t\t\t\tunbind();\n\t\t\t\t\tabort();\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// return the original event to allow customization\n\t\t\t\tunbind();\n\t\t\t\tresolve(data);\n\t\t\t}\n\t\t};\n\n\t\tconst abort = () => reject();\n\n\t\tconst unbind = () => {\n\t\t\tclearTimeout(timer);\n\t\t\tsocket.removeEventListener('message', handler);\n\t\t\tsocket.removeEventListener('error', abort);\n\t\t\tsocket.removeEventListener('close', abort);\n\t\t};\n\n\t\tsocket.addEventListener('message', handler);\n\t\tsocket.addEventListener('error', abort);\n\t\tsocket.addEventListener('close', abort);\n\n\t\tconst timer = setTimeout(() => {\n\t\t\tunbind();\n\t\t\tresolve(undefined);\n\t\t}, timeout);\n\t});\n"],"mappings":"AAcA,MAAa,GACZ,EACA,EAAU,MAEV,IAAI,SAAiE,EAAS,IAAW,CACxF,IAAMA,EAA8B,GAA+B,CAClE,GAAI,CACH,IAAM,EAAU,KAAK,MAAM,EAAK,KAAK,CAEjC,OAAO,GAAY,UAAY,CAAC,MAAM,QAAQ,EAAQ,EAAI,IAAY,MACzE,GAAQ,CACR,EAAQ,EAAQ,GAEhB,GAAQ,CACR,GAAO,OAED,CAEP,GAAQ,CACR,EAAQ,EAAK,GAIT,MAAc,GAAQ,CAEtB,MAAe,CACpB,aAAa,EAAM,CACnB,EAAO,oBAAoB,UAAW,EAAQ,CAC9C,EAAO,oBAAoB,QAAS,EAAM,CAC1C,EAAO,oBAAoB,QAAS,EAAM,EAG3C,EAAO,iBAAiB,UAAW,EAAQ,CAC3C,EAAO,iBAAiB,QAAS,EAAM,CACvC,EAAO,iBAAiB,QAAS,EAAM,CAEvC,IAAM,EAAQ,eAAiB,CAC9B,GAAQ,CACR,EAAQ,IAAA,GAAU,EAChB,EAAQ,EACV"}