kea-socket.io
Version:
Socket.io binding for Kea store
55 lines (45 loc) • 1.48 kB
JavaScript
import { getPluginContext } from 'kea';
export var isFunction = function isFunction(obj) {
return typeof obj === 'function';
};
export var isSocketIo = function isSocketIo(obj) {
return !!obj && (isFunction(obj.on) && isFunction(obj.emit) || Array.isArray(obj) && obj.every(function (item) {
return isSocketIo(item);
}));
};
export var trimNamespace = function trimNamespace(namespaced) {
return namespaced.split('/').pop();
};
export var getEmitters = function getEmitters(name) {
var _getPluginContext = getPluginContext('kea-socket.io'),
_getPluginContext$emi = _getPluginContext.emitters,
emitters = _getPluginContext$emi === undefined ? {} : _getPluginContext$emi;
if (name) {
return emitters[name];
}
return emitters;
};
export var getCurrentName = function getCurrentName(name) {
var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
if (name.indexOf(prefix) === 0) {
return name.replace(prefix, '');
}
return name;
};
export var wildcardMiddleware = function wildcardMiddleware(Emitter) {
var emit = Emitter.prototype.emit;
function onevent(packet) {
var args = packet.data || [];
if (packet.id != null) {
args.push(this.ack(packet.id));
}
emit.call(this, '*', packet);
return emit.apply(this, args);
}
return function (socket, next) {
if (socket.onevent !== onevent) {
socket.onevent = onevent;
}
return next ? next() : null;
};
};