kea-socket.io
Version:
Socket.io binding for Kea store
79 lines (63 loc) • 2.99 kB
JavaScript
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;