UNPKG

diffusion

Version:

Diffusion JavaScript client

73 lines (72 loc) 3.31 kB
"use strict"; var __read = (this && this.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.workerOnConnect = void 0; var errors_1 = require("./../../errors/errors"); var conversation_set_1 = require("./../conversation/conversation-set"); var options_impl_1 = require("./../session/options-impl"); var worker_command_1 = require("./../webworker/worker-command"); var worker_session_registry_1 = require("./../webworker/worker-session-registry"); var uint8array_1 = require("../util/uint8array"); /** * Handler for the shared worker's onconnect event * * @param event the incoming message event */ function workerOnConnect(event) { var port = event.ports[0]; port.onmessage = function (msg) { if (msg.data.length < 2) { throw new errors_1.InternalError('Expected session name and command in shared worker message'); } switch (msg.data[1]) { case worker_command_1.WorkerCommand.CONNECT: port.postMessage([msg.data[0], 'connect_ack']); if (msg.data.length < 3) { throw new errors_1.InternalError('Expected connection options in shared worker message'); } try { var _a = __read(JSON.parse(msg.data[2]), 3), opts = _a[0], isCredentialsBuffer = _a[1], credentialsStr = _a[2]; opts.credentials = isCredentialsBuffer ? uint8array_1.uint8FromBase64(credentialsStr) : credentialsStr; worker_session_registry_1.workerSessionRegistry.connect(port, msg.data[0], new options_impl_1.OptionsImpl(opts)); } catch (err) { throw new errors_1.InternalError('Shared session could not connect'); } break; case worker_command_1.WorkerCommand.CONNECT_EXISTING: port.postMessage([msg.data[0], 'connect_ack']); worker_session_registry_1.workerSessionRegistry.connectExisting(port, msg.data[0]); break; case worker_command_1.WorkerCommand.CLOSE: worker_session_registry_1.workerSessionRegistry.close(port, msg.data[0]); break; case worker_command_1.WorkerCommand.CID: conversation_set_1.ConversationIdGenerator().then(function (cid) { port.postMessage([msg.data[0], 'cid_event', cid.toString()]); }); break; default: if (msg.data.length < 3) { throw new errors_1.InternalError('Expected command data in shared worker message'); } worker_session_registry_1.workerSessionRegistry.onCommand(port, msg.data[0], msg.data[1], msg.data[2]); } }; } exports.workerOnConnect = workerOnConnect;