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']});
+ });
+});