UNPKG

webserv

Version:

a quick, flexible, fully typed development server

75 lines 2.97 kB
var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; (function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports", "../upgrades/realtime.upgrade"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const realtime_upgrade_1 = require("../upgrades/realtime.upgrade"); function isAction(value) { return value && typeof value === 'object' && typeof value.type === 'string'; } /** * Helper function to send an error response to an action request */ function sendError(con, source, payload) { sendResponse(con, { type: `${source.type}-error`, payload: Object.assign(Object.assign({}, payload), { source }) }); } exports.sendError = sendError; /** * Helper function to send a serialized action to a connection */ function sendResponse(con, action) { const data = JSON.stringify(action); if (Array.isArray(con)) { for (let connection of con) { connection.client.send(data); } } else { con.client.send(data); } } exports.sendResponse = sendResponse; /** * This is a realtime message-passing service using Websockets built on top of realtime.upgrade. */ function actionService(_a) { var { handlers, defaultHandler } = _a, rest = __rest(_a, ["handlers", "defaultHandler"]); const handlerMap = new Map(handlers.map((handler) => [handler.type, handler.handler])); const upgrade = realtime_upgrade_1.realtimeUpgrade(Object.assign({ onMessage(data, con, methods) { const action = typeof data === 'string' ? JSON.parse(data) : data; if (isAction(action)) { const handler = handlerMap.get(action.type) || defaultHandler; if (handler) { handler(action, con, methods); } } } }, rest)); return { upgrade: { upgrade } }; } exports.actionService = actionService; }); //# sourceMappingURL=action.service.js.map