UNPKG

backendless-rt-client

Version:

Backendless RT Client for connect to Backendless RT Server

309 lines (289 loc) 10.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor")); var _listeners = _interopRequireDefault(require("./listeners")); var _dec, _dec2, _dec3, _dec4, _dec5, _class, _RTScopeConnector; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } function _superPropGet(t, o, e, r) { var p = (0, _get2["default"])((0, _getPrototypeOf2["default"])(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; } var ListenerTypes = { CONNECT: 'CONNECT', ERROR: 'ERROR', COMMAND: 'COMMAND', USER_STATUS: 'USER_STATUS' }; var RTScopeConnector = exports["default"] = (_dec = connectionRequired(), _dec2 = connectionRequired(), _dec3 = connectionRequired(), _dec4 = connectionRequired(), _dec5 = connectionRequired(true), _class = (_RTScopeConnector = /*#__PURE__*/function (_RTListeners) { function RTScopeConnector(options) { var _this2; (0, _classCallCheck2["default"])(this, RTScopeConnector); _this2 = _callSuper(this, RTScopeConnector); _this2.options = options; _this2.waitConnection = []; _this2.connect(); return _this2; } /** * @public method * * connect to connection scope, if you already connected the method do nothing **/ (0, _inherits2["default"])(RTScopeConnector, _RTListeners); return (0, _createClass2["default"])(RTScopeConnector, [{ key: "connectSubscriber", get: /** * @abstract getter, must be overridden in an inherited class * must returns a function for adding subscriptions to CONNECT to connection scope * For ex.: RTProvider.subscriptions.connectToRSO **/ function get() { return null; } /** * @abstract getter, must be overridden in an inherited class * * must returns a function for adding subscriptions to listening COMMANDS in connection scope * For ex.: RTProvider.subscriptions.onRSOCommand **/ }, { key: "commandSubscriber", get: function get() { return null; } /** * @abstract getter, must be overridden in an inherited class * * must returns a function for adding subscriptions to listening changes of USER_STATUS in connection scope * For ex.: RTProvider.subscriptions.onRSOUserStatus **/ }, { key: "usersSubscriber", get: function get() { return null; } /** * @abstract getter, must be overridden in an inherited class * * must returns a function for sending COMMAND into connection scope * For ex.: RTProvider.methods.sendRSOCommand **/ }, { key: "commandSender", get: function get() { return null; } }, { key: "connect", value: function connect() { var _this3 = this; if (!this.isConnected()) { this.connection = this.connectSubscriber(this.getScopeOptions(), { onError: function onError(error) { return _this3.onError(error); }, onReady: function onReady() { return _this3.onConnect(); }, onStop: function onStop() { return _this3.onDisconnect(); } }); } } /** * @public method * * disconnect from connection scope, if you already disconnect the method do nothing **/ }, { key: "disconnect", value: function disconnect() { if (this.isConnected()) { this.connection.stop(); } } /** * @public method * * returns TRUE if you connected to connection scope otherwise returns FALSE **/ }, { key: "isConnected", value: function isConnected() { return !!this.connection && this.connection.isReady(); } /** * @private method **/ }, { key: "getSubscriptionOptions", value: function getSubscriptionOptions() { return this.getScopeOptions(); } /** * @private method **/ }, { key: "getScopeOptions", value: function getScopeOptions() { return this.options; } /** * @private method **/ }, { key: "onConnect", value: function onConnect() { this.waitConnection.forEach(function (operation) { return operation(); }); this.waitConnection = []; this.runSimpleListeners(ListenerTypes.CONNECT); } /** * @private method **/ }, { key: "onError", value: function onError(error) { this.runSimpleListeners(ListenerTypes.ERROR, error); } /** * @private method **/ }, { key: "onDisconnect", value: function onDisconnect() { this.connection = null; } /** * @public method **/ }, { key: "removeAllListeners", value: function removeAllListeners() { this.waitConnection = []; _superPropGet(RTScopeConnector, "removeAllListeners", this, 3)([]); return this; } /** * @public method **/ }, { key: "addConnectListener", value: function addConnectListener(callback, onError) { this.addSimpleListener(ListenerTypes.CONNECT, callback); if (onError) { this.addSimpleListener(ListenerTypes.ERROR, onError); } return this; } /** * @public method **/ }, { key: "removeConnectListeners", value: function removeConnectListeners(callback, onError) { this.removeSimpleListener(ListenerTypes.CONNECT, callback); if (onError) { this.removeSimpleListener(ListenerTypes.ERROR, onError); } return this; } /** * @public method **/ }, { key: "addCommandListener", value: function addCommandListener(callback, onError) { this.addSubscription(ListenerTypes.COMMAND, this.commandSubscriber, { callback: callback, onError: onError }); return this; } /** * @public method **/ }, { key: "removeCommandListeners", value: function removeCommandListeners(callback) { this.stopSubscription(ListenerTypes.COMMAND, { callback: callback }); return this; } /** * @public method **/ }, { key: "addUserStatusListener", value: function addUserStatusListener(callback, onError) { this.addSubscription(ListenerTypes.USER_STATUS, this.usersSubscriber, { callback: callback, onError: onError }); return this; } /** * @public method **/ }, { key: "removeUserStatusListeners", value: function removeUserStatusListeners(callback) { this.stopSubscription(ListenerTypes.USER_STATUS, { callback: callback }); return this; } /** * @public method **/ }, { key: "send", value: function send(type, data) { return this.commandSender(_objectSpread(_objectSpread({}, this.getScopeOptions()), {}, { type: type, data: data })); } }]); }(_listeners["default"]), (0, _defineProperty2["default"])(_RTScopeConnector, "connectionRequired", connectionRequired), _RTScopeConnector), (0, _applyDecoratedDescriptor2["default"])(_class.prototype, "addCommandListener", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "addCommandListener"), _class.prototype), (0, _applyDecoratedDescriptor2["default"])(_class.prototype, "removeCommandListeners", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "removeCommandListeners"), _class.prototype), (0, _applyDecoratedDescriptor2["default"])(_class.prototype, "addUserStatusListener", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, "addUserStatusListener"), _class.prototype), (0, _applyDecoratedDescriptor2["default"])(_class.prototype, "removeUserStatusListeners", [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, "removeUserStatusListeners"), _class.prototype), (0, _applyDecoratedDescriptor2["default"])(_class.prototype, "send", [_dec5], Object.getOwnPropertyDescriptor(_class.prototype, "send"), _class.prototype), _class); function connectionRequired(returnPromise) { return function (target, key, descriptor) { var decorated = descriptor.value; descriptor.value = function () { var _arguments = arguments, _this = this; var run = function run() { return decorated.apply(_this, _arguments); }; if (this.isConnected()) { return run(); } if (returnPromise) { return new Promise(function (resolve, reject) { return _this.waitConnection.push(function () { return run().then(resolve, reject); }); }); } this.waitConnection.push(run); return this; }; return descriptor; }; }