UNPKG

kea-socket.io

Version:
79 lines (63 loc) 2.99 kB
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } import { getPluginContext, setPluginContext } from 'kea'; import { defaultsOptions } from './config'; import { observe, addSystemObserve } from './observe'; import { patchSocket, emitterActions } from './actions'; import { getEmitters } from './utils'; var localStoragePlugin = function localStoragePlugin() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _ref$sockets = _ref.sockets, sockets = _ref$sockets === undefined ? [] : _ref$sockets, options = _objectWithoutProperties(_ref, ['sockets']); return { name: 'kea-socket.io', events: { afterPlugin: function afterPlugin() { var emitters = {}; /** add all named and default sockets + options to context */ sockets.forEach(function (socket) { patchSocket(socket); emitters[socket.nsp.substr(1) || 'default'] = socket; addSystemObserve(socket); socket.on('*', function () { var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, data = _ref2.data; var type = data[0], payload = data[1]; observe({ type: type, payload: payload, socket: socket }); }); }); setPluginContext('kea-socket.io', { emitters: _extends({}, emitters), options: _extends({}, defaultsOptions, options) }); }, beforeMount: function beforeMount(logic) { var _getPluginContext = getPluginContext('kea-socket.io'), emitters = _getPluginContext.emitters, _getPluginContext$opt = _getPluginContext.options, options = _getPluginContext$opt === undefined ? {} : _getPluginContext$opt; var additionalActions = options.emitterActions; logic.emitters = _extends({}, emitters); logic.getEmitters = getEmitters; logic.emitterActions = _extends({}, emitterActions, additionalActions); }, beforeCloseContext: function beforeCloseContext(context) { /** reset context ? */ setPluginContext('kea-socket.io', { emitters: {}, options: _extends({}, defaultsOptions) }); } }, buildOrder: { socketSubscribe: { after: 'thunks' } }, buildSteps: { socketSubscribe: function socketSubscribe(logic, input) { if (input.socketPrefix) { logic.socketPrefix = input.socketPrefix; } } } }; }; export default localStoragePlugin;