kea-socket.io
Version:
Socket.io binding for Kea store
86 lines (65 loc) • 3.06 kB
JavaScript
;
exports.__esModule = true;
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; };
var _kea = require('kea');
var _config = require('./config');
var _observe = require('./observe');
var _actions = require('./actions');
var _utils = require('./utils');
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; }
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) {
(0, _actions.patchSocket)(socket);
emitters[socket.nsp.substr(1) || 'default'] = socket;
(0, _observe.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];
(0, _observe.observe)({ type: type, payload: payload, socket: socket });
});
});
(0, _kea.setPluginContext)('kea-socket.io', {
emitters: _extends({}, emitters),
options: _extends({}, _config.defaultsOptions, options)
});
},
beforeMount: function beforeMount(logic) {
var _getPluginContext = (0, _kea.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 = _utils.getEmitters;
logic.emitterActions = _extends({}, _actions.emitterActions, additionalActions);
},
beforeCloseContext: function beforeCloseContext(context) {
/** reset context ? */
(0, _kea.setPluginContext)('kea-socket.io', { emitters: {}, options: _extends({}, _config.defaultsOptions) });
}
},
buildOrder: {
socketSubscribe: { after: 'thunks' }
},
buildSteps: {
socketSubscribe: function socketSubscribe(logic, input) {
if (input.socketPrefix) {
logic.socketPrefix = input.socketPrefix;
}
}
}
};
};
exports.default = localStoragePlugin;