UNPKG

mysql-live-client

Version:
105 lines (104 loc) 4.51 kB
/// <reference path="../../typings/crypto-js/crypto-js.d.ts" /> var _ = require("lodash"); var CryptoJS = require("crypto-js"); var Dispatcher = (function () { function Dispatcher(handler) { this.subscribionWaitingForPassport = []; this.handler = handler; } Dispatcher.prototype.register = function (collectionName) { this.handler.addCollection(collectionName); return this.handler.collections[collectionName]; }; Dispatcher.prototype.subscribe = function (publicationName) { var _this = this; var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var onAcknowledgementCb; if (args && args.length > 0) { var lastArgument = args[args.length - 1]; if (_.isFunction(lastArgument)) { onAcknowledgementCb = lastArgument; args.splice(args.indexOf(args.length - 1), 1); } } else { args = []; } this.handler.socket.emit("subscribe", publicationName, args, function (itemsBack) { var exists = _.findIndex(_this.subscribionWaitingForPassport, function (subWaiting) { return subWaiting.subscriptionName === publicationName; }); if (itemsBack !== undefined && itemsBack.length > 0 && itemsBack[0] === "No Passport") { if (!exists || exists === -1) { _this.subscribionWaitingForPassport.push({ subscriptionName: publicationName, args: args, cb: onAcknowledgementCb }); } } else { if (exists && exists !== -1) { _this.subscribionWaitingForPassport = _this.subscribionWaitingForPassport.splice(exists, 1); } if (onAcknowledgementCb) onAcknowledgementCb(itemsBack); } }); }; Dispatcher.prototype.unsubscribe = function (subscriptionName) { try { this.handler.removeSubscriptionsByName(subscriptionName); _.remove(this.subscribionWaitingForPassport, function (subWaiting) { return subWaiting.subscriptionName === subscriptionName; }); return true; } catch (ex) { return false; } }; Dispatcher.prototype.requestRefresh = function (collectionName, cb) { this.handler.socket.emit("requestRefresh", collectionName, function (itemsBack) { if (cb) cb(itemsBack); }, cb); }; Dispatcher.prototype.requestSaveObject = function (collectionName, object, cb) { this.handler.socket.emit("requestSaveObject", { collectionName: collectionName, object: object }, cb); }; Dispatcher.prototype.requestRemoveObject = function (collectionName, primaryKey, cb) { this.handler.socket.emit("requestRemoveObject", { collectionName: collectionName, primaryKey: primaryKey }, cb); }; Dispatcher.prototype.setPassport = function (passportObj, cb) { var _this = this; this.handler.socket.emit('requestSessionId', (function (sessionId) { var encryptedPassportObj = CryptoJS.AES.encrypt(JSON.stringify(passportObj), sessionId); _this.handler.socket.emit('set passport', encryptedPassportObj.toString(), function () { if (cb) { cb(); } _this.subscribionWaitingForPassport.forEach(function (sub) { _this.subscribe.apply(_this, [sub.subscriptionName].concat(sub.args, [sub.cb])); }); }); })); }; Dispatcher.prototype.callMethod = function (methodName, args) { var onAcknowledgementCb; if (args && args.length > 0) { var lastArgument = args[args.length - 1]; if (_.isFunction(lastArgument)) { onAcknowledgementCb = lastArgument; args.splice(args.indexOf(args.length - 1), 1); } } else { args = []; } if (onAcknowledgementCb) { this.handler.socket.emit('method call', methodName, args, function (anyargsFromServer) { onAcknowledgementCb(anyargsFromServer); }); } else { this.handler.socket.emit('method call', methodName, args); } }; return Dispatcher; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = Dispatcher;