feathers-primus
Version:
The Feathers Primus real-time API provider
88 lines (62 loc) • 2.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (config, configurer) {
return function () {
var app = this;
if (app.version && app.version >= '3.0.0') {
throw new Error('feathers-primus is not compatible with Feathers v' + app.version + '. Use the latest version of @feathersjs/primus instead.');
}
app.configure((0, _feathersSocketCommons2.default)('primus'));
// Monkey patch app.setup(server)
_uberproto2.default.mixin({
setup: function setup(server) {
debug('Setting up Primus');
var primus = this.primus;
if (!primus) {
primus = this.primus = new _primus2.default(server, config);
primus.plugin('emitter', _primusEmitter2.default);
primus.use('feathers', function (req, res, next) {
req.feathers = { provider: 'primus' };
next();
}, 0);
}
if (typeof configurer === 'function') {
debug('Calling Primus configuration function');
configurer.call(this, primus);
}
this._socketInfo = {
method: 'send',
connection: function connection() {
return primus;
},
clients: function clients() {
return primus;
},
params: function params(spark) {
return spark.request.feathers;
}
};
// In Feathers it is easy to hit the standard Node warning limit
// of event listeners (e.g. by registering 10 services).
// So we set it to a higher number. 64 should be enough for everyone.
this._socketInfo.connection().setMaxListeners(64);
return this._super.apply(this, arguments);
}
}, app);
};
};
var _debug = require('debug');
var _debug2 = _interopRequireDefault(_debug);
var _uberproto = require('uberproto');
var _uberproto2 = _interopRequireDefault(_uberproto);
var _feathersSocketCommons = require('feathers-socket-commons');
var _feathersSocketCommons2 = _interopRequireDefault(_feathersSocketCommons);
var _primus = require('primus');
var _primus2 = _interopRequireDefault(_primus);
var _primusEmitter = require('primus-emitter');
var _primusEmitter2 = _interopRequireDefault(_primusEmitter);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var debug = (0, _debug2.default)('feathers-primus');
module.exports = exports['default'];