diff --git a/.gitignore b/.gitignore index 781462138..3e3f3008c 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ coverage/ *.iml dist/web/stats.json dist/titanium/stats.json +dist/nativescript/stats.json diff --git a/.pubnub.yml b/.pubnub.yml index 5072c615d..740b85f92 100644 --- a/.pubnub.yml +++ b/.pubnub.yml @@ -7,24 +7,24 @@ files: - dist/web/pubnub.min.js changelog: - version: v4.15.1 - date: + date: 2017-08-21 changes: - type: improvement text: fix typo to enable http keep alive support - version: v4.15.0 - date: + date: 2017-08-21 changes: - type: improvement text: Support optional message deduping via the dedupeOnSubscribe config - type: improvement text: Do not issue leave events if the channel mix is empty. - version: v4.14.0 - date: + date: 2017-08-14 changes: - type: improvement - text: Allow disable of heartbeats by passing interval = 0 + text: Allow disable of heartbeats by passing heartbeatInterval = 0 - version: v4.13.0 - date: + date: 2017-07-27 changes: - type: improvement text: patch up 503 reporting @@ -33,7 +33,7 @@ changelog: - type: improvement text: fix issue with here now and invalid server response - version: v4.12.0 - date: + date: 2017-06-19 changes: - type: improvement text: fix issue of net with android for titanium @@ -42,7 +42,7 @@ changelog: - type: feature text: add auto network detection - version: v4.10.0 - date: + date: 2017-05-23 changes: - type: improvement text: fix issue of net with android for react-native @@ -52,7 +52,7 @@ changelog: - type: feature text: metadata is now passed on message envelope - version: v4.9.1 - date: + date: 2017-05-18 changes: - type: feature text: add support custom encryption and decryption @@ -66,12 +66,12 @@ changelog: - type: improvement text: stop heartbeats for responses with status PNBadRequestCategory - version: v4.8.0 - date: + date: 2017-04-06 changes: - type: feature text: allow manual control over network state via listenToBrowserNetworkEvents - version: v4.7.0 - date: + date: 2017-03-30 changes: - type: feature text: add support for titanium SDK @@ -80,63 +80,63 @@ changelog: - type: improvement text: add validation for web distribution - version: v4.6.0 - date: + date: 2017-03-27 changes: - type: feature text: add support for presence deltas. - type: feature text: keep track of new and upcoming timetokens on status messages - version: v4.5.0 - date: + date: 2017-03-08 changes: - type: feature text: add optional support for keepAlive by passing the keepAlive config into the init logic - version: v4.4.4 - date: + date: 2017-02-14 changes: - type: improvement text: add guard to check for channel or channel group on state setting - type: improvement text: add guard to check for publish, secret keys when performing a grant - version: v4.4.3 - date: + date: 2017-02-07 changes: - type: improvement text: downgrade superagent to v2; add new entry point for react native. - version: v4.4.2 - date: + date: 2017-01-31 changes: - type: improvement text: adjust compilation for webpack based compilations - version: v4.4.1 - date: + date: 2017-01-31 changes: - type: improvement text: proxy support for node - version: v4.4.0 - date: + date: 2017-01-23 changes: - type: improvement text: upgrade dependencies; fix up linting. - type: improvement text: handle network outage cases for correct reporting. - version: v4.3.3 - date: + date: 2016-12-16 changes: - type: improvement text: bump version after v3 release. - version: v4.3.2 - date: + date: 2016-11-28 changes: - type: improvement text: removes bundling of package.json into the dist file - version: v4.3.1 - date: + date: 2016-11-22 changes: - type: improvement text: SDK now supports the restore config to allow message catch-up - version: v4.3.0 - date: + date: 2016-11-18 changes: - type: improvement text: bulk history exposed via pubnub.fetchMessages @@ -147,34 +147,34 @@ changelog: - type: improvement text: fixes for param validation on usage of promises - version: v4.2.5 - date: + date: 2016-11-04 changes: - type: improvement text: SDK reports on the id of the publisher in the message - version: v4.2.4 - date: + date: 2016-11-01 changes: - type: improvement text: Detection of support of promises improved. - version: v4.2.3 - date: + date: 2016-11-01 changes: - type: improvement text: Fixes on encoding of apostraphes. - version: v4.2.2 - date: + date: 2016-10-31 changes: - type: improvement text: Add promise support on setState operation (@jskrzypek) - type: improvement text: Add hooks to stop polling time when the number of subscriptions drops to 0 (@jasonpoe) - version: v4.2.1 - date: + date: 2016-10-30 changes: - type: improvement text: Encode signatures to avoid sending restricted characters - version: v4.2.0 - date: + date: 2016-10-26 changes: - type: improvement text: Add optional support for promises on all endpoints. @@ -183,69 +183,70 @@ changelog: - type: improvement text: Optionally, if queue size is set, send status on queue size threshold - version: v4.1.1 - date: + date: 2016-10-17 changes: - type: improvement text: Fix state setting for channels with reserved tags. - version: v4.1.0 - date: + date: 2016-10-13 changes: - type: improvement text: Reset timetoken when all unsubscribes happen - type: improvement text: Sign requests when a a secret key is passed - version: v4.0.13 - date: + date: 2016-10-05 changes: - type: improvement text: Propogate status events to the status callback on subscribe operations. - version: v4.0.12 - date: + date: 2016-10-03 changes: - type: improvement text: affectedChannels and affectedChannelGroups are now populated on subscribe / unsubscribe events - version: v4.0.11 - date: + date: 2016-09-27 changes: - type: improvement text: Dependency upgrades - version: v4.0.10 - date: + date: 2016-09-14 changes: - type: improvement text: Expose decryption and encryption as a global - version: v4.0.9 - date: + date: 2016-09-09 changes: - type: improvement text: Channel / subscription items are populated in - type: improvement text: Constants for operation and category are exposed on global object - version: v4.0.8 - date: + date: 2016-08-25 changes: - type: improvement text: Re-publish of v4.0.7 - version: v4.0.7 - date: + date: 2016-08-25 changes: - type: improvement text: Dependency upgrades - type: improvement text: Try..catch wrapped around localStorage for iframe compliance - version: v4.0.6 - date: + date: 2016-08-18 changes: - type: improvement text: Adjustment of reconnection policies for web distributions. - type: improvement text: PNSDK support for partner identification - version: v4.0.5 - date: + date: 2016-08-10 changes: - type: improvement text: Stop exposing .babelrc which causes unpredictable behavior on react native. - version: v4.0.4 + date: 2016-08-09 changes: - type: improvement text: Adjust handling of presence payloads for state settings. @@ -256,14 +257,17 @@ changelog: - type: improvement text: React Native adjustments to package.json information. - version: v4.0.3 + date: 2016-08-07 changes: - type: improvement text: Global Here Now parsing adjustments. - version: v4.0.2 + date: 2016-08-03 changes: - type: improvement text: Adjustments to internet disconnects on node. - version: v4.0.1 + date: 2016-08-01 changes: - type: bug text: Fixes to avoid double encoding on JSON payloads. diff --git a/CHANGELOG.md b/CHANGELOG.md index 295c685c0..a36f0c75e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,7 +28,7 @@ [Full Changelog](https://github.com/pubnub/javascript/compare/v4.13.0...v4.14.0) -- ⭐Allow disable of heartbeats by passing interval = 0 +- ⭐Allow disable of heartbeats by passing heartbeatInterval = 0 diff --git a/dist/nativescript/pubnub.js b/dist/nativescript/pubnub.js new file mode 100644 index 000000000..7c94f4764 --- /dev/null +++ b/dist/nativescript/pubnub.js @@ -0,0 +1,6282 @@ +/*! 4.15.1 / Consumer */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["PubNub"] = factory(); + else + root["PubNub"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; + +/******/ // The require function +/******/ function __webpack_require__(moduleId) { + +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; + +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; + +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); + +/******/ // Flag the module as loaded +/******/ module.loaded = true; + +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } + + +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; + +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; + +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; + +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _pubnubCommon = __webpack_require__(1); + + var _pubnubCommon2 = _interopRequireDefault(_pubnubCommon); + + var _networking = __webpack_require__(41); + + var _networking2 = _interopRequireDefault(_networking); + + var _common = __webpack_require__(42); + + var _common2 = _interopRequireDefault(_common); + + var _webNode = __webpack_require__(43); + + var _flow_interfaces = __webpack_require__(8); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + + var _class = function (_PubNubCore) { + _inherits(_class, _PubNubCore); + + function _class(setup) { + _classCallCheck(this, _class); + + setup.db = new _common2.default(); + setup.networking = new _networking2.default({ get: _webNode.get, post: _webNode.post }); + setup.sdkFamily = 'NativeScript'; + return _possibleConstructorReturn(this, (_class.__proto__ || Object.getPrototypeOf(_class)).call(this, setup)); + } + + return _class; + }(_pubnubCommon2.default); + + exports.default = _class; + module.exports = exports['default']; + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + var _uuid = __webpack_require__(2); + + var _uuid2 = _interopRequireDefault(_uuid); + + var _config = __webpack_require__(7); + + var _config2 = _interopRequireDefault(_config); + + var _index = __webpack_require__(9); + + var _index2 = _interopRequireDefault(_index); + + var _subscription_manager = __webpack_require__(11); + + var _subscription_manager2 = _interopRequireDefault(_subscription_manager); + + var _listener_manager = __webpack_require__(12); + + var _listener_manager2 = _interopRequireDefault(_listener_manager); + + var _endpoint = __webpack_require__(19); + + var _endpoint2 = _interopRequireDefault(_endpoint); + + var _add_channels = __webpack_require__(20); + + var addChannelsChannelGroupConfig = _interopRequireWildcard(_add_channels); + + var _remove_channels = __webpack_require__(21); + + var removeChannelsChannelGroupConfig = _interopRequireWildcard(_remove_channels); + + var _delete_group = __webpack_require__(22); + + var deleteChannelGroupConfig = _interopRequireWildcard(_delete_group); + + var _list_groups = __webpack_require__(23); + + var listChannelGroupsConfig = _interopRequireWildcard(_list_groups); + + var _list_channels = __webpack_require__(24); + + var listChannelsInChannelGroupConfig = _interopRequireWildcard(_list_channels); + + var _add_push_channels = __webpack_require__(25); + + var addPushChannelsConfig = _interopRequireWildcard(_add_push_channels); + + var _remove_push_channels = __webpack_require__(26); + + var removePushChannelsConfig = _interopRequireWildcard(_remove_push_channels); + + var _list_push_channels = __webpack_require__(27); + + var listPushChannelsConfig = _interopRequireWildcard(_list_push_channels); + + var _remove_device = __webpack_require__(28); + + var removeDevicePushConfig = _interopRequireWildcard(_remove_device); + + var _leave = __webpack_require__(29); + + var presenceLeaveEndpointConfig = _interopRequireWildcard(_leave); + + var _where_now = __webpack_require__(30); + + var presenceWhereNowEndpointConfig = _interopRequireWildcard(_where_now); + + var _heartbeat = __webpack_require__(31); + + var presenceHeartbeatEndpointConfig = _interopRequireWildcard(_heartbeat); + + var _get_state = __webpack_require__(32); + + var presenceGetStateConfig = _interopRequireWildcard(_get_state); + + var _set_state = __webpack_require__(33); + + var presenceSetStateConfig = _interopRequireWildcard(_set_state); + + var _here_now = __webpack_require__(34); + + var presenceHereNowConfig = _interopRequireWildcard(_here_now); + + var _audit = __webpack_require__(35); + + var auditEndpointConfig = _interopRequireWildcard(_audit); + + var _grant = __webpack_require__(36); + + var grantEndpointConfig = _interopRequireWildcard(_grant); + + var _publish = __webpack_require__(37); + + var publishEndpointConfig = _interopRequireWildcard(_publish); + + var _history = __webpack_require__(38); + + var historyEndpointConfig = _interopRequireWildcard(_history); + + var _fetch_messages = __webpack_require__(39); + + var fetchMessagesEndpointConfig = _interopRequireWildcard(_fetch_messages); + + var _time = __webpack_require__(15); + + var timeEndpointConfig = _interopRequireWildcard(_time); + + var _subscribe = __webpack_require__(40); + + var subscribeEndpointConfig = _interopRequireWildcard(_subscribe); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + var _categories = __webpack_require__(13); + + var _categories2 = _interopRequireDefault(_categories); + + var _flow_interfaces = __webpack_require__(8); + + function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var _class = function () { + function _class(setup) { + var _this = this; + + _classCallCheck(this, _class); + + var db = setup.db, + networking = setup.networking; + + + var config = this._config = new _config2.default({ setup: setup, db: db }); + var crypto = new _index2.default({ config: config }); + + networking.init(config); + + var modules = { config: config, networking: networking, crypto: crypto }; + + var timeEndpoint = _endpoint2.default.bind(this, modules, timeEndpointConfig); + var leaveEndpoint = _endpoint2.default.bind(this, modules, presenceLeaveEndpointConfig); + var heartbeatEndpoint = _endpoint2.default.bind(this, modules, presenceHeartbeatEndpointConfig); + var setStateEndpoint = _endpoint2.default.bind(this, modules, presenceSetStateConfig); + var subscribeEndpoint = _endpoint2.default.bind(this, modules, subscribeEndpointConfig); + + var listenerManager = this._listenerManager = new _listener_manager2.default(); + + var subscriptionManager = new _subscription_manager2.default({ + timeEndpoint: timeEndpoint, + leaveEndpoint: leaveEndpoint, + heartbeatEndpoint: heartbeatEndpoint, + setStateEndpoint: setStateEndpoint, + subscribeEndpoint: subscribeEndpoint, + crypto: modules.crypto, + config: modules.config, + listenerManager: listenerManager + }); + + this.addListener = listenerManager.addListener.bind(listenerManager); + this.removeListener = listenerManager.removeListener.bind(listenerManager); + this.removeAllListeners = listenerManager.removeAllListeners.bind(listenerManager); + + this.channelGroups = { + listGroups: _endpoint2.default.bind(this, modules, listChannelGroupsConfig), + listChannels: _endpoint2.default.bind(this, modules, listChannelsInChannelGroupConfig), + addChannels: _endpoint2.default.bind(this, modules, addChannelsChannelGroupConfig), + removeChannels: _endpoint2.default.bind(this, modules, removeChannelsChannelGroupConfig), + deleteGroup: _endpoint2.default.bind(this, modules, deleteChannelGroupConfig) + }; + + this.push = { + addChannels: _endpoint2.default.bind(this, modules, addPushChannelsConfig), + removeChannels: _endpoint2.default.bind(this, modules, removePushChannelsConfig), + deleteDevice: _endpoint2.default.bind(this, modules, removeDevicePushConfig), + listChannels: _endpoint2.default.bind(this, modules, listPushChannelsConfig) + }; + + this.hereNow = _endpoint2.default.bind(this, modules, presenceHereNowConfig); + this.whereNow = _endpoint2.default.bind(this, modules, presenceWhereNowEndpointConfig); + this.getState = _endpoint2.default.bind(this, modules, presenceGetStateConfig); + this.setState = subscriptionManager.adaptStateChange.bind(subscriptionManager); + + this.grant = _endpoint2.default.bind(this, modules, grantEndpointConfig); + this.audit = _endpoint2.default.bind(this, modules, auditEndpointConfig); + + this.publish = _endpoint2.default.bind(this, modules, publishEndpointConfig); + + this.fire = function (args, callback) { + args.replicate = false; + args.storeInHistory = false; + return _this.publish(args, callback); + }; + + this.history = _endpoint2.default.bind(this, modules, historyEndpointConfig); + this.fetchMessages = _endpoint2.default.bind(this, modules, fetchMessagesEndpointConfig); + + this.time = timeEndpoint; + + this.subscribe = subscriptionManager.adaptSubscribeChange.bind(subscriptionManager); + this.unsubscribe = subscriptionManager.adaptUnsubscribeChange.bind(subscriptionManager); + this.disconnect = subscriptionManager.disconnect.bind(subscriptionManager); + this.reconnect = subscriptionManager.reconnect.bind(subscriptionManager); + + this.destroy = function (isOffline) { + subscriptionManager.unsubscribeAll(isOffline); + subscriptionManager.disconnect(); + }; + + this.stop = this.destroy; + + this.unsubscribeAll = subscriptionManager.unsubscribeAll.bind(subscriptionManager); + + this.getSubscribedChannels = subscriptionManager.getSubscribedChannels.bind(subscriptionManager); + this.getSubscribedChannelGroups = subscriptionManager.getSubscribedChannelGroups.bind(subscriptionManager); + + this.encrypt = crypto.encrypt.bind(crypto); + this.decrypt = crypto.decrypt.bind(crypto); + + this.getAuthKey = modules.config.getAuthKey.bind(modules.config); + this.setAuthKey = modules.config.setAuthKey.bind(modules.config); + this.setCipherKey = modules.config.setCipherKey.bind(modules.config); + this.getUUID = modules.config.getUUID.bind(modules.config); + this.setUUID = modules.config.setUUID.bind(modules.config); + this.getFilterExpression = modules.config.getFilterExpression.bind(modules.config); + this.setFilterExpression = modules.config.setFilterExpression.bind(modules.config); + + this.setHeartbeatInterval = modules.config.setHeartbeatInterval.bind(modules.config); + } + + _createClass(_class, [{ + key: 'getVersion', + value: function getVersion() { + return this._config.getVersion(); + } + }, { + key: 'networkDownDetected', + value: function networkDownDetected() { + this._listenerManager.announceNetworkDown(); + + if (this._config.restore) { + this.disconnect(); + } else { + this.destroy(true); + } + } + }, { + key: 'networkUpDetected', + value: function networkUpDetected() { + this._listenerManager.announceNetworkUp(); + this.reconnect(); + } + }], [{ + key: 'generateUUID', + value: function generateUUID() { + return _uuid2.default.v4(); + } + }]); + + return _class; + }(); + + _class.OPERATIONS = _operations2.default; + _class.CATEGORIES = _categories2.default; + exports.default = _class; + module.exports = exports['default']; + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + + var v1 = __webpack_require__(3); + var v4 = __webpack_require__(6); + + var uuid = v4; + uuid.v1 = v1; + uuid.v4 = v4; + + module.exports = uuid; + + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + + var rng = __webpack_require__(4); + var bytesToUuid = __webpack_require__(5); + + // **`v1()` - Generate time-based UUID** + // + // Inspired by https://github.com/LiosK/UUID.js + // and http://docs.python.org/library/uuid.html + + // random #'s we need to init node and clockseq + var _seedBytes = rng(); + + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + var _nodeId = [ + _seedBytes[0] | 0x01, + _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5] + ]; + + // Per 4.2.2, randomize (14 bit) clockseq + var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff; + + // Previous uuid creation time + var _lastMSecs = 0, _lastNSecs = 0; + + // See https://github.com/broofa/node-uuid for API details + function v1(options, buf, offset) { + var i = buf && offset || 0; + var b = buf || []; + + options = options || {}; + + var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; + + // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); + + // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; + + // Time since last uuid creation (in msecs) + var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; + + // Per 4.2.1.2, Bump clockseq on clock regression + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } + + // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } + + // Per 4.2.1.2 Throw error if too many uuids are requested + if (nsecs >= 10000) { + throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; + + // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + msecs += 12219292800000; + + // `time_low` + var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; + + // `time_mid` + var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; + + // `time_high_and_version` + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + b[i++] = tmh >>> 16 & 0xff; + + // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + b[i++] = clockseq >>> 8 | 0x80; + + // `clock_seq_low` + b[i++] = clockseq & 0xff; + + // `node` + var node = options.node || _nodeId; + for (var n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf ? buf : bytesToUuid(b); + } + + module.exports = v1; + + +/***/ }), +/* 4 */ +/***/ (function(module, exports) { + + /* WEBPACK VAR INJECTION */(function(global) {// Unique ID creation requires a high quality random # generator. In the + // browser this is a little complicated due to unknown quality of Math.random() + // and inconsistent support for the `crypto` API. We do the best we can via + // feature-detection + var rng; + + var crypto = global.crypto || global.msCrypto; // for IE 11 + if (crypto && crypto.getRandomValues) { + // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto + var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef + rng = function whatwgRNG() { + crypto.getRandomValues(rnds8); + return rnds8; + }; + } + + if (!rng) { + // Math.random()-based (RNG) + // + // If all else fails, use Math.random(). It's fast, but is of unspecified + // quality. + var rnds = new Array(16); + rng = function() { + for (var i = 0, r; i < 16; i++) { + if ((i & 0x03) === 0) r = Math.random() * 0x100000000; + rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; + } + + return rnds; + }; + } + + module.exports = rng; + + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) + +/***/ }), +/* 5 */ +/***/ (function(module, exports) { + + /** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ + var byteToHex = []; + for (var i = 0; i < 256; ++i) { + byteToHex[i] = (i + 0x100).toString(16).substr(1); + } + + function bytesToUuid(buf, offset) { + var i = offset || 0; + var bth = byteToHex; + return bth[buf[i++]] + bth[buf[i++]] + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + + bth[buf[i++]] + bth[buf[i++]] + + bth[buf[i++]] + bth[buf[i++]]; + } + + module.exports = bytesToUuid; + + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + + var rng = __webpack_require__(4); + var bytesToUuid = __webpack_require__(5); + + function v4(options, buf, offset) { + var i = buf && offset || 0; + + if (typeof(options) == 'string') { + buf = options == 'binary' ? new Array(16) : null; + options = null; + } + options = options || {}; + + var rnds = options.random || (options.rng || rng)(); + + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + rnds[6] = (rnds[6] & 0x0f) | 0x40; + rnds[8] = (rnds[8] & 0x3f) | 0x80; + + // Copy bytes to buffer, if provided + if (buf) { + for (var ii = 0; ii < 16; ++ii) { + buf[i + ii] = rnds[ii]; + } + } + + return buf || bytesToUuid(rnds); + } + + module.exports = v4; + + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + var _uuid = __webpack_require__(2); + + var _uuid2 = _interopRequireDefault(_uuid); + + var _flow_interfaces = __webpack_require__(8); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var _class = function () { + function _class(_ref) { + var setup = _ref.setup, + db = _ref.db; + + _classCallCheck(this, _class); + + this._db = db; + + this.instanceId = 'pn-' + _uuid2.default.v4(); + this.secretKey = setup.secretKey || setup.secret_key; + this.subscribeKey = setup.subscribeKey || setup.subscribe_key; + this.publishKey = setup.publishKey || setup.publish_key; + this.sdkFamily = setup.sdkFamily; + this.partnerId = setup.partnerId; + this.setAuthKey(setup.authKey); + this.setCipherKey(setup.cipherKey); + + this.setFilterExpression(setup.filterExpression); + + this.origin = setup.origin || 'pubsub.pndsn.com'; + this.secure = setup.ssl || false; + this.restore = setup.restore || false; + this.proxy = setup.proxy; + this.keepAlive = setup.keepAlive; + this.keepAliveSettings = setup.keepAliveSettings; + this.autoNetworkDetection = setup.autoNetworkDetection || false; + + this.dedupeOnSubscribe = setup.dedupeOnSubscribe || false; + this.maximumCacheSize = setup.maximumCacheSize || 100; + + this.customEncrypt = setup.customEncrypt; + this.customDecrypt = setup.customDecrypt; + + if (typeof location !== 'undefined' && location.protocol === 'https:') { + this.secure = true; + } + + this.logVerbosity = setup.logVerbosity || false; + this.suppressLeaveEvents = setup.suppressLeaveEvents || false; + + this.announceFailedHeartbeats = setup.announceFailedHeartbeats || true; + this.announceSuccessfulHeartbeats = setup.announceSuccessfulHeartbeats || false; + + this.useInstanceId = setup.useInstanceId || false; + this.useRequestId = setup.useRequestId || false; + + this.requestMessageCountThreshold = setup.requestMessageCountThreshold; + + this.setTransactionTimeout(setup.transactionalRequestTimeout || 15 * 1000); + + this.setSubscribeTimeout(setup.subscribeRequestTimeout || 310 * 1000); + + this.setSendBeaconConfig(setup.useSendBeacon || true); + + this.setPresenceTimeout(setup.presenceTimeout || 300); + + if (setup.heartbeatInterval) { + this.setHeartbeatInterval(setup.heartbeatInterval); + } + + this.setUUID(this._decideUUID(setup.uuid)); + } + + _createClass(_class, [{ + key: 'getAuthKey', + value: function getAuthKey() { + return this.authKey; + } + }, { + key: 'setAuthKey', + value: function setAuthKey(val) { + this.authKey = val;return this; + } + }, { + key: 'setCipherKey', + value: function setCipherKey(val) { + this.cipherKey = val;return this; + } + }, { + key: 'getUUID', + value: function getUUID() { + return this.UUID; + } + }, { + key: 'setUUID', + value: function setUUID(val) { + if (this._db && this._db.set) this._db.set(this.subscribeKey + 'uuid', val); + this.UUID = val; + return this; + } + }, { + key: 'getFilterExpression', + value: function getFilterExpression() { + return this.filterExpression; + } + }, { + key: 'setFilterExpression', + value: function setFilterExpression(val) { + this.filterExpression = val;return this; + } + }, { + key: 'getPresenceTimeout', + value: function getPresenceTimeout() { + return this._presenceTimeout; + } + }, { + key: 'setPresenceTimeout', + value: function setPresenceTimeout(val) { + this._presenceTimeout = val; + this.setHeartbeatInterval(this._presenceTimeout / 2 - 1); + return this; + } + }, { + key: 'getHeartbeatInterval', + value: function getHeartbeatInterval() { + return this._heartbeatInterval; + } + }, { + key: 'setHeartbeatInterval', + value: function setHeartbeatInterval(val) { + this._heartbeatInterval = val;return this; + } + }, { + key: 'getSubscribeTimeout', + value: function getSubscribeTimeout() { + return this._subscribeRequestTimeout; + } + }, { + key: 'setSubscribeTimeout', + value: function setSubscribeTimeout(val) { + this._subscribeRequestTimeout = val;return this; + } + }, { + key: 'getTransactionTimeout', + value: function getTransactionTimeout() { + return this._transactionalRequestTimeout; + } + }, { + key: 'setTransactionTimeout', + value: function setTransactionTimeout(val) { + this._transactionalRequestTimeout = val;return this; + } + }, { + key: 'isSendBeaconEnabled', + value: function isSendBeaconEnabled() { + return this._useSendBeacon; + } + }, { + key: 'setSendBeaconConfig', + value: function setSendBeaconConfig(val) { + this._useSendBeacon = val;return this; + } + }, { + key: 'getVersion', + value: function getVersion() { + return '4.15.1'; + } + }, { + key: '_decideUUID', + value: function _decideUUID(providedUUID) { + if (providedUUID) { + return providedUUID; + } + + if (this._db && this._db.get && this._db.get(this.subscribeKey + 'uuid')) { + return this._db.get(this.subscribeKey + 'uuid'); + } + + return 'pn-' + _uuid2.default.v4(); + } + }]); + + return _class; + }(); + + exports.default = _class; + module.exports = exports['default']; + +/***/ }), +/* 8 */ +/***/ (function(module, exports) { + + 'use strict'; + + module.exports = {}; + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + var _config = __webpack_require__(7); + + var _config2 = _interopRequireDefault(_config); + + var _hmacSha = __webpack_require__(10); + + var _hmacSha2 = _interopRequireDefault(_hmacSha); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var _class = function () { + function _class(_ref) { + var config = _ref.config; + + _classCallCheck(this, _class); + + this._config = config; + + this._iv = '0123456789012345'; + + this._allowedKeyEncodings = ['hex', 'utf8', 'base64', 'binary']; + this._allowedKeyLengths = [128, 256]; + this._allowedModes = ['ecb', 'cbc']; + + this._defaultOptions = { + encryptKey: true, + keyEncoding: 'utf8', + keyLength: 256, + mode: 'cbc' + }; + } + + _createClass(_class, [{ + key: 'HMACSHA256', + value: function HMACSHA256(data) { + var hash = _hmacSha2.default.HmacSHA256(data, this._config.secretKey); + return hash.toString(_hmacSha2.default.enc.Base64); + } + }, { + key: 'SHA256', + value: function SHA256(s) { + return _hmacSha2.default.SHA256(s).toString(_hmacSha2.default.enc.Hex); + } + }, { + key: '_parseOptions', + value: function _parseOptions(incomingOptions) { + var options = incomingOptions || {}; + if (!options.hasOwnProperty('encryptKey')) options.encryptKey = this._defaultOptions.encryptKey; + if (!options.hasOwnProperty('keyEncoding')) options.keyEncoding = this._defaultOptions.keyEncoding; + if (!options.hasOwnProperty('keyLength')) options.keyLength = this._defaultOptions.keyLength; + if (!options.hasOwnProperty('mode')) options.mode = this._defaultOptions.mode; + + if (this._allowedKeyEncodings.indexOf(options.keyEncoding.toLowerCase()) === -1) { + options.keyEncoding = this._defaultOptions.keyEncoding; + } + + if (this._allowedKeyLengths.indexOf(parseInt(options.keyLength, 10)) === -1) { + options.keyLength = this._defaultOptions.keyLength; + } + + if (this._allowedModes.indexOf(options.mode.toLowerCase()) === -1) { + options.mode = this._defaultOptions.mode; + } + + return options; + } + }, { + key: '_decodeKey', + value: function _decodeKey(key, options) { + if (options.keyEncoding === 'base64') { + return _hmacSha2.default.enc.Base64.parse(key); + } else if (options.keyEncoding === 'hex') { + return _hmacSha2.default.enc.Hex.parse(key); + } else { + return key; + } + } + }, { + key: '_getPaddedKey', + value: function _getPaddedKey(key, options) { + key = this._decodeKey(key, options); + if (options.encryptKey) { + return _hmacSha2.default.enc.Utf8.parse(this.SHA256(key).slice(0, 32)); + } else { + return key; + } + } + }, { + key: '_getMode', + value: function _getMode(options) { + if (options.mode === 'ecb') { + return _hmacSha2.default.mode.ECB; + } else { + return _hmacSha2.default.mode.CBC; + } + } + }, { + key: '_getIV', + value: function _getIV(options) { + return options.mode === 'cbc' ? _hmacSha2.default.enc.Utf8.parse(this._iv) : null; + } + }, { + key: 'encrypt', + value: function encrypt(data, customCipherKey, options) { + if (this._config.customEncrypt) { + return this._config.customEncrypt(data); + } else { + return this.pnEncrypt(data, customCipherKey, options); + } + } + }, { + key: 'decrypt', + value: function decrypt(data, customCipherKey, options) { + if (this._config.customDecrypt) { + return this._config.customDecrypt(data); + } else { + return this.pnDecrypt(data, customCipherKey, options); + } + } + }, { + key: 'pnEncrypt', + value: function pnEncrypt(data, customCipherKey, options) { + if (!customCipherKey && !this._config.cipherKey) return data; + options = this._parseOptions(options); + var iv = this._getIV(options); + var mode = this._getMode(options); + var cipherKey = this._getPaddedKey(customCipherKey || this._config.cipherKey, options); + var encryptedHexArray = _hmacSha2.default.AES.encrypt(data, cipherKey, { iv: iv, mode: mode }).ciphertext; + var base64Encrypted = encryptedHexArray.toString(_hmacSha2.default.enc.Base64); + return base64Encrypted || data; + } + }, { + key: 'pnDecrypt', + value: function pnDecrypt(data, customCipherKey, options) { + if (!customCipherKey && !this._config.cipherKey) return data; + options = this._parseOptions(options); + var iv = this._getIV(options); + var mode = this._getMode(options); + var cipherKey = this._getPaddedKey(customCipherKey || this._config.cipherKey, options); + try { + var ciphertext = _hmacSha2.default.enc.Base64.parse(data); + var plainJSON = _hmacSha2.default.AES.decrypt({ ciphertext: ciphertext }, cipherKey, { iv: iv, mode: mode }).toString(_hmacSha2.default.enc.Utf8); + var plaintext = JSON.parse(plainJSON); + return plaintext; + } catch (e) { + return null; + } + } + }]); + + return _class; + }(); + + exports.default = _class; + module.exports = exports['default']; + +/***/ }), +/* 10 */ +/***/ (function(module, exports) { + + "use strict"; + + var CryptoJS = CryptoJS || function (h, s) { + var f = {}, + g = f.lib = {}, + q = function q() {}, + m = g.Base = { extend: function extend(a) { + q.prototype = this;var c = new q();a && c.mixIn(a);c.hasOwnProperty("init") || (c.init = function () { + c.$super.init.apply(this, arguments); + });c.init.prototype = c;c.$super = this;return c; + }, create: function create() { + var a = this.extend();a.init.apply(a, arguments);return a; + }, init: function init() {}, mixIn: function mixIn(a) { + for (var c in a) { + a.hasOwnProperty(c) && (this[c] = a[c]); + }a.hasOwnProperty("toString") && (this.toString = a.toString); + }, clone: function clone() { + return this.init.prototype.extend(this); + } }, + r = g.WordArray = m.extend({ init: function init(a, c) { + a = this.words = a || [];this.sigBytes = c != s ? c : 4 * a.length; + }, toString: function toString(a) { + return (a || k).stringify(this); + }, concat: function concat(a) { + var c = this.words, + d = a.words, + b = this.sigBytes;a = a.sigBytes;this.clamp();if (b % 4) for (var e = 0; e < a; e++) { + c[b + e >>> 2] |= (d[e >>> 2] >>> 24 - 8 * (e % 4) & 255) << 24 - 8 * ((b + e) % 4); + } else if (65535 < d.length) for (e = 0; e < a; e += 4) { + c[b + e >>> 2] = d[e >>> 2]; + } else c.push.apply(c, d);this.sigBytes += a;return this; + }, clamp: function clamp() { + var a = this.words, + c = this.sigBytes;a[c >>> 2] &= 4294967295 << 32 - 8 * (c % 4);a.length = h.ceil(c / 4); + }, clone: function clone() { + var a = m.clone.call(this);a.words = this.words.slice(0);return a; + }, random: function random(a) { + for (var c = [], d = 0; d < a; d += 4) { + c.push(4294967296 * h.random() | 0); + }return new r.init(c, a); + } }), + l = f.enc = {}, + k = l.Hex = { stringify: function stringify(a) { + var c = a.words;a = a.sigBytes;for (var d = [], b = 0; b < a; b++) { + var e = c[b >>> 2] >>> 24 - 8 * (b % 4) & 255;d.push((e >>> 4).toString(16));d.push((e & 15).toString(16)); + }return d.join(""); + }, parse: function parse(a) { + for (var c = a.length, d = [], b = 0; b < c; b += 2) { + d[b >>> 3] |= parseInt(a.substr(b, 2), 16) << 24 - 4 * (b % 8); + }return new r.init(d, c / 2); + } }, + n = l.Latin1 = { stringify: function stringify(a) { + var c = a.words;a = a.sigBytes;for (var d = [], b = 0; b < a; b++) { + d.push(String.fromCharCode(c[b >>> 2] >>> 24 - 8 * (b % 4) & 255)); + }return d.join(""); + }, parse: function parse(a) { + for (var c = a.length, d = [], b = 0; b < c; b++) { + d[b >>> 2] |= (a.charCodeAt(b) & 255) << 24 - 8 * (b % 4); + }return new r.init(d, c); + } }, + j = l.Utf8 = { stringify: function stringify(a) { + try { + return decodeURIComponent(escape(n.stringify(a))); + } catch (c) { + throw Error("Malformed UTF-8 data"); + } + }, parse: function parse(a) { + return n.parse(unescape(encodeURIComponent(a))); + } }, + u = g.BufferedBlockAlgorithm = m.extend({ reset: function reset() { + this._data = new r.init();this._nDataBytes = 0; + }, _append: function _append(a) { + "string" == typeof a && (a = j.parse(a));this._data.concat(a);this._nDataBytes += a.sigBytes; + }, _process: function _process(a) { + var c = this._data, + d = c.words, + b = c.sigBytes, + e = this.blockSize, + f = b / (4 * e), + f = a ? h.ceil(f) : h.max((f | 0) - this._minBufferSize, 0);a = f * e;b = h.min(4 * a, b);if (a) { + for (var g = 0; g < a; g += e) { + this._doProcessBlock(d, g); + }g = d.splice(0, a);c.sigBytes -= b; + }return new r.init(g, b); + }, clone: function clone() { + var a = m.clone.call(this); + a._data = this._data.clone();return a; + }, _minBufferSize: 0 });g.Hasher = u.extend({ cfg: m.extend(), init: function init(a) { + this.cfg = this.cfg.extend(a);this.reset(); + }, reset: function reset() { + u.reset.call(this);this._doReset(); + }, update: function update(a) { + this._append(a);this._process();return this; + }, finalize: function finalize(a) { + a && this._append(a);return this._doFinalize(); + }, blockSize: 16, _createHelper: function _createHelper(a) { + return function (c, d) { + return new a.init(d).finalize(c); + }; + }, _createHmacHelper: function _createHmacHelper(a) { + return function (c, d) { + return new t.HMAC.init(a, d).finalize(c); + }; + } });var t = f.algo = {};return f; + }(Math); + + (function (h) { + for (var s = CryptoJS, f = s.lib, g = f.WordArray, q = f.Hasher, f = s.algo, m = [], r = [], l = function l(a) { + return 4294967296 * (a - (a | 0)) | 0; + }, k = 2, n = 0; 64 > n;) { + var j;a: { + j = k;for (var u = h.sqrt(j), t = 2; t <= u; t++) { + if (!(j % t)) { + j = !1;break a; + } + }j = !0; + }j && (8 > n && (m[n] = l(h.pow(k, 0.5))), r[n] = l(h.pow(k, 1 / 3)), n++);k++; + }var a = [], + f = f.SHA256 = q.extend({ _doReset: function _doReset() { + this._hash = new g.init(m.slice(0)); + }, _doProcessBlock: function _doProcessBlock(c, d) { + for (var b = this._hash.words, e = b[0], f = b[1], g = b[2], j = b[3], h = b[4], m = b[5], n = b[6], q = b[7], p = 0; 64 > p; p++) { + if (16 > p) a[p] = c[d + p] | 0;else { + var k = a[p - 15], + l = a[p - 2];a[p] = ((k << 25 | k >>> 7) ^ (k << 14 | k >>> 18) ^ k >>> 3) + a[p - 7] + ((l << 15 | l >>> 17) ^ (l << 13 | l >>> 19) ^ l >>> 10) + a[p - 16]; + }k = q + ((h << 26 | h >>> 6) ^ (h << 21 | h >>> 11) ^ (h << 7 | h >>> 25)) + (h & m ^ ~h & n) + r[p] + a[p];l = ((e << 30 | e >>> 2) ^ (e << 19 | e >>> 13) ^ (e << 10 | e >>> 22)) + (e & f ^ e & g ^ f & g);q = n;n = m;m = h;h = j + k | 0;j = g;g = f;f = e;e = k + l | 0; + }b[0] = b[0] + e | 0;b[1] = b[1] + f | 0;b[2] = b[2] + g | 0;b[3] = b[3] + j | 0;b[4] = b[4] + h | 0;b[5] = b[5] + m | 0;b[6] = b[6] + n | 0;b[7] = b[7] + q | 0; + }, _doFinalize: function _doFinalize() { + var a = this._data, + d = a.words, + b = 8 * this._nDataBytes, + e = 8 * a.sigBytes; + d[e >>> 5] |= 128 << 24 - e % 32;d[(e + 64 >>> 9 << 4) + 14] = h.floor(b / 4294967296);d[(e + 64 >>> 9 << 4) + 15] = b;a.sigBytes = 4 * d.length;this._process();return this._hash; + }, clone: function clone() { + var a = q.clone.call(this);a._hash = this._hash.clone();return a; + } });s.SHA256 = q._createHelper(f);s.HmacSHA256 = q._createHmacHelper(f); + })(Math); + + (function () { + var h = CryptoJS, + s = h.enc.Utf8;h.algo.HMAC = h.lib.Base.extend({ init: function init(f, g) { + f = this._hasher = new f.init();"string" == typeof g && (g = s.parse(g));var h = f.blockSize, + m = 4 * h;g.sigBytes > m && (g = f.finalize(g));g.clamp();for (var r = this._oKey = g.clone(), l = this._iKey = g.clone(), k = r.words, n = l.words, j = 0; j < h; j++) { + k[j] ^= 1549556828, n[j] ^= 909522486; + }r.sigBytes = l.sigBytes = m;this.reset(); + }, reset: function reset() { + var f = this._hasher;f.reset();f.update(this._iKey); + }, update: function update(f) { + this._hasher.update(f);return this; + }, finalize: function finalize(f) { + var g = this._hasher;f = g.finalize(f);g.reset();return g.finalize(this._oKey.clone().concat(f)); + } }); + })(); + + (function () { + var u = CryptoJS, + p = u.lib.WordArray;u.enc.Base64 = { stringify: function stringify(d) { + var l = d.words, + p = d.sigBytes, + t = this._map;d.clamp();d = [];for (var r = 0; r < p; r += 3) { + for (var w = (l[r >>> 2] >>> 24 - 8 * (r % 4) & 255) << 16 | (l[r + 1 >>> 2] >>> 24 - 8 * ((r + 1) % 4) & 255) << 8 | l[r + 2 >>> 2] >>> 24 - 8 * ((r + 2) % 4) & 255, v = 0; 4 > v && r + 0.75 * v < p; v++) { + d.push(t.charAt(w >>> 6 * (3 - v) & 63)); + } + }if (l = t.charAt(64)) for (; d.length % 4;) { + d.push(l); + }return d.join(""); + }, parse: function parse(d) { + var l = d.length, + s = this._map, + t = s.charAt(64);t && (t = d.indexOf(t), -1 != t && (l = t));for (var t = [], r = 0, w = 0; w < l; w++) { + if (w % 4) { + var v = s.indexOf(d.charAt(w - 1)) << 2 * (w % 4), + b = s.indexOf(d.charAt(w)) >>> 6 - 2 * (w % 4);t[r >>> 2] |= (v | b) << 24 - 8 * (r % 4);r++; + } + }return p.create(t, r); + }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" }; + })(); + + (function (u) { + function p(b, n, a, c, e, j, k) { + b = b + (n & a | ~n & c) + e + k;return (b << j | b >>> 32 - j) + n; + }function d(b, n, a, c, e, j, k) { + b = b + (n & c | a & ~c) + e + k;return (b << j | b >>> 32 - j) + n; + }function l(b, n, a, c, e, j, k) { + b = b + (n ^ a ^ c) + e + k;return (b << j | b >>> 32 - j) + n; + }function s(b, n, a, c, e, j, k) { + b = b + (a ^ (n | ~c)) + e + k;return (b << j | b >>> 32 - j) + n; + }for (var t = CryptoJS, r = t.lib, w = r.WordArray, v = r.Hasher, r = t.algo, b = [], x = 0; 64 > x; x++) { + b[x] = 4294967296 * u.abs(u.sin(x + 1)) | 0; + }r = r.MD5 = v.extend({ _doReset: function _doReset() { + this._hash = new w.init([1732584193, 4023233417, 2562383102, 271733878]); + }, + _doProcessBlock: function _doProcessBlock(q, n) { + for (var a = 0; 16 > a; a++) { + var c = n + a, + e = q[c];q[c] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360; + }var a = this._hash.words, + c = q[n + 0], + e = q[n + 1], + j = q[n + 2], + k = q[n + 3], + z = q[n + 4], + r = q[n + 5], + t = q[n + 6], + w = q[n + 7], + v = q[n + 8], + A = q[n + 9], + B = q[n + 10], + C = q[n + 11], + u = q[n + 12], + D = q[n + 13], + E = q[n + 14], + x = q[n + 15], + f = a[0], + m = a[1], + g = a[2], + h = a[3], + f = p(f, m, g, h, c, 7, b[0]), + h = p(h, f, m, g, e, 12, b[1]), + g = p(g, h, f, m, j, 17, b[2]), + m = p(m, g, h, f, k, 22, b[3]), + f = p(f, m, g, h, z, 7, b[4]), + h = p(h, f, m, g, r, 12, b[5]), + g = p(g, h, f, m, t, 17, b[6]), + m = p(m, g, h, f, w, 22, b[7]), + f = p(f, m, g, h, v, 7, b[8]), + h = p(h, f, m, g, A, 12, b[9]), + g = p(g, h, f, m, B, 17, b[10]), + m = p(m, g, h, f, C, 22, b[11]), + f = p(f, m, g, h, u, 7, b[12]), + h = p(h, f, m, g, D, 12, b[13]), + g = p(g, h, f, m, E, 17, b[14]), + m = p(m, g, h, f, x, 22, b[15]), + f = d(f, m, g, h, e, 5, b[16]), + h = d(h, f, m, g, t, 9, b[17]), + g = d(g, h, f, m, C, 14, b[18]), + m = d(m, g, h, f, c, 20, b[19]), + f = d(f, m, g, h, r, 5, b[20]), + h = d(h, f, m, g, B, 9, b[21]), + g = d(g, h, f, m, x, 14, b[22]), + m = d(m, g, h, f, z, 20, b[23]), + f = d(f, m, g, h, A, 5, b[24]), + h = d(h, f, m, g, E, 9, b[25]), + g = d(g, h, f, m, k, 14, b[26]), + m = d(m, g, h, f, v, 20, b[27]), + f = d(f, m, g, h, D, 5, b[28]), + h = d(h, f, m, g, j, 9, b[29]), + g = d(g, h, f, m, w, 14, b[30]), + m = d(m, g, h, f, u, 20, b[31]), + f = l(f, m, g, h, r, 4, b[32]), + h = l(h, f, m, g, v, 11, b[33]), + g = l(g, h, f, m, C, 16, b[34]), + m = l(m, g, h, f, E, 23, b[35]), + f = l(f, m, g, h, e, 4, b[36]), + h = l(h, f, m, g, z, 11, b[37]), + g = l(g, h, f, m, w, 16, b[38]), + m = l(m, g, h, f, B, 23, b[39]), + f = l(f, m, g, h, D, 4, b[40]), + h = l(h, f, m, g, c, 11, b[41]), + g = l(g, h, f, m, k, 16, b[42]), + m = l(m, g, h, f, t, 23, b[43]), + f = l(f, m, g, h, A, 4, b[44]), + h = l(h, f, m, g, u, 11, b[45]), + g = l(g, h, f, m, x, 16, b[46]), + m = l(m, g, h, f, j, 23, b[47]), + f = s(f, m, g, h, c, 6, b[48]), + h = s(h, f, m, g, w, 10, b[49]), + g = s(g, h, f, m, E, 15, b[50]), + m = s(m, g, h, f, r, 21, b[51]), + f = s(f, m, g, h, u, 6, b[52]), + h = s(h, f, m, g, k, 10, b[53]), + g = s(g, h, f, m, B, 15, b[54]), + m = s(m, g, h, f, e, 21, b[55]), + f = s(f, m, g, h, v, 6, b[56]), + h = s(h, f, m, g, x, 10, b[57]), + g = s(g, h, f, m, t, 15, b[58]), + m = s(m, g, h, f, D, 21, b[59]), + f = s(f, m, g, h, z, 6, b[60]), + h = s(h, f, m, g, C, 10, b[61]), + g = s(g, h, f, m, j, 15, b[62]), + m = s(m, g, h, f, A, 21, b[63]);a[0] = a[0] + f | 0;a[1] = a[1] + m | 0;a[2] = a[2] + g | 0;a[3] = a[3] + h | 0; + }, _doFinalize: function _doFinalize() { + var b = this._data, + n = b.words, + a = 8 * this._nDataBytes, + c = 8 * b.sigBytes;n[c >>> 5] |= 128 << 24 - c % 32;var e = u.floor(a / 4294967296);n[(c + 64 >>> 9 << 4) + 15] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360;n[(c + 64 >>> 9 << 4) + 14] = (a << 8 | a >>> 24) & 16711935 | (a << 24 | a >>> 8) & 4278255360;b.sigBytes = 4 * (n.length + 1);this._process();b = this._hash;n = b.words;for (a = 0; 4 > a; a++) { + c = n[a], n[a] = (c << 8 | c >>> 24) & 16711935 | (c << 24 | c >>> 8) & 4278255360; + }return b; + }, clone: function clone() { + var b = v.clone.call(this);b._hash = this._hash.clone();return b; + } });t.MD5 = v._createHelper(r);t.HmacMD5 = v._createHmacHelper(r); + })(Math); + (function () { + var u = CryptoJS, + p = u.lib, + d = p.Base, + l = p.WordArray, + p = u.algo, + s = p.EvpKDF = d.extend({ cfg: d.extend({ keySize: 4, hasher: p.MD5, iterations: 1 }), init: function init(d) { + this.cfg = this.cfg.extend(d); + }, compute: function compute(d, r) { + for (var p = this.cfg, s = p.hasher.create(), b = l.create(), u = b.words, q = p.keySize, p = p.iterations; u.length < q;) { + n && s.update(n);var n = s.update(d).finalize(r);s.reset();for (var a = 1; a < p; a++) { + n = s.finalize(n), s.reset(); + }b.concat(n); + }b.sigBytes = 4 * q;return b; + } });u.EvpKDF = function (d, l, p) { + return s.create(p).compute(d, l); + }; + })(); + + CryptoJS.lib.Cipher || function (u) { + var p = CryptoJS, + d = p.lib, + l = d.Base, + s = d.WordArray, + t = d.BufferedBlockAlgorithm, + r = p.enc.Base64, + w = p.algo.EvpKDF, + v = d.Cipher = t.extend({ cfg: l.extend(), createEncryptor: function createEncryptor(e, a) { + return this.create(this._ENC_XFORM_MODE, e, a); + }, createDecryptor: function createDecryptor(e, a) { + return this.create(this._DEC_XFORM_MODE, e, a); + }, init: function init(e, a, b) { + this.cfg = this.cfg.extend(b);this._xformMode = e;this._key = a;this.reset(); + }, reset: function reset() { + t.reset.call(this);this._doReset(); + }, process: function process(e) { + this._append(e);return this._process(); + }, + finalize: function finalize(e) { + e && this._append(e);return this._doFinalize(); + }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function _createHelper(e) { + return { encrypt: function encrypt(b, k, d) { + return ("string" == typeof k ? c : a).encrypt(e, b, k, d); + }, decrypt: function decrypt(b, k, d) { + return ("string" == typeof k ? c : a).decrypt(e, b, k, d); + } }; + } });d.StreamCipher = v.extend({ _doFinalize: function _doFinalize() { + return this._process(!0); + }, blockSize: 1 });var b = p.mode = {}, + x = function x(e, a, b) { + var c = this._iv;c ? this._iv = u : c = this._prevBlock;for (var d = 0; d < b; d++) { + e[a + d] ^= c[d]; + } + }, + q = (d.BlockCipherMode = l.extend({ createEncryptor: function createEncryptor(e, a) { + return this.Encryptor.create(e, a); + }, createDecryptor: function createDecryptor(e, a) { + return this.Decryptor.create(e, a); + }, init: function init(e, a) { + this._cipher = e;this._iv = a; + } })).extend();q.Encryptor = q.extend({ processBlock: function processBlock(e, a) { + var b = this._cipher, + c = b.blockSize;x.call(this, e, a, c);b.encryptBlock(e, a);this._prevBlock = e.slice(a, a + c); + } });q.Decryptor = q.extend({ processBlock: function processBlock(e, a) { + var b = this._cipher, + c = b.blockSize, + d = e.slice(a, a + c);b.decryptBlock(e, a);x.call(this, e, a, c);this._prevBlock = d; + } });b = b.CBC = q;q = (p.pad = {}).Pkcs7 = { pad: function pad(a, b) { + for (var c = 4 * b, c = c - a.sigBytes % c, d = c << 24 | c << 16 | c << 8 | c, l = [], n = 0; n < c; n += 4) { + l.push(d); + }c = s.create(l, c);a.concat(c); + }, unpad: function unpad(a) { + a.sigBytes -= a.words[a.sigBytes - 1 >>> 2] & 255; + } };d.BlockCipher = v.extend({ cfg: v.cfg.extend({ mode: b, padding: q }), reset: function reset() { + v.reset.call(this);var a = this.cfg, + b = a.iv, + a = a.mode;if (this._xformMode == this._ENC_XFORM_MODE) var c = a.createEncryptor;else c = a.createDecryptor, this._minBufferSize = 1;this._mode = c.call(a, this, b && b.words); + }, _doProcessBlock: function _doProcessBlock(a, b) { + this._mode.processBlock(a, b); + }, _doFinalize: function _doFinalize() { + var a = this.cfg.padding;if (this._xformMode == this._ENC_XFORM_MODE) { + a.pad(this._data, this.blockSize);var b = this._process(!0); + } else b = this._process(!0), a.unpad(b);return b; + }, blockSize: 4 });var n = d.CipherParams = l.extend({ init: function init(a) { + this.mixIn(a); + }, toString: function toString(a) { + return (a || this.formatter).stringify(this); + } }), + b = (p.format = {}).OpenSSL = { stringify: function stringify(a) { + var b = a.ciphertext;a = a.salt;return (a ? s.create([1398893684, 1701076831]).concat(a).concat(b) : b).toString(r); + }, parse: function parse(a) { + a = r.parse(a);var b = a.words;if (1398893684 == b[0] && 1701076831 == b[1]) { + var c = s.create(b.slice(2, 4));b.splice(0, 4);a.sigBytes -= 16; + }return n.create({ ciphertext: a, salt: c }); + } }, + a = d.SerializableCipher = l.extend({ cfg: l.extend({ format: b }), encrypt: function encrypt(a, b, c, d) { + d = this.cfg.extend(d);var l = a.createEncryptor(c, d);b = l.finalize(b);l = l.cfg;return n.create({ ciphertext: b, key: c, iv: l.iv, algorithm: a, mode: l.mode, padding: l.padding, blockSize: a.blockSize, formatter: d.format }); + }, + decrypt: function decrypt(a, b, c, d) { + d = this.cfg.extend(d);b = this._parse(b, d.format);return a.createDecryptor(c, d).finalize(b.ciphertext); + }, _parse: function _parse(a, b) { + return "string" == typeof a ? b.parse(a, this) : a; + } }), + p = (p.kdf = {}).OpenSSL = { execute: function execute(a, b, c, d) { + d || (d = s.random(8));a = w.create({ keySize: b + c }).compute(a, d);c = s.create(a.words.slice(b), 4 * c);a.sigBytes = 4 * b;return n.create({ key: a, iv: c, salt: d }); + } }, + c = d.PasswordBasedCipher = a.extend({ cfg: a.cfg.extend({ kdf: p }), encrypt: function encrypt(b, c, d, l) { + l = this.cfg.extend(l);d = l.kdf.execute(d, b.keySize, b.ivSize);l.iv = d.iv;b = a.encrypt.call(this, b, c, d.key, l);b.mixIn(d);return b; + }, decrypt: function decrypt(b, c, d, l) { + l = this.cfg.extend(l);c = this._parse(c, l.format);d = l.kdf.execute(d, b.keySize, b.ivSize, c.salt);l.iv = d.iv;return a.decrypt.call(this, b, c, d.key, l); + } }); + }(); + + (function () { + for (var u = CryptoJS, p = u.lib.BlockCipher, d = u.algo, l = [], s = [], t = [], r = [], w = [], v = [], b = [], x = [], q = [], n = [], a = [], c = 0; 256 > c; c++) { + a[c] = 128 > c ? c << 1 : c << 1 ^ 283; + }for (var e = 0, j = 0, c = 0; 256 > c; c++) { + var k = j ^ j << 1 ^ j << 2 ^ j << 3 ^ j << 4, + k = k >>> 8 ^ k & 255 ^ 99;l[e] = k;s[k] = e;var z = a[e], + F = a[z], + G = a[F], + y = 257 * a[k] ^ 16843008 * k;t[e] = y << 24 | y >>> 8;r[e] = y << 16 | y >>> 16;w[e] = y << 8 | y >>> 24;v[e] = y;y = 16843009 * G ^ 65537 * F ^ 257 * z ^ 16843008 * e;b[k] = y << 24 | y >>> 8;x[k] = y << 16 | y >>> 16;q[k] = y << 8 | y >>> 24;n[k] = y;e ? (e = z ^ a[a[a[G ^ z]]], j ^= a[a[j]]) : e = j = 1; + }var H = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], + d = d.AES = p.extend({ _doReset: function _doReset() { + for (var a = this._key, c = a.words, d = a.sigBytes / 4, a = 4 * ((this._nRounds = d + 6) + 1), e = this._keySchedule = [], j = 0; j < a; j++) { + if (j < d) e[j] = c[j];else { + var k = e[j - 1];j % d ? 6 < d && 4 == j % d && (k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255]) : (k = k << 8 | k >>> 24, k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255], k ^= H[j / d | 0] << 24);e[j] = e[j - d] ^ k; + } + }c = this._invKeySchedule = [];for (d = 0; d < a; d++) { + j = a - d, k = d % 4 ? e[j] : e[j - 4], c[d] = 4 > d || 4 >= j ? k : b[l[k >>> 24]] ^ x[l[k >>> 16 & 255]] ^ q[l[k >>> 8 & 255]] ^ n[l[k & 255]]; + } + }, encryptBlock: function encryptBlock(a, b) { + this._doCryptBlock(a, b, this._keySchedule, t, r, w, v, l); + }, decryptBlock: function decryptBlock(a, c) { + var d = a[c + 1];a[c + 1] = a[c + 3];a[c + 3] = d;this._doCryptBlock(a, c, this._invKeySchedule, b, x, q, n, s);d = a[c + 1];a[c + 1] = a[c + 3];a[c + 3] = d; + }, _doCryptBlock: function _doCryptBlock(a, b, c, d, e, j, l, f) { + for (var m = this._nRounds, g = a[b] ^ c[0], h = a[b + 1] ^ c[1], k = a[b + 2] ^ c[2], n = a[b + 3] ^ c[3], p = 4, r = 1; r < m; r++) { + var q = d[g >>> 24] ^ e[h >>> 16 & 255] ^ j[k >>> 8 & 255] ^ l[n & 255] ^ c[p++], + s = d[h >>> 24] ^ e[k >>> 16 & 255] ^ j[n >>> 8 & 255] ^ l[g & 255] ^ c[p++], + t = d[k >>> 24] ^ e[n >>> 16 & 255] ^ j[g >>> 8 & 255] ^ l[h & 255] ^ c[p++], + n = d[n >>> 24] ^ e[g >>> 16 & 255] ^ j[h >>> 8 & 255] ^ l[k & 255] ^ c[p++], + g = q, + h = s, + k = t; + }q = (f[g >>> 24] << 24 | f[h >>> 16 & 255] << 16 | f[k >>> 8 & 255] << 8 | f[n & 255]) ^ c[p++];s = (f[h >>> 24] << 24 | f[k >>> 16 & 255] << 16 | f[n >>> 8 & 255] << 8 | f[g & 255]) ^ c[p++];t = (f[k >>> 24] << 24 | f[n >>> 16 & 255] << 16 | f[g >>> 8 & 255] << 8 | f[h & 255]) ^ c[p++];n = (f[n >>> 24] << 24 | f[g >>> 16 & 255] << 16 | f[h >>> 8 & 255] << 8 | f[k & 255]) ^ c[p++];a[b] = q;a[b + 1] = s;a[b + 2] = t;a[b + 3] = n; + }, keySize: 8 });u.AES = p._createHelper(d); + })(); + + CryptoJS.mode.ECB = function () { + var ECB = CryptoJS.lib.BlockCipherMode.extend(); + + ECB.Encryptor = ECB.extend({ + processBlock: function processBlock(words, offset) { + this._cipher.encryptBlock(words, offset); + } + }); + + ECB.Decryptor = ECB.extend({ + processBlock: function processBlock(words, offset) { + this._cipher.decryptBlock(words, offset); + } + }); + + return ECB; + }(); + + module.exports = CryptoJS; + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + var _cryptography = __webpack_require__(9); + + var _cryptography2 = _interopRequireDefault(_cryptography); + + var _config2 = __webpack_require__(7); + + var _config3 = _interopRequireDefault(_config2); + + var _listener_manager = __webpack_require__(12); + + var _listener_manager2 = _interopRequireDefault(_listener_manager); + + var _reconnection_manager = __webpack_require__(14); + + var _reconnection_manager2 = _interopRequireDefault(_reconnection_manager); + + var _deduping_manager = __webpack_require__(17); + + var _deduping_manager2 = _interopRequireDefault(_deduping_manager); + + var _utils = __webpack_require__(18); + + var _utils2 = _interopRequireDefault(_utils); + + var _flow_interfaces = __webpack_require__(8); + + var _categories = __webpack_require__(13); + + var _categories2 = _interopRequireDefault(_categories); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var _class = function () { + function _class(_ref) { + var subscribeEndpoint = _ref.subscribeEndpoint, + leaveEndpoint = _ref.leaveEndpoint, + heartbeatEndpoint = _ref.heartbeatEndpoint, + setStateEndpoint = _ref.setStateEndpoint, + timeEndpoint = _ref.timeEndpoint, + config = _ref.config, + crypto = _ref.crypto, + listenerManager = _ref.listenerManager; + + _classCallCheck(this, _class); + + this._listenerManager = listenerManager; + this._config = config; + + this._leaveEndpoint = leaveEndpoint; + this._heartbeatEndpoint = heartbeatEndpoint; + this._setStateEndpoint = setStateEndpoint; + this._subscribeEndpoint = subscribeEndpoint; + + this._crypto = crypto; + + this._channels = {}; + this._presenceChannels = {}; + + this._channelGroups = {}; + this._presenceChannelGroups = {}; + + this._pendingChannelSubscriptions = []; + this._pendingChannelGroupSubscriptions = []; + + this._currentTimetoken = 0; + this._lastTimetoken = 0; + this._storedTimetoken = null; + + this._subscriptionStatusAnnounced = false; + + this._isOnline = true; + + this._reconnectionManager = new _reconnection_manager2.default({ timeEndpoint: timeEndpoint }); + this._dedupingManager = new _deduping_manager2.default({ config: config }); + } + + _createClass(_class, [{ + key: 'adaptStateChange', + value: function adaptStateChange(args, callback) { + var _this = this; + + var state = args.state, + _args$channels = args.channels, + channels = _args$channels === undefined ? [] : _args$channels, + _args$channelGroups = args.channelGroups, + channelGroups = _args$channelGroups === undefined ? [] : _args$channelGroups; + + + channels.forEach(function (channel) { + if (channel in _this._channels) _this._channels[channel].state = state; + }); + + channelGroups.forEach(function (channelGroup) { + if (channelGroup in _this._channelGroups) _this._channelGroups[channelGroup].state = state; + }); + + return this._setStateEndpoint({ state: state, channels: channels, channelGroups: channelGroups }, callback); + } + }, { + key: 'adaptSubscribeChange', + value: function adaptSubscribeChange(args) { + var _this2 = this; + + var timetoken = args.timetoken, + _args$channels2 = args.channels, + channels = _args$channels2 === undefined ? [] : _args$channels2, + _args$channelGroups2 = args.channelGroups, + channelGroups = _args$channelGroups2 === undefined ? [] : _args$channelGroups2, + _args$withPresence = args.withPresence, + withPresence = _args$withPresence === undefined ? false : _args$withPresence; + + + if (!this._config.subscribeKey || this._config.subscribeKey === '') { + if (console && console.log) console.log('subscribe key missing; aborting subscribe'); + return; + } + + if (timetoken) { + this._lastTimetoken = this._currentTimetoken; + this._currentTimetoken = timetoken; + } + + if (this._currentTimetoken !== '0') { + this._storedTimetoken = this._currentTimetoken; + this._currentTimetoken = 0; + } + + channels.forEach(function (channel) { + _this2._channels[channel] = { state: {} }; + if (withPresence) _this2._presenceChannels[channel] = {}; + + _this2._pendingChannelSubscriptions.push(channel); + }); + + channelGroups.forEach(function (channelGroup) { + _this2._channelGroups[channelGroup] = { state: {} }; + if (withPresence) _this2._presenceChannelGroups[channelGroup] = {}; + + _this2._pendingChannelGroupSubscriptions.push(channelGroup); + }); + + this._subscriptionStatusAnnounced = false; + this.reconnect(); + } + }, { + key: 'adaptUnsubscribeChange', + value: function adaptUnsubscribeChange(args, isOffline) { + var _this3 = this; + + var _args$channels3 = args.channels, + channels = _args$channels3 === undefined ? [] : _args$channels3, + _args$channelGroups3 = args.channelGroups, + channelGroups = _args$channelGroups3 === undefined ? [] : _args$channelGroups3; + + var actualChannels = []; + var actualChannelGroups = []; + + + channels.forEach(function (channel) { + if (channel in _this3._channels) { + delete _this3._channels[channel]; + actualChannels.push(channel); + } + if (channel in _this3._presenceChannels) { + delete _this3._presenceChannels[channel]; + actualChannels.push(channel); + } + }); + + channelGroups.forEach(function (channelGroup) { + if (channelGroup in _this3._channelGroups) { + delete _this3._channelGroups[channelGroup]; + actualChannelGroups.push(channelGroup); + } + if (channelGroup in _this3._presenceChannelGroups) { + delete _this3._channelGroups[channelGroup]; + actualChannelGroups.push(channelGroup); + } + }); + + if (actualChannels.length === 0 && actualChannelGroups.length === 0) { + return; + } + + if (this._config.suppressLeaveEvents === false && !isOffline) { + this._leaveEndpoint({ channels: actualChannels, channelGroups: actualChannelGroups }, function (status) { + status.affectedChannels = actualChannels; + status.affectedChannelGroups = actualChannelGroups; + status.currentTimetoken = _this3._currentTimetoken; + status.lastTimetoken = _this3._lastTimetoken; + _this3._listenerManager.announceStatus(status); + }); + } + + if (Object.keys(this._channels).length === 0 && Object.keys(this._presenceChannels).length === 0 && Object.keys(this._channelGroups).length === 0 && Object.keys(this._presenceChannelGroups).length === 0) { + this._lastTimetoken = 0; + this._currentTimetoken = 0; + this._storedTimetoken = null; + this._region = null; + this._reconnectionManager.stopPolling(); + } + + this.reconnect(); + } + }, { + key: 'unsubscribeAll', + value: function unsubscribeAll(isOffline) { + this.adaptUnsubscribeChange({ channels: this.getSubscribedChannels(), channelGroups: this.getSubscribedChannelGroups() }, isOffline); + } + }, { + key: 'getSubscribedChannels', + value: function getSubscribedChannels() { + return Object.keys(this._channels); + } + }, { + key: 'getSubscribedChannelGroups', + value: function getSubscribedChannelGroups() { + return Object.keys(this._channelGroups); + } + }, { + key: 'reconnect', + value: function reconnect() { + this._startSubscribeLoop(); + this._registerHeartbeatTimer(); + } + }, { + key: 'disconnect', + value: function disconnect() { + this._stopSubscribeLoop(); + this._stopHeartbeatTimer(); + this._reconnectionManager.stopPolling(); + } + }, { + key: '_registerHeartbeatTimer', + value: function _registerHeartbeatTimer() { + this._stopHeartbeatTimer(); + + if (this._config.getHeartbeatInterval() === 0) { + return; + } + + this._performHeartbeatLoop(); + this._heartbeatTimer = setInterval(this._performHeartbeatLoop.bind(this), this._config.getHeartbeatInterval() * 1000); + } + }, { + key: '_stopHeartbeatTimer', + value: function _stopHeartbeatTimer() { + if (this._heartbeatTimer) { + clearInterval(this._heartbeatTimer); + this._heartbeatTimer = null; + } + } + }, { + key: '_performHeartbeatLoop', + value: function _performHeartbeatLoop() { + var _this4 = this; + + var presenceChannels = Object.keys(this._channels); + var presenceChannelGroups = Object.keys(this._channelGroups); + var presenceState = {}; + + if (presenceChannels.length === 0 && presenceChannelGroups.length === 0) { + return; + } + + presenceChannels.forEach(function (channel) { + var channelState = _this4._channels[channel].state; + if (Object.keys(channelState).length) presenceState[channel] = channelState; + }); + + presenceChannelGroups.forEach(function (channelGroup) { + var channelGroupState = _this4._channelGroups[channelGroup].state; + if (Object.keys(channelGroupState).length) presenceState[channelGroup] = channelGroupState; + }); + + var onHeartbeat = function onHeartbeat(status) { + if (status.error && _this4._config.announceFailedHeartbeats) { + _this4._listenerManager.announceStatus(status); + } + + if (status.error && _this4._config.autoNetworkDetection && _this4._isOnline) { + _this4._isOnline = false; + _this4.disconnect(); + _this4._listenerManager.announceNetworkDown(); + _this4.reconnect(); + } + + if (!status.error && _this4._config.announceSuccessfulHeartbeats) { + _this4._listenerManager.announceStatus(status); + } + }; + + this._heartbeatEndpoint({ + channels: presenceChannels, + channelGroups: presenceChannelGroups, + state: presenceState }, onHeartbeat.bind(this)); + } + }, { + key: '_startSubscribeLoop', + value: function _startSubscribeLoop() { + this._stopSubscribeLoop(); + var channels = []; + var channelGroups = []; + + Object.keys(this._channels).forEach(function (channel) { + return channels.push(channel); + }); + Object.keys(this._presenceChannels).forEach(function (channel) { + return channels.push(channel + '-pnpres'); + }); + + Object.keys(this._channelGroups).forEach(function (channelGroup) { + return channelGroups.push(channelGroup); + }); + Object.keys(this._presenceChannelGroups).forEach(function (channelGroup) { + return channelGroups.push(channelGroup + '-pnpres'); + }); + + if (channels.length === 0 && channelGroups.length === 0) { + return; + } + + var subscribeArgs = { + channels: channels, + channelGroups: channelGroups, + timetoken: this._currentTimetoken, + filterExpression: this._config.filterExpression, + region: this._region + }; + + this._subscribeCall = this._subscribeEndpoint(subscribeArgs, this._processSubscribeResponse.bind(this)); + } + }, { + key: '_processSubscribeResponse', + value: function _processSubscribeResponse(status, payload) { + var _this5 = this; + + if (status.error) { + if (status.category === _categories2.default.PNTimeoutCategory) { + this._startSubscribeLoop(); + } else if (status.category === _categories2.default.PNNetworkIssuesCategory) { + this.disconnect(); + + if (status.error && this._config.autoNetworkDetection && this._isOnline) { + this._isOnline = false; + this._listenerManager.announceNetworkDown(); + } + + this._reconnectionManager.onReconnection(function () { + if (_this5._config.autoNetworkDetection && !_this5._isOnline) { + _this5._isOnline = true; + _this5._listenerManager.announceNetworkUp(); + } + _this5.reconnect(); + _this5._subscriptionStatusAnnounced = true; + var reconnectedAnnounce = { + category: _categories2.default.PNReconnectedCategory, + operation: status.operation, + lastTimetoken: _this5._lastTimetoken, + currentTimetoken: _this5._currentTimetoken + }; + _this5._listenerManager.announceStatus(reconnectedAnnounce); + }); + + this._reconnectionManager.startPolling(); + this._listenerManager.announceStatus(status); + } else if (status.category === _categories2.default.PNBadRequestCategory) { + this._stopHeartbeatTimer(); + this._listenerManager.announceStatus(status); + } else { + this._listenerManager.announceStatus(status); + } + + return; + } + + if (this._storedTimetoken) { + this._currentTimetoken = this._storedTimetoken; + this._storedTimetoken = null; + } else { + this._lastTimetoken = this._currentTimetoken; + this._currentTimetoken = payload.metadata.timetoken; + } + + if (!this._subscriptionStatusAnnounced) { + var connectedAnnounce = {}; + connectedAnnounce.category = _categories2.default.PNConnectedCategory; + connectedAnnounce.operation = status.operation; + connectedAnnounce.affectedChannels = this._pendingChannelSubscriptions; + connectedAnnounce.subscribedChannels = this.getSubscribedChannels(); + connectedAnnounce.affectedChannelGroups = this._pendingChannelGroupSubscriptions; + connectedAnnounce.lastTimetoken = this._lastTimetoken; + connectedAnnounce.currentTimetoken = this._currentTimetoken; + this._subscriptionStatusAnnounced = true; + this._listenerManager.announceStatus(connectedAnnounce); + + this._pendingChannelSubscriptions = []; + this._pendingChannelGroupSubscriptions = []; + } + + var messages = payload.messages || []; + var _config = this._config, + requestMessageCountThreshold = _config.requestMessageCountThreshold, + dedupeOnSubscribe = _config.dedupeOnSubscribe; + + + if (requestMessageCountThreshold && messages.length >= requestMessageCountThreshold) { + var countAnnouncement = {}; + countAnnouncement.category = _categories2.default.PNRequestMessageCountExceededCategory; + countAnnouncement.operation = status.operation; + this._listenerManager.announceStatus(countAnnouncement); + } + + messages.forEach(function (message) { + var channel = message.channel; + var subscriptionMatch = message.subscriptionMatch; + var publishMetaData = message.publishMetaData; + + if (channel === subscriptionMatch) { + subscriptionMatch = null; + } + + if (dedupeOnSubscribe) { + if (_this5._dedupingManager.isDuplicate(message)) { + return; + } else { + _this5._dedupingManager.addEntry(message); + } + } + + if (_utils2.default.endsWith(message.channel, '-pnpres')) { + var announce = {}; + announce.channel = null; + announce.subscription = null; + + announce.actualChannel = subscriptionMatch != null ? channel : null; + announce.subscribedChannel = subscriptionMatch != null ? subscriptionMatch : channel; + + + if (channel) { + announce.channel = channel.substring(0, channel.lastIndexOf('-pnpres')); + } + + if (subscriptionMatch) { + announce.subscription = subscriptionMatch.substring(0, subscriptionMatch.lastIndexOf('-pnpres')); + } + + announce.action = message.payload.action; + announce.state = message.payload.data; + announce.timetoken = publishMetaData.publishTimetoken; + announce.occupancy = message.payload.occupancy; + announce.uuid = message.payload.uuid; + announce.timestamp = message.payload.timestamp; + + if (message.payload.join) { + announce.join = message.payload.join; + } + + if (message.payload.leave) { + announce.leave = message.payload.leave; + } + + if (message.payload.timeout) { + announce.timeout = message.payload.timeout; + } + + _this5._listenerManager.announcePresence(announce); + } else { + var _announce = {}; + _announce.channel = null; + _announce.subscription = null; + + _announce.actualChannel = subscriptionMatch != null ? channel : null; + _announce.subscribedChannel = subscriptionMatch != null ? subscriptionMatch : channel; + + + _announce.channel = channel; + _announce.subscription = subscriptionMatch; + _announce.timetoken = publishMetaData.publishTimetoken; + _announce.publisher = message.issuingClientId; + + if (message.userMetadata) { + _announce.userMetadata = message.userMetadata; + } + + if (_this5._config.cipherKey) { + _announce.message = _this5._crypto.decrypt(message.payload); + } else { + _announce.message = message.payload; + } + + _this5._listenerManager.announceMessage(_announce); + } + }); + + this._region = payload.metadata.region; + this._startSubscribeLoop(); + } + }, { + key: '_stopSubscribeLoop', + value: function _stopSubscribeLoop() { + if (this._subscribeCall) { + this._subscribeCall.abort(); + this._subscribeCall = null; + } + } + }]); + + return _class; + }(); + + exports.default = _class; + module.exports = exports['default']; + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + var _flow_interfaces = __webpack_require__(8); + + var _categories = __webpack_require__(13); + + var _categories2 = _interopRequireDefault(_categories); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var _class = function () { + function _class() { + _classCallCheck(this, _class); + + this._listeners = []; + } + + _createClass(_class, [{ + key: 'addListener', + value: function addListener(newListeners) { + this._listeners.push(newListeners); + } + }, { + key: 'removeListener', + value: function removeListener(deprecatedListener) { + var newListeners = []; + + this._listeners.forEach(function (listener) { + if (listener !== deprecatedListener) newListeners.push(listener); + }); + + this._listeners = newListeners; + } + }, { + key: 'removeAllListeners', + value: function removeAllListeners() { + this._listeners = []; + } + }, { + key: 'announcePresence', + value: function announcePresence(announce) { + this._listeners.forEach(function (listener) { + if (listener.presence) listener.presence(announce); + }); + } + }, { + key: 'announceStatus', + value: function announceStatus(announce) { + this._listeners.forEach(function (listener) { + if (listener.status) listener.status(announce); + }); + } + }, { + key: 'announceMessage', + value: function announceMessage(announce) { + this._listeners.forEach(function (listener) { + if (listener.message) listener.message(announce); + }); + } + }, { + key: 'announceNetworkUp', + value: function announceNetworkUp() { + var networkStatus = {}; + networkStatus.category = _categories2.default.PNNetworkUpCategory; + this.announceStatus(networkStatus); + } + }, { + key: 'announceNetworkDown', + value: function announceNetworkDown() { + var networkStatus = {}; + networkStatus.category = _categories2.default.PNNetworkDownCategory; + this.announceStatus(networkStatus); + } + }]); + + return _class; + }(); + + exports.default = _class; + module.exports = exports['default']; + +/***/ }), +/* 13 */ +/***/ (function(module, exports) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = { + PNNetworkUpCategory: 'PNNetworkUpCategory', + + PNNetworkDownCategory: 'PNNetworkDownCategory', + + PNNetworkIssuesCategory: 'PNNetworkIssuesCategory', + + PNTimeoutCategory: 'PNTimeoutCategory', + + PNBadRequestCategory: 'PNBadRequestCategory', + + PNAccessDeniedCategory: 'PNAccessDeniedCategory', + + PNUnknownCategory: 'PNUnknownCategory', + + PNReconnectedCategory: 'PNReconnectedCategory', + + PNConnectedCategory: 'PNConnectedCategory', + + PNRequestMessageCountExceededCategory: 'PNRequestMessageCountExceededCategory' + + }; + module.exports = exports['default']; + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + var _time = __webpack_require__(15); + + var _time2 = _interopRequireDefault(_time); + + var _flow_interfaces = __webpack_require__(8); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var _class = function () { + function _class(_ref) { + var timeEndpoint = _ref.timeEndpoint; + + _classCallCheck(this, _class); + + this._timeEndpoint = timeEndpoint; + } + + _createClass(_class, [{ + key: 'onReconnection', + value: function onReconnection(reconnectionCallback) { + this._reconnectionCallback = reconnectionCallback; + } + }, { + key: 'startPolling', + value: function startPolling() { + this._timeTimer = setInterval(this._performTimeLoop.bind(this), 3000); + } + }, { + key: 'stopPolling', + value: function stopPolling() { + clearInterval(this._timeTimer); + } + }, { + key: '_performTimeLoop', + value: function _performTimeLoop() { + var _this = this; + + this._timeEndpoint(function (status) { + if (!status.error) { + clearInterval(_this._timeTimer); + _this._reconnectionCallback(); + } + }); + } + }]); + + return _class; + }(); + + exports.default = _class; + module.exports = exports['default']; + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.prepareParams = prepareParams; + exports.isAuthSupported = isAuthSupported; + exports.handleResponse = handleResponse; + exports.validateParams = validateParams; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNTimeOperation; + } + + function getURL() { + return '/time/0'; + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function prepareParams() { + return {}; + } + + function isAuthSupported() { + return false; + } + + function handleResponse(modules, serverResponse) { + return { + timetoken: serverResponse[0] + }; + } + + function validateParams() {} + +/***/ }), +/* 16 */ +/***/ (function(module, exports) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = { + PNTimeOperation: 'PNTimeOperation', + + PNHistoryOperation: 'PNHistoryOperation', + PNFetchMessagesOperation: 'PNFetchMessagesOperation', + + PNSubscribeOperation: 'PNSubscribeOperation', + PNUnsubscribeOperation: 'PNUnsubscribeOperation', + PNPublishOperation: 'PNPublishOperation', + + PNPushNotificationEnabledChannelsOperation: 'PNPushNotificationEnabledChannelsOperation', + PNRemoveAllPushNotificationsOperation: 'PNRemoveAllPushNotificationsOperation', + + PNWhereNowOperation: 'PNWhereNowOperation', + PNSetStateOperation: 'PNSetStateOperation', + PNHereNowOperation: 'PNHereNowOperation', + PNGetStateOperation: 'PNGetStateOperation', + PNHeartbeatOperation: 'PNHeartbeatOperation', + + PNChannelGroupsOperation: 'PNChannelGroupsOperation', + PNRemoveGroupOperation: 'PNRemoveGroupOperation', + PNChannelsForGroupOperation: 'PNChannelsForGroupOperation', + PNAddChannelsToGroupOperation: 'PNAddChannelsToGroupOperation', + PNRemoveChannelsFromGroupOperation: 'PNRemoveChannelsFromGroupOperation', + + PNAccessManagerGrant: 'PNAccessManagerGrant', + PNAccessManagerAudit: 'PNAccessManagerAudit' + }; + module.exports = exports['default']; + +/***/ }), +/* 17 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + var _config = __webpack_require__(7); + + var _config2 = _interopRequireDefault(_config); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var hashCode = function hashCode(payload) { + var hash = 0; + if (payload.length === 0) return hash; + for (var i = 0; i < payload.length; i += 1) { + var character = payload.charCodeAt(i); + hash = (hash << 5) - hash + character; + hash = hash & hash; + } + return hash; + }; + + var _class = function () { + function _class(_ref) { + var config = _ref.config; + + _classCallCheck(this, _class); + + this.hashHistory = []; + this._config = config; + } + + _createClass(_class, [{ + key: 'getKey', + value: function getKey(message) { + var hashedPayload = hashCode(JSON.stringify(message.payload)).toString(); + var timetoken = message.publishMetaData.publishTimetoken; + return timetoken + '-' + hashedPayload; + } + }, { + key: 'isDuplicate', + value: function isDuplicate(message) { + return this.hashHistory.includes(this.getKey(message)); + } + }, { + key: 'addEntry', + value: function addEntry(message) { + if (this.hashHistory.length >= this._config.maximumCacheSize) { + this.hashHistory.shift(); + } + + this.hashHistory.push(this.getKey(message)); + } + }, { + key: 'clearHistory', + value: function clearHistory() { + this.hashHistory = []; + } + }]); + + return _class; + }(); + + exports.default = _class; + module.exports = exports['default']; + +/***/ }), +/* 18 */ +/***/ (function(module, exports) { + + 'use strict'; + + function objectToList(o) { + var l = []; + Object.keys(o).forEach(function (key) { + return l.push(key); + }); + return l; + } + + function encodeString(input) { + return encodeURIComponent(input).replace(/[!~*'()]/g, function (x) { + return '%' + x.charCodeAt(0).toString(16).toUpperCase(); + }); + } + + function objectToListSorted(o) { + return objectToList(o).sort(); + } + + function signPamFromParams(params) { + var l = objectToListSorted(params); + return l.map(function (paramKey) { + return paramKey + '=' + encodeString(params[paramKey]); + }).join('&'); + } + + function endsWith(searchString, suffix) { + return searchString.indexOf(suffix, this.length - suffix.length) !== -1; + } + + function createPromise() { + var successResolve = void 0; + var failureResolve = void 0; + var promise = new Promise(function (fulfill, reject) { + successResolve = fulfill; + failureResolve = reject; + }); + + return { promise: promise, reject: failureResolve, fulfill: successResolve }; + } + + module.exports = { signPamFromParams: signPamFromParams, endsWith: endsWith, createPromise: createPromise, encodeString: encodeString }; + +/***/ }), +/* 19 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + exports.default = function (modules, endpoint) { + var networking = modules.networking, + config = modules.config; + + var callback = null; + var promiseComponent = null; + var incomingParams = {}; + + if (endpoint.getOperation() === _operations2.default.PNTimeOperation || endpoint.getOperation() === _operations2.default.PNChannelGroupsOperation) { + callback = arguments.length <= 2 ? undefined : arguments[2]; + } else { + incomingParams = arguments.length <= 2 ? undefined : arguments[2]; + callback = arguments.length <= 3 ? undefined : arguments[3]; + } + + if (typeof Promise !== 'undefined' && !callback) { + promiseComponent = _utils2.default.createPromise(); + } + + var validationResult = endpoint.validateParams(modules, incomingParams); + + if (validationResult) { + if (callback) { + return callback(createValidationError(validationResult)); + } else if (promiseComponent) { + promiseComponent.reject(new PubNubError('Validation failed, check status for details', createValidationError(validationResult))); + return promiseComponent.promise; + } + return; + } + + var outgoingParams = endpoint.prepareParams(modules, incomingParams); + var url = decideURL(endpoint, modules, incomingParams); + var callInstance = void 0; + var networkingParams = { url: url, + operation: endpoint.getOperation(), + timeout: endpoint.getRequestTimeout(modules) + }; + + outgoingParams.uuid = config.UUID; + outgoingParams.pnsdk = generatePNSDK(config); + + if (config.useInstanceId) { + outgoingParams.instanceid = config.instanceId; + } + + if (config.useRequestId) { + outgoingParams.requestid = _uuid2.default.v4(); + } + + if (endpoint.isAuthSupported() && config.getAuthKey()) { + outgoingParams.auth = config.getAuthKey(); + } + + if (config.secretKey) { + signRequest(modules, url, outgoingParams); + } + + var onResponse = function onResponse(status, payload) { + if (status.error) { + if (callback) { + callback(status); + } else if (promiseComponent) { + promiseComponent.reject(new PubNubError('PubNub call failed, check status for details', status)); + } + return; + } + + var parsedPayload = endpoint.handleResponse(modules, payload, incomingParams); + + if (callback) { + callback(status, parsedPayload); + } else if (promiseComponent) { + promiseComponent.fulfill(parsedPayload); + } + }; + + if (endpoint.usePost && endpoint.usePost(modules, incomingParams)) { + var payload = endpoint.postPayload(modules, incomingParams); + callInstance = networking.POST(outgoingParams, payload, networkingParams, onResponse); + } else { + callInstance = networking.GET(outgoingParams, networkingParams, onResponse); + } + + if (endpoint.getOperation() === _operations2.default.PNSubscribeOperation) { + return callInstance; + } + + if (promiseComponent) { + return promiseComponent.promise; + } + }; + + var _uuid = __webpack_require__(2); + + var _uuid2 = _interopRequireDefault(_uuid); + + var _flow_interfaces = __webpack_require__(8); + + var _utils = __webpack_require__(18); + + var _utils2 = _interopRequireDefault(_utils); + + var _config = __webpack_require__(7); + + var _config2 = _interopRequireDefault(_config); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + + var PubNubError = function (_Error) { + _inherits(PubNubError, _Error); + + function PubNubError(message, status) { + _classCallCheck(this, PubNubError); + + var _this = _possibleConstructorReturn(this, (PubNubError.__proto__ || Object.getPrototypeOf(PubNubError)).call(this, message)); + + _this.name = _this.constructor.name; + _this.status = status; + _this.message = message; + return _this; + } + + return PubNubError; + }(Error); + + function createError(errorPayload, type) { + errorPayload.type = type; + errorPayload.error = true; + return errorPayload; + } + + function createValidationError(message) { + return createError({ message: message }, 'validationError'); + } + + function decideURL(endpoint, modules, incomingParams) { + if (endpoint.usePost && endpoint.usePost(modules, incomingParams)) { + return endpoint.postURL(modules, incomingParams); + } else { + return endpoint.getURL(modules, incomingParams); + } + } + + function generatePNSDK(config) { + var base = 'PubNub-JS-' + config.sdkFamily; + + if (config.partnerId) { + base += '-' + config.partnerId; + } + + base += '/' + config.getVersion(); + + return base; + } + + function signRequest(modules, url, outgoingParams) { + var config = modules.config, + crypto = modules.crypto; + + + outgoingParams.timestamp = Math.floor(new Date().getTime() / 1000); + var signInput = config.subscribeKey + '\n' + config.publishKey + '\n' + url + '\n'; + signInput += _utils2.default.signPamFromParams(outgoingParams); + + var signature = crypto.HMACSHA256(signInput); + signature = signature.replace(/\+/g, '-'); + signature = signature.replace(/\//g, '_'); + + outgoingParams.signature = signature; + } + + module.exports = exports['default']; + +/***/ }), +/* 20 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(18); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNAddChannelsToGroupOperation; + } + + function validateParams(modules, incomingParams) { + var channels = incomingParams.channels, + channelGroup = incomingParams.channelGroup; + var config = modules.config; + + + if (!channelGroup) return 'Missing Channel Group'; + if (!channels || channels.length === 0) return 'Missing Channels'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + } + + function getURL(modules, incomingParams) { + var channelGroup = incomingParams.channelGroup; + var config = modules.config; + + return '/v1/channel-registration/sub-key/' + config.subscribeKey + '/channel-group/' + _utils2.default.encodeString(channelGroup); + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function isAuthSupported() { + return true; + } + + function prepareParams(modules, incomingParams) { + var _incomingParams$chann = incomingParams.channels, + channels = _incomingParams$chann === undefined ? [] : _incomingParams$chann; + + + return { + add: channels.join(',') + }; + } + + function handleResponse() { + return {}; + } + +/***/ }), +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(18); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNRemoveChannelsFromGroupOperation; + } + + function validateParams(modules, incomingParams) { + var channels = incomingParams.channels, + channelGroup = incomingParams.channelGroup; + var config = modules.config; + + + if (!channelGroup) return 'Missing Channel Group'; + if (!channels || channels.length === 0) return 'Missing Channels'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + } + + function getURL(modules, incomingParams) { + var channelGroup = incomingParams.channelGroup; + var config = modules.config; + + return '/v1/channel-registration/sub-key/' + config.subscribeKey + '/channel-group/' + _utils2.default.encodeString(channelGroup); + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function isAuthSupported() { + return true; + } + + function prepareParams(modules, incomingParams) { + var _incomingParams$chann = incomingParams.channels, + channels = _incomingParams$chann === undefined ? [] : _incomingParams$chann; + + + return { + remove: channels.join(',') + }; + } + + function handleResponse() { + return {}; + } + +/***/ }), +/* 22 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.isAuthSupported = isAuthSupported; + exports.getRequestTimeout = getRequestTimeout; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(18); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNRemoveGroupOperation; + } + + function validateParams(modules, incomingParams) { + var channelGroup = incomingParams.channelGroup; + var config = modules.config; + + + if (!channelGroup) return 'Missing Channel Group'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + } + + function getURL(modules, incomingParams) { + var channelGroup = incomingParams.channelGroup; + var config = modules.config; + + return '/v1/channel-registration/sub-key/' + config.subscribeKey + '/channel-group/' + _utils2.default.encodeString(channelGroup) + '/remove'; + } + + function isAuthSupported() { + return true; + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function prepareParams() { + return {}; + } + + function handleResponse() { + return {}; + } + +/***/ }), +/* 23 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNChannelGroupsOperation; + } + + function validateParams(modules) { + var config = modules.config; + + + if (!config.subscribeKey) return 'Missing Subscribe Key'; + } + + function getURL(modules) { + var config = modules.config; + + return '/v1/channel-registration/sub-key/' + config.subscribeKey + '/channel-group'; + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function isAuthSupported() { + return true; + } + + function prepareParams() { + return {}; + } + + function handleResponse(modules, serverResponse) { + return { + groups: serverResponse.payload.groups + }; + } + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(18); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNChannelsForGroupOperation; + } + + function validateParams(modules, incomingParams) { + var channelGroup = incomingParams.channelGroup; + var config = modules.config; + + + if (!channelGroup) return 'Missing Channel Group'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + } + + function getURL(modules, incomingParams) { + var channelGroup = incomingParams.channelGroup; + var config = modules.config; + + return '/v1/channel-registration/sub-key/' + config.subscribeKey + '/channel-group/' + _utils2.default.encodeString(channelGroup); + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function isAuthSupported() { + return true; + } + + function prepareParams() { + return {}; + } + + function handleResponse(modules, serverResponse) { + return { + channels: serverResponse.payload.channels + }; + } + +/***/ }), +/* 25 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNPushNotificationEnabledChannelsOperation; + } + + function validateParams(modules, incomingParams) { + var device = incomingParams.device, + pushGateway = incomingParams.pushGateway, + channels = incomingParams.channels; + var config = modules.config; + + + if (!device) return 'Missing Device ID (device)'; + if (!pushGateway) return 'Missing GW Type (pushGateway: gcm or apns)'; + if (!channels || channels.length === 0) return 'Missing Channels'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + } + + function getURL(modules, incomingParams) { + var device = incomingParams.device; + var config = modules.config; + + return '/v1/push/sub-key/' + config.subscribeKey + '/devices/' + device; + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function isAuthSupported() { + return true; + } + + function prepareParams(modules, incomingParams) { + var pushGateway = incomingParams.pushGateway, + _incomingParams$chann = incomingParams.channels, + channels = _incomingParams$chann === undefined ? [] : _incomingParams$chann; + + return { type: pushGateway, add: channels.join(',') }; + } + + function handleResponse() { + return {}; + } + +/***/ }), +/* 26 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNPushNotificationEnabledChannelsOperation; + } + + function validateParams(modules, incomingParams) { + var device = incomingParams.device, + pushGateway = incomingParams.pushGateway, + channels = incomingParams.channels; + var config = modules.config; + + + if (!device) return 'Missing Device ID (device)'; + if (!pushGateway) return 'Missing GW Type (pushGateway: gcm or apns)'; + if (!channels || channels.length === 0) return 'Missing Channels'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + } + + function getURL(modules, incomingParams) { + var device = incomingParams.device; + var config = modules.config; + + return '/v1/push/sub-key/' + config.subscribeKey + '/devices/' + device; + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function isAuthSupported() { + return true; + } + + function prepareParams(modules, incomingParams) { + var pushGateway = incomingParams.pushGateway, + _incomingParams$chann = incomingParams.channels, + channels = _incomingParams$chann === undefined ? [] : _incomingParams$chann; + + return { type: pushGateway, remove: channels.join(',') }; + } + + function handleResponse() { + return {}; + } + +/***/ }), +/* 27 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNPushNotificationEnabledChannelsOperation; + } + + function validateParams(modules, incomingParams) { + var device = incomingParams.device, + pushGateway = incomingParams.pushGateway; + var config = modules.config; + + + if (!device) return 'Missing Device ID (device)'; + if (!pushGateway) return 'Missing GW Type (pushGateway: gcm or apns)'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + } + + function getURL(modules, incomingParams) { + var device = incomingParams.device; + var config = modules.config; + + return '/v1/push/sub-key/' + config.subscribeKey + '/devices/' + device; + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function isAuthSupported() { + return true; + } + + function prepareParams(modules, incomingParams) { + var pushGateway = incomingParams.pushGateway; + + return { type: pushGateway }; + } + + function handleResponse(modules, serverResponse) { + return { channels: serverResponse }; + } + +/***/ }), +/* 28 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNRemoveAllPushNotificationsOperation; + } + + function validateParams(modules, incomingParams) { + var device = incomingParams.device, + pushGateway = incomingParams.pushGateway; + var config = modules.config; + + + if (!device) return 'Missing Device ID (device)'; + if (!pushGateway) return 'Missing GW Type (pushGateway: gcm or apns)'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + } + + function getURL(modules, incomingParams) { + var device = incomingParams.device; + var config = modules.config; + + return '/v1/push/sub-key/' + config.subscribeKey + '/devices/' + device + '/remove'; + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function isAuthSupported() { + return true; + } + + function prepareParams(modules, incomingParams) { + var pushGateway = incomingParams.pushGateway; + + return { type: pushGateway }; + } + + function handleResponse() { + return {}; + } + +/***/ }), +/* 29 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(18); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNUnsubscribeOperation; + } + + function validateParams(modules) { + var config = modules.config; + + + if (!config.subscribeKey) return 'Missing Subscribe Key'; + } + + function getURL(modules, incomingParams) { + var config = modules.config; + var _incomingParams$chann = incomingParams.channels, + channels = _incomingParams$chann === undefined ? [] : _incomingParams$chann; + + var stringifiedChannels = channels.length > 0 ? channels.join(',') : ','; + return '/v2/presence/sub-key/' + config.subscribeKey + '/channel/' + _utils2.default.encodeString(stringifiedChannels) + '/leave'; + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function isAuthSupported() { + return true; + } + + function prepareParams(modules, incomingParams) { + var _incomingParams$chann2 = incomingParams.channelGroups, + channelGroups = _incomingParams$chann2 === undefined ? [] : _incomingParams$chann2; + + var params = {}; + + if (channelGroups.length > 0) { + params['channel-group'] = channelGroups.join(','); + } + + return params; + } + + function handleResponse() { + return {}; + } + +/***/ }), +/* 30 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNWhereNowOperation; + } + + function validateParams(modules) { + var config = modules.config; + + + if (!config.subscribeKey) return 'Missing Subscribe Key'; + } + + function getURL(modules, incomingParams) { + var config = modules.config; + var _incomingParams$uuid = incomingParams.uuid, + uuid = _incomingParams$uuid === undefined ? config.UUID : _incomingParams$uuid; + + return '/v2/presence/sub-key/' + config.subscribeKey + '/uuid/' + uuid; + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function isAuthSupported() { + return true; + } + + function prepareParams() { + return {}; + } + + function handleResponse(modules, serverResponse) { + if (!serverResponse.payload) { + return { channels: [] }; + } + return { channels: serverResponse.payload.channels }; + } + +/***/ }), +/* 31 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.isAuthSupported = isAuthSupported; + exports.getRequestTimeout = getRequestTimeout; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(18); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNHeartbeatOperation; + } + + function validateParams(modules) { + var config = modules.config; + + + if (!config.subscribeKey) return 'Missing Subscribe Key'; + } + + function getURL(modules, incomingParams) { + var config = modules.config; + var _incomingParams$chann = incomingParams.channels, + channels = _incomingParams$chann === undefined ? [] : _incomingParams$chann; + + var stringifiedChannels = channels.length > 0 ? channels.join(',') : ','; + return '/v2/presence/sub-key/' + config.subscribeKey + '/channel/' + _utils2.default.encodeString(stringifiedChannels) + '/heartbeat'; + } + + function isAuthSupported() { + return true; + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function prepareParams(modules, incomingParams) { + var _incomingParams$chann2 = incomingParams.channelGroups, + channelGroups = _incomingParams$chann2 === undefined ? [] : _incomingParams$chann2, + _incomingParams$state = incomingParams.state, + state = _incomingParams$state === undefined ? {} : _incomingParams$state; + var config = modules.config; + + var params = {}; + + if (channelGroups.length > 0) { + params['channel-group'] = channelGroups.join(','); + } + + params.state = JSON.stringify(state); + params.heartbeat = config.getPresenceTimeout(); + return params; + } + + function handleResponse() { + return {}; + } + +/***/ }), +/* 32 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(18); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNGetStateOperation; + } + + function validateParams(modules) { + var config = modules.config; + + + if (!config.subscribeKey) return 'Missing Subscribe Key'; + } + + function getURL(modules, incomingParams) { + var config = modules.config; + var _incomingParams$uuid = incomingParams.uuid, + uuid = _incomingParams$uuid === undefined ? config.UUID : _incomingParams$uuid, + _incomingParams$chann = incomingParams.channels, + channels = _incomingParams$chann === undefined ? [] : _incomingParams$chann; + + var stringifiedChannels = channels.length > 0 ? channels.join(',') : ','; + return '/v2/presence/sub-key/' + config.subscribeKey + '/channel/' + _utils2.default.encodeString(stringifiedChannels) + '/uuid/' + uuid; + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function isAuthSupported() { + return true; + } + + function prepareParams(modules, incomingParams) { + var _incomingParams$chann2 = incomingParams.channelGroups, + channelGroups = _incomingParams$chann2 === undefined ? [] : _incomingParams$chann2; + + var params = {}; + + if (channelGroups.length > 0) { + params['channel-group'] = channelGroups.join(','); + } + + return params; + } + + function handleResponse(modules, serverResponse, incomingParams) { + var _incomingParams$chann3 = incomingParams.channels, + channels = _incomingParams$chann3 === undefined ? [] : _incomingParams$chann3, + _incomingParams$chann4 = incomingParams.channelGroups, + channelGroups = _incomingParams$chann4 === undefined ? [] : _incomingParams$chann4; + + var channelsResponse = {}; + + if (channels.length === 1 && channelGroups.length === 0) { + channelsResponse[channels[0]] = serverResponse.payload; + } else { + channelsResponse = serverResponse.payload; + } + + return { channels: channelsResponse }; + } + +/***/ }), +/* 33 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(18); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNSetStateOperation; + } + + function validateParams(modules, incomingParams) { + var config = modules.config; + var state = incomingParams.state, + _incomingParams$chann = incomingParams.channels, + channels = _incomingParams$chann === undefined ? [] : _incomingParams$chann, + _incomingParams$chann2 = incomingParams.channelGroups, + channelGroups = _incomingParams$chann2 === undefined ? [] : _incomingParams$chann2; + + + if (!state) return 'Missing State'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + if (channels.length === 0 && channelGroups.length === 0) return 'Please provide a list of channels and/or channel-groups'; + } + + function getURL(modules, incomingParams) { + var config = modules.config; + var _incomingParams$chann3 = incomingParams.channels, + channels = _incomingParams$chann3 === undefined ? [] : _incomingParams$chann3; + + var stringifiedChannels = channels.length > 0 ? channels.join(',') : ','; + return '/v2/presence/sub-key/' + config.subscribeKey + '/channel/' + _utils2.default.encodeString(stringifiedChannels) + '/uuid/' + config.UUID + '/data'; + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function isAuthSupported() { + return true; + } + + function prepareParams(modules, incomingParams) { + var state = incomingParams.state, + _incomingParams$chann4 = incomingParams.channelGroups, + channelGroups = _incomingParams$chann4 === undefined ? [] : _incomingParams$chann4; + + var params = {}; + + params.state = JSON.stringify(state); + + if (channelGroups.length > 0) { + params['channel-group'] = channelGroups.join(','); + } + + return params; + } + + function handleResponse(modules, serverResponse) { + return { state: serverResponse.payload }; + } + +/***/ }), +/* 34 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(18); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNHereNowOperation; + } + + function validateParams(modules) { + var config = modules.config; + + + if (!config.subscribeKey) return 'Missing Subscribe Key'; + } + + function getURL(modules, incomingParams) { + var config = modules.config; + var _incomingParams$chann = incomingParams.channels, + channels = _incomingParams$chann === undefined ? [] : _incomingParams$chann, + _incomingParams$chann2 = incomingParams.channelGroups, + channelGroups = _incomingParams$chann2 === undefined ? [] : _incomingParams$chann2; + + var baseURL = '/v2/presence/sub-key/' + config.subscribeKey; + + if (channels.length > 0 || channelGroups.length > 0) { + var stringifiedChannels = channels.length > 0 ? channels.join(',') : ','; + baseURL += '/channel/' + _utils2.default.encodeString(stringifiedChannels); + } + + return baseURL; + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function isAuthSupported() { + return true; + } + + function prepareParams(modules, incomingParams) { + var _incomingParams$chann3 = incomingParams.channelGroups, + channelGroups = _incomingParams$chann3 === undefined ? [] : _incomingParams$chann3, + _incomingParams$inclu = incomingParams.includeUUIDs, + includeUUIDs = _incomingParams$inclu === undefined ? true : _incomingParams$inclu, + _incomingParams$inclu2 = incomingParams.includeState, + includeState = _incomingParams$inclu2 === undefined ? false : _incomingParams$inclu2; + + var params = {}; + + if (!includeUUIDs) params.disable_uuids = 1; + if (includeState) params.state = 1; + + if (channelGroups.length > 0) { + params['channel-group'] = channelGroups.join(','); + } + + return params; + } + + function handleResponse(modules, serverResponse, incomingParams) { + var _incomingParams$chann4 = incomingParams.channels, + channels = _incomingParams$chann4 === undefined ? [] : _incomingParams$chann4, + _incomingParams$chann5 = incomingParams.channelGroups, + channelGroups = _incomingParams$chann5 === undefined ? [] : _incomingParams$chann5, + _incomingParams$inclu3 = incomingParams.includeUUIDs, + includeUUIDs = _incomingParams$inclu3 === undefined ? true : _incomingParams$inclu3, + _incomingParams$inclu4 = incomingParams.includeState, + includeState = _incomingParams$inclu4 === undefined ? false : _incomingParams$inclu4; + + + var prepareSingularChannel = function prepareSingularChannel() { + var response = {}; + var occupantsList = []; + response.totalChannels = 1; + response.totalOccupancy = serverResponse.occupancy; + response.channels = {}; + response.channels[channels[0]] = { + occupants: occupantsList, + name: channels[0], + occupancy: serverResponse.occupancy + }; + + if (includeUUIDs && serverResponse.uuids) { + serverResponse.uuids.forEach(function (uuidEntry) { + if (includeState) { + occupantsList.push({ state: uuidEntry.state, uuid: uuidEntry.uuid }); + } else { + occupantsList.push({ state: null, uuid: uuidEntry }); + } + }); + } + + return response; + }; + + var prepareMultipleChannel = function prepareMultipleChannel() { + var response = {}; + response.totalChannels = serverResponse.payload.total_channels; + response.totalOccupancy = serverResponse.payload.total_occupancy; + response.channels = {}; + + Object.keys(serverResponse.payload.channels).forEach(function (channelName) { + var channelEntry = serverResponse.payload.channels[channelName]; + var occupantsList = []; + response.channels[channelName] = { + occupants: occupantsList, + name: channelName, + occupancy: channelEntry.occupancy + }; + + if (includeUUIDs) { + channelEntry.uuids.forEach(function (uuidEntry) { + if (includeState) { + occupantsList.push({ state: uuidEntry.state, uuid: uuidEntry.uuid }); + } else { + occupantsList.push({ state: null, uuid: uuidEntry }); + } + }); + } + + return response; + }); + + return response; + }; + + var response = void 0; + if (channels.length > 1 || channelGroups.length > 0 || channelGroups.length === 0 && channels.length === 0) { + response = prepareMultipleChannel(); + } else { + response = prepareSingularChannel(); + } + + return response; + } + +/***/ }), +/* 35 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNAccessManagerAudit; + } + + function validateParams(modules) { + var config = modules.config; + + + if (!config.subscribeKey) return 'Missing Subscribe Key'; + } + + function getURL(modules) { + var config = modules.config; + + return '/v2/auth/audit/sub-key/' + config.subscribeKey; + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function isAuthSupported() { + return false; + } + + function prepareParams(modules, incomingParams) { + var channel = incomingParams.channel, + channelGroup = incomingParams.channelGroup, + _incomingParams$authK = incomingParams.authKeys, + authKeys = _incomingParams$authK === undefined ? [] : _incomingParams$authK; + + var params = {}; + + if (channel) { + params.channel = channel; + } + + if (channelGroup) { + params['channel-group'] = channelGroup; + } + + if (authKeys.length > 0) { + params.auth = authKeys.join(','); + } + + return params; + } + + function handleResponse(modules, serverResponse) { + return serverResponse.payload; + } + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNAccessManagerGrant; + } + + function validateParams(modules) { + var config = modules.config; + + + if (!config.subscribeKey) return 'Missing Subscribe Key'; + if (!config.publishKey) return 'Missing Publish Key'; + if (!config.secretKey) return 'Missing Secret Key'; + } + + function getURL(modules) { + var config = modules.config; + + return '/v2/auth/grant/sub-key/' + config.subscribeKey; + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function isAuthSupported() { + return false; + } + + function prepareParams(modules, incomingParams) { + var _incomingParams$chann = incomingParams.channels, + channels = _incomingParams$chann === undefined ? [] : _incomingParams$chann, + _incomingParams$chann2 = incomingParams.channelGroups, + channelGroups = _incomingParams$chann2 === undefined ? [] : _incomingParams$chann2, + ttl = incomingParams.ttl, + _incomingParams$read = incomingParams.read, + read = _incomingParams$read === undefined ? false : _incomingParams$read, + _incomingParams$write = incomingParams.write, + write = _incomingParams$write === undefined ? false : _incomingParams$write, + _incomingParams$manag = incomingParams.manage, + manage = _incomingParams$manag === undefined ? false : _incomingParams$manag, + _incomingParams$authK = incomingParams.authKeys, + authKeys = _incomingParams$authK === undefined ? [] : _incomingParams$authK; + + var params = {}; + + params.r = read ? '1' : '0'; + params.w = write ? '1' : '0'; + params.m = manage ? '1' : '0'; + + if (channels.length > 0) { + params.channel = channels.join(','); + } + + if (channelGroups.length > 0) { + params['channel-group'] = channelGroups.join(','); + } + + if (authKeys.length > 0) { + params.auth = authKeys.join(','); + } + + if (ttl || ttl === 0) { + params.ttl = ttl; + } + + return params; + } + + function handleResponse() { + return {}; + } + +/***/ }), +/* 37 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.usePost = usePost; + exports.getURL = getURL; + exports.postURL = postURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.postPayload = postPayload; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(18); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function prepareMessagePayload(modules, messagePayload) { + var crypto = modules.crypto, + config = modules.config; + + var stringifiedPayload = JSON.stringify(messagePayload); + + if (config.cipherKey) { + stringifiedPayload = crypto.encrypt(stringifiedPayload); + stringifiedPayload = JSON.stringify(stringifiedPayload); + } + + return stringifiedPayload; + } + + function getOperation() { + return _operations2.default.PNPublishOperation; + } + + function validateParams(_ref, incomingParams) { + var config = _ref.config; + var message = incomingParams.message, + channel = incomingParams.channel; + + + if (!channel) return 'Missing Channel'; + if (!message) return 'Missing Message'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + } + + function usePost(modules, incomingParams) { + var _incomingParams$sendB = incomingParams.sendByPost, + sendByPost = _incomingParams$sendB === undefined ? false : _incomingParams$sendB; + + return sendByPost; + } + + function getURL(modules, incomingParams) { + var config = modules.config; + var channel = incomingParams.channel, + message = incomingParams.message; + + var stringifiedPayload = prepareMessagePayload(modules, message); + return '/publish/' + config.publishKey + '/' + config.subscribeKey + '/0/' + _utils2.default.encodeString(channel) + '/0/' + _utils2.default.encodeString(stringifiedPayload); + } + + function postURL(modules, incomingParams) { + var config = modules.config; + var channel = incomingParams.channel; + + return '/publish/' + config.publishKey + '/' + config.subscribeKey + '/0/' + _utils2.default.encodeString(channel) + '/0'; + } + + function getRequestTimeout(_ref2) { + var config = _ref2.config; + + return config.getTransactionTimeout(); + } + + function isAuthSupported() { + return true; + } + + function postPayload(modules, incomingParams) { + var message = incomingParams.message; + + return prepareMessagePayload(modules, message); + } + + function prepareParams(modules, incomingParams) { + var meta = incomingParams.meta, + _incomingParams$repli = incomingParams.replicate, + replicate = _incomingParams$repli === undefined ? true : _incomingParams$repli, + storeInHistory = incomingParams.storeInHistory, + ttl = incomingParams.ttl; + + var params = {}; + + if (storeInHistory != null) { + if (storeInHistory) { + params.store = '1'; + } else { + params.store = '0'; + } + } + + if (ttl) { + params.ttl = ttl; + } + + if (replicate === false) { + params.norep = 'true'; + } + + if (meta && (typeof meta === 'undefined' ? 'undefined' : _typeof(meta)) === 'object') { + params.meta = JSON.stringify(meta); + } + + return params; + } + + function handleResponse(modules, serverResponse) { + return { timetoken: serverResponse[2] }; + } + +/***/ }), +/* 38 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(18); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function __processMessage(modules, message) { + var config = modules.config, + crypto = modules.crypto; + + if (!config.cipherKey) return message; + + try { + return crypto.decrypt(message); + } catch (e) { + return message; + } + } + + function getOperation() { + return _operations2.default.PNHistoryOperation; + } + + function validateParams(modules, incomingParams) { + var channel = incomingParams.channel; + var config = modules.config; + + + if (!channel) return 'Missing channel'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + } + + function getURL(modules, incomingParams) { + var channel = incomingParams.channel; + var config = modules.config; + + return '/v2/history/sub-key/' + config.subscribeKey + '/channel/' + _utils2.default.encodeString(channel); + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function isAuthSupported() { + return true; + } + + function prepareParams(modules, incomingParams) { + var start = incomingParams.start, + end = incomingParams.end, + reverse = incomingParams.reverse, + _incomingParams$count = incomingParams.count, + count = _incomingParams$count === undefined ? 100 : _incomingParams$count, + _incomingParams$strin = incomingParams.stringifiedTimeToken, + stringifiedTimeToken = _incomingParams$strin === undefined ? false : _incomingParams$strin; + + var outgoingParams = { + include_token: 'true' + }; + + outgoingParams.count = count; + if (start) outgoingParams.start = start; + if (end) outgoingParams.end = end; + if (stringifiedTimeToken) outgoingParams.string_message_token = 'true'; + if (reverse != null) outgoingParams.reverse = reverse.toString(); + + return outgoingParams; + } + + function handleResponse(modules, serverResponse) { + var response = { + messages: [], + startTimeToken: serverResponse[1], + endTimeToken: serverResponse[2] + }; + + serverResponse[0].forEach(function (serverHistoryItem) { + var item = { + timetoken: serverHistoryItem.timetoken, + entry: __processMessage(modules, serverHistoryItem.message) + }; + + response.messages.push(item); + }); + + return response; + } + +/***/ }), +/* 39 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(18); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function __processMessage(modules, message) { + var config = modules.config, + crypto = modules.crypto; + + if (!config.cipherKey) return message; + + try { + return crypto.decrypt(message); + } catch (e) { + return message; + } + } + + function getOperation() { + return _operations2.default.PNFetchMessagesOperation; + } + + function validateParams(modules, incomingParams) { + var channels = incomingParams.channels; + var config = modules.config; + + + if (!channels || channels.length === 0) return 'Missing channels'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + } + + function getURL(modules, incomingParams) { + var _incomingParams$chann = incomingParams.channels, + channels = _incomingParams$chann === undefined ? [] : _incomingParams$chann; + var config = modules.config; + + + var stringifiedChannels = channels.length > 0 ? channels.join(',') : ','; + return '/v3/history/sub-key/' + config.subscribeKey + '/channel/' + _utils2.default.encodeString(stringifiedChannels); + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getTransactionTimeout(); + } + + function isAuthSupported() { + return true; + } + + function prepareParams(modules, incomingParams) { + var start = incomingParams.start, + end = incomingParams.end, + count = incomingParams.count; + + var outgoingParams = {}; + + if (count) outgoingParams.max = count; + if (start) outgoingParams.start = start; + if (end) outgoingParams.end = end; + + return outgoingParams; + } + + function handleResponse(modules, serverResponse) { + var response = { + channels: {} + }; + + Object.keys(serverResponse.channels || {}).forEach(function (channelName) { + response.channels[channelName] = []; + + (serverResponse.channels[channelName] || []).forEach(function (messageEnvelope) { + var announce = {}; + announce.channel = channelName; + announce.subscription = null; + announce.timetoken = messageEnvelope.timetoken; + announce.message = __processMessage(modules, messageEnvelope.message); + response.channels[channelName].push(announce); + }); + }); + + return response; + } + +/***/ }), +/* 40 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(8); + + var _operations = __webpack_require__(16); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(18); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNSubscribeOperation; + } + + function validateParams(modules) { + var config = modules.config; + + + if (!config.subscribeKey) return 'Missing Subscribe Key'; + } + + function getURL(modules, incomingParams) { + var config = modules.config; + var _incomingParams$chann = incomingParams.channels, + channels = _incomingParams$chann === undefined ? [] : _incomingParams$chann; + + var stringifiedChannels = channels.length > 0 ? channels.join(',') : ','; + return '/v2/subscribe/' + config.subscribeKey + '/' + _utils2.default.encodeString(stringifiedChannels) + '/0'; + } + + function getRequestTimeout(_ref) { + var config = _ref.config; + + return config.getSubscribeTimeout(); + } + + function isAuthSupported() { + return true; + } + + function prepareParams(_ref2, incomingParams) { + var config = _ref2.config; + var _incomingParams$chann2 = incomingParams.channelGroups, + channelGroups = _incomingParams$chann2 === undefined ? [] : _incomingParams$chann2, + timetoken = incomingParams.timetoken, + filterExpression = incomingParams.filterExpression, + region = incomingParams.region; + + var params = { + heartbeat: config.getPresenceTimeout() + }; + + if (channelGroups.length > 0) { + params['channel-group'] = channelGroups.join(','); + } + + if (filterExpression && filterExpression.length > 0) { + params['filter-expr'] = filterExpression; + } + + if (timetoken) { + params.tt = timetoken; + } + + if (region) { + params.tr = region; + } + + return params; + } + + function handleResponse(modules, serverResponse) { + var messages = []; + + serverResponse.m.forEach(function (rawMessage) { + var publishMetaData = { + publishTimetoken: rawMessage.p.t, + region: rawMessage.p.r + }; + var parsedMessage = { + shard: parseInt(rawMessage.a, 10), + subscriptionMatch: rawMessage.b, + channel: rawMessage.c, + payload: rawMessage.d, + flags: rawMessage.f, + issuingClientId: rawMessage.i, + subscribeKey: rawMessage.k, + originationTimetoken: rawMessage.o, + userMetadata: rawMessage.u, + publishMetaData: publishMetaData + }; + messages.push(parsedMessage); + }); + + var metadata = { + timetoken: serverResponse.t.t, + region: serverResponse.t.r + }; + + return { messages: messages, metadata: metadata }; + } + +/***/ }), +/* 41 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + var _config = __webpack_require__(7); + + var _config2 = _interopRequireDefault(_config); + + var _categories = __webpack_require__(13); + + var _categories2 = _interopRequireDefault(_categories); + + var _flow_interfaces = __webpack_require__(8); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var _class = function () { + function _class(modules) { + var _this = this; + + _classCallCheck(this, _class); + + this._modules = {}; + + Object.keys(modules).forEach(function (key) { + _this._modules[key] = modules[key].bind(_this); + }); + } + + _createClass(_class, [{ + key: 'init', + value: function init(config) { + this._config = config; + + this._maxSubDomain = 20; + this._currentSubDomain = Math.floor(Math.random() * this._maxSubDomain); + this._providedFQDN = (this._config.secure ? 'https://' : 'http://') + this._config.origin; + this._coreParams = {}; + + this.shiftStandardOrigin(); + } + }, { + key: 'nextOrigin', + value: function nextOrigin() { + if (this._providedFQDN.indexOf('pubsub.') === -1) { + return this._providedFQDN; + } + + var newSubDomain = void 0; + + this._currentSubDomain = this._currentSubDomain + 1; + + if (this._currentSubDomain >= this._maxSubDomain) { + this._currentSubDomain = 1; + } + + newSubDomain = this._currentSubDomain.toString(); + + return this._providedFQDN.replace('pubsub', 'ps' + newSubDomain); + } + }, { + key: 'shiftStandardOrigin', + value: function shiftStandardOrigin() { + var failover = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + + this._standardOrigin = this.nextOrigin(failover); + + return this._standardOrigin; + } + }, { + key: 'getStandardOrigin', + value: function getStandardOrigin() { + return this._standardOrigin; + } + }, { + key: 'POST', + value: function POST(params, body, endpoint, callback) { + return this._modules.post(params, body, endpoint, callback); + } + }, { + key: 'GET', + value: function GET(params, endpoint, callback) { + return this._modules.get(params, endpoint, callback); + } + }, { + key: '_detectErrorCategory', + value: function _detectErrorCategory(err) { + if (err.code === 'ENOTFOUND') return _categories2.default.PNNetworkIssuesCategory; + if (err.code === 'ECONNREFUSED') return _categories2.default.PNNetworkIssuesCategory; + if (err.code === 'ECONNRESET') return _categories2.default.PNNetworkIssuesCategory; + if (err.code === 'EAI_AGAIN') return _categories2.default.PNNetworkIssuesCategory; + + if (err.status === 0 || err.hasOwnProperty('status') && typeof err.status === 'undefined') return _categories2.default.PNNetworkIssuesCategory; + if (err.timeout) return _categories2.default.PNTimeoutCategory; + + if (err.response) { + if (err.response.badRequest) return _categories2.default.PNBadRequestCategory; + if (err.response.forbidden) return _categories2.default.PNAccessDeniedCategory; + } + + return _categories2.default.PNUnknownCategory; + } + }]); + + return _class; + }(); + + exports.default = _class; + module.exports = exports['default']; + +/***/ }), +/* 42 */ +/***/ (function(module, exports) { + + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var _class = function () { + function _class() { + _classCallCheck(this, _class); + + this.storage = {}; + } + + _createClass(_class, [{ + key: "get", + value: function get(key) { + return this.storage[key]; + } + }, { + key: "set", + value: function set(key, value) { + this.storage[key] = value; + } + }]); + + return _class; + }(); + + exports.default = _class; + module.exports = exports["default"]; + +/***/ }), +/* 43 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.get = get; + exports.post = post; + + var _superagent = __webpack_require__(44); + + var _superagent2 = _interopRequireDefault(_superagent); + + var _flow_interfaces = __webpack_require__(8); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function log(req) { + var _pickLogger = function _pickLogger() { + if (console && console.log) return console; + if (window && window.console && window.console.log) return window.console; + return console; + }; + + var start = new Date().getTime(); + var timestamp = new Date().toISOString(); + var logger = _pickLogger(); + logger.log('<<<<<'); + logger.log('[' + timestamp + ']', '\n', req.url, '\n', req.qs); + logger.log('-----'); + + req.on('response', function (res) { + var now = new Date().getTime(); + var elapsed = now - start; + var timestampDone = new Date().toISOString(); + + logger.log('>>>>>>'); + logger.log('[' + timestampDone + ' / ' + elapsed + ']', '\n', req.url, '\n', req.qs, '\n', res.text); + logger.log('-----'); + }); + } + + function xdr(superagentConstruct, endpoint, callback) { + var _this = this; + + if (this._config.logVerbosity) { + superagentConstruct = superagentConstruct.use(log); + } + + if (this._config.proxy && this._modules.proxy) { + superagentConstruct = this._modules.proxy.call(this, superagentConstruct); + } + + if (this._config.keepAlive && this._modules.keepAlive) { + superagentConstruct = this._modules.keepAlive(superagentConstruct); + } + + return superagentConstruct.timeout(endpoint.timeout).end(function (err, resp) { + var status = {}; + status.error = err !== null; + status.operation = endpoint.operation; + + if (resp && resp.status) { + status.statusCode = resp.status; + } + + if (err) { + status.errorData = err; + status.category = _this._detectErrorCategory(err); + return callback(status, null); + } + + var parsedResponse = JSON.parse(resp.text); + + if (parsedResponse.error && parsedResponse.error === 1 && parsedResponse.status && parsedResponse.message && parsedResponse.service) { + status.errorData = parsedResponse; + status.statusCode = parsedResponse.status; + status.error = true; + status.category = _this._detectErrorCategory(status); + return callback(status, null); + } + + return callback(status, parsedResponse); + }); + } + + function get(params, endpoint, callback) { + var superagentConstruct = _superagent2.default.get(this.getStandardOrigin() + endpoint.url).query(params); + return xdr.call(this, superagentConstruct, endpoint, callback); + } + + function post(params, body, endpoint, callback) { + var superagentConstruct = _superagent2.default.post(this.getStandardOrigin() + endpoint.url).query(params).send(body); + return xdr.call(this, superagentConstruct, endpoint, callback); + } + +/***/ }), +/* 44 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Root reference for iframes. + */ + + var root; + if (typeof window !== 'undefined') { // Browser window + root = window; + } else if (typeof self !== 'undefined') { // Web Worker + root = self; + } else { // Other environments + console.warn("Using browser-only version of superagent in non-browser environment"); + root = this; + } + + var Emitter = __webpack_require__(45); + var requestBase = __webpack_require__(46); + var isObject = __webpack_require__(47); + + /** + * Noop. + */ + + function noop(){}; + + /** + * Expose `request`. + */ + + var request = module.exports = __webpack_require__(48).bind(null, Request); + + /** + * Determine XHR. + */ + + request.getXHR = function () { + if (root.XMLHttpRequest + && (!root.location || 'file:' != root.location.protocol + || !root.ActiveXObject)) { + return new XMLHttpRequest; + } else { + try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {} + try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {} + try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {} + try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) {} + } + throw Error("Browser-only verison of superagent could not find XHR"); + }; + + /** + * Removes leading and trailing whitespace, added to support IE. + * + * @param {String} s + * @return {String} + * @api private + */ + + var trim = ''.trim + ? function(s) { return s.trim(); } + : function(s) { return s.replace(/(^\s*|\s*$)/g, ''); }; + + /** + * Serialize the given `obj`. + * + * @param {Object} obj + * @return {String} + * @api private + */ + + function serialize(obj) { + if (!isObject(obj)) return obj; + var pairs = []; + for (var key in obj) { + pushEncodedKeyValuePair(pairs, key, obj[key]); + } + return pairs.join('&'); + } + + /** + * Helps 'serialize' with serializing arrays. + * Mutates the pairs array. + * + * @param {Array} pairs + * @param {String} key + * @param {Mixed} val + */ + + function pushEncodedKeyValuePair(pairs, key, val) { + if (val != null) { + if (Array.isArray(val)) { + val.forEach(function(v) { + pushEncodedKeyValuePair(pairs, key, v); + }); + } else if (isObject(val)) { + for(var subkey in val) { + pushEncodedKeyValuePair(pairs, key + '[' + subkey + ']', val[subkey]); + } + } else { + pairs.push(encodeURIComponent(key) + + '=' + encodeURIComponent(val)); + } + } else if (val === null) { + pairs.push(encodeURIComponent(key)); + } + } + + /** + * Expose serialization method. + */ + + request.serializeObject = serialize; + + /** + * Parse the given x-www-form-urlencoded `str`. + * + * @param {String} str + * @return {Object} + * @api private + */ + + function parseString(str) { + var obj = {}; + var pairs = str.split('&'); + var pair; + var pos; + + for (var i = 0, len = pairs.length; i < len; ++i) { + pair = pairs[i]; + pos = pair.indexOf('='); + if (pos == -1) { + obj[decodeURIComponent(pair)] = ''; + } else { + obj[decodeURIComponent(pair.slice(0, pos))] = + decodeURIComponent(pair.slice(pos + 1)); + } + } + + return obj; + } + + /** + * Expose parser. + */ + + request.parseString = parseString; + + /** + * Default MIME type map. + * + * superagent.types.xml = 'application/xml'; + * + */ + + request.types = { + html: 'text/html', + json: 'application/json', + xml: 'application/xml', + urlencoded: 'application/x-www-form-urlencoded', + 'form': 'application/x-www-form-urlencoded', + 'form-data': 'application/x-www-form-urlencoded' + }; + + /** + * Default serialization map. + * + * superagent.serialize['application/xml'] = function(obj){ + * return 'generated xml here'; + * }; + * + */ + + request.serialize = { + 'application/x-www-form-urlencoded': serialize, + 'application/json': JSON.stringify + }; + + /** + * Default parsers. + * + * superagent.parse['application/xml'] = function(str){ + * return { object parsed from str }; + * }; + * + */ + + request.parse = { + 'application/x-www-form-urlencoded': parseString, + 'application/json': JSON.parse + }; + + /** + * Parse the given header `str` into + * an object containing the mapped fields. + * + * @param {String} str + * @return {Object} + * @api private + */ + + function parseHeader(str) { + var lines = str.split(/\r?\n/); + var fields = {}; + var index; + var line; + var field; + var val; + + lines.pop(); // trailing CRLF + + for (var i = 0, len = lines.length; i < len; ++i) { + line = lines[i]; + index = line.indexOf(':'); + field = line.slice(0, index).toLowerCase(); + val = trim(line.slice(index + 1)); + fields[field] = val; + } + + return fields; + } + + /** + * Check if `mime` is json or has +json structured syntax suffix. + * + * @param {String} mime + * @return {Boolean} + * @api private + */ + + function isJSON(mime) { + return /[\/+]json\b/.test(mime); + } + + /** + * Return the mime type for the given `str`. + * + * @param {String} str + * @return {String} + * @api private + */ + + function type(str){ + return str.split(/ *; */).shift(); + }; + + /** + * Return header field parameters. + * + * @param {String} str + * @return {Object} + * @api private + */ + + function params(str){ + return str.split(/ *; */).reduce(function(obj, str){ + var parts = str.split(/ *= */), + key = parts.shift(), + val = parts.shift(); + + if (key && val) obj[key] = val; + return obj; + }, {}); + }; + + /** + * Initialize a new `Response` with the given `xhr`. + * + * - set flags (.ok, .error, etc) + * - parse header + * + * Examples: + * + * Aliasing `superagent` as `request` is nice: + * + * request = superagent; + * + * We can use the promise-like API, or pass callbacks: + * + * request.get('/').end(function(res){}); + * request.get('/', function(res){}); + * + * Sending data can be chained: + * + * request + * .post('/user') + * .send({ name: 'tj' }) + * .end(function(res){}); + * + * Or passed to `.send()`: + * + * request + * .post('/user') + * .send({ name: 'tj' }, function(res){}); + * + * Or passed to `.post()`: + * + * request + * .post('/user', { name: 'tj' }) + * .end(function(res){}); + * + * Or further reduced to a single call for simple cases: + * + * request + * .post('/user', { name: 'tj' }, function(res){}); + * + * @param {XMLHTTPRequest} xhr + * @param {Object} options + * @api private + */ + + function Response(req, options) { + options = options || {}; + this.req = req; + this.xhr = this.req.xhr; + // responseText is accessible only if responseType is '' or 'text' and on older browsers + this.text = ((this.req.method !='HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text')) || typeof this.xhr.responseType === 'undefined') + ? this.xhr.responseText + : null; + this.statusText = this.req.xhr.statusText; + this._setStatusProperties(this.xhr.status); + this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders()); + // getAllResponseHeaders sometimes falsely returns "" for CORS requests, but + // getResponseHeader still works. so we get content-type even if getting + // other headers fails. + this.header['content-type'] = this.xhr.getResponseHeader('content-type'); + this._setHeaderProperties(this.header); + this.body = this.req.method != 'HEAD' + ? this._parseBody(this.text ? this.text : this.xhr.response) + : null; + } + + /** + * Get case-insensitive `field` value. + * + * @param {String} field + * @return {String} + * @api public + */ + + Response.prototype.get = function(field){ + return this.header[field.toLowerCase()]; + }; + + /** + * Set header related properties: + * + * - `.type` the content type without params + * + * A response of "Content-Type: text/plain; charset=utf-8" + * will provide you with a `.type` of "text/plain". + * + * @param {Object} header + * @api private + */ + + Response.prototype._setHeaderProperties = function(header){ + // content-type + var ct = this.header['content-type'] || ''; + this.type = type(ct); + + // params + var obj = params(ct); + for (var key in obj) this[key] = obj[key]; + }; + + /** + * Parse the given body `str`. + * + * Used for auto-parsing of bodies. Parsers + * are defined on the `superagent.parse` object. + * + * @param {String} str + * @return {Mixed} + * @api private + */ + + Response.prototype._parseBody = function(str){ + var parse = request.parse[this.type]; + if (!parse && isJSON(this.type)) { + parse = request.parse['application/json']; + } + return parse && str && (str.length || str instanceof Object) + ? parse(str) + : null; + }; + + /** + * Set flags such as `.ok` based on `status`. + * + * For example a 2xx response will give you a `.ok` of __true__ + * whereas 5xx will be __false__ and `.error` will be __true__. The + * `.clientError` and `.serverError` are also available to be more + * specific, and `.statusType` is the class of error ranging from 1..5 + * sometimes useful for mapping respond colors etc. + * + * "sugar" properties are also defined for common cases. Currently providing: + * + * - .noContent + * - .badRequest + * - .unauthorized + * - .notAcceptable + * - .notFound + * + * @param {Number} status + * @api private + */ + + Response.prototype._setStatusProperties = function(status){ + // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request + if (status === 1223) { + status = 204; + } + + var type = status / 100 | 0; + + // status / class + this.status = this.statusCode = status; + this.statusType = type; + + // basics + this.info = 1 == type; + this.ok = 2 == type; + this.clientError = 4 == type; + this.serverError = 5 == type; + this.error = (4 == type || 5 == type) + ? this.toError() + : false; + + // sugar + this.accepted = 202 == status; + this.noContent = 204 == status; + this.badRequest = 400 == status; + this.unauthorized = 401 == status; + this.notAcceptable = 406 == status; + this.notFound = 404 == status; + this.forbidden = 403 == status; + }; + + /** + * Return an `Error` representative of this response. + * + * @return {Error} + * @api public + */ + + Response.prototype.toError = function(){ + var req = this.req; + var method = req.method; + var url = req.url; + + var msg = 'cannot ' + method + ' ' + url + ' (' + this.status + ')'; + var err = new Error(msg); + err.status = this.status; + err.method = method; + err.url = url; + + return err; + }; + + /** + * Expose `Response`. + */ + + request.Response = Response; + + /** + * Initialize a new `Request` with the given `method` and `url`. + * + * @param {String} method + * @param {String} url + * @api public + */ + + function Request(method, url) { + var self = this; + this._query = this._query || []; + this.method = method; + this.url = url; + this.header = {}; // preserves header name case + this._header = {}; // coerces header names to lowercase + this.on('end', function(){ + var err = null; + var res = null; + + try { + res = new Response(self); + } catch(e) { + err = new Error('Parser is unable to parse the response'); + err.parse = true; + err.original = e; + // issue #675: return the raw response if the response parsing fails + err.rawResponse = self.xhr && self.xhr.responseText ? self.xhr.responseText : null; + // issue #876: return the http status code if the response parsing fails + err.statusCode = self.xhr && self.xhr.status ? self.xhr.status : null; + return self.callback(err); + } + + self.emit('response', res); + + var new_err; + try { + if (res.status < 200 || res.status >= 300) { + new_err = new Error(res.statusText || 'Unsuccessful HTTP response'); + new_err.original = err; + new_err.response = res; + new_err.status = res.status; + } + } catch(e) { + new_err = e; // #985 touching res may cause INVALID_STATE_ERR on old Android + } + + // #1000 don't catch errors from the callback to avoid double calling it + if (new_err) { + self.callback(new_err, res); + } else { + self.callback(null, res); + } + }); + } + + /** + * Mixin `Emitter` and `requestBase`. + */ + + Emitter(Request.prototype); + for (var key in requestBase) { + Request.prototype[key] = requestBase[key]; + } + + /** + * Set Content-Type to `type`, mapping values from `request.types`. + * + * Examples: + * + * superagent.types.xml = 'application/xml'; + * + * request.post('/') + * .type('xml') + * .send(xmlstring) + * .end(callback); + * + * request.post('/') + * .type('application/xml') + * .send(xmlstring) + * .end(callback); + * + * @param {String} type + * @return {Request} for chaining + * @api public + */ + + Request.prototype.type = function(type){ + this.set('Content-Type', request.types[type] || type); + return this; + }; + + /** + * Set responseType to `val`. Presently valid responseTypes are 'blob' and + * 'arraybuffer'. + * + * Examples: + * + * req.get('/') + * .responseType('blob') + * .end(callback); + * + * @param {String} val + * @return {Request} for chaining + * @api public + */ + + Request.prototype.responseType = function(val){ + this._responseType = val; + return this; + }; + + /** + * Set Accept to `type`, mapping values from `request.types`. + * + * Examples: + * + * superagent.types.json = 'application/json'; + * + * request.get('/agent') + * .accept('json') + * .end(callback); + * + * request.get('/agent') + * .accept('application/json') + * .end(callback); + * + * @param {String} accept + * @return {Request} for chaining + * @api public + */ + + Request.prototype.accept = function(type){ + this.set('Accept', request.types[type] || type); + return this; + }; + + /** + * Set Authorization field value with `user` and `pass`. + * + * @param {String} user + * @param {String} pass + * @param {Object} options with 'type' property 'auto' or 'basic' (default 'basic') + * @return {Request} for chaining + * @api public + */ + + Request.prototype.auth = function(user, pass, options){ + if (!options) { + options = { + type: 'basic' + } + } + + switch (options.type) { + case 'basic': + var str = btoa(user + ':' + pass); + this.set('Authorization', 'Basic ' + str); + break; + + case 'auto': + this.username = user; + this.password = pass; + break; + } + return this; + }; + + /** + * Add query-string `val`. + * + * Examples: + * + * request.get('/shoes') + * .query('size=10') + * .query({ color: 'blue' }) + * + * @param {Object|String} val + * @return {Request} for chaining + * @api public + */ + + Request.prototype.query = function(val){ + if ('string' != typeof val) val = serialize(val); + if (val) this._query.push(val); + return this; + }; + + /** + * Queue the given `file` as an attachment to the specified `field`, + * with optional `filename`. + * + * ``` js + * request.post('/upload') + * .attach('content', new Blob(['hey!'], { type: "text/html"})) + * .end(callback); + * ``` + * + * @param {String} field + * @param {Blob|File} file + * @param {String} filename + * @return {Request} for chaining + * @api public + */ + + Request.prototype.attach = function(field, file, filename){ + this._getFormData().append(field, file, filename || file.name); + return this; + }; + + Request.prototype._getFormData = function(){ + if (!this._formData) { + this._formData = new root.FormData(); + } + return this._formData; + }; + + /** + * Invoke the callback with `err` and `res` + * and handle arity check. + * + * @param {Error} err + * @param {Response} res + * @api private + */ + + Request.prototype.callback = function(err, res){ + var fn = this._callback; + this.clearTimeout(); + fn(err, res); + }; + + /** + * Invoke callback with x-domain error. + * + * @api private + */ + + Request.prototype.crossDomainError = function(){ + var err = new Error('Request has been terminated\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.'); + err.crossDomain = true; + + err.status = this.status; + err.method = this.method; + err.url = this.url; + + this.callback(err); + }; + + /** + * Invoke callback with timeout error. + * + * @api private + */ + + Request.prototype._timeoutError = function(){ + var timeout = this._timeout; + var err = new Error('timeout of ' + timeout + 'ms exceeded'); + err.timeout = timeout; + this.callback(err); + }; + + /** + * Compose querystring to append to req.url + * + * @api private + */ + + Request.prototype._appendQueryString = function(){ + var query = this._query.join('&'); + if (query) { + this.url += ~this.url.indexOf('?') + ? '&' + query + : '?' + query; + } + }; + + /** + * Initiate request, invoking callback `fn(res)` + * with an instanceof `Response`. + * + * @param {Function} fn + * @return {Request} for chaining + * @api public + */ + + Request.prototype.end = function(fn){ + var self = this; + var xhr = this.xhr = request.getXHR(); + var timeout = this._timeout; + var data = this._formData || this._data; + + // store callback + this._callback = fn || noop; + + // state change + xhr.onreadystatechange = function(){ + if (4 != xhr.readyState) return; + + // In IE9, reads to any property (e.g. status) off of an aborted XHR will + // result in the error "Could not complete the operation due to error c00c023f" + var status; + try { status = xhr.status } catch(e) { status = 0; } + + if (0 == status) { + if (self.timedout) return self._timeoutError(); + if (self._aborted) return; + return self.crossDomainError(); + } + self.emit('end'); + }; + + // progress + var handleProgress = function(direction, e) { + if (e.total > 0) { + e.percent = e.loaded / e.total * 100; + } + e.direction = direction; + self.emit('progress', e); + } + if (this.hasListeners('progress')) { + try { + xhr.onprogress = handleProgress.bind(null, 'download'); + if (xhr.upload) { + xhr.upload.onprogress = handleProgress.bind(null, 'upload'); + } + } catch(e) { + // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist. + // Reported here: + // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context + } + } + + // timeout + if (timeout && !this._timer) { + this._timer = setTimeout(function(){ + self.timedout = true; + self.abort(); + }, timeout); + } + + // querystring + this._appendQueryString(); + + // initiate request + if (this.username && this.password) { + xhr.open(this.method, this.url, true, this.username, this.password); + } else { + xhr.open(this.method, this.url, true); + } + + // CORS + if (this._withCredentials) xhr.withCredentials = true; + + // body + if ('GET' != this.method && 'HEAD' != this.method && 'string' != typeof data && !this._isHost(data)) { + // serialize stuff + var contentType = this._header['content-type']; + var serialize = this._serializer || request.serialize[contentType ? contentType.split(';')[0] : '']; + if (!serialize && isJSON(contentType)) serialize = request.serialize['application/json']; + if (serialize) data = serialize(data); + } + + // set header fields + for (var field in this.header) { + if (null == this.header[field]) continue; + xhr.setRequestHeader(field, this.header[field]); + } + + if (this._responseType) { + xhr.responseType = this._responseType; + } + + // send stuff + this.emit('request', this); + + // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing) + // We need null here if data is undefined + xhr.send(typeof data !== 'undefined' ? data : null); + return this; + }; + + + /** + * Expose `Request`. + */ + + request.Request = Request; + + /** + * GET `url` with optional callback `fn(res)`. + * + * @param {String} url + * @param {Mixed|Function} [data] or fn + * @param {Function} [fn] + * @return {Request} + * @api public + */ + + request.get = function(url, data, fn){ + var req = request('GET', url); + if ('function' == typeof data) fn = data, data = null; + if (data) req.query(data); + if (fn) req.end(fn); + return req; + }; + + /** + * HEAD `url` with optional callback `fn(res)`. + * + * @param {String} url + * @param {Mixed|Function} [data] or fn + * @param {Function} [fn] + * @return {Request} + * @api public + */ + + request.head = function(url, data, fn){ + var req = request('HEAD', url); + if ('function' == typeof data) fn = data, data = null; + if (data) req.send(data); + if (fn) req.end(fn); + return req; + }; + + /** + * OPTIONS query to `url` with optional callback `fn(res)`. + * + * @param {String} url + * @param {Mixed|Function} [data] or fn + * @param {Function} [fn] + * @return {Request} + * @api public + */ + + request.options = function(url, data, fn){ + var req = request('OPTIONS', url); + if ('function' == typeof data) fn = data, data = null; + if (data) req.send(data); + if (fn) req.end(fn); + return req; + }; + + /** + * DELETE `url` with optional callback `fn(res)`. + * + * @param {String} url + * @param {Function} [fn] + * @return {Request} + * @api public + */ + + function del(url, fn){ + var req = request('DELETE', url); + if (fn) req.end(fn); + return req; + }; + + request['del'] = del; + request['delete'] = del; + + /** + * PATCH `url` with optional `data` and callback `fn(res)`. + * + * @param {String} url + * @param {Mixed} [data] + * @param {Function} [fn] + * @return {Request} + * @api public + */ + + request.patch = function(url, data, fn){ + var req = request('PATCH', url); + if ('function' == typeof data) fn = data, data = null; + if (data) req.send(data); + if (fn) req.end(fn); + return req; + }; + + /** + * POST `url` with optional `data` and callback `fn(res)`. + * + * @param {String} url + * @param {Mixed} [data] + * @param {Function} [fn] + * @return {Request} + * @api public + */ + + request.post = function(url, data, fn){ + var req = request('POST', url); + if ('function' == typeof data) fn = data, data = null; + if (data) req.send(data); + if (fn) req.end(fn); + return req; + }; + + /** + * PUT `url` with optional `data` and callback `fn(res)`. + * + * @param {String} url + * @param {Mixed|Function} [data] or fn + * @param {Function} [fn] + * @return {Request} + * @api public + */ + + request.put = function(url, data, fn){ + var req = request('PUT', url); + if ('function' == typeof data) fn = data, data = null; + if (data) req.send(data); + if (fn) req.end(fn); + return req; + }; + + +/***/ }), +/* 45 */ +/***/ (function(module, exports, __webpack_require__) { + + + /** + * Expose `Emitter`. + */ + + if (true) { + module.exports = Emitter; + } + + /** + * Initialize a new `Emitter`. + * + * @api public + */ + + function Emitter(obj) { + if (obj) return mixin(obj); + }; + + /** + * Mixin the emitter properties. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + + function mixin(obj) { + for (var key in Emitter.prototype) { + obj[key] = Emitter.prototype[key]; + } + return obj; + } + + /** + * Listen on the given `event` with `fn`. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + + Emitter.prototype.on = + Emitter.prototype.addEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + (this._callbacks['$' + event] = this._callbacks['$' + event] || []) + .push(fn); + return this; + }; + + /** + * Adds an `event` listener that will be invoked a single + * time then automatically removed. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + + Emitter.prototype.once = function(event, fn){ + function on() { + this.off(event, on); + fn.apply(this, arguments); + } + + on.fn = fn; + this.on(event, on); + return this; + }; + + /** + * Remove the given callback for `event` or all + * registered callbacks. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + + Emitter.prototype.off = + Emitter.prototype.removeListener = + Emitter.prototype.removeAllListeners = + Emitter.prototype.removeEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + + // all + if (0 == arguments.length) { + this._callbacks = {}; + return this; + } + + // specific event + var callbacks = this._callbacks['$' + event]; + if (!callbacks) return this; + + // remove all handlers + if (1 == arguments.length) { + delete this._callbacks['$' + event]; + return this; + } + + // remove specific handler + var cb; + for (var i = 0; i < callbacks.length; i++) { + cb = callbacks[i]; + if (cb === fn || cb.fn === fn) { + callbacks.splice(i, 1); + break; + } + } + return this; + }; + + /** + * Emit `event` with the given args. + * + * @param {String} event + * @param {Mixed} ... + * @return {Emitter} + */ + + Emitter.prototype.emit = function(event){ + this._callbacks = this._callbacks || {}; + var args = [].slice.call(arguments, 1) + , callbacks = this._callbacks['$' + event]; + + if (callbacks) { + callbacks = callbacks.slice(0); + for (var i = 0, len = callbacks.length; i < len; ++i) { + callbacks[i].apply(this, args); + } + } + + return this; + }; + + /** + * Return array of callbacks for `event`. + * + * @param {String} event + * @return {Array} + * @api public + */ + + Emitter.prototype.listeners = function(event){ + this._callbacks = this._callbacks || {}; + return this._callbacks['$' + event] || []; + }; + + /** + * Check if this emitter has `event` handlers. + * + * @param {String} event + * @return {Boolean} + * @api public + */ + + Emitter.prototype.hasListeners = function(event){ + return !! this.listeners(event).length; + }; + + +/***/ }), +/* 46 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Module of mixed-in functions shared between node and client code + */ + var isObject = __webpack_require__(47); + + /** + * Clear previous timeout. + * + * @return {Request} for chaining + * @api public + */ + + exports.clearTimeout = function _clearTimeout(){ + this._timeout = 0; + clearTimeout(this._timer); + return this; + }; + + /** + * Override default response body parser + * + * This function will be called to convert incoming data into request.body + * + * @param {Function} + * @api public + */ + + exports.parse = function parse(fn){ + this._parser = fn; + return this; + }; + + /** + * Override default request body serializer + * + * This function will be called to convert data set via .send or .attach into payload to send + * + * @param {Function} + * @api public + */ + + exports.serialize = function serialize(fn){ + this._serializer = fn; + return this; + }; + + /** + * Set timeout to `ms`. + * + * @param {Number} ms + * @return {Request} for chaining + * @api public + */ + + exports.timeout = function timeout(ms){ + this._timeout = ms; + return this; + }; + + /** + * Promise support + * + * @param {Function} resolve + * @param {Function} reject + * @return {Request} + */ + + exports.then = function then(resolve, reject) { + if (!this._fullfilledPromise) { + var self = this; + this._fullfilledPromise = new Promise(function(innerResolve, innerReject){ + self.end(function(err, res){ + if (err) innerReject(err); else innerResolve(res); + }); + }); + } + return this._fullfilledPromise.then(resolve, reject); + } + + exports.catch = function(cb) { + return this.then(undefined, cb); + }; + + /** + * Allow for extension + */ + + exports.use = function use(fn) { + fn(this); + return this; + } + + + /** + * Get request header `field`. + * Case-insensitive. + * + * @param {String} field + * @return {String} + * @api public + */ + + exports.get = function(field){ + return this._header[field.toLowerCase()]; + }; + + /** + * Get case-insensitive header `field` value. + * This is a deprecated internal API. Use `.get(field)` instead. + * + * (getHeader is no longer used internally by the superagent code base) + * + * @param {String} field + * @return {String} + * @api private + * @deprecated + */ + + exports.getHeader = exports.get; + + /** + * Set header `field` to `val`, or multiple fields with one object. + * Case-insensitive. + * + * Examples: + * + * req.get('/') + * .set('Accept', 'application/json') + * .set('X-API-Key', 'foobar') + * .end(callback); + * + * req.get('/') + * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' }) + * .end(callback); + * + * @param {String|Object} field + * @param {String} val + * @return {Request} for chaining + * @api public + */ + + exports.set = function(field, val){ + if (isObject(field)) { + for (var key in field) { + this.set(key, field[key]); + } + return this; + } + this._header[field.toLowerCase()] = val; + this.header[field] = val; + return this; + }; + + /** + * Remove header `field`. + * Case-insensitive. + * + * Example: + * + * req.get('/') + * .unset('User-Agent') + * .end(callback); + * + * @param {String} field + */ + exports.unset = function(field){ + delete this._header[field.toLowerCase()]; + delete this.header[field]; + return this; + }; + + /** + * Write the field `name` and `val`, or multiple fields with one object + * for "multipart/form-data" request bodies. + * + * ``` js + * request.post('/upload') + * .field('foo', 'bar') + * .end(callback); + * + * request.post('/upload') + * .field({ foo: 'bar', baz: 'qux' }) + * .end(callback); + * ``` + * + * @param {String|Object} name + * @param {String|Blob|File|Buffer|fs.ReadStream} val + * @return {Request} for chaining + * @api public + */ + exports.field = function(name, val) { + + // name should be either a string or an object. + if (null === name || undefined === name) { + throw new Error('.field(name, val) name can not be empty'); + } + + if (isObject(name)) { + for (var key in name) { + this.field(key, name[key]); + } + return this; + } + + // val should be defined now + if (null === val || undefined === val) { + throw new Error('.field(name, val) val can not be empty'); + } + this._getFormData().append(name, val); + return this; + }; + + /** + * Abort the request, and clear potential timeout. + * + * @return {Request} + * @api public + */ + exports.abort = function(){ + if (this._aborted) { + return this; + } + this._aborted = true; + this.xhr && this.xhr.abort(); // browser + this.req && this.req.abort(); // node + this.clearTimeout(); + this.emit('abort'); + return this; + }; + + /** + * Enable transmission of cookies with x-domain requests. + * + * Note that for this to work the origin must not be + * using "Access-Control-Allow-Origin" with a wildcard, + * and also must set "Access-Control-Allow-Credentials" + * to "true". + * + * @api public + */ + + exports.withCredentials = function(){ + // This is browser-only functionality. Node side is no-op. + this._withCredentials = true; + return this; + }; + + /** + * Set the max redirects to `n`. Does noting in browser XHR implementation. + * + * @param {Number} n + * @return {Request} for chaining + * @api public + */ + + exports.redirects = function(n){ + this._maxRedirects = n; + return this; + }; + + /** + * Convert to a plain javascript object (not JSON string) of scalar properties. + * Note as this method is designed to return a useful non-this value, + * it cannot be chained. + * + * @return {Object} describing method, url, and data of this request + * @api public + */ + + exports.toJSON = function(){ + return { + method: this.method, + url: this.url, + data: this._data, + headers: this._header + }; + }; + + /** + * Check if `obj` is a host object, + * we don't want to serialize these :) + * + * TODO: future proof, move to compoent land + * + * @param {Object} obj + * @return {Boolean} + * @api private + */ + + exports._isHost = function _isHost(obj) { + var str = {}.toString.call(obj); + + switch (str) { + case '[object File]': + case '[object Blob]': + case '[object FormData]': + return true; + default: + return false; + } + } + + /** + * Send `data` as the request body, defaulting the `.type()` to "json" when + * an object is given. + * + * Examples: + * + * // manual json + * request.post('/user') + * .type('json') + * .send('{"name":"tj"}') + * .end(callback) + * + * // auto json + * request.post('/user') + * .send({ name: 'tj' }) + * .end(callback) + * + * // manual x-www-form-urlencoded + * request.post('/user') + * .type('form') + * .send('name=tj') + * .end(callback) + * + * // auto x-www-form-urlencoded + * request.post('/user') + * .type('form') + * .send({ name: 'tj' }) + * .end(callback) + * + * // defaults to x-www-form-urlencoded + * request.post('/user') + * .send('name=tobi') + * .send('species=ferret') + * .end(callback) + * + * @param {String|Object} data + * @return {Request} for chaining + * @api public + */ + + exports.send = function(data){ + var obj = isObject(data); + var type = this._header['content-type']; + + // merge + if (obj && isObject(this._data)) { + for (var key in data) { + this._data[key] = data[key]; + } + } else if ('string' == typeof data) { + // default to x-www-form-urlencoded + if (!type) this.type('form'); + type = this._header['content-type']; + if ('application/x-www-form-urlencoded' == type) { + this._data = this._data + ? this._data + '&' + data + : data; + } else { + this._data = (this._data || '') + data; + } + } else { + this._data = data; + } + + if (!obj || this._isHost(data)) return this; + + // default to json + if (!type) this.type('json'); + return this; + }; + + +/***/ }), +/* 47 */ +/***/ (function(module, exports) { + + /** + * Check if `obj` is an object. + * + * @param {Object} obj + * @return {Boolean} + * @api private + */ + + function isObject(obj) { + return null !== obj && 'object' === typeof obj; + } + + module.exports = isObject; + + +/***/ }), +/* 48 */ +/***/ (function(module, exports) { + + // The node and browser modules expose versions of this with the + // appropriate constructor function bound as first argument + /** + * Issue a request: + * + * Examples: + * + * request('GET', '/users').end(callback) + * request('/users').end(callback) + * request('/users', callback) + * + * @param {String} method + * @param {String|Function} url or callback + * @return {Request} + * @api public + */ + + function request(RequestConstructor, method, url) { + // callback + if ('function' == typeof url) { + return new RequestConstructor('GET', method).end(url); + } + + // url first + if (2 == arguments.length) { + return new RequestConstructor('GET', method); + } + + return new RequestConstructor(method, url); + } + + module.exports = request; + + +/***/ }) +/******/ ]) +}); +; \ No newline at end of file diff --git a/dist/nativescript/pubnub.min.js b/dist/nativescript/pubnub.min.js new file mode 100644 index 000000000..25025a98c --- /dev/null +++ b/dist/nativescript/pubnub.min.js @@ -0,0 +1,3 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.PubNub=t():e.PubNub=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=n(1),u=r(a),c=n(41),l=r(c),h=n(42),f=r(h),d=n(43),p=(n(8),function(e){function t(e){return i(this,t),e.db=new f.default,e.networking=new l.default({get:d.get,post:d.post}),e.sdkFamily="NativeScript",s(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))}return o(t,e),t}(u.default));t.default=p,e.exports=t.default},function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;nc)&&void 0===e.nsecs&&(f=0),f>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");c=h,l=f,u=o,h+=122192928e5;var p=(1e4*(268435455&h)+f)%4294967296;i[r++]=p>>>24&255,i[r++]=p>>>16&255,i[r++]=p>>>8&255,i[r++]=255&p;var g=h/4294967296*1e4&268435455;i[r++]=g>>>8&255,i[r++]=255&g,i[r++]=g>>>24&15|16,i[r++]=g>>>16&255,i[r++]=o>>>8|128,i[r++]=255&o;for(var y=e.node||a,v=0;v<6;++v)i[r+v]=y[v];return t||s(i)}var i=n(4),s=n(5),o=i(),a=[1|o[0],o[1],o[2],o[3],o[4],o[5]],u=16383&(o[6]<<8|o[7]),c=0,l=0;e.exports=r},function(e,t){(function(t){var n,r=t.crypto||t.msCrypto;if(r&&r.getRandomValues){var i=new Uint8Array(16);n=function(){return r.getRandomValues(i),i}}if(!n){var s=new Array(16);n=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),s[t]=e>>>((3&t)<<3)&255;return s}}e.exports=n}).call(t,function(){return this}())},function(e,t){function n(e,t){var n=t||0,i=r;return i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]}for(var r=[],i=0;i<256;++i)r[i]=(i+256).toString(16).substr(1);e.exports=n},function(e,t,n){function r(e,t,n){var r=t&&n||0;"string"==typeof e&&(t="binary"==e?new Array(16):null,e=null),e=e||{};var o=e.random||(e.rng||i)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t)for(var a=0;a<16;++a)t[r+a]=o[a];return t||s(o)}var i=n(4),s=n(5);e.exports=r},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n>>2]|=(n[i>>>2]>>>24-i%4*8&255)<<24-(r+i)%4*8;else if(65535>>2]=n[i>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=s.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],r=0;r>>2]>>>24-r%4*8&255;n.push((i>>>4).toString(16)),n.push((15&i).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new o.init(n,t/2)}},c=a.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new o.init(n,t)}},l=a.Utf8={stringify:function(e){try{return decodeURIComponent(escape(c.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return c.parse(unescape(encodeURIComponent(e)))}},h=r.BufferedBlockAlgorithm=s.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=l.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,r=n.words,i=n.sigBytes,s=this.blockSize,a=i/(4*s),a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0);if(t=a*s,i=e.min(4*t,i),t){for(var u=0;ul;){var h;e:{h=c;for(var f=e.sqrt(h),d=2;d<=f;d++)if(!(h%d)){h=!1;break e}h=!0}h&&(8>l&&(o[l]=u(e.pow(c,.5))),a[l]=u(e.pow(c,1/3)),l++),c++}var p=[],r=r.SHA256=s.extend({_doReset:function(){this._hash=new i.init(o.slice(0))},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],s=n[2],o=n[3],u=n[4],c=n[5],l=n[6],h=n[7],f=0;64>f;f++){if(16>f)p[f]=0|e[t+f];else{var d=p[f-15],g=p[f-2];p[f]=((d<<25|d>>>7)^(d<<14|d>>>18)^d>>>3)+p[f-7]+((g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10)+p[f-16]}d=h+((u<<26|u>>>6)^(u<<21|u>>>11)^(u<<7|u>>>25))+(u&c^~u&l)+a[f]+p[f],g=((r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22))+(r&i^r&s^i&s),h=l,l=c,c=u,u=o+d|0,o=s,s=i,i=r,r=d+g|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+s|0,n[3]=n[3]+o|0,n[4]=n[4]+u|0,n[5]=n[5]+c|0,n[6]=n[6]+l|0,n[7]=n[7]+h|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return n[i>>>5]|=128<<24-i%32,n[14+(i+64>>>9<<4)]=e.floor(r/4294967296),n[15+(i+64>>>9<<4)]=r,t.sigBytes=4*n.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(r),t.HmacSHA256=s._createHmacHelper(r)}(Math),function(){var e=n,t=e.enc.Utf8;e.algo.HMAC=e.lib.Base.extend({init:function(e,n){e=this._hasher=new e.init,"string"==typeof n&&(n=t.parse(n));var r=e.blockSize,i=4*r;n.sigBytes>i&&(n=e.finalize(n)),n.clamp();for(var s=this._oKey=n.clone(),o=this._iKey=n.clone(),a=s.words,u=o.words,c=0;c>>2]>>>24-i%4*8&255)<<16|(t[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|t[i+2>>>2]>>>24-(i+2)%4*8&255,o=0;4>o&&i+.75*o>>6*(3-o)&63));if(t=r.charAt(64))for(;e.length%4;)e.push(t);return e.join("")},parse:function(e){var n=e.length,r=this._map,i=r.charAt(64);i&&-1!=(i=e.indexOf(i))&&(n=i);for(var i=[],s=0,o=0;o>>6-o%4*2;i[s>>>2]|=(a|u)<<24-s%4*8,s++}return t.create(i,s)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),function(e){function t(e,t,n,r,i,s,o){return((e=e+(t&n|~t&r)+i+o)<>>32-s)+t}function r(e,t,n,r,i,s,o){return((e=e+(t&r|n&~r)+i+o)<>>32-s)+t}function i(e,t,n,r,i,s,o){return((e=e+(t^n^r)+i+o)<>>32-s)+t}function s(e,t,n,r,i,s,o){return((e=e+(n^(t|~r))+i+o)<>>32-s)+t}for(var o=n,a=o.lib,u=a.WordArray,c=a.Hasher,a=o.algo,l=[],h=0;64>h;h++)l[h]=4294967296*e.abs(e.sin(h+1))|0;a=a.MD5=c.extend({_doReset:function(){this._hash=new u.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,n){for(var o=0;16>o;o++){var a=n+o,u=e[a];e[a]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8)}var o=this._hash.words,a=e[n+0],u=e[n+1],c=e[n+2],h=e[n+3],f=e[n+4],d=e[n+5],p=e[n+6],g=e[n+7],y=e[n+8],v=e[n+9],b=e[n+10],_=e[n+11],m=e[n+12],k=e[n+13],P=e[n+14],S=e[n+15],O=o[0],w=o[1],T=o[2],C=o[3],O=t(O,w,T,C,a,7,l[0]),C=t(C,O,w,T,u,12,l[1]),T=t(T,C,O,w,c,17,l[2]),w=t(w,T,C,O,h,22,l[3]),O=t(O,w,T,C,f,7,l[4]),C=t(C,O,w,T,d,12,l[5]),T=t(T,C,O,w,p,17,l[6]),w=t(w,T,C,O,g,22,l[7]),O=t(O,w,T,C,y,7,l[8]),C=t(C,O,w,T,v,12,l[9]),T=t(T,C,O,w,b,17,l[10]),w=t(w,T,C,O,_,22,l[11]),O=t(O,w,T,C,m,7,l[12]),C=t(C,O,w,T,k,12,l[13]),T=t(T,C,O,w,P,17,l[14]),w=t(w,T,C,O,S,22,l[15]),O=r(O,w,T,C,u,5,l[16]),C=r(C,O,w,T,p,9,l[17]),T=r(T,C,O,w,_,14,l[18]),w=r(w,T,C,O,a,20,l[19]),O=r(O,w,T,C,d,5,l[20]),C=r(C,O,w,T,b,9,l[21]),T=r(T,C,O,w,S,14,l[22]),w=r(w,T,C,O,f,20,l[23]),O=r(O,w,T,C,v,5,l[24]),C=r(C,O,w,T,P,9,l[25]),T=r(T,C,O,w,h,14,l[26]),w=r(w,T,C,O,y,20,l[27]),O=r(O,w,T,C,k,5,l[28]),C=r(C,O,w,T,c,9,l[29]),T=r(T,C,O,w,g,14,l[30]),w=r(w,T,C,O,m,20,l[31]),O=i(O,w,T,C,d,4,l[32]),C=i(C,O,w,T,y,11,l[33]),T=i(T,C,O,w,_,16,l[34]),w=i(w,T,C,O,P,23,l[35]),O=i(O,w,T,C,u,4,l[36]),C=i(C,O,w,T,f,11,l[37]),T=i(T,C,O,w,g,16,l[38]),w=i(w,T,C,O,b,23,l[39]),O=i(O,w,T,C,k,4,l[40]),C=i(C,O,w,T,a,11,l[41]),T=i(T,C,O,w,h,16,l[42]),w=i(w,T,C,O,p,23,l[43]),O=i(O,w,T,C,v,4,l[44]),C=i(C,O,w,T,m,11,l[45]),T=i(T,C,O,w,S,16,l[46]),w=i(w,T,C,O,c,23,l[47]),O=s(O,w,T,C,a,6,l[48]),C=s(C,O,w,T,g,10,l[49]),T=s(T,C,O,w,P,15,l[50]),w=s(w,T,C,O,d,21,l[51]),O=s(O,w,T,C,m,6,l[52]),C=s(C,O,w,T,h,10,l[53]),T=s(T,C,O,w,b,15,l[54]),w=s(w,T,C,O,u,21,l[55]),O=s(O,w,T,C,y,6,l[56]),C=s(C,O,w,T,S,10,l[57]),T=s(T,C,O,w,p,15,l[58]),w=s(w,T,C,O,k,21,l[59]),O=s(O,w,T,C,f,6,l[60]),C=s(C,O,w,T,_,10,l[61]),T=s(T,C,O,w,c,15,l[62]),w=s(w,T,C,O,v,21,l[63]);o[0]=o[0]+O|0,o[1]=o[1]+w|0,o[2]=o[2]+T|0,o[3]=o[3]+C|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;n[i>>>5]|=128<<24-i%32;var s=e.floor(r/4294967296);for(n[15+(i+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),n[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),t.sigBytes=4*(n.length+1),this._process(),t=this._hash,n=t.words,r=0;4>r;r++)i=n[r],n[r]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8);return t},clone:function(){var e=c.clone.call(this);return e._hash=this._hash.clone(),e}}),o.MD5=c._createHelper(a),o.HmacMD5=c._createHmacHelper(a)}(Math),function(){var e=n,t=e.lib,r=t.Base,i=t.WordArray,t=e.algo,s=t.EvpKDF=r.extend({cfg:r.extend({keySize:4,hasher:t.MD5,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n=this.cfg,r=n.hasher.create(),s=i.create(),o=s.words,a=n.keySize,n=n.iterations;o.length>>2]}},r.BlockCipher=c.extend({cfg:c.cfg.extend({mode:l,padding:f}),reset:function(){c.reset.call(this);var e=this.cfg,t=e.iv,e=e.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=e.createEncryptor;else n=e.createDecryptor,this._minBufferSize=1;this._mode=n.call(e,this,t&&t.words)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){e.pad(this._data,this.blockSize);var t=this._process(!0)}else t=this._process(!0),e.unpad(t);return t},blockSize:4});var d=r.CipherParams=i.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),l=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext;return e=e.salt,(e?s.create([1398893684,1701076831]).concat(e).concat(t):t).toString(a)},parse:function(e){e=a.parse(e);var t=e.words;if(1398893684==t[0]&&1701076831==t[1]){var n=s.create(t.slice(2,4));t.splice(0,4),e.sigBytes-=16}return d.create({ciphertext:e,salt:n})}},p=r.SerializableCipher=i.extend({cfg:i.extend({format:l}),encrypt:function(e,t,n,r){r=this.cfg.extend(r);var i=e.createEncryptor(n,r);return t=i.finalize(t),i=i.cfg,d.create({ciphertext:t,key:n,iv:i.iv,algorithm:e,mode:i.mode,padding:i.padding,blockSize:e.blockSize,formatter:r.format})},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),e.createDecryptor(n,r).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),t=(t.kdf={}).OpenSSL={execute:function(e,t,n,r){return r||(r=s.random(8)),e=u.create({keySize:t+n}).compute(e,r),n=s.create(e.words.slice(t),4*n),e.sigBytes=4*t,d.create({key:e,iv:n,salt:r})}},g=r.PasswordBasedCipher=p.extend({cfg:p.cfg.extend({kdf:t}),encrypt:function(e,t,n,r){return r=this.cfg.extend(r),n=r.kdf.execute(n,e.keySize,e.ivSize),r.iv=n.iv,e=p.encrypt.call(this,e,t,n.key,r),e.mixIn(n),e},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),n=r.kdf.execute(n,e.keySize,e.ivSize,t.salt),r.iv=n.iv,p.decrypt.call(this,e,t,n.key,r)}})}(),function(){for(var e=n,t=e.lib.BlockCipher,r=e.algo,i=[],s=[],o=[],a=[],u=[],c=[],l=[],h=[],f=[],d=[],p=[],g=0;256>g;g++)p[g]=128>g?g<<1:g<<1^283;for(var y=0,v=0,g=0;256>g;g++){var b=v^v<<1^v<<2^v<<3^v<<4,b=b>>>8^255&b^99;i[y]=b,s[b]=y;var _=p[y],m=p[_],k=p[m],P=257*p[b]^16843008*b;o[y]=P<<24|P>>>8,a[y]=P<<16|P>>>16,u[y]=P<<8|P>>>24,c[y]=P,P=16843009*k^65537*m^257*_^16843008*y,l[b]=P<<24|P>>>8,h[b]=P<<16|P>>>16,f[b]=P<<8|P>>>24,d[b]=P,y?(y=_^p[p[p[k^_]]],v^=p[p[v]]):y=v=1}var S=[0,1,2,4,8,16,32,64,128,27,54],r=r.AES=t.extend({_doReset:function(){for(var e=this._key,t=e.words,n=e.sigBytes/4,e=4*((this._nRounds=n+6)+1),r=this._keySchedule=[],s=0;s>>24]<<24|i[o>>>16&255]<<16|i[o>>>8&255]<<8|i[255&o]):(o=o<<8|o>>>24,o=i[o>>>24]<<24|i[o>>>16&255]<<16|i[o>>>8&255]<<8|i[255&o],o^=S[s/n|0]<<24),r[s]=r[s-n]^o}for(t=this._invKeySchedule=[],n=0;nn||4>=s?o:l[i[o>>>24]]^h[i[o>>>16&255]]^f[i[o>>>8&255]]^d[i[255&o]]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,a,u,c,i)},decryptBlock:function(e,t){var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n,this._doCryptBlock(e,t,this._invKeySchedule,l,h,f,d,s),n=e[t+1],e[t+1]=e[t+3],e[t+3]=n},_doCryptBlock:function(e,t,n,r,i,s,o,a){for(var u=this._nRounds,c=e[t]^n[0],l=e[t+1]^n[1],h=e[t+2]^n[2],f=e[t+3]^n[3],d=4,p=1;p>>24]^i[l>>>16&255]^s[h>>>8&255]^o[255&f]^n[d++],y=r[l>>>24]^i[h>>>16&255]^s[f>>>8&255]^o[255&c]^n[d++],v=r[h>>>24]^i[f>>>16&255]^s[c>>>8&255]^o[255&l]^n[d++],f=r[f>>>24]^i[c>>>16&255]^s[l>>>8&255]^o[255&h]^n[d++],c=g,l=y,h=v;g=(a[c>>>24]<<24|a[l>>>16&255]<<16|a[h>>>8&255]<<8|a[255&f])^n[d++],y=(a[l>>>24]<<24|a[h>>>16&255]<<16|a[f>>>8&255]<<8|a[255&c])^n[d++],v=(a[h>>>24]<<24|a[f>>>16&255]<<16|a[c>>>8&255]<<8|a[255&l])^n[d++],f=(a[f>>>24]<<24|a[c>>>16&255]<<16|a[l>>>8&255]<<8|a[255&h])^n[d++],e[t]=g,e[t+1]=y,e[t+2]=v,e[t+3]=f},keySize:8});e.AES=t._createHelper(r)}(),n.mode.ECB=function(){var e=n.lib.BlockCipherMode.extend();return e.Encryptor=e.extend({processBlock:function(e,t){this._cipher.encryptBlock(e,t)}}),e.Decryptor=e.extend({processBlock:function(e,t){this._cipher.decryptBlock(e,t)}}),e}(),e.exports=n},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n=o){var u={};u.category=y.default.PNRequestMessageCountExceededCategory,u.operation=e.operation,this._listenerManager.announceStatus(u)}i.forEach(function(e){var t=e.channel,r=e.subscriptionMatch,i=e.publishMetaData;if(t===r&&(r=null),a){if(n._dedupingManager.isDuplicate(e))return;n._dedupingManager.addEntry(e)}if(p.default.endsWith(e.channel,"-pnpres")){var s={};s.channel=null,s.subscription=null,s.actualChannel=null!=r?t:null,s.subscribedChannel=null!=r?r:t,t&&(s.channel=t.substring(0,t.lastIndexOf("-pnpres"))),r&&(s.subscription=r.substring(0,r.lastIndexOf("-pnpres"))),s.action=e.payload.action,s.state=e.payload.data,s.timetoken=i.publishTimetoken,s.occupancy=e.payload.occupancy,s.uuid=e.payload.uuid,s.timestamp=e.payload.timestamp,e.payload.join&&(s.join=e.payload.join),e.payload.leave&&(s.leave=e.payload.leave),e.payload.timeout&&(s.timeout=e.payload.timeout),n._listenerManager.announcePresence(s)}else{var o={};o.channel=null,o.subscription=null,o.actualChannel=null!=r?t:null,o.subscribedChannel=null!=r?r:t,o.channel=t,o.subscription=r,o.timetoken=i.publishTimetoken,o.publisher=e.issuingClientId,e.userMetadata&&(o.userMetadata=e.userMetadata),n._config.cipherKey?o.message=n._crypto.decrypt(e.payload):o.message=e.payload,n._listenerManager.announceMessage(o)}}),this._region=t.metadata.region,this._startSubscribeLoop()}},{key:"_stopSubscribeLoop",value:function(){this._subscribeCall&&(this._subscribeCall.abort(),this._subscribeCall=null)}}]),e}();t.default=v,e.exports=t.default},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n=this._config.maximumCacheSize&&this.hashHistory.shift(),this.hashHistory.push(this.getKey(e))}},{key:"clearHistory",value:function(){this.hashHistory=[]}}]),e}();t.default=a,e.exports=t.default},function(e,t){"use strict";function n(e){var t=[];return Object.keys(e).forEach(function(e){return t.push(e)}),t}function r(e){return encodeURIComponent(e).replace(/[!~*'()]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function i(e){return n(e).sort()}function s(e){return i(e).map(function(t){return t+"="+r(e[t])}).join("&")}function o(e,t){return-1!==e.indexOf(t,this.length-t.length)}function a(){var e=void 0,t=void 0;return{promise:new Promise(function(n,r){e=n,t=r}),reject:t,fulfill:e}}e.exports={signPamFromParams:s,endsWith:o,createPromise:a,encodeString:r}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function a(e,t){return e.type=t,e.error=!0,e}function u(e){return a({message:e},"validationError")}function c(e,t,n){return e.usePost&&e.usePost(t,n)?e.postURL(t,n):e.getURL(t,n)}function l(e){var t="PubNub-JS-"+e.sdkFamily;return e.partnerId&&(t+="-"+e.partnerId),t+="/"+e.getVersion()}function h(e,t,n){var r=e.config,i=e.crypto;n.timestamp=Math.floor((new Date).getTime()/1e3);var s=r.subscribeKey+"\n"+r.publishKey+"\n"+t+"\n";s+=g.default.signPamFromParams(n);var o=i.HMACSHA256(s);o=o.replace(/\+/g,"-"),o=o.replace(/\//g,"_"),n.signature=o}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=e.networking,r=e.config,i=null,s=null,o={};t.getOperation()===b.default.PNTimeOperation||t.getOperation()===b.default.PNChannelGroupsOperation?i=arguments.length<=2?void 0:arguments[2]:(o=arguments.length<=2?void 0:arguments[2],i=arguments.length<=3?void 0:arguments[3]),"undefined"==typeof Promise||i||(s=g.default.createPromise());var a=t.validateParams(e,o);if(!a){var f=t.prepareParams(e,o),p=c(t,e,o),y=void 0,v={url:p,operation:t.getOperation(),timeout:t.getRequestTimeout(e)};f.uuid=r.UUID,f.pnsdk=l(r),r.useInstanceId&&(f.instanceid=r.instanceId),r.useRequestId&&(f.requestid=d.default.v4()),t.isAuthSupported()&&r.getAuthKey()&&(f.auth=r.getAuthKey()),r.secretKey&&h(e,p,f);var m=function(n,r){if(n.error)return void(i?i(n):s&&s.reject(new _("PubNub call failed, check status for details",n)));var a=t.handleResponse(e,r,o);i?i(n,a):s&&s.fulfill(a)};if(t.usePost&&t.usePost(e,o)){var k=t.postPayload(e,o);y=n.POST(f,k,v,m)}else y=n.GET(f,v,m);return t.getOperation()===b.default.PNSubscribeOperation?y:s?s.promise:void 0}return i?i(u(a)):s?(s.reject(new _("Validation failed, check status for details",u(a))),s.promise):void 0};var f=n(2),d=r(f),p=(n(8),n(18)),g=r(p),y=n(7),v=(r(y),n(16)),b=r(v),_=function(e){function t(e,n){i(this,t);var r=s(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return r.name=r.constructor.name,r.status=n,r.message=e,r}return o(t,e),t}(Error);e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNAddChannelsToGroupOperation}function s(e,t){var n=t.channels,r=t.channelGroup,i=e.config;return r?n&&0!==n.length?i.subscribeKey?void 0:"Missing Subscribe Key":"Missing Channels":"Missing Channel Group"}function o(e,t){var n=t.channelGroup;return"/v1/channel-registration/sub-key/"+e.config.subscribeKey+"/channel-group/"+p.default.encodeString(n)}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(e,t){var n=t.channels;return{add:(void 0===n?[]:n).join(",")}}function l(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNRemoveChannelsFromGroupOperation}function s(e,t){var n=t.channels,r=t.channelGroup,i=e.config;return r?n&&0!==n.length?i.subscribeKey?void 0:"Missing Subscribe Key":"Missing Channels":"Missing Channel Group"}function o(e,t){var n=t.channelGroup;return"/v1/channel-registration/sub-key/"+e.config.subscribeKey+"/channel-group/"+p.default.encodeString(n)}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(e,t){var n=t.channels;return{remove:(void 0===n?[]:n).join(",")}}function l(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNRemoveGroupOperation}function s(e,t){var n=t.channelGroup,r=e.config;return n?r.subscribeKey?void 0:"Missing Subscribe Key":"Missing Channel Group"}function o(e,t){var n=t.channelGroup;return"/v1/channel-registration/sub-key/"+e.config.subscribeKey+"/channel-group/"+p.default.encodeString(n)+"/remove"}function a(){return!0}function u(e){return e.config.getTransactionTimeout()}function c(){return{}}function l(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.isAuthSupported=a,t.getRequestTimeout=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(){return h.default.PNChannelGroupsOperation}function i(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function s(e){return"/v1/channel-registration/sub-key/"+e.config.subscribeKey+"/channel-group"}function o(e){return e.config.getTransactionTimeout()}function a(){return!0}function u(){return{}}function c(e,t){return{groups:t.payload.groups}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=s,t.getRequestTimeout=o,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),h=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNChannelsForGroupOperation}function s(e,t){var n=t.channelGroup,r=e.config;return n?r.subscribeKey?void 0:"Missing Subscribe Key":"Missing Channel Group"}function o(e,t){var n=t.channelGroup;return"/v1/channel-registration/sub-key/"+e.config.subscribeKey+"/channel-group/"+p.default.encodeString(n)}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(){return{}}function l(e,t){return{channels:t.payload.channels}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(){return h.default.PNPushNotificationEnabledChannelsOperation}function i(e,t){var n=t.device,r=t.pushGateway,i=t.channels,s=e.config;return n?r?i&&0!==i.length?s.subscribeKey?void 0:"Missing Subscribe Key":"Missing Channels":"Missing GW Type (pushGateway: gcm or apns)":"Missing Device ID (device)"}function s(e,t){var n=t.device;return"/v1/push/sub-key/"+e.config.subscribeKey+"/devices/"+n}function o(e){return e.config.getTransactionTimeout()}function a(){return!0}function u(e,t){var n=t.pushGateway,r=t.channels;return{type:n,add:(void 0===r?[]:r).join(",")}}function c(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=s,t.getRequestTimeout=o,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),h=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(){return h.default.PNPushNotificationEnabledChannelsOperation}function i(e,t){var n=t.device,r=t.pushGateway,i=t.channels,s=e.config;return n?r?i&&0!==i.length?s.subscribeKey?void 0:"Missing Subscribe Key":"Missing Channels":"Missing GW Type (pushGateway: gcm or apns)":"Missing Device ID (device)"}function s(e,t){var n=t.device;return"/v1/push/sub-key/"+e.config.subscribeKey+"/devices/"+n}function o(e){return e.config.getTransactionTimeout()}function a(){return!0}function u(e,t){var n=t.pushGateway,r=t.channels;return{type:n,remove:(void 0===r?[]:r).join(",")}}function c(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=s,t.getRequestTimeout=o,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),h=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(){return h.default.PNPushNotificationEnabledChannelsOperation}function i(e,t){var n=t.device,r=t.pushGateway,i=e.config;return n?r?i.subscribeKey?void 0:"Missing Subscribe Key":"Missing GW Type (pushGateway: gcm or apns)":"Missing Device ID (device)"}function s(e,t){var n=t.device;return"/v1/push/sub-key/"+e.config.subscribeKey+"/devices/"+n}function o(e){return e.config.getTransactionTimeout()}function a(){return!0}function u(e,t){return{type:t.pushGateway}}function c(e,t){return{channels:t}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=s,t.getRequestTimeout=o,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),h=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(){return h.default.PNRemoveAllPushNotificationsOperation}function i(e,t){var n=t.device,r=t.pushGateway,i=e.config;return n?r?i.subscribeKey?void 0:"Missing Subscribe Key":"Missing GW Type (pushGateway: gcm or apns)":"Missing Device ID (device)"}function s(e,t){var n=t.device;return"/v1/push/sub-key/"+e.config.subscribeKey+"/devices/"+n+"/remove"}function o(e){return e.config.getTransactionTimeout()}function a(){return!0}function u(e,t){return{type:t.pushGateway}}function c(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=s,t.getRequestTimeout=o,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),h=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNUnsubscribeOperation}function s(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function o(e,t){var n=e.config,r=t.channels,i=void 0===r?[]:r,s=i.length>0?i.join(","):",";return"/v2/presence/sub-key/"+n.subscribeKey+"/channel/"+p.default.encodeString(s)+"/leave"}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(e,t){var n=t.channelGroups,r=void 0===n?[]:n,i={};return r.length>0&&(i["channel-group"]=r.join(",")),i}function l(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(){return h.default.PNWhereNowOperation}function i(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function s(e,t){var n=e.config,r=t.uuid,i=void 0===r?n.UUID:r;return"/v2/presence/sub-key/"+n.subscribeKey+"/uuid/"+i}function o(e){return e.config.getTransactionTimeout()}function a(){return!0}function u(){return{}}function c(e,t){return t.payload?{channels:t.payload.channels}:{channels:[]}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=s,t.getRequestTimeout=o,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),h=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNHeartbeatOperation}function s(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function o(e,t){var n=e.config,r=t.channels,i=void 0===r?[]:r,s=i.length>0?i.join(","):",";return"/v2/presence/sub-key/"+n.subscribeKey+"/channel/"+p.default.encodeString(s)+"/heartbeat"}function a(){return!0}function u(e){return e.config.getTransactionTimeout()}function c(e,t){var n=t.channelGroups,r=void 0===n?[]:n,i=t.state,s=void 0===i?{}:i,o=e.config,a={};return r.length>0&&(a["channel-group"]=r.join(",")),a.state=JSON.stringify(s),a.heartbeat=o.getPresenceTimeout(),a}function l(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.isAuthSupported=a,t.getRequestTimeout=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNGetStateOperation}function s(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function o(e,t){var n=e.config,r=t.uuid,i=void 0===r?n.UUID:r,s=t.channels,o=void 0===s?[]:s,a=o.length>0?o.join(","):",";return"/v2/presence/sub-key/"+n.subscribeKey+"/channel/"+p.default.encodeString(a)+"/uuid/"+i}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(e,t){var n=t.channelGroups,r=void 0===n?[]:n,i={};return r.length>0&&(i["channel-group"]=r.join(",")),i}function l(e,t,n){var r=n.channels,i=void 0===r?[]:r,s=n.channelGroups,o=void 0===s?[]:s,a={};return 1===i.length&&0===o.length?a[i[0]]=t.payload:a=t.payload,{channels:a}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNSetStateOperation}function s(e,t){var n=e.config,r=t.state,i=t.channels,s=void 0===i?[]:i,o=t.channelGroups,a=void 0===o?[]:o;return r?n.subscribeKey?0===s.length&&0===a.length?"Please provide a list of channels and/or channel-groups":void 0:"Missing Subscribe Key":"Missing State"}function o(e,t){var n=e.config,r=t.channels,i=void 0===r?[]:r,s=i.length>0?i.join(","):",";return"/v2/presence/sub-key/"+n.subscribeKey+"/channel/"+p.default.encodeString(s)+"/uuid/"+n.UUID+"/data"}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(e,t){var n=t.state,r=t.channelGroups,i=void 0===r?[]:r,s={};return s.state=JSON.stringify(n),i.length>0&&(s["channel-group"]=i.join(",")),s}function l(e,t){return{state:t.payload}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNHereNowOperation}function s(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function o(e,t){var n=e.config,r=t.channels,i=void 0===r?[]:r,s=t.channelGroups,o=void 0===s?[]:s,a="/v2/presence/sub-key/"+n.subscribeKey;if(i.length>0||o.length>0){var u=i.length>0?i.join(","):",";a+="/channel/"+p.default.encodeString(u)}return a}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(e,t){var n=t.channelGroups,r=void 0===n?[]:n,i=t.includeUUIDs,s=void 0===i||i,o=t.includeState,a=void 0!==o&&o,u={};return s||(u.disable_uuids=1),a&&(u.state=1),r.length>0&&(u["channel-group"]=r.join(",")),u}function l(e,t,n){var r=n.channels,i=void 0===r?[]:r,s=n.channelGroups,o=void 0===s?[]:s,a=n.includeUUIDs,u=void 0===a||a,c=n.includeState,l=void 0!==c&&c;return i.length>1||o.length>0||0===o.length&&0===i.length?function(){var e={};return e.totalChannels=t.payload.total_channels,e.totalOccupancy=t.payload.total_occupancy,e.channels={},Object.keys(t.payload.channels).forEach(function(n){var r=t.payload.channels[n],i=[];return e.channels[n]={occupants:i,name:n,occupancy:r.occupancy},u&&r.uuids.forEach(function(e){l?i.push({state:e.state,uuid:e.uuid}):i.push({state:null,uuid:e})}),e}),e}():function(){var e={},n=[];return e.totalChannels=1,e.totalOccupancy=t.occupancy,e.channels={},e.channels[i[0]]={occupants:n,name:i[0],occupancy:t.occupancy},u&&t.uuids&&t.uuids.forEach(function(e){l?n.push({state:e.state,uuid:e.uuid}):n.push({state:null,uuid:e})}),e}()}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(){return h.default.PNAccessManagerAudit}function i(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function s(e){return"/v2/auth/audit/sub-key/"+e.config.subscribeKey}function o(e){return e.config.getTransactionTimeout()}function a(){return!1}function u(e,t){var n=t.channel,r=t.channelGroup,i=t.authKeys,s=void 0===i?[]:i,o={};return n&&(o.channel=n),r&&(o["channel-group"]=r),s.length>0&&(o.auth=s.join(",")),o}function c(e,t){return t.payload}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=s,t.getRequestTimeout=o,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),h=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(){return h.default.PNAccessManagerGrant}function i(e){var t=e.config;return t.subscribeKey?t.publishKey?t.secretKey?void 0:"Missing Secret Key":"Missing Publish Key":"Missing Subscribe Key"}function s(e){return"/v2/auth/grant/sub-key/"+e.config.subscribeKey}function o(e){return e.config.getTransactionTimeout()}function a(){return!1}function u(e,t){var n=t.channels,r=void 0===n?[]:n,i=t.channelGroups,s=void 0===i?[]:i,o=t.ttl,a=t.read,u=void 0!==a&&a,c=t.write,l=void 0!==c&&c,h=t.manage,f=void 0!==h&&h,d=t.authKeys,p=void 0===d?[]:d,g={};return g.r=u?"1":"0",g.w=l?"1":"0",g.m=f?"1":"0",r.length>0&&(g.channel=r.join(",")),s.length>0&&(g["channel-group"]=s.join(",")),p.length>0&&(g.auth=p.join(",")),(o||0===o)&&(g.ttl=o),g}function c(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=s,t.getRequestTimeout=o,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),h=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){var n=e.crypto,r=e.config,i=JSON.stringify(t);return r.cipherKey&&(i=n.encrypt(i),i=JSON.stringify(i)),i}function s(){return v.default.PNPublishOperation}function o(e,t){var n=e.config,r=t.message;return t.channel?r?n.subscribeKey?void 0:"Missing Subscribe Key":"Missing Message":"Missing Channel"}function a(e,t){var n=t.sendByPost;return void 0!==n&&n}function u(e,t){var n=e.config,r=t.channel,s=t.message,o=i(e,s);return"/publish/"+n.publishKey+"/"+n.subscribeKey+"/0/"+_.default.encodeString(r)+"/0/"+_.default.encodeString(o)}function c(e,t){var n=e.config,r=t.channel;return"/publish/"+n.publishKey+"/"+n.subscribeKey+"/0/"+_.default.encodeString(r)+"/0"}function l(e){return e.config.getTransactionTimeout()}function h(){return!0}function f(e,t){return i(e,t.message)}function d(e,t){var n=t.meta,r=t.replicate,i=void 0===r||r,s=t.storeInHistory,o=t.ttl,a={};return null!=s&&(a.store=s?"1":"0"), +o&&(a.ttl=o),!1===i&&(a.norep="true"),n&&"object"===(void 0===n?"undefined":g(n))&&(a.meta=JSON.stringify(n)),a}function p(e,t){return{timetoken:t[2]}}Object.defineProperty(t,"__esModule",{value:!0});var g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.getOperation=s,t.validateParams=o,t.usePost=a,t.getURL=u,t.postURL=c,t.getRequestTimeout=l,t.isAuthSupported=h,t.postPayload=f,t.prepareParams=d,t.handleResponse=p;var y=(n(8),n(16)),v=r(y),b=n(18),_=r(b)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){var n=e.config,r=e.crypto;if(!n.cipherKey)return t;try{return r.decrypt(t)}catch(e){return t}}function s(){return d.default.PNHistoryOperation}function o(e,t){var n=t.channel,r=e.config;return n?r.subscribeKey?void 0:"Missing Subscribe Key":"Missing channel"}function a(e,t){var n=t.channel;return"/v2/history/sub-key/"+e.config.subscribeKey+"/channel/"+g.default.encodeString(n)}function u(e){return e.config.getTransactionTimeout()}function c(){return!0}function l(e,t){var n=t.start,r=t.end,i=t.reverse,s=t.count,o=void 0===s?100:s,a=t.stringifiedTimeToken,u=void 0!==a&&a,c={include_token:"true"};return c.count=o,n&&(c.start=n),r&&(c.end=r),u&&(c.string_message_token="true"),null!=i&&(c.reverse=i.toString()),c}function h(e,t){var n={messages:[],startTimeToken:t[1],endTimeToken:t[2]};return t[0].forEach(function(t){var r={timetoken:t.timetoken,entry:i(e,t.message)};n.messages.push(r)}),n}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=s,t.validateParams=o,t.getURL=a,t.getRequestTimeout=u,t.isAuthSupported=c,t.prepareParams=l,t.handleResponse=h;var f=(n(8),n(16)),d=r(f),p=n(18),g=r(p)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){var n=e.config,r=e.crypto;if(!n.cipherKey)return t;try{return r.decrypt(t)}catch(e){return t}}function s(){return d.default.PNFetchMessagesOperation}function o(e,t){var n=t.channels,r=e.config;return n&&0!==n.length?r.subscribeKey?void 0:"Missing Subscribe Key":"Missing channels"}function a(e,t){var n=t.channels,r=void 0===n?[]:n,i=e.config,s=r.length>0?r.join(","):",";return"/v3/history/sub-key/"+i.subscribeKey+"/channel/"+g.default.encodeString(s)}function u(e){return e.config.getTransactionTimeout()}function c(){return!0}function l(e,t){var n=t.start,r=t.end,i=t.count,s={};return i&&(s.max=i),n&&(s.start=n),r&&(s.end=r),s}function h(e,t){var n={channels:{}};return Object.keys(t.channels||{}).forEach(function(r){n.channels[r]=[],(t.channels[r]||[]).forEach(function(t){var s={};s.channel=r,s.subscription=null,s.timetoken=t.timetoken,s.message=i(e,t.message),n.channels[r].push(s)})}),n}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=s,t.validateParams=o,t.getURL=a,t.getRequestTimeout=u,t.isAuthSupported=c,t.prepareParams=l,t.handleResponse=h;var f=(n(8),n(16)),d=r(f),p=n(18),g=r(p)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNSubscribeOperation}function s(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function o(e,t){var n=e.config,r=t.channels,i=void 0===r?[]:r,s=i.length>0?i.join(","):",";return"/v2/subscribe/"+n.subscribeKey+"/"+p.default.encodeString(s)+"/0"}function a(e){return e.config.getSubscribeTimeout()}function u(){return!0}function c(e,t){var n=e.config,r=t.channelGroups,i=void 0===r?[]:r,s=t.timetoken,o=t.filterExpression,a=t.region,u={heartbeat:n.getPresenceTimeout()};return i.length>0&&(u["channel-group"]=i.join(",")),o&&o.length>0&&(u["filter-expr"]=o),s&&(u.tt=s),a&&(u.tr=a),u}function l(e,t){var n=[];t.m.forEach(function(e){var t={publishTimetoken:e.p.t,region:e.p.r},r={shard:parseInt(e.a,10),subscriptionMatch:e.b,channel:e.c,payload:e.d,flags:e.f,issuingClientId:e.i,subscribeKey:e.k,originationTimetoken:e.o,userMetadata:e.u,publishMetaData:t};n.push(r)});var r={timetoken:t.t.t,region:t.t.r};return{messages:n,metadata:r}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n=this._maxSubDomain&&(this._currentSubDomain=1),e=this._currentSubDomain.toString(),this._providedFQDN.replace("pubsub","ps"+e)}},{key:"shiftStandardOrigin",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this._standardOrigin=this.nextOrigin(e),this._standardOrigin}},{key:"getStandardOrigin",value:function(){return this._standardOrigin}},{key:"POST",value:function(e,t,n,r){return this._modules.post(e,t,n,r)}},{key:"GET",value:function(e,t,n){return this._modules.get(e,t,n)}},{key:"_detectErrorCategory",value:function(e){if("ENOTFOUND"===e.code)return u.default.PNNetworkIssuesCategory;if("ECONNREFUSED"===e.code)return u.default.PNNetworkIssuesCategory;if("ECONNRESET"===e.code)return u.default.PNNetworkIssuesCategory;if("EAI_AGAIN"===e.code)return u.default.PNNetworkIssuesCategory;if(0===e.status||e.hasOwnProperty("status")&&void 0===e.status)return u.default.PNNetworkIssuesCategory;if(e.timeout)return u.default.PNTimeoutCategory;if(e.response){if(e.response.badRequest)return u.default.PNBadRequestCategory;if(e.response.forbidden)return u.default.PNAccessDeniedCategory}return u.default.PNUnknownCategory}}]),e}());t.default=c,e.exports=t.default},function(e,t){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n>>>>>"),r.log("["+o+" / "+s+"]","\n",e.url,"\n",e.qs,"\n",n.text),r.log("-----")})}function i(e,t,n){var i=this;return this._config.logVerbosity&&(e=e.use(r)),this._config.proxy&&this._modules.proxy&&(e=this._modules.proxy.call(this,e)),this._config.keepAlive&&this._modules.keepAlive&&(e=this._modules.keepAlive(e)),e.timeout(t.timeout).end(function(e,r){var s={};if(s.error=null!==e,s.operation=t.operation,r&&r.status&&(s.statusCode=r.status),e)return s.errorData=e,s.category=i._detectErrorCategory(e),n(s,null);var o=JSON.parse(r.text);return o.error&&1===o.error&&o.status&&o.message&&o.service?(s.errorData=o,s.statusCode=o.status,s.error=!0,s.category=i._detectErrorCategory(s),n(s,null)):n(s,o)})}function s(e,t,n){var r=u.default.get(this.getStandardOrigin()+t.url).query(e);return i.call(this,r,t,n)}function o(e,t,n,r){var s=u.default.post(this.getStandardOrigin()+n.url).query(e).send(t);return i.call(this,s,n,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.get=s,t.post=o;var a=n(44),u=function(e){return e&&e.__esModule?e:{default:e}}(a);n(8)},function(e,t,n){function r(){}function i(e){if(!v(e))return e;var t=[];for(var n in e)s(t,n,e[n]);return t.join("&")}function s(e,t,n){if(null!=n)if(Array.isArray(n))n.forEach(function(n){s(e,t,n)});else if(v(n))for(var r in n)s(e,t+"["+r+"]",n[r]);else e.push(encodeURIComponent(t)+"="+encodeURIComponent(n));else null===n&&e.push(encodeURIComponent(t))}function o(e){for(var t,n,r={},i=e.split("&"),s=0,o=i.length;s=300)&&(r=new Error(t.statusText||"Unsuccessful HTTP response"),r.original=e,r.response=t,r.status=t.status)}catch(e){r=e}r?n.callback(r,t):n.callback(null,t)})}function d(e,t){var n=b("DELETE",e);return t&&n.end(t),n}var p;"undefined"!=typeof window?p=window:"undefined"!=typeof self?p=self:(console.warn("Using browser-only version of superagent in non-browser environment"),p=this);var g=n(45),y=n(46),v=n(47),b=e.exports=n(48).bind(null,f);b.getXHR=function(){if(!(!p.XMLHttpRequest||p.location&&"file:"==p.location.protocol&&p.ActiveXObject))return new XMLHttpRequest;try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(e){}throw Error("Browser-only verison of superagent could not find XHR")};var _="".trim?function(e){return e.trim()}:function(e){return e.replace(/(^\s*|\s*$)/g,"")};b.serializeObject=i,b.parseString=o,b.types={html:"text/html",json:"application/json",xml:"application/xml",urlencoded:"application/x-www-form-urlencoded",form:"application/x-www-form-urlencoded","form-data":"application/x-www-form-urlencoded"},b.serialize={"application/x-www-form-urlencoded":i,"application/json":JSON.stringify},b.parse={"application/x-www-form-urlencoded":o,"application/json":JSON.parse},h.prototype.get=function(e){return this.header[e.toLowerCase()]},h.prototype._setHeaderProperties=function(e){var t=this.header["content-type"]||"";this.type=c(t);var n=l(t);for(var r in n)this[r]=n[r]},h.prototype._parseBody=function(e){var t=b.parse[this.type];return!t&&u(this.type)&&(t=b.parse["application/json"]),t&&e&&(e.length||e instanceof Object)?t(e):null},h.prototype._setStatusProperties=function(e){1223===e&&(e=204);var t=e/100|0;this.status=this.statusCode=e,this.statusType=t,this.info=1==t,this.ok=2==t,this.clientError=4==t,this.serverError=5==t,this.error=(4==t||5==t)&&this.toError(),this.accepted=202==e,this.noContent=204==e,this.badRequest=400==e,this.unauthorized=401==e,this.notAcceptable=406==e,this.notFound=404==e,this.forbidden=403==e},h.prototype.toError=function(){var e=this.req,t=e.method,n=e.url,r="cannot "+t+" "+n+" ("+this.status+")",i=new Error(r);return i.status=this.status,i.method=t,i.url=n,i},b.Response=h,g(f.prototype);for(var m in y)f.prototype[m]=y[m];f.prototype.type=function(e){return this.set("Content-Type",b.types[e]||e),this},f.prototype.responseType=function(e){return this._responseType=e,this},f.prototype.accept=function(e){return this.set("Accept",b.types[e]||e),this},f.prototype.auth=function(e,t,n){switch(n||(n={type:"basic"}),n.type){case"basic":var r=btoa(e+":"+t);this.set("Authorization","Basic "+r);break;case"auto":this.username=e,this.password=t}return this},f.prototype.query=function(e){return"string"!=typeof e&&(e=i(e)),e&&this._query.push(e),this},f.prototype.attach=function(e,t,n){return this._getFormData().append(e,t,n||t.name),this},f.prototype._getFormData=function(){return this._formData||(this._formData=new p.FormData),this._formData},f.prototype.callback=function(e,t){var n=this._callback;this.clearTimeout(),n(e,t)},f.prototype.crossDomainError=function(){var e=new Error("Request has been terminated\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.");e.crossDomain=!0,e.status=this.status,e.method=this.method,e.url=this.url,this.callback(e)},f.prototype._timeoutError=function(){var e=this._timeout,t=new Error("timeout of "+e+"ms exceeded");t.timeout=e,this.callback(t)},f.prototype._appendQueryString=function(){var e=this._query.join("&");e&&(this.url+=~this.url.indexOf("?")?"&"+e:"?"+e)},f.prototype.end=function(e){var t=this,n=this.xhr=b.getXHR(),i=this._timeout,s=this._formData||this._data;this._callback=e||r,n.onreadystatechange=function(){if(4==n.readyState){var e;try{e=n.status}catch(t){e=0}if(0==e){if(t.timedout)return t._timeoutError();if(t._aborted)return;return t.crossDomainError()}t.emit("end")}};var o=function(e,n){n.total>0&&(n.percent=n.loaded/n.total*100),n.direction=e,t.emit("progress",n)};if(this.hasListeners("progress"))try{n.onprogress=o.bind(null,"download"),n.upload&&(n.upload.onprogress=o.bind(null,"upload"))}catch(e){}if(i&&!this._timer&&(this._timer=setTimeout(function(){t.timedout=!0,t.abort()},i)),this._appendQueryString(),this.username&&this.password?n.open(this.method,this.url,!0,this.username,this.password):n.open(this.method,this.url,!0),this._withCredentials&&(n.withCredentials=!0),"GET"!=this.method&&"HEAD"!=this.method&&"string"!=typeof s&&!this._isHost(s)){var a=this._header["content-type"],c=this._serializer||b.serialize[a?a.split(";")[0]:""];!c&&u(a)&&(c=b.serialize["application/json"]),c&&(s=c(s))}for(var l in this.header)null!=this.header[l]&&n.setRequestHeader(l,this.header[l]);return this._responseType&&(n.responseType=this._responseType),this.emit("request",this),n.send(void 0!==s?s:null),this},b.Request=f,b.get=function(e,t,n){var r=b("GET",e);return"function"==typeof t&&(n=t,t=null),t&&r.query(t),n&&r.end(n),r},b.head=function(e,t,n){var r=b("HEAD",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r},b.options=function(e,t,n){var r=b("OPTIONS",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r},b.del=d,b.delete=d,b.patch=function(e,t,n){var r=b("PATCH",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r},b.post=function(e,t,n){var r=b("POST",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r},b.put=function(e,t,n){var r=b("PUT",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r}},function(e,t,n){function r(e){if(e)return i(e)}function i(e){for(var t in r.prototype)e[t]=r.prototype[t];return e}e.exports=r,r.prototype.on=r.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},r.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this},r.prototype.off=r.prototype.removeListener=r.prototype.removeAllListeners=r.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var r,i=0;ic)&&void 0===e.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");c=f,l=h,u=s,f+=122192928e5;var p=(1e4*(268435455&f)+h)%4294967296;i[r++]=p>>>24&255,i[r++]=p>>>16&255,i[r++]=p>>>8&255,i[r++]=255&p;var g=f/4294967296*1e4&268435455;i[r++]=g>>>8&255,i[r++]=255&g,i[r++]=g>>>24&15|16,i[r++]=g>>>16&255,i[r++]=s>>>8|128,i[r++]=255&s;for(var y=e.node||a,b=0;b<6;++b)i[r+b]=y[b];return t||o(i)}var i=n(4),o=n(5),s=i(),a=[1|s[0],s[1],s[2],s[3],s[4],s[5]],u=16383&(s[6]<<8|s[7]),c=0,l=0;e.exports=r},function(e,t){(function(t){var n,r=t.crypto||t.msCrypto;if(r&&r.getRandomValues){var i=new Uint8Array(16);n=function(){return r.getRandomValues(i),i}}if(!n){var o=new Array(16);n=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),o[t]=e>>>((3&t)<<3)&255;return o}}e.exports=n}).call(t,function(){return this}())},function(e,t){function n(e,t){var n=t||0,i=r;return i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]}for(var r=[],i=0;i<256;++i)r[i]=(i+256).toString(16).substr(1);e.exports=n},function(e,t,n){function r(e,t,n){var r=t&&n||0;"string"==typeof e&&(t="binary"==e?new Array(16):null,e=null),e=e||{};var s=e.random||(e.rng||i)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,t)for(var a=0;a<16;++a)t[r+a]=s[a];return t||o(s)}var i=n(4),o=n(5);e.exports=r},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n>>2]|=(n[i>>>2]>>>24-i%4*8&255)<<24-(r+i)%4*8;else if(65535>>2]=n[i>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=o.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],r=0;r>>2]>>>24-r%4*8&255;n.push((i>>>4).toString(16)),n.push((15&i).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new s.init(n,t/2)}},c=a.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new s.init(n,t)}},l=a.Utf8={stringify:function(e){try{return decodeURIComponent(escape(c.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return c.parse(unescape(encodeURIComponent(e)))}},f=r.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new s.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=l.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,r=n.words,i=n.sigBytes,o=this.blockSize,a=i/(4*o),a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0);if(t=a*o,i=e.min(4*t,i),t){for(var u=0;ul;){var f;e:{f=c;for(var h=e.sqrt(f),d=2;d<=h;d++)if(!(f%d)){f=!1;break e}f=!0}f&&(8>l&&(s[l]=u(e.pow(c,.5))),a[l]=u(e.pow(c,1/3)),l++),c++}var p=[],r=r.SHA256=o.extend({_doReset:function(){this._hash=new i.init(s.slice(0))},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],o=n[2],s=n[3],u=n[4],c=n[5],l=n[6],f=n[7],h=0;64>h;h++){if(16>h)p[h]=0|e[t+h];else{var d=p[h-15],g=p[h-2];p[h]=((d<<25|d>>>7)^(d<<14|d>>>18)^d>>>3)+p[h-7]+((g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10)+p[h-16]}d=f+((u<<26|u>>>6)^(u<<21|u>>>11)^(u<<7|u>>>25))+(u&c^~u&l)+a[h]+p[h],g=((r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22))+(r&i^r&o^i&o),f=l,l=c,c=u,u=s+d|0,s=o,o=i,i=r,r=d+g|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+o|0,n[3]=n[3]+s|0,n[4]=n[4]+u|0,n[5]=n[5]+c|0,n[6]=n[6]+l|0,n[7]=n[7]+f|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return n[i>>>5]|=128<<24-i%32,n[14+(i+64>>>9<<4)]=e.floor(r/4294967296),n[15+(i+64>>>9<<4)]=r,t.sigBytes=4*n.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=o._createHelper(r),t.HmacSHA256=o._createHmacHelper(r)}(Math),function(){var e=n,t=e.enc.Utf8;e.algo.HMAC=e.lib.Base.extend({init:function(e,n){e=this._hasher=new e.init,"string"==typeof n&&(n=t.parse(n));var r=e.blockSize,i=4*r;n.sigBytes>i&&(n=e.finalize(n)),n.clamp();for(var o=this._oKey=n.clone(),s=this._iKey=n.clone(),a=o.words,u=s.words,c=0;c>>2]>>>24-i%4*8&255)<<16|(t[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|t[i+2>>>2]>>>24-(i+2)%4*8&255,s=0;4>s&&i+.75*s>>6*(3-s)&63));if(t=r.charAt(64))for(;e.length%4;)e.push(t);return e.join("")},parse:function(e){var n=e.length,r=this._map,i=r.charAt(64);i&&-1!=(i=e.indexOf(i))&&(n=i);for(var i=[],o=0,s=0;s>>6-s%4*2;i[o>>>2]|=(a|u)<<24-o%4*8,o++}return t.create(i,o)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),function(e){function t(e,t,n,r,i,o,s){return((e=e+(t&n|~t&r)+i+s)<>>32-o)+t}function r(e,t,n,r,i,o,s){return((e=e+(t&r|n&~r)+i+s)<>>32-o)+t}function i(e,t,n,r,i,o,s){return((e=e+(t^n^r)+i+s)<>>32-o)+t}function o(e,t,n,r,i,o,s){return((e=e+(n^(t|~r))+i+s)<>>32-o)+t}for(var s=n,a=s.lib,u=a.WordArray,c=a.Hasher,a=s.algo,l=[],f=0;64>f;f++)l[f]=4294967296*e.abs(e.sin(f+1))|0;a=a.MD5=c.extend({_doReset:function(){this._hash=new u.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,n){for(var s=0;16>s;s++){var a=n+s,u=e[a];e[a]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8)}var s=this._hash.words,a=e[n+0],u=e[n+1],c=e[n+2],f=e[n+3],h=e[n+4],d=e[n+5],p=e[n+6],g=e[n+7],y=e[n+8],b=e[n+9],v=e[n+10],_=e[n+11],m=e[n+12],k=e[n+13],P=e[n+14],S=e[n+15],O=s[0],M=s[1],T=s[2],C=s[3],O=t(O,M,T,C,a,7,l[0]),C=t(C,O,M,T,u,12,l[1]),T=t(T,C,O,M,c,17,l[2]),M=t(M,T,C,O,f,22,l[3]),O=t(O,M,T,C,h,7,l[4]),C=t(C,O,M,T,d,12,l[5]),T=t(T,C,O,M,p,17,l[6]),M=t(M,T,C,O,g,22,l[7]),O=t(O,M,T,C,y,7,l[8]),C=t(C,O,M,T,b,12,l[9]),T=t(T,C,O,M,v,17,l[10]),M=t(M,T,C,O,_,22,l[11]),O=t(O,M,T,C,m,7,l[12]),C=t(C,O,M,T,k,12,l[13]),T=t(T,C,O,M,P,17,l[14]),M=t(M,T,C,O,S,22,l[15]),O=r(O,M,T,C,u,5,l[16]),C=r(C,O,M,T,p,9,l[17]),T=r(T,C,O,M,_,14,l[18]),M=r(M,T,C,O,a,20,l[19]),O=r(O,M,T,C,d,5,l[20]),C=r(C,O,M,T,v,9,l[21]),T=r(T,C,O,M,S,14,l[22]),M=r(M,T,C,O,h,20,l[23]),O=r(O,M,T,C,b,5,l[24]),C=r(C,O,M,T,P,9,l[25]),T=r(T,C,O,M,f,14,l[26]),M=r(M,T,C,O,y,20,l[27]),O=r(O,M,T,C,k,5,l[28]),C=r(C,O,M,T,c,9,l[29]),T=r(T,C,O,M,g,14,l[30]),M=r(M,T,C,O,m,20,l[31]),O=i(O,M,T,C,d,4,l[32]),C=i(C,O,M,T,y,11,l[33]),T=i(T,C,O,M,_,16,l[34]),M=i(M,T,C,O,P,23,l[35]),O=i(O,M,T,C,u,4,l[36]),C=i(C,O,M,T,h,11,l[37]),T=i(T,C,O,M,g,16,l[38]),M=i(M,T,C,O,v,23,l[39]),O=i(O,M,T,C,k,4,l[40]),C=i(C,O,M,T,a,11,l[41]),T=i(T,C,O,M,f,16,l[42]),M=i(M,T,C,O,p,23,l[43]),O=i(O,M,T,C,b,4,l[44]),C=i(C,O,M,T,m,11,l[45]),T=i(T,C,O,M,S,16,l[46]),M=i(M,T,C,O,c,23,l[47]),O=o(O,M,T,C,a,6,l[48]),C=o(C,O,M,T,g,10,l[49]),T=o(T,C,O,M,P,15,l[50]),M=o(M,T,C,O,d,21,l[51]),O=o(O,M,T,C,m,6,l[52]),C=o(C,O,M,T,f,10,l[53]),T=o(T,C,O,M,v,15,l[54]),M=o(M,T,C,O,u,21,l[55]),O=o(O,M,T,C,y,6,l[56]),C=o(C,O,M,T,S,10,l[57]),T=o(T,C,O,M,p,15,l[58]),M=o(M,T,C,O,k,21,l[59]),O=o(O,M,T,C,h,6,l[60]),C=o(C,O,M,T,_,10,l[61]),T=o(T,C,O,M,c,15,l[62]),M=o(M,T,C,O,b,21,l[63]);s[0]=s[0]+O|0,s[1]=s[1]+M|0,s[2]=s[2]+T|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;n[i>>>5]|=128<<24-i%32;var o=e.floor(r/4294967296);for(n[15+(i+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),n[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),t.sigBytes=4*(n.length+1),this._process(),t=this._hash,n=t.words,r=0;4>r;r++)i=n[r],n[r]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8);return t},clone:function(){var e=c.clone.call(this);return e._hash=this._hash.clone(),e}}),s.MD5=c._createHelper(a),s.HmacMD5=c._createHmacHelper(a)}(Math),function(){var e=n,t=e.lib,r=t.Base,i=t.WordArray,t=e.algo,o=t.EvpKDF=r.extend({cfg:r.extend({keySize:4,hasher:t.MD5,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n=this.cfg,r=n.hasher.create(),o=i.create(),s=o.words,a=n.keySize,n=n.iterations;s.length>>2]}},r.BlockCipher=c.extend({cfg:c.cfg.extend({mode:l,padding:h}),reset:function(){c.reset.call(this);var e=this.cfg,t=e.iv,e=e.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=e.createEncryptor;else n=e.createDecryptor,this._minBufferSize=1;this._mode=n.call(e,this,t&&t.words)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){e.pad(this._data,this.blockSize);var t=this._process(!0)}else t=this._process(!0),e.unpad(t);return t},blockSize:4});var d=r.CipherParams=i.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),l=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext;return e=e.salt,(e?o.create([1398893684,1701076831]).concat(e).concat(t):t).toString(a)},parse:function(e){e=a.parse(e);var t=e.words;if(1398893684==t[0]&&1701076831==t[1]){var n=o.create(t.slice(2,4));t.splice(0,4),e.sigBytes-=16}return d.create({ciphertext:e,salt:n})}},p=r.SerializableCipher=i.extend({cfg:i.extend({format:l}),encrypt:function(e,t,n,r){r=this.cfg.extend(r);var i=e.createEncryptor(n,r);return t=i.finalize(t),i=i.cfg,d.create({ciphertext:t,key:n,iv:i.iv,algorithm:e,mode:i.mode,padding:i.padding,blockSize:e.blockSize,formatter:r.format})},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),e.createDecryptor(n,r).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),t=(t.kdf={}).OpenSSL={execute:function(e,t,n,r){return r||(r=o.random(8)),e=u.create({keySize:t+n}).compute(e,r),n=o.create(e.words.slice(t),4*n),e.sigBytes=4*t,d.create({key:e,iv:n,salt:r})}},g=r.PasswordBasedCipher=p.extend({cfg:p.cfg.extend({kdf:t}),encrypt:function(e,t,n,r){return r=this.cfg.extend(r),n=r.kdf.execute(n,e.keySize,e.ivSize),r.iv=n.iv,e=p.encrypt.call(this,e,t,n.key,r),e.mixIn(n),e},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),n=r.kdf.execute(n,e.keySize,e.ivSize,t.salt),r.iv=n.iv,p.decrypt.call(this,e,t,n.key,r)}})}(),function(){for(var e=n,t=e.lib.BlockCipher,r=e.algo,i=[],o=[],s=[],a=[],u=[],c=[],l=[],f=[],h=[],d=[],p=[],g=0;256>g;g++)p[g]=128>g?g<<1:g<<1^283;for(var y=0,b=0,g=0;256>g;g++){var v=b^b<<1^b<<2^b<<3^b<<4,v=v>>>8^255&v^99;i[y]=v,o[v]=y;var _=p[y],m=p[_],k=p[m],P=257*p[v]^16843008*v;s[y]=P<<24|P>>>8,a[y]=P<<16|P>>>16,u[y]=P<<8|P>>>24,c[y]=P,P=16843009*k^65537*m^257*_^16843008*y,l[v]=P<<24|P>>>8,f[v]=P<<16|P>>>16,h[v]=P<<8|P>>>24,d[v]=P,y?(y=_^p[p[p[k^_]]],b^=p[p[b]]):y=b=1}var S=[0,1,2,4,8,16,32,64,128,27,54],r=r.AES=t.extend({_doReset:function(){for(var e=this._key,t=e.words,n=e.sigBytes/4,e=4*((this._nRounds=n+6)+1),r=this._keySchedule=[],o=0;o>>24]<<24|i[s>>>16&255]<<16|i[s>>>8&255]<<8|i[255&s]):(s=s<<8|s>>>24,s=i[s>>>24]<<24|i[s>>>16&255]<<16|i[s>>>8&255]<<8|i[255&s],s^=S[o/n|0]<<24),r[o]=r[o-n]^s}for(t=this._invKeySchedule=[],n=0;nn||4>=o?s:l[i[s>>>24]]^f[i[s>>>16&255]]^h[i[s>>>8&255]]^d[i[255&s]]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,s,a,u,c,i)},decryptBlock:function(e,t){var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n,this._doCryptBlock(e,t,this._invKeySchedule,l,f,h,d,o),n=e[t+1],e[t+1]=e[t+3],e[t+3]=n},_doCryptBlock:function(e,t,n,r,i,o,s,a){for(var u=this._nRounds,c=e[t]^n[0],l=e[t+1]^n[1],f=e[t+2]^n[2],h=e[t+3]^n[3],d=4,p=1;p>>24]^i[l>>>16&255]^o[f>>>8&255]^s[255&h]^n[d++],y=r[l>>>24]^i[f>>>16&255]^o[h>>>8&255]^s[255&c]^n[d++],b=r[f>>>24]^i[h>>>16&255]^o[c>>>8&255]^s[255&l]^n[d++],h=r[h>>>24]^i[c>>>16&255]^o[l>>>8&255]^s[255&f]^n[d++],c=g,l=y,f=b;g=(a[c>>>24]<<24|a[l>>>16&255]<<16|a[f>>>8&255]<<8|a[255&h])^n[d++],y=(a[l>>>24]<<24|a[f>>>16&255]<<16|a[h>>>8&255]<<8|a[255&c])^n[d++],b=(a[f>>>24]<<24|a[h>>>16&255]<<16|a[c>>>8&255]<<8|a[255&l])^n[d++],h=(a[h>>>24]<<24|a[c>>>16&255]<<16|a[l>>>8&255]<<8|a[255&f])^n[d++],e[t]=g,e[t+1]=y,e[t+2]=b,e[t+3]=h},keySize:8});e.AES=t._createHelper(r)}(),n.mode.ECB=function(){var e=n.lib.BlockCipherMode.extend();return e.Encryptor=e.extend({processBlock:function(e,t){this._cipher.encryptBlock(e,t)}}),e.Decryptor=e.extend({processBlock:function(e,t){this._cipher.decryptBlock(e,t)}}),e}(),e.exports=n},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;nc)&&void 0===e.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");c=f,l=h,u=s,f+=122192928e5;var p=(1e4*(268435455&f)+h)%4294967296;i[r++]=p>>>24&255,i[r++]=p>>>16&255,i[r++]=p>>>8&255,i[r++]=255&p;var g=f/4294967296*1e4&268435455;i[r++]=g>>>8&255,i[r++]=255&g,i[r++]=g>>>24&15|16,i[r++]=g>>>16&255,i[r++]=s>>>8|128,i[r++]=255&s;for(var y=e.node||a,b=0;b<6;++b)i[r+b]=y[b];return t||o(i)}var i=n(4),o=n(5),s=i(),a=[1|s[0],s[1],s[2],s[3],s[4],s[5]],u=16383&(s[6]<<8|s[7]),c=0,l=0;e.exports=r},function(e,t){(function(t){var n,r=t.crypto||t.msCrypto;if(r&&r.getRandomValues){var i=new Uint8Array(16);n=function(){return r.getRandomValues(i),i}}if(!n){var o=new Array(16);n=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),o[t]=e>>>((3&t)<<3)&255;return o}}e.exports=n}).call(t,function(){return this}())},function(e,t){function n(e,t){var n=t||0,i=r;return i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]}for(var r=[],i=0;i<256;++i)r[i]=(i+256).toString(16).substr(1);e.exports=n},function(e,t,n){function r(e,t,n){var r=t&&n||0;"string"==typeof e&&(t="binary"==e?new Array(16):null,e=null),e=e||{};var s=e.random||(e.rng||i)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,t)for(var a=0;a<16;++a)t[r+a]=s[a];return t||o(s)}var i=n(4),o=n(5);e.exports=r},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n>>2]|=(n[i>>>2]>>>24-i%4*8&255)<<24-(r+i)%4*8;else if(65535>>2]=n[i>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=o.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],r=0;r>>2]>>>24-r%4*8&255;n.push((i>>>4).toString(16)),n.push((15&i).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new s.init(n,t/2)}},c=a.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new s.init(n,t)}},l=a.Utf8={stringify:function(e){try{return decodeURIComponent(escape(c.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return c.parse(unescape(encodeURIComponent(e)))}},f=r.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new s.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=l.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,r=n.words,i=n.sigBytes,o=this.blockSize,a=i/(4*o),a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0);if(t=a*o,i=e.min(4*t,i),t){for(var u=0;ul;){var f;e:{f=c;for(var h=e.sqrt(f),d=2;d<=h;d++)if(!(f%d)){f=!1;break e}f=!0}f&&(8>l&&(s[l]=u(e.pow(c,.5))),a[l]=u(e.pow(c,1/3)),l++),c++}var p=[],r=r.SHA256=o.extend({_doReset:function(){this._hash=new i.init(s.slice(0))},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],o=n[2],s=n[3],u=n[4],c=n[5],l=n[6],f=n[7],h=0;64>h;h++){if(16>h)p[h]=0|e[t+h];else{var d=p[h-15],g=p[h-2];p[h]=((d<<25|d>>>7)^(d<<14|d>>>18)^d>>>3)+p[h-7]+((g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10)+p[h-16]}d=f+((u<<26|u>>>6)^(u<<21|u>>>11)^(u<<7|u>>>25))+(u&c^~u&l)+a[h]+p[h],g=((r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22))+(r&i^r&o^i&o),f=l,l=c,c=u,u=s+d|0,s=o,o=i,i=r,r=d+g|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+o|0,n[3]=n[3]+s|0,n[4]=n[4]+u|0,n[5]=n[5]+c|0,n[6]=n[6]+l|0,n[7]=n[7]+f|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return n[i>>>5]|=128<<24-i%32,n[14+(i+64>>>9<<4)]=e.floor(r/4294967296),n[15+(i+64>>>9<<4)]=r,t.sigBytes=4*n.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=o._createHelper(r),t.HmacSHA256=o._createHmacHelper(r)}(Math),function(){var e=n,t=e.enc.Utf8;e.algo.HMAC=e.lib.Base.extend({init:function(e,n){e=this._hasher=new e.init,"string"==typeof n&&(n=t.parse(n));var r=e.blockSize,i=4*r;n.sigBytes>i&&(n=e.finalize(n)),n.clamp();for(var o=this._oKey=n.clone(),s=this._iKey=n.clone(),a=o.words,u=s.words,c=0;c>>2]>>>24-i%4*8&255)<<16|(t[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|t[i+2>>>2]>>>24-(i+2)%4*8&255,s=0;4>s&&i+.75*s>>6*(3-s)&63));if(t=r.charAt(64))for(;e.length%4;)e.push(t);return e.join("")},parse:function(e){var n=e.length,r=this._map,i=r.charAt(64);i&&-1!=(i=e.indexOf(i))&&(n=i);for(var i=[],o=0,s=0;s>>6-s%4*2;i[o>>>2]|=(a|u)<<24-o%4*8,o++}return t.create(i,o)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),function(e){function t(e,t,n,r,i,o,s){return((e=e+(t&n|~t&r)+i+s)<>>32-o)+t}function r(e,t,n,r,i,o,s){return((e=e+(t&r|n&~r)+i+s)<>>32-o)+t}function i(e,t,n,r,i,o,s){return((e=e+(t^n^r)+i+s)<>>32-o)+t}function o(e,t,n,r,i,o,s){return((e=e+(n^(t|~r))+i+s)<>>32-o)+t}for(var s=n,a=s.lib,u=a.WordArray,c=a.Hasher,a=s.algo,l=[],f=0;64>f;f++)l[f]=4294967296*e.abs(e.sin(f+1))|0;a=a.MD5=c.extend({_doReset:function(){this._hash=new u.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,n){for(var s=0;16>s;s++){var a=n+s,u=e[a];e[a]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8)}var s=this._hash.words,a=e[n+0],u=e[n+1],c=e[n+2],f=e[n+3],h=e[n+4],d=e[n+5],p=e[n+6],g=e[n+7],y=e[n+8],b=e[n+9],v=e[n+10],_=e[n+11],m=e[n+12],k=e[n+13],P=e[n+14],S=e[n+15],O=s[0],M=s[1],T=s[2],C=s[3],O=t(O,M,T,C,a,7,l[0]),C=t(C,O,M,T,u,12,l[1]),T=t(T,C,O,M,c,17,l[2]),M=t(M,T,C,O,f,22,l[3]),O=t(O,M,T,C,h,7,l[4]),C=t(C,O,M,T,d,12,l[5]),T=t(T,C,O,M,p,17,l[6]),M=t(M,T,C,O,g,22,l[7]),O=t(O,M,T,C,y,7,l[8]),C=t(C,O,M,T,b,12,l[9]),T=t(T,C,O,M,v,17,l[10]),M=t(M,T,C,O,_,22,l[11]),O=t(O,M,T,C,m,7,l[12]),C=t(C,O,M,T,k,12,l[13]),T=t(T,C,O,M,P,17,l[14]),M=t(M,T,C,O,S,22,l[15]),O=r(O,M,T,C,u,5,l[16]),C=r(C,O,M,T,p,9,l[17]),T=r(T,C,O,M,_,14,l[18]),M=r(M,T,C,O,a,20,l[19]),O=r(O,M,T,C,d,5,l[20]),C=r(C,O,M,T,v,9,l[21]),T=r(T,C,O,M,S,14,l[22]),M=r(M,T,C,O,h,20,l[23]),O=r(O,M,T,C,b,5,l[24]),C=r(C,O,M,T,P,9,l[25]),T=r(T,C,O,M,f,14,l[26]),M=r(M,T,C,O,y,20,l[27]),O=r(O,M,T,C,k,5,l[28]),C=r(C,O,M,T,c,9,l[29]),T=r(T,C,O,M,g,14,l[30]),M=r(M,T,C,O,m,20,l[31]),O=i(O,M,T,C,d,4,l[32]),C=i(C,O,M,T,y,11,l[33]),T=i(T,C,O,M,_,16,l[34]),M=i(M,T,C,O,P,23,l[35]),O=i(O,M,T,C,u,4,l[36]),C=i(C,O,M,T,h,11,l[37]),T=i(T,C,O,M,g,16,l[38]),M=i(M,T,C,O,v,23,l[39]),O=i(O,M,T,C,k,4,l[40]),C=i(C,O,M,T,a,11,l[41]),T=i(T,C,O,M,f,16,l[42]),M=i(M,T,C,O,p,23,l[43]),O=i(O,M,T,C,b,4,l[44]),C=i(C,O,M,T,m,11,l[45]),T=i(T,C,O,M,S,16,l[46]),M=i(M,T,C,O,c,23,l[47]),O=o(O,M,T,C,a,6,l[48]),C=o(C,O,M,T,g,10,l[49]),T=o(T,C,O,M,P,15,l[50]),M=o(M,T,C,O,d,21,l[51]),O=o(O,M,T,C,m,6,l[52]),C=o(C,O,M,T,f,10,l[53]),T=o(T,C,O,M,v,15,l[54]),M=o(M,T,C,O,u,21,l[55]),O=o(O,M,T,C,y,6,l[56]),C=o(C,O,M,T,S,10,l[57]),T=o(T,C,O,M,p,15,l[58]),M=o(M,T,C,O,k,21,l[59]),O=o(O,M,T,C,h,6,l[60]),C=o(C,O,M,T,_,10,l[61]),T=o(T,C,O,M,c,15,l[62]),M=o(M,T,C,O,b,21,l[63]);s[0]=s[0]+O|0,s[1]=s[1]+M|0,s[2]=s[2]+T|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;n[i>>>5]|=128<<24-i%32;var o=e.floor(r/4294967296);for(n[15+(i+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),n[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),t.sigBytes=4*(n.length+1),this._process(),t=this._hash,n=t.words,r=0;4>r;r++)i=n[r],n[r]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8);return t},clone:function(){var e=c.clone.call(this);return e._hash=this._hash.clone(),e}}),s.MD5=c._createHelper(a),s.HmacMD5=c._createHmacHelper(a)}(Math),function(){var e=n,t=e.lib,r=t.Base,i=t.WordArray,t=e.algo,o=t.EvpKDF=r.extend({cfg:r.extend({keySize:4,hasher:t.MD5,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n=this.cfg,r=n.hasher.create(),o=i.create(),s=o.words,a=n.keySize,n=n.iterations;s.length>>2]}},r.BlockCipher=c.extend({cfg:c.cfg.extend({mode:l,padding:h}),reset:function(){c.reset.call(this);var e=this.cfg,t=e.iv,e=e.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=e.createEncryptor;else n=e.createDecryptor,this._minBufferSize=1;this._mode=n.call(e,this,t&&t.words)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){e.pad(this._data,this.blockSize);var t=this._process(!0)}else t=this._process(!0),e.unpad(t);return t},blockSize:4});var d=r.CipherParams=i.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),l=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext;return e=e.salt,(e?o.create([1398893684,1701076831]).concat(e).concat(t):t).toString(a)},parse:function(e){e=a.parse(e);var t=e.words;if(1398893684==t[0]&&1701076831==t[1]){var n=o.create(t.slice(2,4));t.splice(0,4),e.sigBytes-=16}return d.create({ciphertext:e,salt:n})}},p=r.SerializableCipher=i.extend({cfg:i.extend({format:l}),encrypt:function(e,t,n,r){r=this.cfg.extend(r);var i=e.createEncryptor(n,r);return t=i.finalize(t),i=i.cfg,d.create({ciphertext:t,key:n,iv:i.iv,algorithm:e,mode:i.mode,padding:i.padding,blockSize:e.blockSize,formatter:r.format})},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),e.createDecryptor(n,r).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),t=(t.kdf={}).OpenSSL={execute:function(e,t,n,r){return r||(r=o.random(8)),e=u.create({keySize:t+n}).compute(e,r),n=o.create(e.words.slice(t),4*n),e.sigBytes=4*t,d.create({key:e,iv:n,salt:r})}},g=r.PasswordBasedCipher=p.extend({cfg:p.cfg.extend({kdf:t}),encrypt:function(e,t,n,r){return r=this.cfg.extend(r),n=r.kdf.execute(n,e.keySize,e.ivSize),r.iv=n.iv,e=p.encrypt.call(this,e,t,n.key,r),e.mixIn(n),e},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),n=r.kdf.execute(n,e.keySize,e.ivSize,t.salt),r.iv=n.iv,p.decrypt.call(this,e,t,n.key,r)}})}(),function(){for(var e=n,t=e.lib.BlockCipher,r=e.algo,i=[],o=[],s=[],a=[],u=[],c=[],l=[],f=[],h=[],d=[],p=[],g=0;256>g;g++)p[g]=128>g?g<<1:g<<1^283;for(var y=0,b=0,g=0;256>g;g++){var v=b^b<<1^b<<2^b<<3^b<<4,v=v>>>8^255&v^99;i[y]=v,o[v]=y;var _=p[y],m=p[_],k=p[m],P=257*p[v]^16843008*v;s[y]=P<<24|P>>>8,a[y]=P<<16|P>>>16,u[y]=P<<8|P>>>24,c[y]=P,P=16843009*k^65537*m^257*_^16843008*y,l[v]=P<<24|P>>>8,f[v]=P<<16|P>>>16,h[v]=P<<8|P>>>24,d[v]=P,y?(y=_^p[p[p[k^_]]],b^=p[p[b]]):y=b=1}var S=[0,1,2,4,8,16,32,64,128,27,54],r=r.AES=t.extend({_doReset:function(){for(var e=this._key,t=e.words,n=e.sigBytes/4,e=4*((this._nRounds=n+6)+1),r=this._keySchedule=[],o=0;o>>24]<<24|i[s>>>16&255]<<16|i[s>>>8&255]<<8|i[255&s]):(s=s<<8|s>>>24,s=i[s>>>24]<<24|i[s>>>16&255]<<16|i[s>>>8&255]<<8|i[255&s],s^=S[o/n|0]<<24),r[o]=r[o-n]^s}for(t=this._invKeySchedule=[],n=0;nn||4>=o?s:l[i[s>>>24]]^f[i[s>>>16&255]]^h[i[s>>>8&255]]^d[i[255&s]]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,s,a,u,c,i)},decryptBlock:function(e,t){var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n,this._doCryptBlock(e,t,this._invKeySchedule,l,f,h,d,o),n=e[t+1],e[t+1]=e[t+3],e[t+3]=n},_doCryptBlock:function(e,t,n,r,i,o,s,a){for(var u=this._nRounds,c=e[t]^n[0],l=e[t+1]^n[1],f=e[t+2]^n[2],h=e[t+3]^n[3],d=4,p=1;p>>24]^i[l>>>16&255]^o[f>>>8&255]^s[255&h]^n[d++],y=r[l>>>24]^i[f>>>16&255]^o[h>>>8&255]^s[255&c]^n[d++],b=r[f>>>24]^i[h>>>16&255]^o[c>>>8&255]^s[255&l]^n[d++],h=r[h>>>24]^i[c>>>16&255]^o[l>>>8&255]^s[255&f]^n[d++],c=g,l=y,f=b;g=(a[c>>>24]<<24|a[l>>>16&255]<<16|a[f>>>8&255]<<8|a[255&h])^n[d++],y=(a[l>>>24]<<24|a[f>>>16&255]<<16|a[h>>>8&255]<<8|a[255&c])^n[d++],b=(a[f>>>24]<<24|a[h>>>16&255]<<16|a[c>>>8&255]<<8|a[255&l])^n[d++],h=(a[h>>>24]<<24|a[c>>>16&255]<<16|a[l>>>8&255]<<8|a[255&f])^n[d++],e[t]=g,e[t+1]=y,e[t+2]=b,e[t+3]=h},keySize:8});e.AES=t._createHelper(r)}(),n.mode.ECB=function(){var e=n.lib.BlockCipherMode.extend();return e.Encryptor=e.extend({processBlock:function(e,t){this._cipher.encryptBlock(e,t)}}),e.Decryptor=e.extend({processBlock:function(e,t){this._cipher.decryptBlock(e,t)}}),e}(),e.exports=n},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n=s){var u={};u.category=y.default.PNRequestMessageCountExceededCategory,u.operation=e.operation,this._listenerManager.announceStatus(u)}i.forEach(function(e){var t=e.channel,r=e.subscriptionMatch,i=e.publishMetaData;if(t===r&&(r=null),a){if(n._dedupingManager.isDuplicate(e))return;n._dedupingManager.addEntry(e)}if(p.default.endsWith(e.channel,"-pnpres")){var o={};o.channel=null,o.subscription=null,o.actualChannel=null!=r?t:null,o.subscribedChannel=null!=r?r:t,t&&(o.channel=t.substring(0,t.lastIndexOf("-pnpres"))),r&&(o.subscription=r.substring(0,r.lastIndexOf("-pnpres"))),o.action=e.payload.action,o.state=e.payload.data,o.timetoken=i.publishTimetoken,o.occupancy=e.payload.occupancy,o.uuid=e.payload.uuid,o.timestamp=e.payload.timestamp,e.payload.join&&(o.join=e.payload.join),e.payload.leave&&(o.leave=e.payload.leave),e.payload.timeout&&(o.timeout=e.payload.timeout),n._listenerManager.announcePresence(o)}else{var s={};s.channel=null,s.subscription=null,s.actualChannel=null!=r?t:null,s.subscribedChannel=null!=r?r:t,s.channel=t,s.subscription=r,s.timetoken=i.publishTimetoken,s.publisher=e.issuingClientId,e.userMetadata&&(s.userMetadata=e.userMetadata),n._config.cipherKey?s.message=n._crypto.decrypt(e.payload):s.message=e.payload,n._listenerManager.announceMessage(s)}}),this._region=t.metadata.region,this._startSubscribeLoop()}},{key:"_stopSubscribeLoop",value:function(){this._subscribeCall&&(this._subscribeCall.abort(),this._subscribeCall=null)}}]),e}();t.default=b,e.exports=t.default},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n=this._config.maximumCacheSize&&this.hashHistory.shift(),this.hashHistory.push(this.getKey(e))}},{key:"clearHistory",value:function(){this.hashHistory=[]}}]),e}();t.default=a,e.exports=t.default},function(e,t){"use strict";function n(e){var t=[];return Object.keys(e).forEach(function(e){return t.push(e)}),t}function r(e){return encodeURIComponent(e).replace(/[!~*'()]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function i(e){return n(e).sort()}function o(e){return i(e).map(function(t){return t+"="+r(e[t])}).join("&")}function s(e,t){return-1!==e.indexOf(t,this.length-t.length)}function a(){var e=void 0,t=void 0;return{promise:new Promise(function(n,r){e=n,t=r}),reject:t,fulfill:e}}e.exports={signPamFromParams:o,endsWith:s,createPromise:a,encodeString:r}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function a(e,t){return e.type=t,e.error=!0,e}function u(e){return a({message:e},"validationError")}function c(e,t,n){return e.usePost&&e.usePost(t,n)?e.postURL(t,n):e.getURL(t,n)}function l(e){var t="PubNub-JS-"+e.sdkFamily;return e.partnerId&&(t+="-"+e.partnerId),t+="/"+e.getVersion()}function f(e,t,n){var r=e.config,i=e.crypto;n.timestamp=Math.floor((new Date).getTime()/1e3);var o=r.subscribeKey+"\n"+r.publishKey+"\n"+t+"\n";o+=g.default.signPamFromParams(n);var s=i.HMACSHA256(o);s=s.replace(/\+/g,"-"),s=s.replace(/\//g,"_"),n.signature=s}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=e.networking,r=e.config,i=null,o=null,s={};t.getOperation()===v.default.PNTimeOperation||t.getOperation()===v.default.PNChannelGroupsOperation?i=arguments.length<=2?void 0:arguments[2]:(s=arguments.length<=2?void 0:arguments[2],i=arguments.length<=3?void 0:arguments[3]),"undefined"==typeof Promise||i||(o=g.default.createPromise());var a=t.validateParams(e,s);if(!a){var h=t.prepareParams(e,s),p=c(t,e,s),y=void 0,b={url:p,operation:t.getOperation(),timeout:t.getRequestTimeout(e)};h.uuid=r.UUID,h.pnsdk=l(r),r.useInstanceId&&(h.instanceid=r.instanceId),r.useRequestId&&(h.requestid=d.default.v4()),t.isAuthSupported()&&r.getAuthKey()&&(h.auth=r.getAuthKey()),r.secretKey&&f(e,p,h);var m=function(n,r){if(n.error)return void(i?i(n):o&&o.reject(new _("PubNub call failed, check status for details",n)));var a=t.handleResponse(e,r,s);i?i(n,a):o&&o.fulfill(a)};if(t.usePost&&t.usePost(e,s)){var k=t.postPayload(e,s);y=n.POST(h,k,b,m)}else y=n.GET(h,b,m);return t.getOperation()===v.default.PNSubscribeOperation?y:o?o.promise:void 0}return i?i(u(a)):o?(o.reject(new _("Validation failed, check status for details",u(a))),o.promise):void 0};var h=n(2),d=r(h),p=(n(8),n(18)),g=r(p),y=n(7),b=(r(y),n(16)),v=r(b),_=function(e){function t(e,n){i(this,t);var r=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return r.name=r.constructor.name,r.status=n,r.message=e,r}return s(t,e),t}(Error);e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return h.default.PNAddChannelsToGroupOperation}function o(e,t){var n=t.channels,r=t.channelGroup,i=e.config;return r?n&&0!==n.length?i.subscribeKey?void 0:"Missing Subscribe Key":"Missing Channels":"Missing Channel Group"}function s(e,t){var n=t.channelGroup;return"/v1/channel-registration/sub-key/"+e.config.subscribeKey+"/channel-group/"+p.default.encodeString(n)}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(e,t){var n=t.channels;return{add:(void 0===n?[]:n).join(",")}}function l(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=o,t.getURL=s,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var f=(n(8),n(16)),h=r(f),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return h.default.PNRemoveChannelsFromGroupOperation}function o(e,t){var n=t.channels,r=t.channelGroup,i=e.config;return r?n&&0!==n.length?i.subscribeKey?void 0:"Missing Subscribe Key":"Missing Channels":"Missing Channel Group"}function s(e,t){var n=t.channelGroup;return"/v1/channel-registration/sub-key/"+e.config.subscribeKey+"/channel-group/"+p.default.encodeString(n)}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(e,t){var n=t.channels;return{remove:(void 0===n?[]:n).join(",")}}function l(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=o,t.getURL=s,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var f=(n(8),n(16)),h=r(f),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return h.default.PNRemoveGroupOperation}function o(e,t){var n=t.channelGroup,r=e.config;return n?r.subscribeKey?void 0:"Missing Subscribe Key":"Missing Channel Group"}function s(e,t){var n=t.channelGroup;return"/v1/channel-registration/sub-key/"+e.config.subscribeKey+"/channel-group/"+p.default.encodeString(n)+"/remove"}function a(){return!0}function u(e){return e.config.getTransactionTimeout()}function c(){return{}}function l(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=o,t.getURL=s,t.isAuthSupported=a,t.getRequestTimeout=u,t.prepareParams=c,t.handleResponse=l;var f=(n(8),n(16)),h=r(f),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(){return f.default.PNChannelGroupsOperation}function i(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function o(e){return"/v1/channel-registration/sub-key/"+e.config.subscribeKey+"/channel-group"}function s(e){return e.config.getTransactionTimeout()}function a(){return!0}function u(){return{}}function c(e,t){return{groups:t.payload.groups}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=o,t.getRequestTimeout=s,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),f=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return h.default.PNChannelsForGroupOperation}function o(e,t){var n=t.channelGroup,r=e.config;return n?r.subscribeKey?void 0:"Missing Subscribe Key":"Missing Channel Group"}function s(e,t){var n=t.channelGroup;return"/v1/channel-registration/sub-key/"+e.config.subscribeKey+"/channel-group/"+p.default.encodeString(n)}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(){return{}}function l(e,t){return{channels:t.payload.channels}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=o,t.getURL=s,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var f=(n(8),n(16)),h=r(f),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(){return f.default.PNPushNotificationEnabledChannelsOperation}function i(e,t){var n=t.device,r=t.pushGateway,i=t.channels,o=e.config;return n?r?i&&0!==i.length?o.subscribeKey?void 0:"Missing Subscribe Key":"Missing Channels":"Missing GW Type (pushGateway: gcm or apns)":"Missing Device ID (device)"}function o(e,t){var n=t.device;return"/v1/push/sub-key/"+e.config.subscribeKey+"/devices/"+n}function s(e){return e.config.getTransactionTimeout()}function a(){return!0}function u(e,t){var n=t.pushGateway,r=t.channels;return{type:n,add:(void 0===r?[]:r).join(",")}}function c(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=o,t.getRequestTimeout=s,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),f=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(){return f.default.PNPushNotificationEnabledChannelsOperation}function i(e,t){var n=t.device,r=t.pushGateway,i=t.channels,o=e.config;return n?r?i&&0!==i.length?o.subscribeKey?void 0:"Missing Subscribe Key":"Missing Channels":"Missing GW Type (pushGateway: gcm or apns)":"Missing Device ID (device)"}function o(e,t){var n=t.device;return"/v1/push/sub-key/"+e.config.subscribeKey+"/devices/"+n}function s(e){return e.config.getTransactionTimeout()}function a(){return!0}function u(e,t){var n=t.pushGateway,r=t.channels;return{type:n,remove:(void 0===r?[]:r).join(",")}}function c(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=o,t.getRequestTimeout=s,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),f=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(){return f.default.PNPushNotificationEnabledChannelsOperation}function i(e,t){var n=t.device,r=t.pushGateway,i=e.config;return n?r?i.subscribeKey?void 0:"Missing Subscribe Key":"Missing GW Type (pushGateway: gcm or apns)":"Missing Device ID (device)"}function o(e,t){var n=t.device;return"/v1/push/sub-key/"+e.config.subscribeKey+"/devices/"+n}function s(e){return e.config.getTransactionTimeout()}function a(){return!0}function u(e,t){return{type:t.pushGateway}}function c(e,t){return{channels:t}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=o,t.getRequestTimeout=s,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),f=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(){return f.default.PNRemoveAllPushNotificationsOperation}function i(e,t){var n=t.device,r=t.pushGateway,i=e.config;return n?r?i.subscribeKey?void 0:"Missing Subscribe Key":"Missing GW Type (pushGateway: gcm or apns)":"Missing Device ID (device)"}function o(e,t){var n=t.device;return"/v1/push/sub-key/"+e.config.subscribeKey+"/devices/"+n+"/remove"}function s(e){return e.config.getTransactionTimeout()}function a(){return!0}function u(e,t){return{type:t.pushGateway}}function c(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=o,t.getRequestTimeout=s,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),f=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return h.default.PNUnsubscribeOperation}function o(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function s(e,t){var n=e.config,r=t.channels,i=void 0===r?[]:r,o=i.length>0?i.join(","):",";return"/v2/presence/sub-key/"+n.subscribeKey+"/channel/"+p.default.encodeString(o)+"/leave"}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(e,t){var n=t.channelGroups,r=void 0===n?[]:n,i={};return r.length>0&&(i["channel-group"]=r.join(",")),i}function l(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=o,t.getURL=s,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var f=(n(8),n(16)),h=r(f),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(){return f.default.PNWhereNowOperation}function i(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function o(e,t){var n=e.config,r=t.uuid,i=void 0===r?n.UUID:r;return"/v2/presence/sub-key/"+n.subscribeKey+"/uuid/"+i}function s(e){return e.config.getTransactionTimeout()}function a(){return!0}function u(){return{}}function c(e,t){return t.payload?{channels:t.payload.channels}:{channels:[]}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=o,t.getRequestTimeout=s,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),f=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return h.default.PNHeartbeatOperation}function o(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function s(e,t){var n=e.config,r=t.channels,i=void 0===r?[]:r,o=i.length>0?i.join(","):",";return"/v2/presence/sub-key/"+n.subscribeKey+"/channel/"+p.default.encodeString(o)+"/heartbeat"}function a(){return!0}function u(e){return e.config.getTransactionTimeout()}function c(e,t){var n=t.channelGroups,r=void 0===n?[]:n,i=t.state,o=void 0===i?{}:i,s=e.config,a={};return r.length>0&&(a["channel-group"]=r.join(",")),a.state=JSON.stringify(o),a.heartbeat=s.getPresenceTimeout(),a}function l(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=o,t.getURL=s,t.isAuthSupported=a,t.getRequestTimeout=u,t.prepareParams=c,t.handleResponse=l;var f=(n(8),n(16)),h=r(f),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return h.default.PNGetStateOperation}function o(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function s(e,t){var n=e.config,r=t.uuid,i=void 0===r?n.UUID:r,o=t.channels,s=void 0===o?[]:o,a=s.length>0?s.join(","):",";return"/v2/presence/sub-key/"+n.subscribeKey+"/channel/"+p.default.encodeString(a)+"/uuid/"+i}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(e,t){var n=t.channelGroups,r=void 0===n?[]:n,i={};return r.length>0&&(i["channel-group"]=r.join(",")),i}function l(e,t,n){var r=n.channels,i=void 0===r?[]:r,o=n.channelGroups,s=void 0===o?[]:o,a={};return 1===i.length&&0===s.length?a[i[0]]=t.payload:a=t.payload,{channels:a}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=o,t.getURL=s,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var f=(n(8),n(16)),h=r(f),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return h.default.PNSetStateOperation}function o(e,t){var n=e.config,r=t.state,i=t.channels,o=void 0===i?[]:i,s=t.channelGroups,a=void 0===s?[]:s;return r?n.subscribeKey?0===o.length&&0===a.length?"Please provide a list of channels and/or channel-groups":void 0:"Missing Subscribe Key":"Missing State"}function s(e,t){var n=e.config,r=t.channels,i=void 0===r?[]:r,o=i.length>0?i.join(","):",";return"/v2/presence/sub-key/"+n.subscribeKey+"/channel/"+p.default.encodeString(o)+"/uuid/"+n.UUID+"/data"}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(e,t){var n=t.state,r=t.channelGroups,i=void 0===r?[]:r,o={};return o.state=JSON.stringify(n),i.length>0&&(o["channel-group"]=i.join(",")),o}function l(e,t){return{state:t.payload}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=o,t.getURL=s,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var f=(n(8),n(16)),h=r(f),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return h.default.PNHereNowOperation}function o(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function s(e,t){var n=e.config,r=t.channels,i=void 0===r?[]:r,o=t.channelGroups,s=void 0===o?[]:o,a="/v2/presence/sub-key/"+n.subscribeKey;if(i.length>0||s.length>0){var u=i.length>0?i.join(","):",";a+="/channel/"+p.default.encodeString(u)}return a}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(e,t){var n=t.channelGroups,r=void 0===n?[]:n,i=t.includeUUIDs,o=void 0===i||i,s=t.includeState,a=void 0!==s&&s,u={};return o||(u.disable_uuids=1),a&&(u.state=1),r.length>0&&(u["channel-group"]=r.join(",")),u}function l(e,t,n){var r=n.channels,i=void 0===r?[]:r,o=n.channelGroups,s=void 0===o?[]:o,a=n.includeUUIDs,u=void 0===a||a,c=n.includeState,l=void 0!==c&&c;return i.length>1||s.length>0||0===s.length&&0===i.length?function(){var e={};return e.totalChannels=t.payload.total_channels,e.totalOccupancy=t.payload.total_occupancy,e.channels={},Object.keys(t.payload.channels).forEach(function(n){var r=t.payload.channels[n],i=[];return e.channels[n]={occupants:i,name:n,occupancy:r.occupancy},u&&r.uuids.forEach(function(e){l?i.push({state:e.state,uuid:e.uuid}):i.push({state:null,uuid:e})}),e}),e}():function(){var e={},n=[];return e.totalChannels=1,e.totalOccupancy=t.occupancy,e.channels={},e.channels[i[0]]={occupants:n,name:i[0],occupancy:t.occupancy},u&&t.uuids&&t.uuids.forEach(function(e){l?n.push({state:e.state,uuid:e.uuid}):n.push({state:null,uuid:e})}),e}()}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=o,t.getURL=s,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var f=(n(8),n(16)),h=r(f),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(){return f.default.PNAccessManagerAudit}function i(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function o(e){return"/v2/auth/audit/sub-key/"+e.config.subscribeKey}function s(e){return e.config.getTransactionTimeout()}function a(){return!1}function u(e,t){var n=t.channel,r=t.channelGroup,i=t.authKeys,o=void 0===i?[]:i,s={};return n&&(s.channel=n),r&&(s["channel-group"]=r),o.length>0&&(s.auth=o.join(",")),s}function c(e,t){return t.payload}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=o,t.getRequestTimeout=s,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),f=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(){return f.default.PNAccessManagerGrant}function i(e){var t=e.config;return t.subscribeKey?t.publishKey?t.secretKey?void 0:"Missing Secret Key":"Missing Publish Key":"Missing Subscribe Key"}function o(e){return"/v2/auth/grant/sub-key/"+e.config.subscribeKey}function s(e){return e.config.getTransactionTimeout()}function a(){return!1}function u(e,t){var n=t.channels,r=void 0===n?[]:n,i=t.channelGroups,o=void 0===i?[]:i,s=t.ttl,a=t.read,u=void 0!==a&&a,c=t.write,l=void 0!==c&&c,f=t.manage,h=void 0!==f&&f,d=t.authKeys,p=void 0===d?[]:d,g={};return g.r=u?"1":"0",g.w=l?"1":"0",g.m=h?"1":"0",r.length>0&&(g.channel=r.join(",")),o.length>0&&(g["channel-group"]=o.join(",")),p.length>0&&(g.auth=p.join(",")),(s||0===s)&&(g.ttl=s),g}function c(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=o,t.getRequestTimeout=s,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),f=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){var n=e.crypto,r=e.config,i=JSON.stringify(t);return r.cipherKey&&(i=n.encrypt(i),i=JSON.stringify(i)),i}function o(){return b.default.PNPublishOperation}function s(e,t){var n=e.config,r=t.message;return t.channel?r?n.subscribeKey?void 0:"Missing Subscribe Key":"Missing Message":"Missing Channel"}function a(e,t){var n=t.sendByPost;return void 0!==n&&n}function u(e,t){var n=e.config,r=t.channel,o=t.message,s=i(e,o);return"/publish/"+n.publishKey+"/"+n.subscribeKey+"/0/"+_.default.encodeString(r)+"/0/"+_.default.encodeString(s)}function c(e,t){var n=e.config,r=t.channel;return"/publish/"+n.publishKey+"/"+n.subscribeKey+"/0/"+_.default.encodeString(r)+"/0"}function l(e){return e.config.getTransactionTimeout()}function f(){return!0}function h(e,t){return i(e,t.message)}function d(e,t){var n=t.meta,r=t.replicate,i=void 0===r||r,o=t.storeInHistory,s=t.ttl,a={};return null!=o&&(a.store=o?"1":"0"), s&&(a.ttl=s),!1===i&&(a.norep="true"),n&&"object"===(void 0===n?"undefined":g(n))&&(a.meta=JSON.stringify(n)),a}function p(e,t){return{timetoken:t[2]}}Object.defineProperty(t,"__esModule",{value:!0});var g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.getOperation=o,t.validateParams=s,t.usePost=a,t.getURL=u,t.postURL=c,t.getRequestTimeout=l,t.isAuthSupported=f,t.postPayload=h,t.prepareParams=d,t.handleResponse=p;var y=(n(8),n(16)),b=r(y),v=n(18),_=r(v)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){var n=e.config,r=e.crypto;if(!n.cipherKey)return t;try{return r.decrypt(t)}catch(e){return t}}function o(){return d.default.PNHistoryOperation}function s(e,t){var n=t.channel,r=e.config;return n?r.subscribeKey?void 0:"Missing Subscribe Key":"Missing channel"}function a(e,t){var n=t.channel;return"/v2/history/sub-key/"+e.config.subscribeKey+"/channel/"+g.default.encodeString(n)}function u(e){return e.config.getTransactionTimeout()}function c(){return!0}function l(e,t){var n=t.start,r=t.end,i=t.reverse,o=t.count,s=void 0===o?100:o,a=t.stringifiedTimeToken,u=void 0!==a&&a,c={include_token:"true"};return c.count=s,n&&(c.start=n),r&&(c.end=r),u&&(c.string_message_token="true"),null!=i&&(c.reverse=i.toString()),c}function f(e,t){var n={messages:[],startTimeToken:t[1],endTimeToken:t[2]};return t[0].forEach(function(t){var r={timetoken:t.timetoken,entry:i(e,t.message)};n.messages.push(r)}),n}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=o,t.validateParams=s,t.getURL=a,t.getRequestTimeout=u,t.isAuthSupported=c,t.prepareParams=l,t.handleResponse=f;var h=(n(8),n(16)),d=r(h),p=n(18),g=r(p)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){var n=e.config,r=e.crypto;if(!n.cipherKey)return t;try{return r.decrypt(t)}catch(e){return t}}function o(){return d.default.PNFetchMessagesOperation}function s(e,t){var n=t.channels,r=e.config;return n&&0!==n.length?r.subscribeKey?void 0:"Missing Subscribe Key":"Missing channels"}function a(e,t){var n=t.channels,r=void 0===n?[]:n,i=e.config,o=r.length>0?r.join(","):",";return"/v3/history/sub-key/"+i.subscribeKey+"/channel/"+g.default.encodeString(o)}function u(e){return e.config.getTransactionTimeout()}function c(){return!0}function l(e,t){var n=t.start,r=t.end,i=t.count,o={};return i&&(o.max=i),n&&(o.start=n),r&&(o.end=r),o}function f(e,t){var n={channels:{}};return Object.keys(t.channels||{}).forEach(function(r){n.channels[r]=[],(t.channels[r]||[]).forEach(function(t){var o={};o.channel=r,o.subscription=null,o.timetoken=t.timetoken,o.message=i(e,t.message),n.channels[r].push(o)})}),n}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=o,t.validateParams=s,t.getURL=a,t.getRequestTimeout=u,t.isAuthSupported=c,t.prepareParams=l,t.handleResponse=f;var h=(n(8),n(16)),d=r(h),p=n(18),g=r(p)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return h.default.PNSubscribeOperation}function o(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function s(e,t){var n=e.config,r=t.channels,i=void 0===r?[]:r,o=i.length>0?i.join(","):",";return"/v2/subscribe/"+n.subscribeKey+"/"+p.default.encodeString(o)+"/0"}function a(e){return e.config.getSubscribeTimeout()}function u(){return!0}function c(e,t){var n=e.config,r=t.channelGroups,i=void 0===r?[]:r,o=t.timetoken,s=t.filterExpression,a=t.region,u={heartbeat:n.getPresenceTimeout()};return i.length>0&&(u["channel-group"]=i.join(",")),s&&s.length>0&&(u["filter-expr"]=s),o&&(u.tt=o),a&&(u.tr=a),u}function l(e,t){var n=[];t.m.forEach(function(e){var t={publishTimetoken:e.p.t,region:e.p.r},r={shard:parseInt(e.a,10),subscriptionMatch:e.b,channel:e.c,payload:e.d,flags:e.f,issuingClientId:e.i,subscribeKey:e.k,originationTimetoken:e.o,userMetadata:e.u,publishMetaData:t};n.push(r)});var r={timetoken:t.t.t,region:t.t.r};return{messages:n,metadata:r}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=o,t.getURL=s,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var f=(n(8),n(16)),h=r(f),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n=this._maxSubDomain&&(this._currentSubDomain=1),e=this._currentSubDomain.toString(),this._providedFQDN.replace("pubsub","ps"+e)}},{key:"shiftStandardOrigin",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this._standardOrigin=this.nextOrigin(e),this._standardOrigin}},{key:"getStandardOrigin",value:function(){return this._standardOrigin}},{key:"POST",value:function(e,t,n,r){return this._modules.post(e,t,n,r)}},{key:"GET",value:function(e,t,n){return this._modules.get(e,t,n)}},{key:"_detectErrorCategory",value:function(e){if("ENOTFOUND"===e.code)return u.default.PNNetworkIssuesCategory;if("ECONNREFUSED"===e.code)return u.default.PNNetworkIssuesCategory;if("ECONNRESET"===e.code)return u.default.PNNetworkIssuesCategory;if("EAI_AGAIN"===e.code)return u.default.PNNetworkIssuesCategory;if(0===e.status||e.hasOwnProperty("status")&&void 0===e.status)return u.default.PNNetworkIssuesCategory;if(e.timeout)return u.default.PNTimeoutCategory;if(e.response){if(e.response.badRequest)return u.default.PNBadRequestCategory;if(e.response.forbidden)return u.default.PNAccessDeniedCategory}return u.default.PNUnknownCategory}}]),e}());t.default=c,e.exports=t.default},function(e,t){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n>>>>>"),o.log("["+u+" / "+a+"]","\n",e,"\n",t,"\n",n),o.log("-----")}function i(){return"mobileweb"===Ti.Platform.osname?new XMLHttpRequest:Ti.Network.createHTTPClient()}function o(e){"mobileweb"!==Ti.Platform.osname&&this._config.keepAlive&&(e.enableKeepAlive=!0)}function s(e,t,n,i,s,a,u){var l=this,f={};f.operation=a.operation,e.open(t,(0,c.buildUrl)(n,i),!0),o.call(this,e),e.onload=function(){f.error=!1,e.status&&(f.statusCode=e.status);var t=JSON.parse(e.responseText);return l._config.logVerbosity&&r(n,i,e.responseText),u(f,t)},e.onerror=function(e){return f.error=!0,f.errorData=e.error,f.category=l._detectErrorCategory(e.error),u(f,null)},e.timeout="android"===Ti.Platform.osname?2147483647:1/0,e.send(s)}function a(e,t,n){var r=i(),o=this.getStandardOrigin()+t.url;return s.call(this,r,"GET",o,e,{},t,n)}function u(e,t,n,r){var o=i(),a=this.getStandardOrigin()+n.url;return s.call(this,o,"POST",a,e,JSON.parse(t),n,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.get=a,t.post=u;var c=(n(8),n(44))},function(e,t){"use strict";function n(e,t,r){null!=r?Array.isArray(r)?r.forEach(function(r){n(e,t,r)}):"object"===(void 0===r?"undefined":i(r))?Object.keys(r).forEach(function(i){n(e,t+"["+i+"]",r[i])}):e.push(encodeURIComponent(t)+"="+encodeURIComponent(r)):null===r&&e.push(encodeURIComponent(""+encodeURIComponent(t)))}function r(e,t){var r=[];return Object.keys(t).forEach(function(e){n(r,e,t[e])}),e+"?"+r.join("&")}Object.defineProperty(t,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.encodedKeyValuePair=n,t.buildUrl=r}])}); \ No newline at end of file diff --git a/dist/web/pubnub.js b/dist/web/pubnub.js index 982122672..10411eab2 100644 --- a/dist/web/pubnub.js +++ b/dist/web/pubnub.js @@ -1,4 +1,4 @@ -/*! 4.15.0 / Consumer */ +/*! 4.15.1 / Consumer */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); @@ -813,7 +813,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: 'getVersion', value: function getVersion() { - return '4.15.0'; + return '4.15.1'; } }, { key: '_decideUUID', @@ -4660,7 +4660,7 @@ return /******/ (function(modules) { // webpackBootstrap } if (this._config.keepAlive && this._modules.keepAlive) { - superagentConstruct = this._module.keepAlive(superagentConstruct); + superagentConstruct = this._modules.keepAlive(superagentConstruct); } return superagentConstruct.timeout(endpoint.timeout).end(function (err, resp) { diff --git a/dist/web/pubnub.min.js b/dist/web/pubnub.min.js index 20eeac4c0..da7db8f1a 100644 --- a/dist/web/pubnub.min.js +++ b/dist/web/pubnub.min.js @@ -1,3 +1,3 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.PubNub=t():e.PubNub=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function a(e){if(!navigator||!navigator.sendBeacon)return!1;navigator.sendBeacon(e)}Object.defineProperty(t,"__esModule",{value:!0});var u=n(1),c=r(u),l=n(41),h=r(l),f=n(42),d=r(f),p=n(43),g=(n(8),function(e){function t(e){i(this,t);var n=e.listenToBrowserNetworkEvents,r=void 0===n||n;e.db=d.default,e.sdkFamily="Web",e.networking=new h.default({get:p.get,post:p.post,sendBeacon:a});var o=s(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return r&&(window.addEventListener("offline",function(){o.networkDownDetected()}),window.addEventListener("online",function(){o.networkUpDetected()})),o}return o(t,e),t}(c.default));t.default=g,e.exports=t.default},function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;nc)&&void 0===e.nsecs&&(f=0),f>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");c=h,l=f,u=o,h+=122192928e5;var p=(1e4*(268435455&h)+f)%4294967296;i[r++]=p>>>24&255,i[r++]=p>>>16&255,i[r++]=p>>>8&255,i[r++]=255&p;var g=h/4294967296*1e4&268435455;i[r++]=g>>>8&255,i[r++]=255&g,i[r++]=g>>>24&15|16,i[r++]=g>>>16&255,i[r++]=o>>>8|128,i[r++]=255&o;for(var y=e.node||a,v=0;v<6;++v)i[r+v]=y[v];return t||s(i)}var i=n(4),s=n(5),o=i(),a=[1|o[0],o[1],o[2],o[3],o[4],o[5]],u=16383&(o[6]<<8|o[7]),c=0,l=0;e.exports=r},function(e,t){(function(t){var n,r=t.crypto||t.msCrypto;if(r&&r.getRandomValues){var i=new Uint8Array(16);n=function(){return r.getRandomValues(i),i}}if(!n){var s=new Array(16);n=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),s[t]=e>>>((3&t)<<3)&255;return s}}e.exports=n}).call(t,function(){return this}())},function(e,t){function n(e,t){var n=t||0,i=r;return i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]}for(var r=[],i=0;i<256;++i)r[i]=(i+256).toString(16).substr(1);e.exports=n},function(e,t,n){function r(e,t,n){var r=t&&n||0;"string"==typeof e&&(t="binary"==e?new Array(16):null,e=null),e=e||{};var o=e.random||(e.rng||i)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t)for(var a=0;a<16;++a)t[r+a]=o[a];return t||s(o)}var i=n(4),s=n(5);e.exports=r},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n>>2]|=(n[i>>>2]>>>24-i%4*8&255)<<24-(r+i)%4*8;else if(65535>>2]=n[i>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=s.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],r=0;r>>2]>>>24-r%4*8&255;n.push((i>>>4).toString(16)),n.push((15&i).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new o.init(n,t/2)}},c=a.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new o.init(n,t)}},l=a.Utf8={stringify:function(e){try{return decodeURIComponent(escape(c.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return c.parse(unescape(encodeURIComponent(e)))}},h=r.BufferedBlockAlgorithm=s.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=l.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,r=n.words,i=n.sigBytes,s=this.blockSize,a=i/(4*s),a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0);if(t=a*s,i=e.min(4*t,i),t){for(var u=0;ul;){var h;e:{h=c;for(var f=e.sqrt(h),d=2;d<=f;d++)if(!(h%d)){h=!1;break e}h=!0}h&&(8>l&&(o[l]=u(e.pow(c,.5))),a[l]=u(e.pow(c,1/3)),l++),c++}var p=[],r=r.SHA256=s.extend({_doReset:function(){this._hash=new i.init(o.slice(0))},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],s=n[2],o=n[3],u=n[4],c=n[5],l=n[6],h=n[7],f=0;64>f;f++){if(16>f)p[f]=0|e[t+f];else{var d=p[f-15],g=p[f-2];p[f]=((d<<25|d>>>7)^(d<<14|d>>>18)^d>>>3)+p[f-7]+((g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10)+p[f-16]}d=h+((u<<26|u>>>6)^(u<<21|u>>>11)^(u<<7|u>>>25))+(u&c^~u&l)+a[f]+p[f],g=((r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22))+(r&i^r&s^i&s),h=l,l=c,c=u,u=o+d|0,o=s,s=i,i=r,r=d+g|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+s|0,n[3]=n[3]+o|0,n[4]=n[4]+u|0,n[5]=n[5]+c|0,n[6]=n[6]+l|0,n[7]=n[7]+h|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return n[i>>>5]|=128<<24-i%32,n[14+(i+64>>>9<<4)]=e.floor(r/4294967296),n[15+(i+64>>>9<<4)]=r,t.sigBytes=4*n.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(r),t.HmacSHA256=s._createHmacHelper(r)}(Math),function(){var e=n,t=e.enc.Utf8;e.algo.HMAC=e.lib.Base.extend({init:function(e,n){e=this._hasher=new e.init,"string"==typeof n&&(n=t.parse(n));var r=e.blockSize,i=4*r;n.sigBytes>i&&(n=e.finalize(n)),n.clamp();for(var s=this._oKey=n.clone(),o=this._iKey=n.clone(),a=s.words,u=o.words,c=0;c>>2]>>>24-i%4*8&255)<<16|(t[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|t[i+2>>>2]>>>24-(i+2)%4*8&255,o=0;4>o&&i+.75*o>>6*(3-o)&63));if(t=r.charAt(64))for(;e.length%4;)e.push(t);return e.join("")},parse:function(e){var n=e.length,r=this._map,i=r.charAt(64);i&&-1!=(i=e.indexOf(i))&&(n=i);for(var i=[],s=0,o=0;o>>6-o%4*2;i[s>>>2]|=(a|u)<<24-s%4*8,s++}return t.create(i,s)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),function(e){function t(e,t,n,r,i,s,o){return((e=e+(t&n|~t&r)+i+o)<>>32-s)+t}function r(e,t,n,r,i,s,o){return((e=e+(t&r|n&~r)+i+o)<>>32-s)+t}function i(e,t,n,r,i,s,o){return((e=e+(t^n^r)+i+o)<>>32-s)+t}function s(e,t,n,r,i,s,o){return((e=e+(n^(t|~r))+i+o)<>>32-s)+t}for(var o=n,a=o.lib,u=a.WordArray,c=a.Hasher,a=o.algo,l=[],h=0;64>h;h++)l[h]=4294967296*e.abs(e.sin(h+1))|0;a=a.MD5=c.extend({_doReset:function(){this._hash=new u.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,n){for(var o=0;16>o;o++){var a=n+o,u=e[a];e[a]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8)}var o=this._hash.words,a=e[n+0],u=e[n+1],c=e[n+2],h=e[n+3],f=e[n+4],d=e[n+5],p=e[n+6],g=e[n+7],y=e[n+8],v=e[n+9],b=e[n+10],_=e[n+11],m=e[n+12],k=e[n+13],P=e[n+14],S=e[n+15],O=o[0],w=o[1],T=o[2],C=o[3],O=t(O,w,T,C,a,7,l[0]),C=t(C,O,w,T,u,12,l[1]),T=t(T,C,O,w,c,17,l[2]),w=t(w,T,C,O,h,22,l[3]),O=t(O,w,T,C,f,7,l[4]),C=t(C,O,w,T,d,12,l[5]),T=t(T,C,O,w,p,17,l[6]),w=t(w,T,C,O,g,22,l[7]),O=t(O,w,T,C,y,7,l[8]),C=t(C,O,w,T,v,12,l[9]),T=t(T,C,O,w,b,17,l[10]),w=t(w,T,C,O,_,22,l[11]),O=t(O,w,T,C,m,7,l[12]),C=t(C,O,w,T,k,12,l[13]),T=t(T,C,O,w,P,17,l[14]),w=t(w,T,C,O,S,22,l[15]),O=r(O,w,T,C,u,5,l[16]),C=r(C,O,w,T,p,9,l[17]),T=r(T,C,O,w,_,14,l[18]),w=r(w,T,C,O,a,20,l[19]),O=r(O,w,T,C,d,5,l[20]),C=r(C,O,w,T,b,9,l[21]),T=r(T,C,O,w,S,14,l[22]),w=r(w,T,C,O,f,20,l[23]),O=r(O,w,T,C,v,5,l[24]),C=r(C,O,w,T,P,9,l[25]),T=r(T,C,O,w,h,14,l[26]),w=r(w,T,C,O,y,20,l[27]),O=r(O,w,T,C,k,5,l[28]),C=r(C,O,w,T,c,9,l[29]),T=r(T,C,O,w,g,14,l[30]),w=r(w,T,C,O,m,20,l[31]),O=i(O,w,T,C,d,4,l[32]),C=i(C,O,w,T,y,11,l[33]),T=i(T,C,O,w,_,16,l[34]),w=i(w,T,C,O,P,23,l[35]),O=i(O,w,T,C,u,4,l[36]),C=i(C,O,w,T,f,11,l[37]),T=i(T,C,O,w,g,16,l[38]),w=i(w,T,C,O,b,23,l[39]),O=i(O,w,T,C,k,4,l[40]),C=i(C,O,w,T,a,11,l[41]),T=i(T,C,O,w,h,16,l[42]),w=i(w,T,C,O,p,23,l[43]),O=i(O,w,T,C,v,4,l[44]),C=i(C,O,w,T,m,11,l[45]),T=i(T,C,O,w,S,16,l[46]),w=i(w,T,C,O,c,23,l[47]),O=s(O,w,T,C,a,6,l[48]),C=s(C,O,w,T,g,10,l[49]),T=s(T,C,O,w,P,15,l[50]),w=s(w,T,C,O,d,21,l[51]),O=s(O,w,T,C,m,6,l[52]),C=s(C,O,w,T,h,10,l[53]),T=s(T,C,O,w,b,15,l[54]),w=s(w,T,C,O,u,21,l[55]),O=s(O,w,T,C,y,6,l[56]),C=s(C,O,w,T,S,10,l[57]),T=s(T,C,O,w,p,15,l[58]),w=s(w,T,C,O,k,21,l[59]),O=s(O,w,T,C,f,6,l[60]),C=s(C,O,w,T,_,10,l[61]),T=s(T,C,O,w,c,15,l[62]),w=s(w,T,C,O,v,21,l[63]);o[0]=o[0]+O|0,o[1]=o[1]+w|0,o[2]=o[2]+T|0,o[3]=o[3]+C|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;n[i>>>5]|=128<<24-i%32;var s=e.floor(r/4294967296);for(n[15+(i+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),n[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),t.sigBytes=4*(n.length+1),this._process(),t=this._hash,n=t.words,r=0;4>r;r++)i=n[r],n[r]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8);return t},clone:function(){var e=c.clone.call(this);return e._hash=this._hash.clone(),e}}),o.MD5=c._createHelper(a),o.HmacMD5=c._createHmacHelper(a)}(Math),function(){var e=n,t=e.lib,r=t.Base,i=t.WordArray,t=e.algo,s=t.EvpKDF=r.extend({cfg:r.extend({keySize:4,hasher:t.MD5,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n=this.cfg,r=n.hasher.create(),s=i.create(),o=s.words,a=n.keySize,n=n.iterations;o.length>>2]}},r.BlockCipher=c.extend({cfg:c.cfg.extend({mode:l,padding:f}),reset:function(){c.reset.call(this);var e=this.cfg,t=e.iv,e=e.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=e.createEncryptor;else n=e.createDecryptor,this._minBufferSize=1;this._mode=n.call(e,this,t&&t.words)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){e.pad(this._data,this.blockSize);var t=this._process(!0)}else t=this._process(!0),e.unpad(t);return t},blockSize:4});var d=r.CipherParams=i.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),l=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext;return e=e.salt,(e?s.create([1398893684,1701076831]).concat(e).concat(t):t).toString(a)},parse:function(e){e=a.parse(e);var t=e.words;if(1398893684==t[0]&&1701076831==t[1]){var n=s.create(t.slice(2,4));t.splice(0,4),e.sigBytes-=16}return d.create({ciphertext:e,salt:n})}},p=r.SerializableCipher=i.extend({cfg:i.extend({format:l}),encrypt:function(e,t,n,r){r=this.cfg.extend(r);var i=e.createEncryptor(n,r);return t=i.finalize(t),i=i.cfg,d.create({ciphertext:t,key:n,iv:i.iv,algorithm:e,mode:i.mode,padding:i.padding,blockSize:e.blockSize,formatter:r.format})},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),e.createDecryptor(n,r).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),t=(t.kdf={}).OpenSSL={execute:function(e,t,n,r){return r||(r=s.random(8)),e=u.create({keySize:t+n}).compute(e,r),n=s.create(e.words.slice(t),4*n),e.sigBytes=4*t,d.create({key:e,iv:n,salt:r})}},g=r.PasswordBasedCipher=p.extend({cfg:p.cfg.extend({kdf:t}),encrypt:function(e,t,n,r){return r=this.cfg.extend(r),n=r.kdf.execute(n,e.keySize,e.ivSize),r.iv=n.iv,e=p.encrypt.call(this,e,t,n.key,r),e.mixIn(n),e},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),n=r.kdf.execute(n,e.keySize,e.ivSize,t.salt),r.iv=n.iv,p.decrypt.call(this,e,t,n.key,r)}})}(),function(){for(var e=n,t=e.lib.BlockCipher,r=e.algo,i=[],s=[],o=[],a=[],u=[],c=[],l=[],h=[],f=[],d=[],p=[],g=0;256>g;g++)p[g]=128>g?g<<1:g<<1^283;for(var y=0,v=0,g=0;256>g;g++){var b=v^v<<1^v<<2^v<<3^v<<4,b=b>>>8^255&b^99;i[y]=b,s[b]=y;var _=p[y],m=p[_],k=p[m],P=257*p[b]^16843008*b;o[y]=P<<24|P>>>8,a[y]=P<<16|P>>>16,u[y]=P<<8|P>>>24,c[y]=P,P=16843009*k^65537*m^257*_^16843008*y,l[b]=P<<24|P>>>8,h[b]=P<<16|P>>>16,f[b]=P<<8|P>>>24,d[b]=P,y?(y=_^p[p[p[k^_]]],v^=p[p[v]]):y=v=1}var S=[0,1,2,4,8,16,32,64,128,27,54],r=r.AES=t.extend({_doReset:function(){for(var e=this._key,t=e.words,n=e.sigBytes/4,e=4*((this._nRounds=n+6)+1),r=this._keySchedule=[],s=0;s>>24]<<24|i[o>>>16&255]<<16|i[o>>>8&255]<<8|i[255&o]):(o=o<<8|o>>>24,o=i[o>>>24]<<24|i[o>>>16&255]<<16|i[o>>>8&255]<<8|i[255&o],o^=S[s/n|0]<<24),r[s]=r[s-n]^o}for(t=this._invKeySchedule=[],n=0;nn||4>=s?o:l[i[o>>>24]]^h[i[o>>>16&255]]^f[i[o>>>8&255]]^d[i[255&o]]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,a,u,c,i)},decryptBlock:function(e,t){var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n,this._doCryptBlock(e,t,this._invKeySchedule,l,h,f,d,s),n=e[t+1],e[t+1]=e[t+3],e[t+3]=n},_doCryptBlock:function(e,t,n,r,i,s,o,a){for(var u=this._nRounds,c=e[t]^n[0],l=e[t+1]^n[1],h=e[t+2]^n[2],f=e[t+3]^n[3],d=4,p=1;p>>24]^i[l>>>16&255]^s[h>>>8&255]^o[255&f]^n[d++],y=r[l>>>24]^i[h>>>16&255]^s[f>>>8&255]^o[255&c]^n[d++],v=r[h>>>24]^i[f>>>16&255]^s[c>>>8&255]^o[255&l]^n[d++],f=r[f>>>24]^i[c>>>16&255]^s[l>>>8&255]^o[255&h]^n[d++],c=g,l=y,h=v;g=(a[c>>>24]<<24|a[l>>>16&255]<<16|a[h>>>8&255]<<8|a[255&f])^n[d++],y=(a[l>>>24]<<24|a[h>>>16&255]<<16|a[f>>>8&255]<<8|a[255&c])^n[d++],v=(a[h>>>24]<<24|a[f>>>16&255]<<16|a[c>>>8&255]<<8|a[255&l])^n[d++],f=(a[f>>>24]<<24|a[c>>>16&255]<<16|a[l>>>8&255]<<8|a[255&h])^n[d++],e[t]=g,e[t+1]=y,e[t+2]=v,e[t+3]=f},keySize:8});e.AES=t._createHelper(r)}(),n.mode.ECB=function(){var e=n.lib.BlockCipherMode.extend();return e.Encryptor=e.extend({processBlock:function(e,t){this._cipher.encryptBlock(e,t)}}),e.Decryptor=e.extend({processBlock:function(e,t){this._cipher.decryptBlock(e,t)}}),e}(),e.exports=n},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;nc)&&void 0===e.nsecs&&(f=0),f>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");c=h,l=f,u=o,h+=122192928e5;var p=(1e4*(268435455&h)+f)%4294967296;i[r++]=p>>>24&255,i[r++]=p>>>16&255,i[r++]=p>>>8&255,i[r++]=255&p;var g=h/4294967296*1e4&268435455;i[r++]=g>>>8&255,i[r++]=255&g,i[r++]=g>>>24&15|16,i[r++]=g>>>16&255,i[r++]=o>>>8|128,i[r++]=255&o;for(var y=e.node||a,v=0;v<6;++v)i[r+v]=y[v];return t||s(i)}var i=n(4),s=n(5),o=i(),a=[1|o[0],o[1],o[2],o[3],o[4],o[5]],u=16383&(o[6]<<8|o[7]),c=0,l=0;e.exports=r},function(e,t){(function(t){var n,r=t.crypto||t.msCrypto;if(r&&r.getRandomValues){var i=new Uint8Array(16);n=function(){return r.getRandomValues(i),i}}if(!n){var s=new Array(16);n=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),s[t]=e>>>((3&t)<<3)&255;return s}}e.exports=n}).call(t,function(){return this}())},function(e,t){function n(e,t){var n=t||0,i=r;return i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+"-"+i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]}for(var r=[],i=0;i<256;++i)r[i]=(i+256).toString(16).substr(1);e.exports=n},function(e,t,n){function r(e,t,n){var r=t&&n||0;"string"==typeof e&&(t="binary"==e?new Array(16):null,e=null),e=e||{};var o=e.random||(e.rng||i)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t)for(var a=0;a<16;++a)t[r+a]=o[a];return t||s(o)}var i=n(4),s=n(5);e.exports=r},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n>>2]|=(n[i>>>2]>>>24-i%4*8&255)<<24-(r+i)%4*8;else if(65535>>2]=n[i>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=s.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],r=0;r>>2]>>>24-r%4*8&255;n.push((i>>>4).toString(16)),n.push((15&i).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new o.init(n,t/2)}},c=a.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new o.init(n,t)}},l=a.Utf8={stringify:function(e){try{return decodeURIComponent(escape(c.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return c.parse(unescape(encodeURIComponent(e)))}},h=r.BufferedBlockAlgorithm=s.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=l.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,r=n.words,i=n.sigBytes,s=this.blockSize,a=i/(4*s),a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0);if(t=a*s,i=e.min(4*t,i),t){for(var u=0;ul;){var h;e:{h=c;for(var f=e.sqrt(h),d=2;d<=f;d++)if(!(h%d)){h=!1;break e}h=!0}h&&(8>l&&(o[l]=u(e.pow(c,.5))),a[l]=u(e.pow(c,1/3)),l++),c++}var p=[],r=r.SHA256=s.extend({_doReset:function(){this._hash=new i.init(o.slice(0))},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],s=n[2],o=n[3],u=n[4],c=n[5],l=n[6],h=n[7],f=0;64>f;f++){if(16>f)p[f]=0|e[t+f];else{var d=p[f-15],g=p[f-2];p[f]=((d<<25|d>>>7)^(d<<14|d>>>18)^d>>>3)+p[f-7]+((g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10)+p[f-16]}d=h+((u<<26|u>>>6)^(u<<21|u>>>11)^(u<<7|u>>>25))+(u&c^~u&l)+a[f]+p[f],g=((r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22))+(r&i^r&s^i&s),h=l,l=c,c=u,u=o+d|0,o=s,s=i,i=r,r=d+g|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+s|0,n[3]=n[3]+o|0,n[4]=n[4]+u|0,n[5]=n[5]+c|0,n[6]=n[6]+l|0,n[7]=n[7]+h|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return n[i>>>5]|=128<<24-i%32,n[14+(i+64>>>9<<4)]=e.floor(r/4294967296),n[15+(i+64>>>9<<4)]=r,t.sigBytes=4*n.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(r),t.HmacSHA256=s._createHmacHelper(r)}(Math),function(){var e=n,t=e.enc.Utf8;e.algo.HMAC=e.lib.Base.extend({init:function(e,n){e=this._hasher=new e.init,"string"==typeof n&&(n=t.parse(n));var r=e.blockSize,i=4*r;n.sigBytes>i&&(n=e.finalize(n)),n.clamp();for(var s=this._oKey=n.clone(),o=this._iKey=n.clone(),a=s.words,u=o.words,c=0;c>>2]>>>24-i%4*8&255)<<16|(t[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|t[i+2>>>2]>>>24-(i+2)%4*8&255,o=0;4>o&&i+.75*o>>6*(3-o)&63));if(t=r.charAt(64))for(;e.length%4;)e.push(t);return e.join("")},parse:function(e){var n=e.length,r=this._map,i=r.charAt(64);i&&-1!=(i=e.indexOf(i))&&(n=i);for(var i=[],s=0,o=0;o>>6-o%4*2;i[s>>>2]|=(a|u)<<24-s%4*8,s++}return t.create(i,s)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),function(e){function t(e,t,n,r,i,s,o){return((e=e+(t&n|~t&r)+i+o)<>>32-s)+t}function r(e,t,n,r,i,s,o){return((e=e+(t&r|n&~r)+i+o)<>>32-s)+t}function i(e,t,n,r,i,s,o){return((e=e+(t^n^r)+i+o)<>>32-s)+t}function s(e,t,n,r,i,s,o){return((e=e+(n^(t|~r))+i+o)<>>32-s)+t}for(var o=n,a=o.lib,u=a.WordArray,c=a.Hasher,a=o.algo,l=[],h=0;64>h;h++)l[h]=4294967296*e.abs(e.sin(h+1))|0;a=a.MD5=c.extend({_doReset:function(){this._hash=new u.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,n){for(var o=0;16>o;o++){var a=n+o,u=e[a];e[a]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8)}var o=this._hash.words,a=e[n+0],u=e[n+1],c=e[n+2],h=e[n+3],f=e[n+4],d=e[n+5],p=e[n+6],g=e[n+7],y=e[n+8],v=e[n+9],b=e[n+10],_=e[n+11],m=e[n+12],k=e[n+13],P=e[n+14],S=e[n+15],O=o[0],w=o[1],T=o[2],C=o[3],O=t(O,w,T,C,a,7,l[0]),C=t(C,O,w,T,u,12,l[1]),T=t(T,C,O,w,c,17,l[2]),w=t(w,T,C,O,h,22,l[3]),O=t(O,w,T,C,f,7,l[4]),C=t(C,O,w,T,d,12,l[5]),T=t(T,C,O,w,p,17,l[6]),w=t(w,T,C,O,g,22,l[7]),O=t(O,w,T,C,y,7,l[8]),C=t(C,O,w,T,v,12,l[9]),T=t(T,C,O,w,b,17,l[10]),w=t(w,T,C,O,_,22,l[11]),O=t(O,w,T,C,m,7,l[12]),C=t(C,O,w,T,k,12,l[13]),T=t(T,C,O,w,P,17,l[14]),w=t(w,T,C,O,S,22,l[15]),O=r(O,w,T,C,u,5,l[16]),C=r(C,O,w,T,p,9,l[17]),T=r(T,C,O,w,_,14,l[18]),w=r(w,T,C,O,a,20,l[19]),O=r(O,w,T,C,d,5,l[20]),C=r(C,O,w,T,b,9,l[21]),T=r(T,C,O,w,S,14,l[22]),w=r(w,T,C,O,f,20,l[23]),O=r(O,w,T,C,v,5,l[24]),C=r(C,O,w,T,P,9,l[25]),T=r(T,C,O,w,h,14,l[26]),w=r(w,T,C,O,y,20,l[27]),O=r(O,w,T,C,k,5,l[28]),C=r(C,O,w,T,c,9,l[29]),T=r(T,C,O,w,g,14,l[30]),w=r(w,T,C,O,m,20,l[31]),O=i(O,w,T,C,d,4,l[32]),C=i(C,O,w,T,y,11,l[33]),T=i(T,C,O,w,_,16,l[34]),w=i(w,T,C,O,P,23,l[35]),O=i(O,w,T,C,u,4,l[36]),C=i(C,O,w,T,f,11,l[37]),T=i(T,C,O,w,g,16,l[38]),w=i(w,T,C,O,b,23,l[39]),O=i(O,w,T,C,k,4,l[40]),C=i(C,O,w,T,a,11,l[41]),T=i(T,C,O,w,h,16,l[42]),w=i(w,T,C,O,p,23,l[43]),O=i(O,w,T,C,v,4,l[44]),C=i(C,O,w,T,m,11,l[45]),T=i(T,C,O,w,S,16,l[46]),w=i(w,T,C,O,c,23,l[47]),O=s(O,w,T,C,a,6,l[48]),C=s(C,O,w,T,g,10,l[49]),T=s(T,C,O,w,P,15,l[50]),w=s(w,T,C,O,d,21,l[51]),O=s(O,w,T,C,m,6,l[52]),C=s(C,O,w,T,h,10,l[53]),T=s(T,C,O,w,b,15,l[54]),w=s(w,T,C,O,u,21,l[55]),O=s(O,w,T,C,y,6,l[56]),C=s(C,O,w,T,S,10,l[57]),T=s(T,C,O,w,p,15,l[58]),w=s(w,T,C,O,k,21,l[59]),O=s(O,w,T,C,f,6,l[60]),C=s(C,O,w,T,_,10,l[61]),T=s(T,C,O,w,c,15,l[62]),w=s(w,T,C,O,v,21,l[63]);o[0]=o[0]+O|0,o[1]=o[1]+w|0,o[2]=o[2]+T|0,o[3]=o[3]+C|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;n[i>>>5]|=128<<24-i%32;var s=e.floor(r/4294967296);for(n[15+(i+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),n[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),t.sigBytes=4*(n.length+1),this._process(),t=this._hash,n=t.words,r=0;4>r;r++)i=n[r],n[r]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8);return t},clone:function(){var e=c.clone.call(this);return e._hash=this._hash.clone(),e}}),o.MD5=c._createHelper(a),o.HmacMD5=c._createHmacHelper(a)}(Math),function(){var e=n,t=e.lib,r=t.Base,i=t.WordArray,t=e.algo,s=t.EvpKDF=r.extend({cfg:r.extend({keySize:4,hasher:t.MD5,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n=this.cfg,r=n.hasher.create(),s=i.create(),o=s.words,a=n.keySize,n=n.iterations;o.length>>2]}},r.BlockCipher=c.extend({cfg:c.cfg.extend({mode:l,padding:f}),reset:function(){c.reset.call(this);var e=this.cfg,t=e.iv,e=e.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=e.createEncryptor;else n=e.createDecryptor,this._minBufferSize=1;this._mode=n.call(e,this,t&&t.words)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){e.pad(this._data,this.blockSize);var t=this._process(!0)}else t=this._process(!0),e.unpad(t);return t},blockSize:4});var d=r.CipherParams=i.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),l=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext;return e=e.salt,(e?s.create([1398893684,1701076831]).concat(e).concat(t):t).toString(a)},parse:function(e){e=a.parse(e);var t=e.words;if(1398893684==t[0]&&1701076831==t[1]){var n=s.create(t.slice(2,4));t.splice(0,4),e.sigBytes-=16}return d.create({ciphertext:e,salt:n})}},p=r.SerializableCipher=i.extend({cfg:i.extend({format:l}),encrypt:function(e,t,n,r){r=this.cfg.extend(r);var i=e.createEncryptor(n,r);return t=i.finalize(t),i=i.cfg,d.create({ciphertext:t,key:n,iv:i.iv,algorithm:e,mode:i.mode,padding:i.padding,blockSize:e.blockSize,formatter:r.format})},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),e.createDecryptor(n,r).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),t=(t.kdf={}).OpenSSL={execute:function(e,t,n,r){return r||(r=s.random(8)),e=u.create({keySize:t+n}).compute(e,r),n=s.create(e.words.slice(t),4*n),e.sigBytes=4*t,d.create({key:e,iv:n,salt:r})}},g=r.PasswordBasedCipher=p.extend({cfg:p.cfg.extend({kdf:t}),encrypt:function(e,t,n,r){return r=this.cfg.extend(r),n=r.kdf.execute(n,e.keySize,e.ivSize),r.iv=n.iv,e=p.encrypt.call(this,e,t,n.key,r),e.mixIn(n),e},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),n=r.kdf.execute(n,e.keySize,e.ivSize,t.salt),r.iv=n.iv,p.decrypt.call(this,e,t,n.key,r)}})}(),function(){for(var e=n,t=e.lib.BlockCipher,r=e.algo,i=[],s=[],o=[],a=[],u=[],c=[],l=[],h=[],f=[],d=[],p=[],g=0;256>g;g++)p[g]=128>g?g<<1:g<<1^283;for(var y=0,v=0,g=0;256>g;g++){var b=v^v<<1^v<<2^v<<3^v<<4,b=b>>>8^255&b^99;i[y]=b,s[b]=y;var _=p[y],m=p[_],k=p[m],P=257*p[b]^16843008*b;o[y]=P<<24|P>>>8,a[y]=P<<16|P>>>16,u[y]=P<<8|P>>>24,c[y]=P,P=16843009*k^65537*m^257*_^16843008*y,l[b]=P<<24|P>>>8,h[b]=P<<16|P>>>16,f[b]=P<<8|P>>>24,d[b]=P,y?(y=_^p[p[p[k^_]]],v^=p[p[v]]):y=v=1}var S=[0,1,2,4,8,16,32,64,128,27,54],r=r.AES=t.extend({_doReset:function(){for(var e=this._key,t=e.words,n=e.sigBytes/4,e=4*((this._nRounds=n+6)+1),r=this._keySchedule=[],s=0;s>>24]<<24|i[o>>>16&255]<<16|i[o>>>8&255]<<8|i[255&o]):(o=o<<8|o>>>24,o=i[o>>>24]<<24|i[o>>>16&255]<<16|i[o>>>8&255]<<8|i[255&o],o^=S[s/n|0]<<24),r[s]=r[s-n]^o}for(t=this._invKeySchedule=[],n=0;nn||4>=s?o:l[i[o>>>24]]^h[i[o>>>16&255]]^f[i[o>>>8&255]]^d[i[255&o]]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,a,u,c,i)},decryptBlock:function(e,t){var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n,this._doCryptBlock(e,t,this._invKeySchedule,l,h,f,d,s),n=e[t+1],e[t+1]=e[t+3],e[t+3]=n},_doCryptBlock:function(e,t,n,r,i,s,o,a){for(var u=this._nRounds,c=e[t]^n[0],l=e[t+1]^n[1],h=e[t+2]^n[2],f=e[t+3]^n[3],d=4,p=1;p>>24]^i[l>>>16&255]^s[h>>>8&255]^o[255&f]^n[d++],y=r[l>>>24]^i[h>>>16&255]^s[f>>>8&255]^o[255&c]^n[d++],v=r[h>>>24]^i[f>>>16&255]^s[c>>>8&255]^o[255&l]^n[d++],f=r[f>>>24]^i[c>>>16&255]^s[l>>>8&255]^o[255&h]^n[d++],c=g,l=y,h=v;g=(a[c>>>24]<<24|a[l>>>16&255]<<16|a[h>>>8&255]<<8|a[255&f])^n[d++],y=(a[l>>>24]<<24|a[h>>>16&255]<<16|a[f>>>8&255]<<8|a[255&c])^n[d++],v=(a[h>>>24]<<24|a[f>>>16&255]<<16|a[c>>>8&255]<<8|a[255&l])^n[d++],f=(a[f>>>24]<<24|a[c>>>16&255]<<16|a[l>>>8&255]<<8|a[255&h])^n[d++],e[t]=g,e[t+1]=y,e[t+2]=v,e[t+3]=f},keySize:8});e.AES=t._createHelper(r)}(),n.mode.ECB=function(){var e=n.lib.BlockCipherMode.extend();return e.Encryptor=e.extend({processBlock:function(e,t){this._cipher.encryptBlock(e,t)}}),e.Decryptor=e.extend({processBlock:function(e,t){this._cipher.decryptBlock(e,t)}}),e}(),e.exports=n},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n=o){var u={};u.category=y.default.PNRequestMessageCountExceededCategory,u.operation=e.operation,this._listenerManager.announceStatus(u)}i.forEach(function(e){var t=e.channel,r=e.subscriptionMatch,i=e.publishMetaData;if(t===r&&(r=null),a){if(n._dedupingManager.isDuplicate(e))return;n._dedupingManager.addEntry(e)}if(p.default.endsWith(e.channel,"-pnpres")){var s={};s.channel=null,s.subscription=null,s.actualChannel=null!=r?t:null,s.subscribedChannel=null!=r?r:t,t&&(s.channel=t.substring(0,t.lastIndexOf("-pnpres"))),r&&(s.subscription=r.substring(0,r.lastIndexOf("-pnpres"))),s.action=e.payload.action,s.state=e.payload.data,s.timetoken=i.publishTimetoken,s.occupancy=e.payload.occupancy,s.uuid=e.payload.uuid,s.timestamp=e.payload.timestamp,e.payload.join&&(s.join=e.payload.join),e.payload.leave&&(s.leave=e.payload.leave),e.payload.timeout&&(s.timeout=e.payload.timeout),n._listenerManager.announcePresence(s)}else{var o={};o.channel=null,o.subscription=null,o.actualChannel=null!=r?t:null,o.subscribedChannel=null!=r?r:t,o.channel=t,o.subscription=r,o.timetoken=i.publishTimetoken,o.publisher=e.issuingClientId,e.userMetadata&&(o.userMetadata=e.userMetadata),n._config.cipherKey?o.message=n._crypto.decrypt(e.payload):o.message=e.payload,n._listenerManager.announceMessage(o)}}),this._region=t.metadata.region,this._startSubscribeLoop()}},{key:"_stopSubscribeLoop",value:function(){this._subscribeCall&&(this._subscribeCall.abort(),this._subscribeCall=null)}}]),e}();t.default=v,e.exports=t.default},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n=this._config.maximumCacheSize&&this.hashHistory.shift(),this.hashHistory.push(this.getKey(e))}},{key:"clearHistory",value:function(){this.hashHistory=[]}}]),e}();t.default=a,e.exports=t.default},function(e,t){"use strict";function n(e){var t=[];return Object.keys(e).forEach(function(e){return t.push(e)}),t}function r(e){return encodeURIComponent(e).replace(/[!~*'()]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function i(e){return n(e).sort()}function s(e){return i(e).map(function(t){return t+"="+r(e[t])}).join("&")}function o(e,t){return-1!==e.indexOf(t,this.length-t.length)}function a(){var e=void 0,t=void 0;return{promise:new Promise(function(n,r){e=n,t=r}),reject:t,fulfill:e}}e.exports={signPamFromParams:s,endsWith:o,createPromise:a,encodeString:r}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function a(e,t){return e.type=t,e.error=!0,e}function u(e){return a({message:e},"validationError")}function c(e,t,n){return e.usePost&&e.usePost(t,n)?e.postURL(t,n):e.getURL(t,n)}function l(e){var t="PubNub-JS-"+e.sdkFamily;return e.partnerId&&(t+="-"+e.partnerId),t+="/"+e.getVersion()}function h(e,t,n){var r=e.config,i=e.crypto;n.timestamp=Math.floor((new Date).getTime()/1e3);var s=r.subscribeKey+"\n"+r.publishKey+"\n"+t+"\n";s+=g.default.signPamFromParams(n);var o=i.HMACSHA256(s);o=o.replace(/\+/g,"-"),o=o.replace(/\//g,"_"),n.signature=o}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=e.networking,r=e.config,i=null,s=null,o={};t.getOperation()===b.default.PNTimeOperation||t.getOperation()===b.default.PNChannelGroupsOperation?i=arguments.length<=2?void 0:arguments[2]:(o=arguments.length<=2?void 0:arguments[2],i=arguments.length<=3?void 0:arguments[3]),"undefined"==typeof Promise||i||(s=g.default.createPromise());var a=t.validateParams(e,o);if(!a){var f=t.prepareParams(e,o),p=c(t,e,o),y=void 0,v={url:p,operation:t.getOperation(),timeout:t.getRequestTimeout(e)};f.uuid=r.UUID,f.pnsdk=l(r),r.useInstanceId&&(f.instanceid=r.instanceId),r.useRequestId&&(f.requestid=d.default.v4()),t.isAuthSupported()&&r.getAuthKey()&&(f.auth=r.getAuthKey()),r.secretKey&&h(e,p,f);var m=function(n,r){if(n.error)return void(i?i(n):s&&s.reject(new _("PubNub call failed, check status for details",n)));var a=t.handleResponse(e,r,o);i?i(n,a):s&&s.fulfill(a)};if(t.usePost&&t.usePost(e,o)){var k=t.postPayload(e,o);y=n.POST(f,k,v,m)}else y=n.GET(f,v,m);return t.getOperation()===b.default.PNSubscribeOperation?y:s?s.promise:void 0}return i?i(u(a)):s?(s.reject(new _("Validation failed, check status for details",u(a))),s.promise):void 0};var f=n(2),d=r(f),p=(n(8),n(18)),g=r(p),y=n(7),v=(r(y),n(16)),b=r(v),_=function(e){function t(e,n){i(this,t);var r=s(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return r.name=r.constructor.name,r.status=n,r.message=e,r}return o(t,e),t}(Error);e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNAddChannelsToGroupOperation}function s(e,t){var n=t.channels,r=t.channelGroup,i=e.config;return r?n&&0!==n.length?i.subscribeKey?void 0:"Missing Subscribe Key":"Missing Channels":"Missing Channel Group"}function o(e,t){var n=t.channelGroup;return"/v1/channel-registration/sub-key/"+e.config.subscribeKey+"/channel-group/"+p.default.encodeString(n)}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(e,t){var n=t.channels;return{add:(void 0===n?[]:n).join(",")}}function l(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNRemoveChannelsFromGroupOperation}function s(e,t){var n=t.channels,r=t.channelGroup,i=e.config;return r?n&&0!==n.length?i.subscribeKey?void 0:"Missing Subscribe Key":"Missing Channels":"Missing Channel Group"}function o(e,t){var n=t.channelGroup;return"/v1/channel-registration/sub-key/"+e.config.subscribeKey+"/channel-group/"+p.default.encodeString(n)}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(e,t){var n=t.channels;return{remove:(void 0===n?[]:n).join(",")}}function l(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNRemoveGroupOperation}function s(e,t){var n=t.channelGroup,r=e.config;return n?r.subscribeKey?void 0:"Missing Subscribe Key":"Missing Channel Group"}function o(e,t){var n=t.channelGroup;return"/v1/channel-registration/sub-key/"+e.config.subscribeKey+"/channel-group/"+p.default.encodeString(n)+"/remove"}function a(){return!0}function u(e){return e.config.getTransactionTimeout()}function c(){return{}}function l(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.isAuthSupported=a,t.getRequestTimeout=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(){return h.default.PNChannelGroupsOperation}function i(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function s(e){return"/v1/channel-registration/sub-key/"+e.config.subscribeKey+"/channel-group"}function o(e){return e.config.getTransactionTimeout()}function a(){return!0}function u(){return{}}function c(e,t){return{groups:t.payload.groups}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=s,t.getRequestTimeout=o,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),h=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNChannelsForGroupOperation}function s(e,t){var n=t.channelGroup,r=e.config;return n?r.subscribeKey?void 0:"Missing Subscribe Key":"Missing Channel Group"}function o(e,t){var n=t.channelGroup;return"/v1/channel-registration/sub-key/"+e.config.subscribeKey+"/channel-group/"+p.default.encodeString(n)}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(){return{}}function l(e,t){return{channels:t.payload.channels}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(){return h.default.PNPushNotificationEnabledChannelsOperation}function i(e,t){var n=t.device,r=t.pushGateway,i=t.channels,s=e.config;return n?r?i&&0!==i.length?s.subscribeKey?void 0:"Missing Subscribe Key":"Missing Channels":"Missing GW Type (pushGateway: gcm or apns)":"Missing Device ID (device)"}function s(e,t){var n=t.device;return"/v1/push/sub-key/"+e.config.subscribeKey+"/devices/"+n}function o(e){return e.config.getTransactionTimeout()}function a(){return!0}function u(e,t){var n=t.pushGateway,r=t.channels;return{type:n,add:(void 0===r?[]:r).join(",")}}function c(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=s,t.getRequestTimeout=o,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),h=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(){return h.default.PNPushNotificationEnabledChannelsOperation}function i(e,t){var n=t.device,r=t.pushGateway,i=t.channels,s=e.config;return n?r?i&&0!==i.length?s.subscribeKey?void 0:"Missing Subscribe Key":"Missing Channels":"Missing GW Type (pushGateway: gcm or apns)":"Missing Device ID (device)"}function s(e,t){var n=t.device;return"/v1/push/sub-key/"+e.config.subscribeKey+"/devices/"+n}function o(e){return e.config.getTransactionTimeout()}function a(){return!0}function u(e,t){var n=t.pushGateway,r=t.channels;return{type:n,remove:(void 0===r?[]:r).join(",")}}function c(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=s,t.getRequestTimeout=o,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),h=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(){return h.default.PNPushNotificationEnabledChannelsOperation}function i(e,t){var n=t.device,r=t.pushGateway,i=e.config;return n?r?i.subscribeKey?void 0:"Missing Subscribe Key":"Missing GW Type (pushGateway: gcm or apns)":"Missing Device ID (device)"}function s(e,t){var n=t.device;return"/v1/push/sub-key/"+e.config.subscribeKey+"/devices/"+n}function o(e){return e.config.getTransactionTimeout()}function a(){return!0}function u(e,t){return{type:t.pushGateway}}function c(e,t){return{channels:t}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=s,t.getRequestTimeout=o,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),h=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(){return h.default.PNRemoveAllPushNotificationsOperation}function i(e,t){var n=t.device,r=t.pushGateway,i=e.config;return n?r?i.subscribeKey?void 0:"Missing Subscribe Key":"Missing GW Type (pushGateway: gcm or apns)":"Missing Device ID (device)"}function s(e,t){var n=t.device;return"/v1/push/sub-key/"+e.config.subscribeKey+"/devices/"+n+"/remove"}function o(e){return e.config.getTransactionTimeout()}function a(){return!0}function u(e,t){return{type:t.pushGateway}}function c(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=s,t.getRequestTimeout=o,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),h=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNUnsubscribeOperation}function s(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function o(e,t){var n=e.config,r=t.channels,i=void 0===r?[]:r,s=i.length>0?i.join(","):",";return"/v2/presence/sub-key/"+n.subscribeKey+"/channel/"+p.default.encodeString(s)+"/leave"}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(e,t){var n=t.channelGroups,r=void 0===n?[]:n,i={};return r.length>0&&(i["channel-group"]=r.join(",")),i}function l(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(){return h.default.PNWhereNowOperation}function i(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function s(e,t){var n=e.config,r=t.uuid,i=void 0===r?n.UUID:r;return"/v2/presence/sub-key/"+n.subscribeKey+"/uuid/"+i}function o(e){return e.config.getTransactionTimeout()}function a(){return!0}function u(){return{}}function c(e,t){return t.payload?{channels:t.payload.channels}:{channels:[]}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=s,t.getRequestTimeout=o,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),h=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNHeartbeatOperation}function s(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function o(e,t){var n=e.config,r=t.channels,i=void 0===r?[]:r,s=i.length>0?i.join(","):",";return"/v2/presence/sub-key/"+n.subscribeKey+"/channel/"+p.default.encodeString(s)+"/heartbeat"}function a(){return!0}function u(e){return e.config.getTransactionTimeout()}function c(e,t){var n=t.channelGroups,r=void 0===n?[]:n,i=t.state,s=void 0===i?{}:i,o=e.config,a={};return r.length>0&&(a["channel-group"]=r.join(",")),a.state=JSON.stringify(s),a.heartbeat=o.getPresenceTimeout(),a}function l(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.isAuthSupported=a,t.getRequestTimeout=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNGetStateOperation}function s(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function o(e,t){var n=e.config,r=t.uuid,i=void 0===r?n.UUID:r,s=t.channels,o=void 0===s?[]:s,a=o.length>0?o.join(","):",";return"/v2/presence/sub-key/"+n.subscribeKey+"/channel/"+p.default.encodeString(a)+"/uuid/"+i}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(e,t){var n=t.channelGroups,r=void 0===n?[]:n,i={};return r.length>0&&(i["channel-group"]=r.join(",")),i}function l(e,t,n){var r=n.channels,i=void 0===r?[]:r,s=n.channelGroups,o=void 0===s?[]:s,a={};return 1===i.length&&0===o.length?a[i[0]]=t.payload:a=t.payload,{channels:a}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNSetStateOperation}function s(e,t){var n=e.config,r=t.state,i=t.channels,s=void 0===i?[]:i,o=t.channelGroups,a=void 0===o?[]:o;return r?n.subscribeKey?0===s.length&&0===a.length?"Please provide a list of channels and/or channel-groups":void 0:"Missing Subscribe Key":"Missing State"}function o(e,t){var n=e.config,r=t.channels,i=void 0===r?[]:r,s=i.length>0?i.join(","):",";return"/v2/presence/sub-key/"+n.subscribeKey+"/channel/"+p.default.encodeString(s)+"/uuid/"+n.UUID+"/data"}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(e,t){var n=t.state,r=t.channelGroups,i=void 0===r?[]:r,s={};return s.state=JSON.stringify(n),i.length>0&&(s["channel-group"]=i.join(",")),s}function l(e,t){return{state:t.payload}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNHereNowOperation}function s(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function o(e,t){var n=e.config,r=t.channels,i=void 0===r?[]:r,s=t.channelGroups,o=void 0===s?[]:s,a="/v2/presence/sub-key/"+n.subscribeKey;if(i.length>0||o.length>0){var u=i.length>0?i.join(","):",";a+="/channel/"+p.default.encodeString(u)}return a}function a(e){return e.config.getTransactionTimeout()}function u(){return!0}function c(e,t){var n=t.channelGroups,r=void 0===n?[]:n,i=t.includeUUIDs,s=void 0===i||i,o=t.includeState,a=void 0!==o&&o,u={};return s||(u.disable_uuids=1),a&&(u.state=1),r.length>0&&(u["channel-group"]=r.join(",")),u}function l(e,t,n){var r=n.channels,i=void 0===r?[]:r,s=n.channelGroups,o=void 0===s?[]:s,a=n.includeUUIDs,u=void 0===a||a,c=n.includeState,l=void 0!==c&&c;return i.length>1||o.length>0||0===o.length&&0===i.length?function(){var e={};return e.totalChannels=t.payload.total_channels,e.totalOccupancy=t.payload.total_occupancy,e.channels={},Object.keys(t.payload.channels).forEach(function(n){var r=t.payload.channels[n],i=[];return e.channels[n]={occupants:i,name:n,occupancy:r.occupancy},u&&r.uuids.forEach(function(e){l?i.push({state:e.state,uuid:e.uuid}):i.push({state:null,uuid:e})}),e}),e}():function(){var e={},n=[];return e.totalChannels=1,e.totalOccupancy=t.occupancy,e.channels={},e.channels[i[0]]={occupants:n,name:i[0],occupancy:t.occupancy},u&&t.uuids&&t.uuids.forEach(function(e){l?n.push({state:e.state,uuid:e.uuid}):n.push({state:null,uuid:e})}),e}()}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(){return h.default.PNAccessManagerAudit}function i(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function s(e){return"/v2/auth/audit/sub-key/"+e.config.subscribeKey}function o(e){return e.config.getTransactionTimeout()}function a(){return!1}function u(e,t){var n=t.channel,r=t.channelGroup,i=t.authKeys,s=void 0===i?[]:i,o={};return n&&(o.channel=n),r&&(o["channel-group"]=r),s.length>0&&(o.auth=s.join(",")),o}function c(e,t){return t.payload}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=s,t.getRequestTimeout=o,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),h=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(){return h.default.PNAccessManagerGrant}function i(e){var t=e.config;return t.subscribeKey?t.publishKey?t.secretKey?void 0:"Missing Secret Key":"Missing Publish Key":"Missing Subscribe Key"}function s(e){return"/v2/auth/grant/sub-key/"+e.config.subscribeKey}function o(e){return e.config.getTransactionTimeout()}function a(){return!1}function u(e,t){var n=t.channels,r=void 0===n?[]:n,i=t.channelGroups,s=void 0===i?[]:i,o=t.ttl,a=t.read,u=void 0!==a&&a,c=t.write,l=void 0!==c&&c,h=t.manage,f=void 0!==h&&h,d=t.authKeys,p=void 0===d?[]:d,g={};return g.r=u?"1":"0",g.w=l?"1":"0",g.m=f?"1":"0",r.length>0&&(g.channel=r.join(",")),s.length>0&&(g["channel-group"]=s.join(",")),p.length>0&&(g.auth=p.join(",")),(o||0===o)&&(g.ttl=o),g}function c(){return{}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=r,t.validateParams=i,t.getURL=s,t.getRequestTimeout=o,t.isAuthSupported=a,t.prepareParams=u,t.handleResponse=c;var l=(n(8),n(16)),h=function(e){return e&&e.__esModule?e:{default:e}}(l)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){var n=e.crypto,r=e.config,i=JSON.stringify(t);return r.cipherKey&&(i=n.encrypt(i),i=JSON.stringify(i)),i}function s(){return v.default.PNPublishOperation}function o(e,t){var n=e.config,r=t.message;return t.channel?r?n.subscribeKey?void 0:"Missing Subscribe Key":"Missing Message":"Missing Channel"}function a(e,t){var n=t.sendByPost;return void 0!==n&&n}function u(e,t){var n=e.config,r=t.channel,s=t.message,o=i(e,s);return"/publish/"+n.publishKey+"/"+n.subscribeKey+"/0/"+_.default.encodeString(r)+"/0/"+_.default.encodeString(o)}function c(e,t){var n=e.config,r=t.channel;return"/publish/"+n.publishKey+"/"+n.subscribeKey+"/0/"+_.default.encodeString(r)+"/0"} -function l(e){return e.config.getTransactionTimeout()}function h(){return!0}function f(e,t){return i(e,t.message)}function d(e,t){var n=t.meta,r=t.replicate,i=void 0===r||r,s=t.storeInHistory,o=t.ttl,a={};return null!=s&&(a.store=s?"1":"0"),o&&(a.ttl=o),!1===i&&(a.norep="true"),n&&"object"===(void 0===n?"undefined":g(n))&&(a.meta=JSON.stringify(n)),a}function p(e,t){return{timetoken:t[2]}}Object.defineProperty(t,"__esModule",{value:!0});var g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.getOperation=s,t.validateParams=o,t.usePost=a,t.getURL=u,t.postURL=c,t.getRequestTimeout=l,t.isAuthSupported=h,t.postPayload=f,t.prepareParams=d,t.handleResponse=p;var y=(n(8),n(16)),v=r(y),b=n(18),_=r(b)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){var n=e.config,r=e.crypto;if(!n.cipherKey)return t;try{return r.decrypt(t)}catch(e){return t}}function s(){return d.default.PNHistoryOperation}function o(e,t){var n=t.channel,r=e.config;return n?r.subscribeKey?void 0:"Missing Subscribe Key":"Missing channel"}function a(e,t){var n=t.channel;return"/v2/history/sub-key/"+e.config.subscribeKey+"/channel/"+g.default.encodeString(n)}function u(e){return e.config.getTransactionTimeout()}function c(){return!0}function l(e,t){var n=t.start,r=t.end,i=t.reverse,s=t.count,o=void 0===s?100:s,a=t.stringifiedTimeToken,u=void 0!==a&&a,c={include_token:"true"};return c.count=o,n&&(c.start=n),r&&(c.end=r),u&&(c.string_message_token="true"),null!=i&&(c.reverse=i.toString()),c}function h(e,t){var n={messages:[],startTimeToken:t[1],endTimeToken:t[2]};return t[0].forEach(function(t){var r={timetoken:t.timetoken,entry:i(e,t.message)};n.messages.push(r)}),n}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=s,t.validateParams=o,t.getURL=a,t.getRequestTimeout=u,t.isAuthSupported=c,t.prepareParams=l,t.handleResponse=h;var f=(n(8),n(16)),d=r(f),p=n(18),g=r(p)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){var n=e.config,r=e.crypto;if(!n.cipherKey)return t;try{return r.decrypt(t)}catch(e){return t}}function s(){return d.default.PNFetchMessagesOperation}function o(e,t){var n=t.channels,r=e.config;return n&&0!==n.length?r.subscribeKey?void 0:"Missing Subscribe Key":"Missing channels"}function a(e,t){var n=t.channels,r=void 0===n?[]:n,i=e.config,s=r.length>0?r.join(","):",";return"/v3/history/sub-key/"+i.subscribeKey+"/channel/"+g.default.encodeString(s)}function u(e){return e.config.getTransactionTimeout()}function c(){return!0}function l(e,t){var n=t.start,r=t.end,i=t.count,s={};return i&&(s.max=i),n&&(s.start=n),r&&(s.end=r),s}function h(e,t){var n={channels:{}};return Object.keys(t.channels||{}).forEach(function(r){n.channels[r]=[],(t.channels[r]||[]).forEach(function(t){var s={};s.channel=r,s.subscription=null,s.timetoken=t.timetoken,s.message=i(e,t.message),n.channels[r].push(s)})}),n}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=s,t.validateParams=o,t.getURL=a,t.getRequestTimeout=u,t.isAuthSupported=c,t.prepareParams=l,t.handleResponse=h;var f=(n(8),n(16)),d=r(f),p=n(18),g=r(p)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNSubscribeOperation}function s(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function o(e,t){var n=e.config,r=t.channels,i=void 0===r?[]:r,s=i.length>0?i.join(","):",";return"/v2/subscribe/"+n.subscribeKey+"/"+p.default.encodeString(s)+"/0"}function a(e){return e.config.getSubscribeTimeout()}function u(){return!0}function c(e,t){var n=e.config,r=t.channelGroups,i=void 0===r?[]:r,s=t.timetoken,o=t.filterExpression,a=t.region,u={heartbeat:n.getPresenceTimeout()};return i.length>0&&(u["channel-group"]=i.join(",")),o&&o.length>0&&(u["filter-expr"]=o),s&&(u.tt=s),a&&(u.tr=a),u}function l(e,t){var n=[];t.m.forEach(function(e){var t={publishTimetoken:e.p.t,region:e.p.r},r={shard:parseInt(e.a,10),subscriptionMatch:e.b,channel:e.c,payload:e.d,flags:e.f,issuingClientId:e.i,subscribeKey:e.k,originationTimetoken:e.o,userMetadata:e.u,publishMetaData:t};n.push(r)});var r={timetoken:t.t.t,region:t.t.r};return{messages:n,metadata:r}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n=this._maxSubDomain&&(this._currentSubDomain=1),e=this._currentSubDomain.toString(),this._providedFQDN.replace("pubsub","ps"+e)}},{key:"shiftStandardOrigin",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this._standardOrigin=this.nextOrigin(e),this._standardOrigin}},{key:"getStandardOrigin",value:function(){return this._standardOrigin}},{key:"POST",value:function(e,t,n,r){return this._modules.post(e,t,n,r)}},{key:"GET",value:function(e,t,n){return this._modules.get(e,t,n)}},{key:"_detectErrorCategory",value:function(e){if("ENOTFOUND"===e.code)return u.default.PNNetworkIssuesCategory;if("ECONNREFUSED"===e.code)return u.default.PNNetworkIssuesCategory;if("ECONNRESET"===e.code)return u.default.PNNetworkIssuesCategory;if("EAI_AGAIN"===e.code)return u.default.PNNetworkIssuesCategory;if(0===e.status||e.hasOwnProperty("status")&&void 0===e.status)return u.default.PNNetworkIssuesCategory;if(e.timeout)return u.default.PNTimeoutCategory;if(e.response){if(e.response.badRequest)return u.default.PNBadRequestCategory;if(e.response.forbidden)return u.default.PNAccessDeniedCategory}return u.default.PNUnknownCategory}}]),e}());t.default=c,e.exports=t.default},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={get:function(e){try{return localStorage.getItem(e)}catch(e){return null}},set:function(e,t){try{return localStorage.setItem(e,t)}catch(e){return null}}},e.exports=t.default},function(e,t,n){"use strict";function r(e){var t=(new Date).getTime(),n=(new Date).toISOString(),r=function(){return console&&console.log?console:window&&window.console&&window.console.log?window.console:console}();r.log("<<<<<"),r.log("["+n+"]","\n",e.url,"\n",e.qs),r.log("-----"),e.on("response",function(n){var i=(new Date).getTime(),s=i-t,o=(new Date).toISOString();r.log(">>>>>>"),r.log("["+o+" / "+s+"]","\n",e.url,"\n",e.qs,"\n",n.text),r.log("-----")})}function i(e,t,n){var i=this;return this._config.logVerbosity&&(e=e.use(r)),this._config.proxy&&this._modules.proxy&&(e=this._modules.proxy.call(this,e)),this._config.keepAlive&&this._modules.keepAlive&&(e=this._module.keepAlive(e)),e.timeout(t.timeout).end(function(e,r){var s={};if(s.error=null!==e,s.operation=t.operation,r&&r.status&&(s.statusCode=r.status),e)return s.errorData=e,s.category=i._detectErrorCategory(e),n(s,null);var o=JSON.parse(r.text);return o.error&&1===o.error&&o.status&&o.message&&o.service?(s.errorData=o,s.statusCode=o.status,s.error=!0,s.category=i._detectErrorCategory(s),n(s,null)):n(s,o)})}function s(e,t,n){var r=u.default.get(this.getStandardOrigin()+t.url).query(e);return i.call(this,r,t,n)}function o(e,t,n,r){var s=u.default.post(this.getStandardOrigin()+n.url).query(e).send(t);return i.call(this,s,n,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.get=s,t.post=o;var a=n(44),u=function(e){return e&&e.__esModule?e:{default:e}}(a);n(8)},function(e,t,n){function r(){}function i(e){if(!v(e))return e;var t=[];for(var n in e)s(t,n,e[n]);return t.join("&")}function s(e,t,n){if(null!=n)if(Array.isArray(n))n.forEach(function(n){s(e,t,n)});else if(v(n))for(var r in n)s(e,t+"["+r+"]",n[r]);else e.push(encodeURIComponent(t)+"="+encodeURIComponent(n));else null===n&&e.push(encodeURIComponent(t))}function o(e){for(var t,n,r={},i=e.split("&"),s=0,o=i.length;s=300)&&(r=new Error(t.statusText||"Unsuccessful HTTP response"),r.original=e,r.response=t,r.status=t.status)}catch(e){r=e}r?n.callback(r,t):n.callback(null,t)})}function d(e,t){var n=b("DELETE",e);return t&&n.end(t),n}var p;"undefined"!=typeof window?p=window:"undefined"!=typeof self?p=self:(console.warn("Using browser-only version of superagent in non-browser environment"),p=this);var g=n(45),y=n(46),v=n(47),b=e.exports=n(48).bind(null,f);b.getXHR=function(){if(!(!p.XMLHttpRequest||p.location&&"file:"==p.location.protocol&&p.ActiveXObject))return new XMLHttpRequest;try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(e){}throw Error("Browser-only verison of superagent could not find XHR")};var _="".trim?function(e){return e.trim()}:function(e){return e.replace(/(^\s*|\s*$)/g,"")};b.serializeObject=i,b.parseString=o,b.types={html:"text/html",json:"application/json",xml:"application/xml",urlencoded:"application/x-www-form-urlencoded",form:"application/x-www-form-urlencoded","form-data":"application/x-www-form-urlencoded"},b.serialize={"application/x-www-form-urlencoded":i,"application/json":JSON.stringify},b.parse={"application/x-www-form-urlencoded":o,"application/json":JSON.parse},h.prototype.get=function(e){return this.header[e.toLowerCase()]},h.prototype._setHeaderProperties=function(e){var t=this.header["content-type"]||"";this.type=c(t);var n=l(t);for(var r in n)this[r]=n[r]},h.prototype._parseBody=function(e){var t=b.parse[this.type];return!t&&u(this.type)&&(t=b.parse["application/json"]),t&&e&&(e.length||e instanceof Object)?t(e):null},h.prototype._setStatusProperties=function(e){1223===e&&(e=204);var t=e/100|0;this.status=this.statusCode=e,this.statusType=t,this.info=1==t,this.ok=2==t,this.clientError=4==t,this.serverError=5==t,this.error=(4==t||5==t)&&this.toError(),this.accepted=202==e,this.noContent=204==e,this.badRequest=400==e,this.unauthorized=401==e,this.notAcceptable=406==e,this.notFound=404==e,this.forbidden=403==e},h.prototype.toError=function(){var e=this.req,t=e.method,n=e.url,r="cannot "+t+" "+n+" ("+this.status+")",i=new Error(r);return i.status=this.status,i.method=t,i.url=n,i},b.Response=h,g(f.prototype);for(var m in y)f.prototype[m]=y[m];f.prototype.type=function(e){return this.set("Content-Type",b.types[e]||e),this},f.prototype.responseType=function(e){return this._responseType=e,this},f.prototype.accept=function(e){return this.set("Accept",b.types[e]||e),this},f.prototype.auth=function(e,t,n){switch(n||(n={type:"basic"}),n.type){case"basic":var r=btoa(e+":"+t);this.set("Authorization","Basic "+r);break;case"auto":this.username=e,this.password=t}return this},f.prototype.query=function(e){return"string"!=typeof e&&(e=i(e)),e&&this._query.push(e),this},f.prototype.attach=function(e,t,n){return this._getFormData().append(e,t,n||t.name),this},f.prototype._getFormData=function(){return this._formData||(this._formData=new p.FormData),this._formData},f.prototype.callback=function(e,t){var n=this._callback;this.clearTimeout(),n(e,t)},f.prototype.crossDomainError=function(){var e=new Error("Request has been terminated\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.");e.crossDomain=!0,e.status=this.status,e.method=this.method,e.url=this.url,this.callback(e)},f.prototype._timeoutError=function(){var e=this._timeout,t=new Error("timeout of "+e+"ms exceeded");t.timeout=e,this.callback(t)},f.prototype._appendQueryString=function(){var e=this._query.join("&");e&&(this.url+=~this.url.indexOf("?")?"&"+e:"?"+e)},f.prototype.end=function(e){var t=this,n=this.xhr=b.getXHR(),i=this._timeout,s=this._formData||this._data;this._callback=e||r,n.onreadystatechange=function(){if(4==n.readyState){var e;try{e=n.status}catch(t){e=0}if(0==e){if(t.timedout)return t._timeoutError();if(t._aborted)return;return t.crossDomainError()}t.emit("end")}};var o=function(e,n){n.total>0&&(n.percent=n.loaded/n.total*100),n.direction=e,t.emit("progress",n)};if(this.hasListeners("progress"))try{n.onprogress=o.bind(null,"download"),n.upload&&(n.upload.onprogress=o.bind(null,"upload"))}catch(e){}if(i&&!this._timer&&(this._timer=setTimeout(function(){t.timedout=!0,t.abort()},i)),this._appendQueryString(),this.username&&this.password?n.open(this.method,this.url,!0,this.username,this.password):n.open(this.method,this.url,!0),this._withCredentials&&(n.withCredentials=!0),"GET"!=this.method&&"HEAD"!=this.method&&"string"!=typeof s&&!this._isHost(s)){var a=this._header["content-type"],c=this._serializer||b.serialize[a?a.split(";")[0]:""];!c&&u(a)&&(c=b.serialize["application/json"]),c&&(s=c(s))}for(var l in this.header)null!=this.header[l]&&n.setRequestHeader(l,this.header[l]);return this._responseType&&(n.responseType=this._responseType),this.emit("request",this),n.send(void 0!==s?s:null),this},b.Request=f,b.get=function(e,t,n){var r=b("GET",e);return"function"==typeof t&&(n=t,t=null),t&&r.query(t),n&&r.end(n),r},b.head=function(e,t,n){var r=b("HEAD",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r},b.options=function(e,t,n){var r=b("OPTIONS",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r},b.del=d,b.delete=d,b.patch=function(e,t,n){var r=b("PATCH",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r},b.post=function(e,t,n){var r=b("POST",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r},b.put=function(e,t,n){var r=b("PUT",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r}},function(e,t,n){function r(e){if(e)return i(e)}function i(e){for(var t in r.prototype)e[t]=r.prototype[t];return e}e.exports=r,r.prototype.on=r.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},r.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this},r.prototype.off=r.prototype.removeListener=r.prototype.removeAllListeners=r.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var r,i=0;i0?r.join(","):",";return"/v3/history/sub-key/"+i.subscribeKey+"/channel/"+g.default.encodeString(s)}function u(e){return e.config.getTransactionTimeout()}function c(){return!0}function l(e,t){var n=t.start,r=t.end,i=t.count,s={};return i&&(s.max=i),n&&(s.start=n),r&&(s.end=r),s}function h(e,t){var n={channels:{}};return Object.keys(t.channels||{}).forEach(function(r){n.channels[r]=[],(t.channels[r]||[]).forEach(function(t){var s={};s.channel=r,s.subscription=null,s.timetoken=t.timetoken,s.message=i(e,t.message),n.channels[r].push(s)})}),n}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=s,t.validateParams=o,t.getURL=a,t.getRequestTimeout=u,t.isAuthSupported=c,t.prepareParams=l,t.handleResponse=h;var f=(n(8),n(16)),d=r(f),p=n(18),g=r(p)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return f.default.PNSubscribeOperation}function s(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"}function o(e,t){var n=e.config,r=t.channels,i=void 0===r?[]:r,s=i.length>0?i.join(","):",";return"/v2/subscribe/"+n.subscribeKey+"/"+p.default.encodeString(s)+"/0"}function a(e){return e.config.getSubscribeTimeout()}function u(){return!0}function c(e,t){var n=e.config,r=t.channelGroups,i=void 0===r?[]:r,s=t.timetoken,o=t.filterExpression,a=t.region,u={heartbeat:n.getPresenceTimeout()};return i.length>0&&(u["channel-group"]=i.join(",")),o&&o.length>0&&(u["filter-expr"]=o),s&&(u.tt=s),a&&(u.tr=a),u}function l(e,t){var n=[];t.m.forEach(function(e){var t={publishTimetoken:e.p.t,region:e.p.r},r={shard:parseInt(e.a,10),subscriptionMatch:e.b,channel:e.c,payload:e.d,flags:e.f,issuingClientId:e.i,subscribeKey:e.k,originationTimetoken:e.o,userMetadata:e.u,publishMetaData:t};n.push(r)});var r={timetoken:t.t.t,region:t.t.r};return{messages:n,metadata:r}}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.getURL=o,t.getRequestTimeout=a,t.isAuthSupported=u,t.prepareParams=c,t.handleResponse=l;var h=(n(8),n(16)),f=r(h),d=n(18),p=r(d)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n=this._maxSubDomain&&(this._currentSubDomain=1),e=this._currentSubDomain.toString(),this._providedFQDN.replace("pubsub","ps"+e)}},{key:"shiftStandardOrigin",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this._standardOrigin=this.nextOrigin(e),this._standardOrigin}},{key:"getStandardOrigin",value:function(){return this._standardOrigin}},{key:"POST",value:function(e,t,n,r){return this._modules.post(e,t,n,r)}},{key:"GET",value:function(e,t,n){return this._modules.get(e,t,n)}},{key:"_detectErrorCategory",value:function(e){if("ENOTFOUND"===e.code)return u.default.PNNetworkIssuesCategory;if("ECONNREFUSED"===e.code)return u.default.PNNetworkIssuesCategory;if("ECONNRESET"===e.code)return u.default.PNNetworkIssuesCategory;if("EAI_AGAIN"===e.code)return u.default.PNNetworkIssuesCategory;if(0===e.status||e.hasOwnProperty("status")&&void 0===e.status)return u.default.PNNetworkIssuesCategory;if(e.timeout)return u.default.PNTimeoutCategory;if(e.response){if(e.response.badRequest)return u.default.PNBadRequestCategory;if(e.response.forbidden)return u.default.PNAccessDeniedCategory}return u.default.PNUnknownCategory}}]),e}());t.default=c,e.exports=t.default},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={get:function(e){try{return localStorage.getItem(e)}catch(e){return null}},set:function(e,t){try{return localStorage.setItem(e,t)}catch(e){return null}}},e.exports=t.default},function(e,t,n){"use strict";function r(e){var t=(new Date).getTime(),n=(new Date).toISOString(),r=function(){return console&&console.log?console:window&&window.console&&window.console.log?window.console:console}();r.log("<<<<<"),r.log("["+n+"]","\n",e.url,"\n",e.qs),r.log("-----"),e.on("response",function(n){var i=(new Date).getTime(),s=i-t,o=(new Date).toISOString();r.log(">>>>>>"),r.log("["+o+" / "+s+"]","\n",e.url,"\n",e.qs,"\n",n.text),r.log("-----")})}function i(e,t,n){var i=this;return this._config.logVerbosity&&(e=e.use(r)),this._config.proxy&&this._modules.proxy&&(e=this._modules.proxy.call(this,e)),this._config.keepAlive&&this._modules.keepAlive&&(e=this._modules.keepAlive(e)),e.timeout(t.timeout).end(function(e,r){var s={};if(s.error=null!==e,s.operation=t.operation,r&&r.status&&(s.statusCode=r.status),e)return s.errorData=e,s.category=i._detectErrorCategory(e),n(s,null);var o=JSON.parse(r.text);return o.error&&1===o.error&&o.status&&o.message&&o.service?(s.errorData=o,s.statusCode=o.status,s.error=!0,s.category=i._detectErrorCategory(s),n(s,null)):n(s,o)})}function s(e,t,n){var r=u.default.get(this.getStandardOrigin()+t.url).query(e);return i.call(this,r,t,n)}function o(e,t,n,r){var s=u.default.post(this.getStandardOrigin()+n.url).query(e).send(t);return i.call(this,s,n,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.get=s,t.post=o;var a=n(44),u=function(e){return e&&e.__esModule?e:{default:e}}(a);n(8)},function(e,t,n){function r(){}function i(e){if(!v(e))return e;var t=[];for(var n in e)s(t,n,e[n]);return t.join("&")}function s(e,t,n){if(null!=n)if(Array.isArray(n))n.forEach(function(n){s(e,t,n)});else if(v(n))for(var r in n)s(e,t+"["+r+"]",n[r]);else e.push(encodeURIComponent(t)+"="+encodeURIComponent(n));else null===n&&e.push(encodeURIComponent(t))}function o(e){for(var t,n,r={},i=e.split("&"),s=0,o=i.length;s=300)&&(r=new Error(t.statusText||"Unsuccessful HTTP response"),r.original=e,r.response=t,r.status=t.status)}catch(e){r=e}r?n.callback(r,t):n.callback(null,t)})}function d(e,t){var n=b("DELETE",e);return t&&n.end(t),n}var p;"undefined"!=typeof window?p=window:"undefined"!=typeof self?p=self:(console.warn("Using browser-only version of superagent in non-browser environment"),p=this);var g=n(45),y=n(46),v=n(47),b=e.exports=n(48).bind(null,f);b.getXHR=function(){if(!(!p.XMLHttpRequest||p.location&&"file:"==p.location.protocol&&p.ActiveXObject))return new XMLHttpRequest;try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(e){}throw Error("Browser-only verison of superagent could not find XHR")};var _="".trim?function(e){return e.trim()}:function(e){return e.replace(/(^\s*|\s*$)/g,"")};b.serializeObject=i,b.parseString=o,b.types={html:"text/html",json:"application/json",xml:"application/xml",urlencoded:"application/x-www-form-urlencoded",form:"application/x-www-form-urlencoded","form-data":"application/x-www-form-urlencoded"},b.serialize={"application/x-www-form-urlencoded":i,"application/json":JSON.stringify},b.parse={"application/x-www-form-urlencoded":o,"application/json":JSON.parse},h.prototype.get=function(e){return this.header[e.toLowerCase()]},h.prototype._setHeaderProperties=function(e){var t=this.header["content-type"]||"";this.type=c(t);var n=l(t);for(var r in n)this[r]=n[r]},h.prototype._parseBody=function(e){var t=b.parse[this.type];return!t&&u(this.type)&&(t=b.parse["application/json"]),t&&e&&(e.length||e instanceof Object)?t(e):null},h.prototype._setStatusProperties=function(e){1223===e&&(e=204);var t=e/100|0;this.status=this.statusCode=e,this.statusType=t,this.info=1==t,this.ok=2==t,this.clientError=4==t,this.serverError=5==t,this.error=(4==t||5==t)&&this.toError(),this.accepted=202==e,this.noContent=204==e,this.badRequest=400==e,this.unauthorized=401==e,this.notAcceptable=406==e,this.notFound=404==e,this.forbidden=403==e},h.prototype.toError=function(){var e=this.req,t=e.method,n=e.url,r="cannot "+t+" "+n+" ("+this.status+")",i=new Error(r);return i.status=this.status,i.method=t,i.url=n,i},b.Response=h,g(f.prototype);for(var m in y)f.prototype[m]=y[m];f.prototype.type=function(e){return this.set("Content-Type",b.types[e]||e),this},f.prototype.responseType=function(e){return this._responseType=e,this},f.prototype.accept=function(e){return this.set("Accept",b.types[e]||e),this},f.prototype.auth=function(e,t,n){switch(n||(n={type:"basic"}),n.type){case"basic":var r=btoa(e+":"+t);this.set("Authorization","Basic "+r);break;case"auto":this.username=e,this.password=t}return this},f.prototype.query=function(e){return"string"!=typeof e&&(e=i(e)),e&&this._query.push(e),this},f.prototype.attach=function(e,t,n){return this._getFormData().append(e,t,n||t.name),this},f.prototype._getFormData=function(){return this._formData||(this._formData=new p.FormData),this._formData},f.prototype.callback=function(e,t){var n=this._callback;this.clearTimeout(),n(e,t)},f.prototype.crossDomainError=function(){var e=new Error("Request has been terminated\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.");e.crossDomain=!0,e.status=this.status,e.method=this.method,e.url=this.url,this.callback(e)},f.prototype._timeoutError=function(){var e=this._timeout,t=new Error("timeout of "+e+"ms exceeded");t.timeout=e,this.callback(t)},f.prototype._appendQueryString=function(){var e=this._query.join("&");e&&(this.url+=~this.url.indexOf("?")?"&"+e:"?"+e)},f.prototype.end=function(e){var t=this,n=this.xhr=b.getXHR(),i=this._timeout,s=this._formData||this._data;this._callback=e||r,n.onreadystatechange=function(){if(4==n.readyState){var e;try{e=n.status}catch(t){e=0}if(0==e){if(t.timedout)return t._timeoutError();if(t._aborted)return;return t.crossDomainError()}t.emit("end")}};var o=function(e,n){n.total>0&&(n.percent=n.loaded/n.total*100),n.direction=e,t.emit("progress",n)};if(this.hasListeners("progress"))try{n.onprogress=o.bind(null,"download"),n.upload&&(n.upload.onprogress=o.bind(null,"upload"))}catch(e){}if(i&&!this._timer&&(this._timer=setTimeout(function(){t.timedout=!0,t.abort()},i)),this._appendQueryString(),this.username&&this.password?n.open(this.method,this.url,!0,this.username,this.password):n.open(this.method,this.url,!0),this._withCredentials&&(n.withCredentials=!0),"GET"!=this.method&&"HEAD"!=this.method&&"string"!=typeof s&&!this._isHost(s)){var a=this._header["content-type"],c=this._serializer||b.serialize[a?a.split(";")[0]:""];!c&&u(a)&&(c=b.serialize["application/json"]),c&&(s=c(s))}for(var l in this.header)null!=this.header[l]&&n.setRequestHeader(l,this.header[l]);return this._responseType&&(n.responseType=this._responseType),this.emit("request",this),n.send(void 0!==s?s:null),this},b.Request=f,b.get=function(e,t,n){var r=b("GET",e);return"function"==typeof t&&(n=t,t=null),t&&r.query(t),n&&r.end(n),r},b.head=function(e,t,n){var r=b("HEAD",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r},b.options=function(e,t,n){var r=b("OPTIONS",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r},b.del=d,b.delete=d,b.patch=function(e,t,n){var r=b("PATCH",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r},b.post=function(e,t,n){var r=b("POST",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r},b.put=function(e,t,n){var r=b("PUT",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r}},function(e,t,n){function r(e){if(e)return i(e)}function i(e){for(var t in r.prototype)e[t]=r.prototype[t];return e}e.exports=r,r.prototype.on=r.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},r.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this},r.prototype.off=r.prototype.removeListener=r.prototype.removeAllListeners=r.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var r,i=0;i { .pipe(gulp.dest('dist/titanium')); }); +gulp.task('compile_nativescript', () => { + return gulp.src('src/nativescript/index.js') + .pipe(gulpWebpack(webpackConfig)) + .pipe(gulp.dest('dist/nativescript')); +}); + gulp.task('create_version', () => { return gulp.src('dist/web/pubnub.js') .pipe(rename(`pubnub.${packageJSON.version}.js`)) @@ -81,6 +87,13 @@ gulp.task('uglify_titanium', () => { .pipe(gulp.dest('dist/titanium')); }); +gulp.task('uglify_nativescript', () => { + return gulp.src('dist/nativescript/pubnub.js') + .pipe(uglify({ mangle: true, compress: true })) + .pipe(rename('pubnub.min.js')) + .pipe(gulp.dest('dist/nativescript')); +}); + gulp.task('lint_code', [], () => { return gulp.src(['src/**/*.js']) .pipe(eslint()) @@ -137,21 +150,27 @@ gulp.task('test_react-native', () => { .pipe(gulpIstanbul.writeReports({ reporters: ['json', 'lcov', 'text'] })); }); +gulp.task('test_nativescript', () => { + return gulp.src('test/dist/nativescript.test.js', { read: false }) + .pipe(mocha({ reporter: 'spec' })) + .pipe(gulpIstanbul.writeReports({ reporters: ['json', 'lcov', 'text'] })); +}); + gulp.task('test_release', () => { return gulp.src('test/release/**/*.test.js', { read: false }) .pipe(mocha({ reporter: 'spec' })); }); -gulp.task('test', (done) => { - runSequence('pre-test', 'test_node', 'test_web', 'test_titanium', 'test_react-native', 'test_release', 'validate', () => { +gulp.task('test', () => { + runSequence('pre-test', 'test_node', 'test_web', 'test_titanium', 'test_react-native', 'test_nativescript', 'test_release', 'validate', () => { process.exit(); }); }); gulp.task('webpack', (done) => { - runSequence('compile_web', 'compile_titanium', done); + runSequence('compile_web', 'compile_titanium', 'compile_nativescript', done); }); gulp.task('compile', (done) => { - runSequence('clean', 'babel', 'webpack', 'uglify_web', 'uglify_titanium', 'create_version', 'create_version_gzip', done); + runSequence('clean', 'babel', 'webpack', 'uglify_web', 'uglify_titanium', 'uglify_nativescript', 'create_version', 'create_version_gzip', done); }); diff --git a/lib/core/components/config.js b/lib/core/components/config.js index ec3042157..fa76ecbfe 100644 --- a/lib/core/components/config.js +++ b/lib/core/components/config.js @@ -172,7 +172,7 @@ var _class = function () { }, { key: 'getVersion', value: function getVersion() { - return '4.15.0'; + return '4.15.1'; } }, { key: '_decideUUID', diff --git a/lib/core/components/config.js.map b/lib/core/components/config.js.map index 2bf556651..02e4fb3ce 100644 --- a/lib/core/components/config.js.map +++ b/lib/core/components/config.js.map @@ -1 +1 @@ -{"version":3,"sources":["core/components/config.js"],"names":["setup","db","_db","instanceId","v4","secretKey","secret_key","subscribeKey","subscribe_key","publishKey","publish_key","sdkFamily","partnerId","setAuthKey","authKey","setCipherKey","cipherKey","setFilterExpression","filterExpression","origin","secure","ssl","restore","proxy","keepAlive","keepAliveSettings","autoNetworkDetection","dedupeOnSubscribe","maximumCacheSize","customEncrypt","customDecrypt","location","protocol","logVerbosity","suppressLeaveEvents","announceFailedHeartbeats","announceSuccessfulHeartbeats","useInstanceId","useRequestId","requestMessageCountThreshold","setTransactionTimeout","transactionalRequestTimeout","setSubscribeTimeout","subscribeRequestTimeout","setSendBeaconConfig","useSendBeacon","setPresenceTimeout","presenceTimeout","heartbeatInterval","setHeartbeatInterval","setUUID","_decideUUID","uuid","val","UUID","set","_presenceTimeout","_heartbeatInterval","_subscribeRequestTimeout","_transactionalRequestTimeout","_useSendBeacon","providedUUID","get"],"mappings":";;;;;;;;AAGA;;;;AACA;;;;;;;AAyHE,wBAAiD;AAAA,QAAnCA,KAAmC,QAAnCA,KAAmC;AAAA,QAA5BC,EAA4B,QAA5BA,EAA4B;;AAAA;;AAC/C,SAAKC,GAAL,GAAWD,EAAX;;AAEA,SAAKE,UAAL,WAAwB,eAAcC,EAAd,EAAxB;AACA,SAAKC,SAAL,GAAiBL,MAAMK,SAAN,IAAmBL,MAAMM,UAA1C;AACA,SAAKC,YAAL,GAAoBP,MAAMO,YAAN,IAAsBP,MAAMQ,aAAhD;AACA,SAAKC,UAAL,GAAkBT,MAAMS,UAAN,IAAoBT,MAAMU,WAA5C;AACA,SAAKC,SAAL,GAAiBX,MAAMW,SAAvB;AACA,SAAKC,SAAL,GAAiBZ,MAAMY,SAAvB;AACA,SAAKC,UAAL,CAAgBb,MAAMc,OAAtB;AACA,SAAKC,YAAL,CAAkBf,MAAMgB,SAAxB;;AAEA,SAAKC,mBAAL,CAAyBjB,MAAMkB,gBAA/B;;AAEA,SAAKC,MAAL,GAAcnB,MAAMmB,MAAN,IAAgB,kBAA9B;AACA,SAAKC,MAAL,GAAcpB,MAAMqB,GAAN,IAAa,KAA3B;AACA,SAAKC,OAAL,GAAetB,MAAMsB,OAAN,IAAiB,KAAhC;AACA,SAAKC,KAAL,GAAavB,MAAMuB,KAAnB;AACA,SAAKC,SAAL,GAAiBxB,MAAMwB,SAAvB;AACA,SAAKC,iBAAL,GAAyBzB,MAAMyB,iBAA/B;AACA,SAAKC,oBAAL,GAA4B1B,MAAM0B,oBAAN,IAA8B,KAA1D;;AAEA,SAAKC,iBAAL,GAAyB3B,MAAM2B,iBAAN,IAA2B,KAApD;AACA,SAAKC,gBAAL,GAAwB5B,MAAM4B,gBAAN,IAA0B,GAAlD;;AAEA,SAAKC,aAAL,GAAqB7B,MAAM6B,aAA3B;AACA,SAAKC,aAAL,GAAqB9B,MAAM8B,aAA3B;;AAGA,QAAI,OAAOC,QAAP,KAAoB,WAApB,IAAmCA,SAASC,QAAT,KAAsB,QAA7D,EAAuE;AACrE,WAAKZ,MAAL,GAAc,IAAd;AACD;;AAED,SAAKa,YAAL,GAAoBjC,MAAMiC,YAAN,IAAsB,KAA1C;AACA,SAAKC,mBAAL,GAA2BlC,MAAMkC,mBAAN,IAA6B,KAAxD;;AAEA,SAAKC,wBAAL,GAAgCnC,MAAMmC,wBAAN,IAAkC,IAAlE;AACA,SAAKC,4BAAL,GAAoCpC,MAAMoC,4BAAN,IAAsC,KAA1E;;AAEA,SAAKC,aAAL,GAAqBrC,MAAMqC,aAAN,IAAuB,KAA5C;AACA,SAAKC,YAAL,GAAoBtC,MAAMsC,YAAN,IAAsB,KAA1C;;AAEA,SAAKC,4BAAL,GAAoCvC,MAAMuC,4BAA1C;;AAGA,SAAKC,qBAAL,CAA2BxC,MAAMyC,2BAAN,IAAqC,KAAK,IAArE;;AAEA,SAAKC,mBAAL,CAAyB1C,MAAM2C,uBAAN,IAAiC,MAAM,IAAhE;;AAEA,SAAKC,mBAAL,CAAyB5C,MAAM6C,aAAN,IAAuB,IAAhD;;AAEA,SAAKC,kBAAL,CAAwB9C,MAAM+C,eAAN,IAAyB,GAAjD;;AAEA,QAAI/C,MAAMgD,iBAAV,EAA6B;AAC3B,WAAKC,oBAAL,CAA0BjD,MAAMgD,iBAAhC;AACD;;AAED,SAAKE,OAAL,CAAa,KAAKC,WAAL,CAAiBnD,MAAMoD,IAAvB,CAAb;AACD;;;;iCAGoB;AAAE,aAAO,KAAKtC,OAAZ;AAAsB;;;+BAClCuC,G,EAAmB;AAAE,WAAKvC,OAAL,GAAeuC,GAAf,CAAoB,OAAO,IAAP;AAAc;;;iCACrDA,G,EAAmB;AAAE,WAAKrC,SAAL,GAAiBqC,GAAjB,CAAsB,OAAO,IAAP;AAAc;;;8BACpD;AAAE,aAAO,KAAKC,IAAZ;AAAmB;;;4BAC/BD,G,EAAmB;AACzB,UAAI,KAAKnD,GAAL,IAAY,KAAKA,GAAL,CAASqD,GAAzB,EAA8B,KAAKrD,GAAL,CAASqD,GAAT,CAAgB,KAAKhD,YAArB,WAAyC8C,GAAzC;AAC9B,WAAKC,IAAL,GAAYD,GAAZ;AACA,aAAO,IAAP;AACD;;;0CAE6B;AAAE,aAAO,KAAKnC,gBAAZ;AAA+B;;;wCAC3CmC,G,EAAmB;AAAE,WAAKnC,gBAAL,GAAwBmC,GAAxB,CAA6B,OAAO,IAAP;AAAc;;;yCAEvD;AAAE,aAAO,KAAKG,gBAAZ;AAA+B;;;uCAC3CH,G,EAAmB;AACpC,WAAKG,gBAAL,GAAwBH,GAAxB;AACA,WAAKJ,oBAAL,CAA2B,KAAKO,gBAAL,GAAwB,CAAzB,GAA8B,CAAxD;AACA,aAAO,IAAP;AACD;;;2CAE8B;AAAE,aAAO,KAAKC,kBAAZ;AAAiC;;;yCAC7CJ,G,EAAmB;AAAE,WAAKI,kBAAL,GAA0BJ,GAA1B,CAA+B,OAAO,IAAP;AAAc;;;0CAGzD;AAAE,aAAO,KAAKK,wBAAZ;AAAuC;;;wCACnDL,G,EAAmB;AAAE,WAAKK,wBAAL,GAAgCL,GAAhC,CAAqC,OAAO,IAAP;AAAc;;;4CAE5D;AAAE,aAAO,KAAKM,4BAAZ;AAA2C;;;0CACvDN,G,EAAmB;AAAE,WAAKM,4BAAL,GAAoCN,GAApC,CAAyC,OAAO,IAAP;AAAc;;;0CAEnE;AAAE,aAAO,KAAKO,cAAZ;AAA6B;;;wCAC1CP,G,EAAoB;AAAE,WAAKO,cAAL,GAAsBP,GAAtB,CAA2B,OAAO,IAAP;AAAc;;;iCAE9D;AACnB,aAAO,QAAP;AACD;;;gCAEWQ,Y,EAA8B;AAExC,UAAIA,YAAJ,EAAkB;AAChB,eAAOA,YAAP;AACD;;AAGD,UAAI,KAAK3D,GAAL,IAAY,KAAKA,GAAL,CAAS4D,GAArB,IAA4B,KAAK5D,GAAL,CAAS4D,GAAT,CAAgB,KAAKvD,YAArB,UAAhC,EAA0E;AACxE,eAAO,KAAKL,GAAL,CAAS4D,GAAT,CAAgB,KAAKvD,YAArB,UAAP;AACD;;AAGD,qBAAa,eAAcH,EAAd,EAAb;AACD","file":"config.js","sourcesContent":["/* @flow */\n/* global location */\n\nimport uuidGenerator from 'uuid';\nimport { InternalSetupStruct, DatabaseInterface, KeepAliveStruct } from '../flow_interfaces';\n\ntype ConfigConstructArgs = {\n setup: InternalSetupStruct,\n db: DatabaseInterface\n}\n\nexport default class {\n\n _db: DatabaseInterface;\n\n subscribeKey: string;\n publishKey: string;\n secretKey: string;\n cipherKey: string;\n authKey: string;\n UUID: string;\n\n proxy: string;\n\n /*\n if _useInstanceId is true, this instanceId will be added to all requests\n */\n instanceId: string;\n\n /*\n keep track of the SDK family for identifier generator\n */\n sdkFamily: string;\n\n /*\n If the SDK is operated by a partner, allow a custom pnsdk item for them.\n */\n partnerId: string;\n\n /*\n filter expression to pass along when subscribing.\n */\n filterExpression: string;\n /*\n configuration to supress leave events; when a presence leave is performed\n this configuration will disallow the leave event from happening\n */\n suppressLeaveEvents: boolean;\n\n /*\n use SSL for http requests?\n */\n secure: boolean;\n\n // Custom optional origin.\n origin: string;\n\n // log verbosity: true to output lots of info\n logVerbosity: boolean;\n\n // if instanceId config is true, the SDK will pass the unique instance identifier to the server as instanceId=\n useInstanceId: boolean;\n\n // if requestId config is true, the SDK will pass a unique request identifier with each request as request_id=\n useRequestId: boolean;\n\n // use connection keep-alive for http requests\n keepAlive: ?boolean;\n\n keepAliveSettings: ?KeepAliveStruct;\n\n // if autoNetworkDetection config is true, the SDK will emit NetworkUp and NetworkDown when there changes in the networking\n autoNetworkDetection: ?boolean;\n\n // alert when a heartbeat works out.\n announceSuccessfulHeartbeats: boolean;\n announceFailedHeartbeats: boolean;\n\n /*\n how long the server will wait before declaring that the client is gone.\n */\n _presenceTimeout: number;\n\n /*\n how often (in seconds) the client should announce its presence to server\n */\n _heartbeatInterval: number;\n\n /*\n how long to wait for the server when running the subscribe loop\n */\n _subscribeRequestTimeout: number;\n /*\n how long to wait for the server when making transactional requests\n */\n _transactionalRequestTimeout: number;\n /*\n use send beacon API when unsubscribing.\n https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon\n */\n _useSendBeacon: boolean;\n\n /*\n if set, the SDK will alert if more messages arrive in one subscribe than the theshold\n */\n requestMessageCountThreshold: number;\n\n /*\n Restore subscription list on disconnection.\n */\n restore: boolean;\n\n\n /*\n support for client deduping\n */\n dedupeOnSubscribe: boolean\n maximumCacheSize: number\n\n /*\n support customp encryption and decryption functions.\n */\n customEncrypt: Function // function to support custome encryption of messages\n customDecrypt: Function // function used to decrypt old version messages\n\n constructor({ setup, db } : ConfigConstructArgs) {\n this._db = db;\n\n this.instanceId = `pn-${uuidGenerator.v4()}`;\n this.secretKey = setup.secretKey || setup.secret_key;\n this.subscribeKey = setup.subscribeKey || setup.subscribe_key;\n this.publishKey = setup.publishKey || setup.publish_key;\n this.sdkFamily = setup.sdkFamily;\n this.partnerId = setup.partnerId;\n this.setAuthKey(setup.authKey);\n this.setCipherKey(setup.cipherKey);\n\n this.setFilterExpression(setup.filterExpression);\n\n this.origin = setup.origin || 'pubsub.pndsn.com';\n this.secure = setup.ssl || false;\n this.restore = setup.restore || false;\n this.proxy = setup.proxy;\n this.keepAlive = setup.keepAlive;\n this.keepAliveSettings = setup.keepAliveSettings;\n this.autoNetworkDetection = setup.autoNetworkDetection || false;\n\n this.dedupeOnSubscribe = setup.dedupeOnSubscribe || false;\n this.maximumCacheSize = setup.maximumCacheSize || 100;\n\n this.customEncrypt = setup.customEncrypt;\n this.customDecrypt = setup.customDecrypt;\n\n // if location config exist and we are in https, force secure to true.\n if (typeof location !== 'undefined' && location.protocol === 'https:') {\n this.secure = true;\n }\n\n this.logVerbosity = setup.logVerbosity || false;\n this.suppressLeaveEvents = setup.suppressLeaveEvents || false;\n\n this.announceFailedHeartbeats = setup.announceFailedHeartbeats || true;\n this.announceSuccessfulHeartbeats = setup.announceSuccessfulHeartbeats || false;\n\n this.useInstanceId = setup.useInstanceId || false;\n this.useRequestId = setup.useRequestId || false;\n\n this.requestMessageCountThreshold = setup.requestMessageCountThreshold;\n\n // set timeout to how long a transaction request will wait for the server (default 15 seconds)\n this.setTransactionTimeout(setup.transactionalRequestTimeout || 15 * 1000);\n // set timeout to how long a subscribe event loop will run (default 310 seconds)\n this.setSubscribeTimeout(setup.subscribeRequestTimeout || 310 * 1000);\n // set config on beacon (https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon) usage\n this.setSendBeaconConfig(setup.useSendBeacon || true);\n // how long the SDK will report the client to be alive before issuing a timeout\n this.setPresenceTimeout(setup.presenceTimeout || 300);\n\n if (setup.heartbeatInterval) {\n this.setHeartbeatInterval(setup.heartbeatInterval);\n }\n\n this.setUUID(this._decideUUID(setup.uuid)); // UUID decision depends on subKey.\n }\n\n // exposed setters\n getAuthKey(): string { return this.authKey; }\n setAuthKey(val: string): this { this.authKey = val; return this; }\n setCipherKey(val: string): this { this.cipherKey = val; return this; }\n getUUID(): string { return this.UUID; }\n setUUID(val: string): this {\n if (this._db && this._db.set) this._db.set(`${this.subscribeKey}uuid`, val);\n this.UUID = val;\n return this;\n }\n\n getFilterExpression(): string { return this.filterExpression; }\n setFilterExpression(val: string): this { this.filterExpression = val; return this; }\n\n getPresenceTimeout(): number { return this._presenceTimeout; }\n setPresenceTimeout(val: number): this {\n this._presenceTimeout = val;\n this.setHeartbeatInterval((this._presenceTimeout / 2) - 1);\n return this;\n }\n\n getHeartbeatInterval(): number { return this._heartbeatInterval; }\n setHeartbeatInterval(val: number): this { this._heartbeatInterval = val; return this; }\n\n // deprecated setters.\n getSubscribeTimeout(): number { return this._subscribeRequestTimeout; }\n setSubscribeTimeout(val: number): this { this._subscribeRequestTimeout = val; return this; }\n\n getTransactionTimeout(): number { return this._transactionalRequestTimeout; }\n setTransactionTimeout(val: number): this { this._transactionalRequestTimeout = val; return this; }\n\n isSendBeaconEnabled(): boolean { return this._useSendBeacon; }\n setSendBeaconConfig(val: boolean): this { this._useSendBeacon = val; return this; }\n\n getVersion(): string {\n return '4.15.0';\n }\n\n _decideUUID(providedUUID: string): string {\n // if the uuid was provided by setup, use this UUID.\n if (providedUUID) {\n return providedUUID;\n }\n\n // if the database module is enabled and we have something saved, use this.\n if (this._db && this._db.get && this._db.get(`${this.subscribeKey}uuid`)) {\n return this._db.get(`${this.subscribeKey}uuid`);\n }\n\n // randomize the UUID and push to storage\n return `pn-${uuidGenerator.v4()}`;\n }\n\n}\n"]} \ No newline at end of file +{"version":3,"sources":["core/components/config.js"],"names":["setup","db","_db","instanceId","v4","secretKey","secret_key","subscribeKey","subscribe_key","publishKey","publish_key","sdkFamily","partnerId","setAuthKey","authKey","setCipherKey","cipherKey","setFilterExpression","filterExpression","origin","secure","ssl","restore","proxy","keepAlive","keepAliveSettings","autoNetworkDetection","dedupeOnSubscribe","maximumCacheSize","customEncrypt","customDecrypt","location","protocol","logVerbosity","suppressLeaveEvents","announceFailedHeartbeats","announceSuccessfulHeartbeats","useInstanceId","useRequestId","requestMessageCountThreshold","setTransactionTimeout","transactionalRequestTimeout","setSubscribeTimeout","subscribeRequestTimeout","setSendBeaconConfig","useSendBeacon","setPresenceTimeout","presenceTimeout","heartbeatInterval","setHeartbeatInterval","setUUID","_decideUUID","uuid","val","UUID","set","_presenceTimeout","_heartbeatInterval","_subscribeRequestTimeout","_transactionalRequestTimeout","_useSendBeacon","providedUUID","get"],"mappings":";;;;;;;;AAGA;;;;AACA;;;;;;;AAyHE,wBAAiD;AAAA,QAAnCA,KAAmC,QAAnCA,KAAmC;AAAA,QAA5BC,EAA4B,QAA5BA,EAA4B;;AAAA;;AAC/C,SAAKC,GAAL,GAAWD,EAAX;;AAEA,SAAKE,UAAL,WAAwB,eAAcC,EAAd,EAAxB;AACA,SAAKC,SAAL,GAAiBL,MAAMK,SAAN,IAAmBL,MAAMM,UAA1C;AACA,SAAKC,YAAL,GAAoBP,MAAMO,YAAN,IAAsBP,MAAMQ,aAAhD;AACA,SAAKC,UAAL,GAAkBT,MAAMS,UAAN,IAAoBT,MAAMU,WAA5C;AACA,SAAKC,SAAL,GAAiBX,MAAMW,SAAvB;AACA,SAAKC,SAAL,GAAiBZ,MAAMY,SAAvB;AACA,SAAKC,UAAL,CAAgBb,MAAMc,OAAtB;AACA,SAAKC,YAAL,CAAkBf,MAAMgB,SAAxB;;AAEA,SAAKC,mBAAL,CAAyBjB,MAAMkB,gBAA/B;;AAEA,SAAKC,MAAL,GAAcnB,MAAMmB,MAAN,IAAgB,kBAA9B;AACA,SAAKC,MAAL,GAAcpB,MAAMqB,GAAN,IAAa,KAA3B;AACA,SAAKC,OAAL,GAAetB,MAAMsB,OAAN,IAAiB,KAAhC;AACA,SAAKC,KAAL,GAAavB,MAAMuB,KAAnB;AACA,SAAKC,SAAL,GAAiBxB,MAAMwB,SAAvB;AACA,SAAKC,iBAAL,GAAyBzB,MAAMyB,iBAA/B;AACA,SAAKC,oBAAL,GAA4B1B,MAAM0B,oBAAN,IAA8B,KAA1D;;AAEA,SAAKC,iBAAL,GAAyB3B,MAAM2B,iBAAN,IAA2B,KAApD;AACA,SAAKC,gBAAL,GAAwB5B,MAAM4B,gBAAN,IAA0B,GAAlD;;AAEA,SAAKC,aAAL,GAAqB7B,MAAM6B,aAA3B;AACA,SAAKC,aAAL,GAAqB9B,MAAM8B,aAA3B;;AAGA,QAAI,OAAOC,QAAP,KAAoB,WAApB,IAAmCA,SAASC,QAAT,KAAsB,QAA7D,EAAuE;AACrE,WAAKZ,MAAL,GAAc,IAAd;AACD;;AAED,SAAKa,YAAL,GAAoBjC,MAAMiC,YAAN,IAAsB,KAA1C;AACA,SAAKC,mBAAL,GAA2BlC,MAAMkC,mBAAN,IAA6B,KAAxD;;AAEA,SAAKC,wBAAL,GAAgCnC,MAAMmC,wBAAN,IAAkC,IAAlE;AACA,SAAKC,4BAAL,GAAoCpC,MAAMoC,4BAAN,IAAsC,KAA1E;;AAEA,SAAKC,aAAL,GAAqBrC,MAAMqC,aAAN,IAAuB,KAA5C;AACA,SAAKC,YAAL,GAAoBtC,MAAMsC,YAAN,IAAsB,KAA1C;;AAEA,SAAKC,4BAAL,GAAoCvC,MAAMuC,4BAA1C;;AAGA,SAAKC,qBAAL,CAA2BxC,MAAMyC,2BAAN,IAAqC,KAAK,IAArE;;AAEA,SAAKC,mBAAL,CAAyB1C,MAAM2C,uBAAN,IAAiC,MAAM,IAAhE;;AAEA,SAAKC,mBAAL,CAAyB5C,MAAM6C,aAAN,IAAuB,IAAhD;;AAEA,SAAKC,kBAAL,CAAwB9C,MAAM+C,eAAN,IAAyB,GAAjD;;AAEA,QAAI/C,MAAMgD,iBAAV,EAA6B;AAC3B,WAAKC,oBAAL,CAA0BjD,MAAMgD,iBAAhC;AACD;;AAED,SAAKE,OAAL,CAAa,KAAKC,WAAL,CAAiBnD,MAAMoD,IAAvB,CAAb;AACD;;;;iCAGoB;AAAE,aAAO,KAAKtC,OAAZ;AAAsB;;;+BAClCuC,G,EAAmB;AAAE,WAAKvC,OAAL,GAAeuC,GAAf,CAAoB,OAAO,IAAP;AAAc;;;iCACrDA,G,EAAmB;AAAE,WAAKrC,SAAL,GAAiBqC,GAAjB,CAAsB,OAAO,IAAP;AAAc;;;8BACpD;AAAE,aAAO,KAAKC,IAAZ;AAAmB;;;4BAC/BD,G,EAAmB;AACzB,UAAI,KAAKnD,GAAL,IAAY,KAAKA,GAAL,CAASqD,GAAzB,EAA8B,KAAKrD,GAAL,CAASqD,GAAT,CAAgB,KAAKhD,YAArB,WAAyC8C,GAAzC;AAC9B,WAAKC,IAAL,GAAYD,GAAZ;AACA,aAAO,IAAP;AACD;;;0CAE6B;AAAE,aAAO,KAAKnC,gBAAZ;AAA+B;;;wCAC3CmC,G,EAAmB;AAAE,WAAKnC,gBAAL,GAAwBmC,GAAxB,CAA6B,OAAO,IAAP;AAAc;;;yCAEvD;AAAE,aAAO,KAAKG,gBAAZ;AAA+B;;;uCAC3CH,G,EAAmB;AACpC,WAAKG,gBAAL,GAAwBH,GAAxB;AACA,WAAKJ,oBAAL,CAA2B,KAAKO,gBAAL,GAAwB,CAAzB,GAA8B,CAAxD;AACA,aAAO,IAAP;AACD;;;2CAE8B;AAAE,aAAO,KAAKC,kBAAZ;AAAiC;;;yCAC7CJ,G,EAAmB;AAAE,WAAKI,kBAAL,GAA0BJ,GAA1B,CAA+B,OAAO,IAAP;AAAc;;;0CAGzD;AAAE,aAAO,KAAKK,wBAAZ;AAAuC;;;wCACnDL,G,EAAmB;AAAE,WAAKK,wBAAL,GAAgCL,GAAhC,CAAqC,OAAO,IAAP;AAAc;;;4CAE5D;AAAE,aAAO,KAAKM,4BAAZ;AAA2C;;;0CACvDN,G,EAAmB;AAAE,WAAKM,4BAAL,GAAoCN,GAApC,CAAyC,OAAO,IAAP;AAAc;;;0CAEnE;AAAE,aAAO,KAAKO,cAAZ;AAA6B;;;wCAC1CP,G,EAAoB;AAAE,WAAKO,cAAL,GAAsBP,GAAtB,CAA2B,OAAO,IAAP;AAAc;;;iCAE9D;AACnB,aAAO,QAAP;AACD;;;gCAEWQ,Y,EAA8B;AAExC,UAAIA,YAAJ,EAAkB;AAChB,eAAOA,YAAP;AACD;;AAGD,UAAI,KAAK3D,GAAL,IAAY,KAAKA,GAAL,CAAS4D,GAArB,IAA4B,KAAK5D,GAAL,CAAS4D,GAAT,CAAgB,KAAKvD,YAArB,UAAhC,EAA0E;AACxE,eAAO,KAAKL,GAAL,CAAS4D,GAAT,CAAgB,KAAKvD,YAArB,UAAP;AACD;;AAGD,qBAAa,eAAcH,EAAd,EAAb;AACD","file":"config.js","sourcesContent":["/* @flow */\n/* global location */\n\nimport uuidGenerator from 'uuid';\nimport { InternalSetupStruct, DatabaseInterface, KeepAliveStruct } from '../flow_interfaces';\n\ntype ConfigConstructArgs = {\n setup: InternalSetupStruct,\n db: DatabaseInterface\n}\n\nexport default class {\n\n _db: DatabaseInterface;\n\n subscribeKey: string;\n publishKey: string;\n secretKey: string;\n cipherKey: string;\n authKey: string;\n UUID: string;\n\n proxy: string;\n\n /*\n if _useInstanceId is true, this instanceId will be added to all requests\n */\n instanceId: string;\n\n /*\n keep track of the SDK family for identifier generator\n */\n sdkFamily: string;\n\n /*\n If the SDK is operated by a partner, allow a custom pnsdk item for them.\n */\n partnerId: string;\n\n /*\n filter expression to pass along when subscribing.\n */\n filterExpression: string;\n /*\n configuration to supress leave events; when a presence leave is performed\n this configuration will disallow the leave event from happening\n */\n suppressLeaveEvents: boolean;\n\n /*\n use SSL for http requests?\n */\n secure: boolean;\n\n // Custom optional origin.\n origin: string;\n\n // log verbosity: true to output lots of info\n logVerbosity: boolean;\n\n // if instanceId config is true, the SDK will pass the unique instance identifier to the server as instanceId=\n useInstanceId: boolean;\n\n // if requestId config is true, the SDK will pass a unique request identifier with each request as request_id=\n useRequestId: boolean;\n\n // use connection keep-alive for http requests\n keepAlive: ?boolean;\n\n keepAliveSettings: ?KeepAliveStruct;\n\n // if autoNetworkDetection config is true, the SDK will emit NetworkUp and NetworkDown when there changes in the networking\n autoNetworkDetection: ?boolean;\n\n // alert when a heartbeat works out.\n announceSuccessfulHeartbeats: boolean;\n announceFailedHeartbeats: boolean;\n\n /*\n how long the server will wait before declaring that the client is gone.\n */\n _presenceTimeout: number;\n\n /*\n how often (in seconds) the client should announce its presence to server\n */\n _heartbeatInterval: number;\n\n /*\n how long to wait for the server when running the subscribe loop\n */\n _subscribeRequestTimeout: number;\n /*\n how long to wait for the server when making transactional requests\n */\n _transactionalRequestTimeout: number;\n /*\n use send beacon API when unsubscribing.\n https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon\n */\n _useSendBeacon: boolean;\n\n /*\n if set, the SDK will alert if more messages arrive in one subscribe than the theshold\n */\n requestMessageCountThreshold: number;\n\n /*\n Restore subscription list on disconnection.\n */\n restore: boolean;\n\n\n /*\n support for client deduping\n */\n dedupeOnSubscribe: boolean\n maximumCacheSize: number\n\n /*\n support customp encryption and decryption functions.\n */\n customEncrypt: Function // function to support custome encryption of messages\n customDecrypt: Function // function used to decrypt old version messages\n\n constructor({ setup, db } : ConfigConstructArgs) {\n this._db = db;\n\n this.instanceId = `pn-${uuidGenerator.v4()}`;\n this.secretKey = setup.secretKey || setup.secret_key;\n this.subscribeKey = setup.subscribeKey || setup.subscribe_key;\n this.publishKey = setup.publishKey || setup.publish_key;\n this.sdkFamily = setup.sdkFamily;\n this.partnerId = setup.partnerId;\n this.setAuthKey(setup.authKey);\n this.setCipherKey(setup.cipherKey);\n\n this.setFilterExpression(setup.filterExpression);\n\n this.origin = setup.origin || 'pubsub.pndsn.com';\n this.secure = setup.ssl || false;\n this.restore = setup.restore || false;\n this.proxy = setup.proxy;\n this.keepAlive = setup.keepAlive;\n this.keepAliveSettings = setup.keepAliveSettings;\n this.autoNetworkDetection = setup.autoNetworkDetection || false;\n\n this.dedupeOnSubscribe = setup.dedupeOnSubscribe || false;\n this.maximumCacheSize = setup.maximumCacheSize || 100;\n\n this.customEncrypt = setup.customEncrypt;\n this.customDecrypt = setup.customDecrypt;\n\n // if location config exist and we are in https, force secure to true.\n if (typeof location !== 'undefined' && location.protocol === 'https:') {\n this.secure = true;\n }\n\n this.logVerbosity = setup.logVerbosity || false;\n this.suppressLeaveEvents = setup.suppressLeaveEvents || false;\n\n this.announceFailedHeartbeats = setup.announceFailedHeartbeats || true;\n this.announceSuccessfulHeartbeats = setup.announceSuccessfulHeartbeats || false;\n\n this.useInstanceId = setup.useInstanceId || false;\n this.useRequestId = setup.useRequestId || false;\n\n this.requestMessageCountThreshold = setup.requestMessageCountThreshold;\n\n // set timeout to how long a transaction request will wait for the server (default 15 seconds)\n this.setTransactionTimeout(setup.transactionalRequestTimeout || 15 * 1000);\n // set timeout to how long a subscribe event loop will run (default 310 seconds)\n this.setSubscribeTimeout(setup.subscribeRequestTimeout || 310 * 1000);\n // set config on beacon (https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon) usage\n this.setSendBeaconConfig(setup.useSendBeacon || true);\n // how long the SDK will report the client to be alive before issuing a timeout\n this.setPresenceTimeout(setup.presenceTimeout || 300);\n\n if (setup.heartbeatInterval) {\n this.setHeartbeatInterval(setup.heartbeatInterval);\n }\n\n this.setUUID(this._decideUUID(setup.uuid)); // UUID decision depends on subKey.\n }\n\n // exposed setters\n getAuthKey(): string { return this.authKey; }\n setAuthKey(val: string): this { this.authKey = val; return this; }\n setCipherKey(val: string): this { this.cipherKey = val; return this; }\n getUUID(): string { return this.UUID; }\n setUUID(val: string): this {\n if (this._db && this._db.set) this._db.set(`${this.subscribeKey}uuid`, val);\n this.UUID = val;\n return this;\n }\n\n getFilterExpression(): string { return this.filterExpression; }\n setFilterExpression(val: string): this { this.filterExpression = val; return this; }\n\n getPresenceTimeout(): number { return this._presenceTimeout; }\n setPresenceTimeout(val: number): this {\n this._presenceTimeout = val;\n this.setHeartbeatInterval((this._presenceTimeout / 2) - 1);\n return this;\n }\n\n getHeartbeatInterval(): number { return this._heartbeatInterval; }\n setHeartbeatInterval(val: number): this { this._heartbeatInterval = val; return this; }\n\n // deprecated setters.\n getSubscribeTimeout(): number { return this._subscribeRequestTimeout; }\n setSubscribeTimeout(val: number): this { this._subscribeRequestTimeout = val; return this; }\n\n getTransactionTimeout(): number { return this._transactionalRequestTimeout; }\n setTransactionTimeout(val: number): this { this._transactionalRequestTimeout = val; return this; }\n\n isSendBeaconEnabled(): boolean { return this._useSendBeacon; }\n setSendBeaconConfig(val: boolean): this { this._useSendBeacon = val; return this; }\n\n getVersion(): string {\n return '4.15.1';\n }\n\n _decideUUID(providedUUID: string): string {\n // if the uuid was provided by setup, use this UUID.\n if (providedUUID) {\n return providedUUID;\n }\n\n // if the database module is enabled and we have something saved, use this.\n if (this._db && this._db.get && this._db.get(`${this.subscribeKey}uuid`)) {\n return this._db.get(`${this.subscribeKey}uuid`);\n }\n\n // randomize the UUID and push to storage\n return `pn-${uuidGenerator.v4()}`;\n }\n\n}\n"]} \ No newline at end of file diff --git a/lib/nativescript/index.js b/lib/nativescript/index.js new file mode 100644 index 000000000..e35a25cbd --- /dev/null +++ b/lib/nativescript/index.js @@ -0,0 +1,48 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _pubnubCommon = require('../core/pubnub-common'); + +var _pubnubCommon2 = _interopRequireDefault(_pubnubCommon); + +var _networking = require('../networking'); + +var _networking2 = _interopRequireDefault(_networking); + +var _common = require('../db/common'); + +var _common2 = _interopRequireDefault(_common); + +var _webNode = require('../networking/modules/web-node'); + +var _flow_interfaces = require('../core/flow_interfaces'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _class = function (_PubNubCore) { + _inherits(_class, _PubNubCore); + + function _class(setup) { + _classCallCheck(this, _class); + + setup.db = new _common2.default(); + setup.networking = new _networking2.default({ get: _webNode.get, post: _webNode.post }); + setup.sdkFamily = 'NativeScript'; + return _possibleConstructorReturn(this, (_class.__proto__ || Object.getPrototypeOf(_class)).call(this, setup)); + } + + return _class; +}(_pubnubCommon2.default); + +exports.default = _class; +module.exports = exports['default']; +//# sourceMappingURL=index.js.map diff --git a/lib/nativescript/index.js.map b/lib/nativescript/index.js.map new file mode 100644 index 000000000..296328df8 --- /dev/null +++ b/lib/nativescript/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["nativescript/index.js"],"names":["setup","db","networking","get","post","sdkFamily"],"mappings":";;;;;;AAEA;;;;AACA;;;;AACA;;;;AACA;;AACA;;;;;;;;;;;;;AAGE,kBAAYA,KAAZ,EAAwC;AAAA;;AACtCA,UAAMC,EAAN,GAAW,sBAAX;AACAD,UAAME,UAAN,GAAmB,yBAAe,EAAEC,iBAAF,EAAOC,mBAAP,EAAf,CAAnB;AACAJ,UAAMK,SAAN,GAAkB,cAAlB;AAHsC,2GAIhCL,KAJgC;AAKvC","file":"index.js","sourcesContent":["/* @flow */\n\nimport PubNubCore from '../core/pubnub-common';\nimport Networking from '../networking';\nimport Database from '../db/common';\nimport { get, post } from '../networking/modules/web-node';\nimport { InternalSetupStruct } from '../core/flow_interfaces';\n\nexport default class extends PubNubCore {\n constructor(setup: InternalSetupStruct) {\n setup.db = new Database();\n setup.networking = new Networking({ get, post });\n setup.sdkFamily = 'NativeScript';\n super(setup);\n }\n}\n\n"]} \ No newline at end of file diff --git a/lib/networking/modules/web-node.js b/lib/networking/modules/web-node.js index 38e639445..acacac69d 100644 --- a/lib/networking/modules/web-node.js +++ b/lib/networking/modules/web-node.js @@ -51,7 +51,7 @@ function xdr(superagentConstruct, endpoint, callback) { } if (this._config.keepAlive && this._modules.keepAlive) { - superagentConstruct = this._module.keepAlive(superagentConstruct); + superagentConstruct = this._modules.keepAlive(superagentConstruct); } return superagentConstruct.timeout(endpoint.timeout).end(function (err, resp) { diff --git a/lib/networking/modules/web-node.js.map b/lib/networking/modules/web-node.js.map index 89b43f715..1a0facfa1 100644 --- a/lib/networking/modules/web-node.js.map +++ b/lib/networking/modules/web-node.js.map @@ -1 +1 @@ -{"version":3,"sources":["networking/modules/web-node.js"],"names":["get","post","log","req","_pickLogger","console","window","start","Date","getTime","timestamp","toISOString","logger","url","qs","on","res","now","elapsed","timestampDone","text","xdr","superagentConstruct","endpoint","callback","_config","logVerbosity","use","proxy","_modules","call","keepAlive","_module","timeout","end","err","resp","status","error","operation","statusCode","errorData","category","_detectErrorCategory","parsedResponse","JSON","parse","message","service","params","getStandardOrigin","query","body","send"],"mappings":";;;;;QA2EgBA,G,GAAAA,G;QAOAC,I,GAAAA,I;;AA/EhB;;;;AACA;;;;AAEA,SAASC,GAAT,CAAaC,GAAb,EAA0B;AACxB,MAAIC,cAAc,SAAdA,WAAc,GAAM;AACtB,QAAIC,WAAWA,QAAQH,GAAvB,EAA4B,OAAOG,OAAP;AAC5B,QAAIC,UAAUA,OAAOD,OAAjB,IAA4BC,OAAOD,OAAP,CAAeH,GAA/C,EAAoD,OAAOI,OAAOD,OAAd;AACpD,WAAOA,OAAP;AACD,GAJD;;AAMA,MAAIE,QAAQ,IAAIC,IAAJ,GAAWC,OAAX,EAAZ;AACA,MAAIC,YAAY,IAAIF,IAAJ,GAAWG,WAAX,EAAhB;AACA,MAAIC,SAASR,aAAb;AACAQ,SAAOV,GAAP,CAAW,OAAX;AACAU,SAAOV,GAAP,OAAeQ,SAAf,QAA6B,IAA7B,EAAmCP,IAAIU,GAAvC,EAA4C,IAA5C,EAAkDV,IAAIW,EAAtD;AACAF,SAAOV,GAAP,CAAW,OAAX;;AAEAC,MAAIY,EAAJ,CAAO,UAAP,EAAmB,UAACC,GAAD,EAAS;AAC1B,QAAIC,MAAM,IAAIT,IAAJ,GAAWC,OAAX,EAAV;AACA,QAAIS,UAAUD,MAAMV,KAApB;AACA,QAAIY,gBAAgB,IAAIX,IAAJ,GAAWG,WAAX,EAApB;;AAEAC,WAAOV,GAAP,CAAW,QAAX;AACAU,WAAOV,GAAP,OAAeiB,aAAf,WAAkCD,OAAlC,QAA8C,IAA9C,EAAoDf,IAAIU,GAAxD,EAA6D,IAA7D,EAAmEV,IAAIW,EAAvE,EAA2E,IAA3E,EAAiFE,IAAII,IAArF;AACAR,WAAOV,GAAP,CAAW,OAAX;AACD,GARD;AASD;;AAED,SAASmB,GAAT,CAAaC,mBAAb,EAA8CC,QAA9C,EAA4EC,QAA5E,EAAwG;AAAA;;AACtG,MAAI,KAAKC,OAAL,CAAaC,YAAjB,EAA+B;AAC7BJ,0BAAsBA,oBAAoBK,GAApB,CAAwBzB,GAAxB,CAAtB;AACD;;AAED,MAAI,KAAKuB,OAAL,CAAaG,KAAb,IAAsB,KAAKC,QAAL,CAAcD,KAAxC,EAA+C;AAC7CN,0BAAsB,KAAKO,QAAL,CAAcD,KAAd,CAAoBE,IAApB,CAAyB,IAAzB,EAA+BR,mBAA/B,CAAtB;AACD;;AAED,MAAI,KAAKG,OAAL,CAAaM,SAAb,IAA0B,KAAKF,QAAL,CAAcE,SAA5C,EAAuD;AACrDT,0BAAsB,KAAKU,OAAL,CAAaD,SAAb,CAAuBT,mBAAvB,CAAtB;AACD;;AAED,SAAOA,oBACFW,OADE,CACMV,SAASU,OADf,EAEFC,GAFE,CAEE,UAACC,GAAD,EAAMC,IAAN,EAAe;AAClB,QAAIC,SAA6B,EAAjC;AACAA,WAAOC,KAAP,GAAeH,QAAQ,IAAvB;AACAE,WAAOE,SAAP,GAAmBhB,SAASgB,SAA5B;;AAEA,QAAIH,QAAQA,KAAKC,MAAjB,EAAyB;AACvBA,aAAOG,UAAP,GAAoBJ,KAAKC,MAAzB;AACD;;AAED,QAAIF,GAAJ,EAAS;AACPE,aAAOI,SAAP,GAAmBN,GAAnB;AACAE,aAAOK,QAAP,GAAkB,MAAKC,oBAAL,CAA0BR,GAA1B,CAAlB;AACA,aAAOX,SAASa,MAAT,EAAiB,IAAjB,CAAP;AACD;;AAED,QAAIO,iBAAiBC,KAAKC,KAAL,CAAWV,KAAKhB,IAAhB,CAArB;;AAEA,QAAIwB,eAAeN,KAAf,IAAwBM,eAAeN,KAAf,KAAyB,CAAjD,IAAsDM,eAAeP,MAArE,IAA+EO,eAAeG,OAA9F,IAAyGH,eAAeI,OAA5H,EAAqI;AACnIX,aAAOI,SAAP,GAAmBG,cAAnB;AACAP,aAAOG,UAAP,GAAoBI,eAAeP,MAAnC;AACAA,aAAOC,KAAP,GAAe,IAAf;AACAD,aAAOK,QAAP,GAAkB,MAAKC,oBAAL,CAA0BN,MAA1B,CAAlB;AACA,aAAOb,SAASa,MAAT,EAAiB,IAAjB,CAAP;AACD;;AAED,WAAOb,SAASa,MAAT,EAAiBO,cAAjB,CAAP;AACD,GA5BE,CAAP;AA6BD;;AAEM,SAAS5C,GAAT,CAAaiD,MAAb,EAA6B1B,QAA7B,EAA2DC,QAA3D,EAA2F;AAChG,MAAIF,sBAAsB,qBACvBtB,GADuB,CACnB,KAAKkD,iBAAL,KAA2B3B,SAASV,GADjB,EAEvBsC,KAFuB,CAEjBF,MAFiB,CAA1B;AAGA,SAAO5B,IAAIS,IAAJ,CAAS,IAAT,EAAeR,mBAAf,EAAoCC,QAApC,EAA8CC,QAA9C,CAAP;AACD;;AAEM,SAASvB,IAAT,CAAcgD,MAAd,EAA8BG,IAA9B,EAA4C7B,QAA5C,EAA0EC,QAA1E,EAA0G;AAC/G,MAAIF,sBAAsB,qBACvBrB,IADuB,CAClB,KAAKiD,iBAAL,KAA2B3B,SAASV,GADlB,EAEvBsC,KAFuB,CAEjBF,MAFiB,EAGvBI,IAHuB,CAGlBD,IAHkB,CAA1B;AAIA,SAAO/B,IAAIS,IAAJ,CAAS,IAAT,EAAeR,mBAAf,EAAoCC,QAApC,EAA8CC,QAA9C,CAAP;AACD","file":"web-node.js","sourcesContent":["/* @flow */\n/* global window */\n\nimport superagent from 'superagent';\nimport { EndpointDefinition, StatusAnnouncement } from '../../core/flow_interfaces';\n\nfunction log(req: Object) {\n let _pickLogger = () => {\n if (console && console.log) return console; // eslint-disable-line no-console\n if (window && window.console && window.console.log) return window.console;\n return console;\n };\n\n let start = new Date().getTime();\n let timestamp = new Date().toISOString();\n let logger = _pickLogger();\n logger.log('<<<<<'); // eslint-disable-line no-console\n logger.log(`[${timestamp}]`, '\\n', req.url, '\\n', req.qs); // eslint-disable-line no-console\n logger.log('-----'); // eslint-disable-line no-console\n\n req.on('response', (res) => {\n let now = new Date().getTime();\n let elapsed = now - start;\n let timestampDone = new Date().toISOString();\n\n logger.log('>>>>>>'); // eslint-disable-line no-console\n logger.log(`[${timestampDone} / ${elapsed}]`, '\\n', req.url, '\\n', req.qs, '\\n', res.text); // eslint-disable-line no-console\n logger.log('-----'); // eslint-disable-line no-console\n });\n}\n\nfunction xdr(superagentConstruct: superagent, endpoint: EndpointDefinition, callback: Function): Object {\n if (this._config.logVerbosity) {\n superagentConstruct = superagentConstruct.use(log);\n }\n\n if (this._config.proxy && this._modules.proxy) {\n superagentConstruct = this._modules.proxy.call(this, superagentConstruct);\n }\n\n if (this._config.keepAlive && this._modules.keepAlive) {\n superagentConstruct = this._module.keepAlive(superagentConstruct);\n }\n\n return superagentConstruct\n .timeout(endpoint.timeout)\n .end((err, resp) => {\n let status: StatusAnnouncement = {};\n status.error = err !== null;\n status.operation = endpoint.operation;\n\n if (resp && resp.status) {\n status.statusCode = resp.status;\n }\n\n if (err) {\n status.errorData = err;\n status.category = this._detectErrorCategory(err);\n return callback(status, null);\n }\n\n let parsedResponse = JSON.parse(resp.text);\n\n if (parsedResponse.error && parsedResponse.error === 1 && parsedResponse.status && parsedResponse.message && parsedResponse.service) {\n status.errorData = parsedResponse;\n status.statusCode = parsedResponse.status;\n status.error = true;\n status.category = this._detectErrorCategory(status);\n return callback(status, null);\n }\n\n return callback(status, parsedResponse);\n });\n}\n\nexport function get(params: Object, endpoint: EndpointDefinition, callback: Function): superagent {\n let superagentConstruct = superagent\n .get(this.getStandardOrigin() + endpoint.url)\n .query(params);\n return xdr.call(this, superagentConstruct, endpoint, callback);\n}\n\nexport function post(params: Object, body: string, endpoint: EndpointDefinition, callback: Function): superagent {\n let superagentConstruct = superagent\n .post(this.getStandardOrigin() + endpoint.url)\n .query(params)\n .send(body);\n return xdr.call(this, superagentConstruct, endpoint, callback);\n}\n"]} \ No newline at end of file +{"version":3,"sources":["networking/modules/web-node.js"],"names":["get","post","log","req","_pickLogger","console","window","start","Date","getTime","timestamp","toISOString","logger","url","qs","on","res","now","elapsed","timestampDone","text","xdr","superagentConstruct","endpoint","callback","_config","logVerbosity","use","proxy","_modules","call","keepAlive","timeout","end","err","resp","status","error","operation","statusCode","errorData","category","_detectErrorCategory","parsedResponse","JSON","parse","message","service","params","getStandardOrigin","query","body","send"],"mappings":";;;;;QA2EgBA,G,GAAAA,G;QAOAC,I,GAAAA,I;;AA/EhB;;;;AACA;;;;AAEA,SAASC,GAAT,CAAaC,GAAb,EAA0B;AACxB,MAAIC,cAAc,SAAdA,WAAc,GAAM;AACtB,QAAIC,WAAWA,QAAQH,GAAvB,EAA4B,OAAOG,OAAP;AAC5B,QAAIC,UAAUA,OAAOD,OAAjB,IAA4BC,OAAOD,OAAP,CAAeH,GAA/C,EAAoD,OAAOI,OAAOD,OAAd;AACpD,WAAOA,OAAP;AACD,GAJD;;AAMA,MAAIE,QAAQ,IAAIC,IAAJ,GAAWC,OAAX,EAAZ;AACA,MAAIC,YAAY,IAAIF,IAAJ,GAAWG,WAAX,EAAhB;AACA,MAAIC,SAASR,aAAb;AACAQ,SAAOV,GAAP,CAAW,OAAX;AACAU,SAAOV,GAAP,OAAeQ,SAAf,QAA6B,IAA7B,EAAmCP,IAAIU,GAAvC,EAA4C,IAA5C,EAAkDV,IAAIW,EAAtD;AACAF,SAAOV,GAAP,CAAW,OAAX;;AAEAC,MAAIY,EAAJ,CAAO,UAAP,EAAmB,UAACC,GAAD,EAAS;AAC1B,QAAIC,MAAM,IAAIT,IAAJ,GAAWC,OAAX,EAAV;AACA,QAAIS,UAAUD,MAAMV,KAApB;AACA,QAAIY,gBAAgB,IAAIX,IAAJ,GAAWG,WAAX,EAApB;;AAEAC,WAAOV,GAAP,CAAW,QAAX;AACAU,WAAOV,GAAP,OAAeiB,aAAf,WAAkCD,OAAlC,QAA8C,IAA9C,EAAoDf,IAAIU,GAAxD,EAA6D,IAA7D,EAAmEV,IAAIW,EAAvE,EAA2E,IAA3E,EAAiFE,IAAII,IAArF;AACAR,WAAOV,GAAP,CAAW,OAAX;AACD,GARD;AASD;;AAED,SAASmB,GAAT,CAAaC,mBAAb,EAA8CC,QAA9C,EAA4EC,QAA5E,EAAwG;AAAA;;AACtG,MAAI,KAAKC,OAAL,CAAaC,YAAjB,EAA+B;AAC7BJ,0BAAsBA,oBAAoBK,GAApB,CAAwBzB,GAAxB,CAAtB;AACD;;AAED,MAAI,KAAKuB,OAAL,CAAaG,KAAb,IAAsB,KAAKC,QAAL,CAAcD,KAAxC,EAA+C;AAC7CN,0BAAsB,KAAKO,QAAL,CAAcD,KAAd,CAAoBE,IAApB,CAAyB,IAAzB,EAA+BR,mBAA/B,CAAtB;AACD;;AAED,MAAI,KAAKG,OAAL,CAAaM,SAAb,IAA0B,KAAKF,QAAL,CAAcE,SAA5C,EAAuD;AACrDT,0BAAsB,KAAKO,QAAL,CAAcE,SAAd,CAAwBT,mBAAxB,CAAtB;AACD;;AAED,SAAOA,oBACFU,OADE,CACMT,SAASS,OADf,EAEFC,GAFE,CAEE,UAACC,GAAD,EAAMC,IAAN,EAAe;AAClB,QAAIC,SAA6B,EAAjC;AACAA,WAAOC,KAAP,GAAeH,QAAQ,IAAvB;AACAE,WAAOE,SAAP,GAAmBf,SAASe,SAA5B;;AAEA,QAAIH,QAAQA,KAAKC,MAAjB,EAAyB;AACvBA,aAAOG,UAAP,GAAoBJ,KAAKC,MAAzB;AACD;;AAED,QAAIF,GAAJ,EAAS;AACPE,aAAOI,SAAP,GAAmBN,GAAnB;AACAE,aAAOK,QAAP,GAAkB,MAAKC,oBAAL,CAA0BR,GAA1B,CAAlB;AACA,aAAOV,SAASY,MAAT,EAAiB,IAAjB,CAAP;AACD;;AAED,QAAIO,iBAAiBC,KAAKC,KAAL,CAAWV,KAAKf,IAAhB,CAArB;;AAEA,QAAIuB,eAAeN,KAAf,IAAwBM,eAAeN,KAAf,KAAyB,CAAjD,IAAsDM,eAAeP,MAArE,IAA+EO,eAAeG,OAA9F,IAAyGH,eAAeI,OAA5H,EAAqI;AACnIX,aAAOI,SAAP,GAAmBG,cAAnB;AACAP,aAAOG,UAAP,GAAoBI,eAAeP,MAAnC;AACAA,aAAOC,KAAP,GAAe,IAAf;AACAD,aAAOK,QAAP,GAAkB,MAAKC,oBAAL,CAA0BN,MAA1B,CAAlB;AACA,aAAOZ,SAASY,MAAT,EAAiB,IAAjB,CAAP;AACD;;AAED,WAAOZ,SAASY,MAAT,EAAiBO,cAAjB,CAAP;AACD,GA5BE,CAAP;AA6BD;;AAEM,SAAS3C,GAAT,CAAagD,MAAb,EAA6BzB,QAA7B,EAA2DC,QAA3D,EAA2F;AAChG,MAAIF,sBAAsB,qBACvBtB,GADuB,CACnB,KAAKiD,iBAAL,KAA2B1B,SAASV,GADjB,EAEvBqC,KAFuB,CAEjBF,MAFiB,CAA1B;AAGA,SAAO3B,IAAIS,IAAJ,CAAS,IAAT,EAAeR,mBAAf,EAAoCC,QAApC,EAA8CC,QAA9C,CAAP;AACD;;AAEM,SAASvB,IAAT,CAAc+C,MAAd,EAA8BG,IAA9B,EAA4C5B,QAA5C,EAA0EC,QAA1E,EAA0G;AAC/G,MAAIF,sBAAsB,qBACvBrB,IADuB,CAClB,KAAKgD,iBAAL,KAA2B1B,SAASV,GADlB,EAEvBqC,KAFuB,CAEjBF,MAFiB,EAGvBI,IAHuB,CAGlBD,IAHkB,CAA1B;AAIA,SAAO9B,IAAIS,IAAJ,CAAS,IAAT,EAAeR,mBAAf,EAAoCC,QAApC,EAA8CC,QAA9C,CAAP;AACD","file":"web-node.js","sourcesContent":["/* @flow */\n/* global window */\n\nimport superagent from 'superagent';\nimport { EndpointDefinition, StatusAnnouncement } from '../../core/flow_interfaces';\n\nfunction log(req: Object) {\n let _pickLogger = () => {\n if (console && console.log) return console; // eslint-disable-line no-console\n if (window && window.console && window.console.log) return window.console;\n return console;\n };\n\n let start = new Date().getTime();\n let timestamp = new Date().toISOString();\n let logger = _pickLogger();\n logger.log('<<<<<'); // eslint-disable-line no-console\n logger.log(`[${timestamp}]`, '\\n', req.url, '\\n', req.qs); // eslint-disable-line no-console\n logger.log('-----'); // eslint-disable-line no-console\n\n req.on('response', (res) => {\n let now = new Date().getTime();\n let elapsed = now - start;\n let timestampDone = new Date().toISOString();\n\n logger.log('>>>>>>'); // eslint-disable-line no-console\n logger.log(`[${timestampDone} / ${elapsed}]`, '\\n', req.url, '\\n', req.qs, '\\n', res.text); // eslint-disable-line no-console\n logger.log('-----'); // eslint-disable-line no-console\n });\n}\n\nfunction xdr(superagentConstruct: superagent, endpoint: EndpointDefinition, callback: Function): Object {\n if (this._config.logVerbosity) {\n superagentConstruct = superagentConstruct.use(log);\n }\n\n if (this._config.proxy && this._modules.proxy) {\n superagentConstruct = this._modules.proxy.call(this, superagentConstruct);\n }\n\n if (this._config.keepAlive && this._modules.keepAlive) {\n superagentConstruct = this._modules.keepAlive(superagentConstruct);\n }\n\n return superagentConstruct\n .timeout(endpoint.timeout)\n .end((err, resp) => {\n let status: StatusAnnouncement = {};\n status.error = err !== null;\n status.operation = endpoint.operation;\n\n if (resp && resp.status) {\n status.statusCode = resp.status;\n }\n\n if (err) {\n status.errorData = err;\n status.category = this._detectErrorCategory(err);\n return callback(status, null);\n }\n\n let parsedResponse = JSON.parse(resp.text);\n\n if (parsedResponse.error && parsedResponse.error === 1 && parsedResponse.status && parsedResponse.message && parsedResponse.service) {\n status.errorData = parsedResponse;\n status.statusCode = parsedResponse.status;\n status.error = true;\n status.category = this._detectErrorCategory(status);\n return callback(status, null);\n }\n\n return callback(status, parsedResponse);\n });\n}\n\nexport function get(params: Object, endpoint: EndpointDefinition, callback: Function): superagent {\n let superagentConstruct = superagent\n .get(this.getStandardOrigin() + endpoint.url)\n .query(params);\n return xdr.call(this, superagentConstruct, endpoint, callback);\n}\n\nexport function post(params: Object, body: string, endpoint: EndpointDefinition, callback: Function): superagent {\n let superagentConstruct = superagent\n .post(this.getStandardOrigin() + endpoint.url)\n .query(params)\n .send(body);\n return xdr.call(this, superagentConstruct, endpoint, callback);\n}\n"]} \ No newline at end of file diff --git a/src/nativescript/index.js b/src/nativescript/index.js new file mode 100644 index 000000000..077cbff69 --- /dev/null +++ b/src/nativescript/index.js @@ -0,0 +1,16 @@ +/* @flow */ + +import PubNubCore from '../core/pubnub-common'; +import Networking from '../networking'; +import Database from '../db/common'; +import { get, post } from '../networking/modules/web-node'; +import { InternalSetupStruct } from '../core/flow_interfaces'; + +export default class extends PubNubCore { + constructor(setup: InternalSetupStruct) { + setup.db = new Database(); + setup.networking = new Networking({ get, post }); + setup.sdkFamily = 'NativeScript'; + super(setup); + } +} diff --git a/test/dist/nativescript.test.js b/test/dist/nativescript.test.js new file mode 100644 index 000000000..ac71ae0bb --- /dev/null +++ b/test/dist/nativescript.test.js @@ -0,0 +1,108 @@ +import { expect } from 'chai'; +import PubNub from '../../src/nativescript'; + +let pubnub = new PubNub({ subscribeKey: 'demo', publishKey: 'demo' }); + +let listener = null; + +describe('#distribution test (nativescript)', function () { + it('should have to subscribe a channel', (done) => { + listener = { + status: (st) => { + expect(st.operation).to.be.equal('PNSubscribeOperation'); + done(); + } + }; + + pubnub.addListener(listener); + pubnub.subscribe({channels: ['mychannel1']}); + }); + + it('should have to receive message from a channel', (done) => { + pubnub.removeListener(listener); + + listener = { + message: (m) => { + expect(m.channel).to.be.equal('mychannel2'); + expect(m.message.text).to.be.equal('hello NativeScript SDK'); + done(); + } + }; + + pubnub.addListener(listener); + pubnub.subscribe({channels: ['mychannel2']}); + pubnub.publish({ channel: 'mychannel2', message: { text: 'hello NativeScript SDK' }}); + }); + + it('should have to set state', (done) => { + pubnub.setState({ channels: ['mychannel1'], state: { hello: 'there' } }, (status, response) => { + expect(status.error).to.be.equal(false); + expect(response.state.hello).to.be.equal('there'); + done(); + }); + }); + + it('should have to get the time', (done) => { + pubnub.time((status) => { + expect(status.operation).to.be.equal('PNTimeOperation'); + expect(status.statusCode).to.be.equal(200); + done(); + }); + }); + + it('should have to get the last message', (done) => { + pubnub.history({ + channel: 'mychannel2', + count: 1, + reverse: false + }, (status, response) => { + expect(response.messages).to.have.length(1); + done(); + }); + }); + + it('should have to add a channel group', (done) => { + pubnub.channelGroups.addChannels( + { + channels: ['ch1', 'ch2'], + channelGroup: 'myChannelGroup' + }, + (status) => { + expect(status.error).to.be.equal(false); + done(); + } + ); + }); + + it('should have to list the channels', (done) => { + pubnub.channelGroups.listChannels( + { + channelGroup: 'myChannelGroup' + }, + (status, response) => { + expect(status.error).to.be.equal(false); + expect(response.channels).to.have.length(2); + done(); + } + ); + }); + + it('should have to change the UUID', function (done) { + pubnub.setUUID("CustomUUID"); + + expect(pubnub.getUUID()).to.be.equal("CustomUUID"); + done(); + }); + + it('should have to unsubscribe', function (done) { + pubnub.removeListener(listener); + + pubnub.addListener({ + status: function (st) { + expect(st.operation).to.be.equal('PNUnsubscribeOperation'); + done(); + } + }); + pubnub.unsubscribe({channels: ['mychannel1']}); + }); +});