diff --git a/.pubnub.yml b/.pubnub.yml index 587928e08..8c78ae73f 100644 --- a/.pubnub.yml +++ b/.pubnub.yml @@ -1,11 +1,18 @@ name: javascript -version: 4.15.1 +version: 4.16.0 schema: 1 scm: github.com/pubnub/javascript files: - dist/web/pubnub.js - dist/web/pubnub.min.js changelog: + - version: v4.16.0 + date: 10-09-2017 + changes: + - type: feature + text: support delete messages from history + - type: improvement + text: swap uuid generator with support for IE9 and IE10 - version: v4.15.1 date: 2017-08-21 changes: diff --git a/CHANGELOG.md b/CHANGELOG.md index a36f0c75e..3cd762953 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,16 @@ +## [v4.16.0](https://github.com/pubnub/javascript/tree/v4.16.0) + + + [Full Changelog](https://github.com/pubnub/javascript/compare/v4.15.1...v4.16.0) + + +- ⭐support delete messages from history + +- ⭐swap uuid generator with support for IE9 and IE10 + + + ## [v4.15.1](https://github.com/pubnub/javascript/tree/v4.15.1) diff --git a/README.md b/README.md index 4bda76924..a126ad431 100644 --- a/README.md +++ b/README.md @@ -19,5 +19,5 @@ please use the [master_3x](https://github.com/pubnub/javascript/tree/master_3x) - If you **need help** or have a **general question**, contact ## CDN Links -* https://cdn.pubnub.com/sdk/javascript/pubnub.4.15.1.min.js -* https://cdn.pubnub.com/sdk/javascript/pubnub.4.15.1.js +* https://cdn.pubnub.com/sdk/javascript/pubnub.4.16.0.min.js +* https://cdn.pubnub.com/sdk/javascript/pubnub.4.16.0.js diff --git a/dist/titanium/pubnub.js b/dist/titanium/pubnub.js index 9dd680fa4..b178e5c4e 100644 --- a/dist/titanium/pubnub.js +++ b/dist/titanium/pubnub.js @@ -1,4 +1,4 @@ -/*! 4.15.1 / Consumer */ +/*! 4.16.0 / Consumer */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); @@ -66,17 +66,17 @@ return /******/ (function(modules) { // webpackBootstrap var _pubnubCommon2 = _interopRequireDefault(_pubnubCommon); - var _networking = __webpack_require__(41); + var _networking = __webpack_require__(40); var _networking2 = _interopRequireDefault(_networking); - var _common = __webpack_require__(42); + var _common = __webpack_require__(41); var _common2 = _interopRequireDefault(_common); - var _titanium = __webpack_require__(43); + var _titanium = __webpack_require__(42); - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -94,7 +94,7 @@ return /******/ (function(modules) { // webpackBootstrap setup.db = new _common2.default(); setup.sdkFamily = 'TitaniumSDK'; - setup.networking = new _networking2.default({ get: _titanium.get, post: _titanium.post }); + setup.networking = new _networking2.default({ del: _titanium.del, get: _titanium.get, post: _titanium.post }); return _possibleConstructorReturn(this, (PubNub.__proto__ || Object.getPrototypeOf(PubNub)).call(this, setup)); } @@ -117,127 +117,131 @@ return /******/ (function(modules) { // webpackBootstrap 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 _lilUuid = __webpack_require__(2); - var _uuid2 = _interopRequireDefault(_uuid); + var _lilUuid2 = _interopRequireDefault(_lilUuid); - var _config = __webpack_require__(7); + var _config = __webpack_require__(3); var _config2 = _interopRequireDefault(_config); - var _index = __webpack_require__(9); + var _index = __webpack_require__(7); var _index2 = _interopRequireDefault(_index); - var _subscription_manager = __webpack_require__(11); + var _subscription_manager = __webpack_require__(9); var _subscription_manager2 = _interopRequireDefault(_subscription_manager); - var _listener_manager = __webpack_require__(12); + var _listener_manager = __webpack_require__(10); var _listener_manager2 = _interopRequireDefault(_listener_manager); - var _endpoint = __webpack_require__(19); + var _endpoint = __webpack_require__(17); var _endpoint2 = _interopRequireDefault(_endpoint); - var _add_channels = __webpack_require__(20); + var _add_channels = __webpack_require__(18); var addChannelsChannelGroupConfig = _interopRequireWildcard(_add_channels); - var _remove_channels = __webpack_require__(21); + var _remove_channels = __webpack_require__(19); var removeChannelsChannelGroupConfig = _interopRequireWildcard(_remove_channels); - var _delete_group = __webpack_require__(22); + var _delete_group = __webpack_require__(20); var deleteChannelGroupConfig = _interopRequireWildcard(_delete_group); - var _list_groups = __webpack_require__(23); + var _list_groups = __webpack_require__(21); var listChannelGroupsConfig = _interopRequireWildcard(_list_groups); - var _list_channels = __webpack_require__(24); + var _list_channels = __webpack_require__(22); var listChannelsInChannelGroupConfig = _interopRequireWildcard(_list_channels); - var _add_push_channels = __webpack_require__(25); + var _add_push_channels = __webpack_require__(23); var addPushChannelsConfig = _interopRequireWildcard(_add_push_channels); - var _remove_push_channels = __webpack_require__(26); + var _remove_push_channels = __webpack_require__(24); var removePushChannelsConfig = _interopRequireWildcard(_remove_push_channels); - var _list_push_channels = __webpack_require__(27); + var _list_push_channels = __webpack_require__(25); var listPushChannelsConfig = _interopRequireWildcard(_list_push_channels); - var _remove_device = __webpack_require__(28); + var _remove_device = __webpack_require__(26); var removeDevicePushConfig = _interopRequireWildcard(_remove_device); - var _leave = __webpack_require__(29); + var _leave = __webpack_require__(27); var presenceLeaveEndpointConfig = _interopRequireWildcard(_leave); - var _where_now = __webpack_require__(30); + var _where_now = __webpack_require__(28); var presenceWhereNowEndpointConfig = _interopRequireWildcard(_where_now); - var _heartbeat = __webpack_require__(31); + var _heartbeat = __webpack_require__(29); var presenceHeartbeatEndpointConfig = _interopRequireWildcard(_heartbeat); - var _get_state = __webpack_require__(32); + var _get_state = __webpack_require__(30); var presenceGetStateConfig = _interopRequireWildcard(_get_state); - var _set_state = __webpack_require__(33); + var _set_state = __webpack_require__(31); var presenceSetStateConfig = _interopRequireWildcard(_set_state); - var _here_now = __webpack_require__(34); + var _here_now = __webpack_require__(32); var presenceHereNowConfig = _interopRequireWildcard(_here_now); - var _audit = __webpack_require__(35); + var _audit = __webpack_require__(33); var auditEndpointConfig = _interopRequireWildcard(_audit); - var _grant = __webpack_require__(36); + var _grant = __webpack_require__(34); var grantEndpointConfig = _interopRequireWildcard(_grant); - var _publish = __webpack_require__(37); + var _publish = __webpack_require__(35); var publishEndpointConfig = _interopRequireWildcard(_publish); - var _history = __webpack_require__(38); + var _get_history = __webpack_require__(36); + + var historyEndpointConfig = _interopRequireWildcard(_get_history); + + var _delete_messages = __webpack_require__(37); - var historyEndpointConfig = _interopRequireWildcard(_history); + var deleteMessagesEndpointConfig = _interopRequireWildcard(_delete_messages); - var _fetch_messages = __webpack_require__(39); + var _fetch_messages = __webpack_require__(38); var fetchMessagesEndpointConfig = _interopRequireWildcard(_fetch_messages); - var _time = __webpack_require__(15); + var _time = __webpack_require__(13); var timeEndpointConfig = _interopRequireWildcard(_time); - var _subscribe = __webpack_require__(40); + var _subscribe = __webpack_require__(39); var subscribeEndpointConfig = _interopRequireWildcard(_subscribe); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); - var _categories = __webpack_require__(13); + var _categories = __webpack_require__(11); var _categories2 = _interopRequireDefault(_categories); - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); 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; } } @@ -317,6 +321,7 @@ return /******/ (function(modules) { // webpackBootstrap }; this.history = _endpoint2.default.bind(this, modules, historyEndpointConfig); + this.deleteMessages = _endpoint2.default.bind(this, modules, deleteMessagesEndpointConfig); this.fetchMessages = _endpoint2.default.bind(this, modules, fetchMessagesEndpointConfig); this.time = timeEndpoint; @@ -377,7 +382,7 @@ return /******/ (function(modules) { // webpackBootstrap }], [{ key: 'generateUUID', value: function generateUUID() { - return _uuid2.default.v4(); + return (0, _lilUuid2.default)(); } }]); @@ -393,228 +398,52 @@ return /******/ (function(modules) { // webpackBootstrap /* 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'); + var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! lil-uuid - v0.1 - MIT License - https://github.com/lil-js/uuid */ + (function (root, factory) { + if (true) { + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) + } else if (typeof exports === 'object') { + factory(exports) + if (typeof module === 'object' && module !== null) { + module.exports = exports.uuid + } + } else { + factory((root.lil = root.lil || {})) } - - _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]; + }(this, function (exports) { + var VERSION = '0.1.0' + var uuidRegex = { + '3': /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i, + '4': /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + '5': /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + all: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i } - 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; + function uuid() { + var uuid = '', i, random + for (i = 0; i < 32; i++) { + random = Math.random() * 16 | 0; + if (i === 8 || i === 12 || i === 16 || i === 20) uuid += '-' + uuid += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16) } - - 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; + return uuid } - 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]; - } + function isUUID(str, version) { + var pattern = uuidRegex[version || 'all'] + return pattern && pattern.test(str) || false } - return buf || bytesToUuid(rnds); - } + uuid.isUUID = isUUID + uuid.VERSION = VERSION - module.exports = v4; + exports.uuid = uuid + exports.isUUID = isUUID + })); /***/ }), -/* 7 */ +/* 3 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -625,11 +454,11 @@ return /******/ (function(modules) { // webpackBootstrap 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 _uuid = __webpack_require__(4); var _uuid2 = _interopRequireDefault(_uuid); - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -791,31 +620,259 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: 'getVersion', value: function getVersion() { - return '4.15.1'; + return '4.16.0'; + } + }, { + 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']; + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + + // uuid.js + // + // Copyright (c) 2010-2012 Robert Kieffer + // MIT License - http://opensource.org/licenses/mit-license.php + + // Unique ID creation requires a high quality random # generator. We feature + // detect to determine the best RNG source, normalizing to a function that + // returns 128-bits of randomness, since that's what's usually required + var _rng = __webpack_require__(5); + + // Maps for number <-> hex string conversion + var _byteToHex = []; + var _hexToByte = {}; + for (var i = 0; i < 256; i++) { + _byteToHex[i] = (i + 0x100).toString(16).substr(1); + _hexToByte[_byteToHex[i]] = i; + } + + // **`parse()` - Parse a UUID into it's component bytes** + function parse(s, buf, offset) { + var i = (buf && offset) || 0, ii = 0; + + buf = buf || []; + s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) { + if (ii < 16) { // Don't overflow! + buf[i + ii++] = _hexToByte[oct]; + } + }); + + // Zero out remaining bytes if string was short + while (ii < 16) { + buf[i + ii++] = 0; + } + + return buf; + } + + // **`unparse()` - Convert UUID byte array (ala parse()) into a string** + function unparse(buf, offset) { + var i = offset || 0, 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++]]; + } + + // **`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 : unparse(b); + } + + // **`v4()` - Generate random UUID** + + // See https://github.com/broofa/node-uuid for API details + function v4(options, buf, offset) { + // Deprecated - 'format' argument, as supported in v1.2 + 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]; } - }, { - 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 buf || unparse(rnds); + } - return 'pn-' + _uuid2.default.v4(); + // Export public API + var uuid = v4; + uuid.v1 = v1; + uuid.v4 = v4; + uuid.parse = parse; + uuid.unparse = unparse; + + module.exports = uuid; + + +/***/ }), +/* 5 */ +/***/ (function(module, exports) { + + /* WEBPACK VAR INJECTION */(function(global) { + var rng; + + var crypto = global.crypto || global.msCrypto; // for IE 11 + if (crypto && crypto.getRandomValues) { + // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto + // Moderately fast, high quality + var _rnds8 = new Uint8Array(16); + 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 _class; - }(); + return _rnds; + }; + } - exports.default = _class; - module.exports = exports['default']; + module.exports = rng; + + + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) /***/ }), -/* 8 */ +/* 6 */ /***/ (function(module, exports) { 'use strict'; @@ -823,7 +880,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = {}; /***/ }), -/* 9 */ +/* 7 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -834,11 +891,11 @@ return /******/ (function(modules) { // webpackBootstrap 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 _config = __webpack_require__(3); var _config2 = _interopRequireDefault(_config); - var _hmacSha = __webpack_require__(10); + var _hmacSha = __webpack_require__(8); var _hmacSha2 = _interopRequireDefault(_hmacSha); @@ -993,7 +1050,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }), -/* 10 */ +/* 8 */ /***/ (function(module, exports) { "use strict"; @@ -1457,7 +1514,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = CryptoJS; /***/ }), -/* 11 */ +/* 9 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -1468,33 +1525,33 @@ return /******/ (function(modules) { // webpackBootstrap 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 _cryptography = __webpack_require__(7); var _cryptography2 = _interopRequireDefault(_cryptography); - var _config2 = __webpack_require__(7); + var _config2 = __webpack_require__(3); var _config3 = _interopRequireDefault(_config2); - var _listener_manager = __webpack_require__(12); + var _listener_manager = __webpack_require__(10); var _listener_manager2 = _interopRequireDefault(_listener_manager); - var _reconnection_manager = __webpack_require__(14); + var _reconnection_manager = __webpack_require__(12); var _reconnection_manager2 = _interopRequireDefault(_reconnection_manager); - var _deduping_manager = __webpack_require__(17); + var _deduping_manager = __webpack_require__(15); var _deduping_manager2 = _interopRequireDefault(_deduping_manager); - var _utils = __webpack_require__(18); + var _utils = __webpack_require__(16); var _utils2 = _interopRequireDefault(_utils); - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _categories = __webpack_require__(13); + var _categories = __webpack_require__(11); var _categories2 = _interopRequireDefault(_categories); @@ -1985,7 +2042,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }), -/* 12 */ +/* 10 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -1996,9 +2053,9 @@ return /******/ (function(modules) { // webpackBootstrap 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 _flow_interfaces = __webpack_require__(6); - var _categories = __webpack_require__(13); + var _categories = __webpack_require__(11); var _categories2 = _interopRequireDefault(_categories); @@ -2078,7 +2135,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }), -/* 13 */ +/* 11 */ /***/ (function(module, exports) { 'use strict'; @@ -2111,7 +2168,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }), -/* 14 */ +/* 12 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -2122,11 +2179,11 @@ return /******/ (function(modules) { // webpackBootstrap 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 _time = __webpack_require__(13); var _time2 = _interopRequireDefault(_time); - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -2177,7 +2234,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }), -/* 15 */ +/* 13 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -2193,9 +2250,9 @@ return /******/ (function(modules) { // webpackBootstrap exports.handleResponse = handleResponse; exports.validateParams = validateParams; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); @@ -2232,7 +2289,7 @@ return /******/ (function(modules) { // webpackBootstrap function validateParams() {} /***/ }), -/* 16 */ +/* 14 */ /***/ (function(module, exports) { 'use strict'; @@ -2244,6 +2301,7 @@ return /******/ (function(modules) { // webpackBootstrap PNTimeOperation: 'PNTimeOperation', PNHistoryOperation: 'PNHistoryOperation', + PNDeleteMessagesOperation: 'PNDeleteMessagesOperation', PNFetchMessagesOperation: 'PNFetchMessagesOperation', PNSubscribeOperation: 'PNSubscribeOperation', @@ -2271,7 +2329,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }), -/* 17 */ +/* 15 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -2282,7 +2340,7 @@ return /******/ (function(modules) { // webpackBootstrap 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 _config = __webpack_require__(3); var _config2 = _interopRequireDefault(_config); @@ -2346,7 +2404,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }), -/* 18 */ +/* 16 */ /***/ (function(module, exports) { 'use strict'; @@ -2394,7 +2452,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = { signPamFromParams: signPamFromParams, endsWith: endsWith, createPromise: createPromise, encodeString: encodeString }; /***/ }), -/* 19 */ +/* 17 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -2483,6 +2541,8 @@ return /******/ (function(modules) { // webpackBootstrap if (endpoint.usePost && endpoint.usePost(modules, incomingParams)) { var payload = endpoint.postPayload(modules, incomingParams); callInstance = networking.POST(outgoingParams, payload, networkingParams, onResponse); + } else if (endpoint.useDelete && endpoint.useDelete()) { + callInstance = networking.DELETE(outgoingParams, networkingParams, onResponse); } else { callInstance = networking.GET(outgoingParams, networkingParams, onResponse); } @@ -2496,21 +2556,21 @@ return /******/ (function(modules) { // webpackBootstrap } }; - var _uuid = __webpack_require__(2); + var _uuid = __webpack_require__(4); var _uuid2 = _interopRequireDefault(_uuid); - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _utils = __webpack_require__(18); + var _utils = __webpack_require__(16); var _utils2 = _interopRequireDefault(_utils); - var _config = __webpack_require__(7); + var _config = __webpack_require__(3); var _config2 = _interopRequireDefault(_config); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); @@ -2588,7 +2648,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }), -/* 20 */ +/* 18 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -2604,13 +2664,13 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); - var _utils = __webpack_require__(18); + var _utils = __webpack_require__(16); var _utils2 = _interopRequireDefault(_utils); @@ -2663,7 +2723,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 21 */ +/* 19 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -2679,13 +2739,13 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); - var _utils = __webpack_require__(18); + var _utils = __webpack_require__(16); var _utils2 = _interopRequireDefault(_utils); @@ -2738,7 +2798,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 22 */ +/* 20 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -2754,13 +2814,13 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); - var _utils = __webpack_require__(18); + var _utils = __webpack_require__(16); var _utils2 = _interopRequireDefault(_utils); @@ -2805,7 +2865,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 23 */ +/* 21 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -2821,9 +2881,9 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); @@ -2867,7 +2927,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 24 */ +/* 22 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -2883,13 +2943,13 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); - var _utils = __webpack_require__(18); + var _utils = __webpack_require__(16); var _utils2 = _interopRequireDefault(_utils); @@ -2936,7 +2996,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 25 */ +/* 23 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -2952,9 +3012,9 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); @@ -3007,7 +3067,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 26 */ +/* 24 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -3023,9 +3083,9 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); @@ -3078,7 +3138,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 27 */ +/* 25 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -3094,9 +3154,9 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); @@ -3145,7 +3205,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 28 */ +/* 26 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -3161,9 +3221,9 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); @@ -3212,7 +3272,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 29 */ +/* 27 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -3228,13 +3288,13 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); - var _utils = __webpack_require__(18); + var _utils = __webpack_require__(16); var _utils2 = _interopRequireDefault(_utils); @@ -3288,7 +3348,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 30 */ +/* 28 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -3304,9 +3364,9 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); @@ -3353,7 +3413,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 31 */ +/* 29 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -3369,13 +3429,13 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); - var _utils = __webpack_require__(18); + var _utils = __webpack_require__(16); var _utils2 = _interopRequireDefault(_utils); @@ -3434,7 +3494,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 32 */ +/* 30 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -3450,13 +3510,13 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); - var _utils = __webpack_require__(18); + var _utils = __webpack_require__(16); var _utils2 = _interopRequireDefault(_utils); @@ -3525,7 +3585,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 33 */ +/* 31 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -3541,13 +3601,13 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); - var _utils = __webpack_require__(18); + var _utils = __webpack_require__(16); var _utils2 = _interopRequireDefault(_utils); @@ -3611,7 +3671,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 34 */ +/* 32 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -3627,13 +3687,13 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); - var _utils = __webpack_require__(18); + var _utils = __webpack_require__(16); var _utils2 = _interopRequireDefault(_utils); @@ -3775,7 +3835,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 35 */ +/* 33 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -3791,9 +3851,9 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); @@ -3854,7 +3914,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 36 */ +/* 34 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -3870,9 +3930,9 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); @@ -3952,7 +4012,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 37 */ +/* 35 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -3974,13 +4034,13 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); - var _utils = __webpack_require__(18); + var _utils = __webpack_require__(16); var _utils2 = _interopRequireDefault(_utils); @@ -4091,7 +4151,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 38 */ +/* 36 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -4107,13 +4167,13 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); - var _utils = __webpack_require__(18); + var _utils = __webpack_require__(16); var _utils2 = _interopRequireDefault(_utils); @@ -4204,7 +4264,100 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 39 */ +/* 37 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.useDelete = useDelete; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(6); + + var _operations = __webpack_require__(14); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(16); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNDeleteMessagesOperation; + } + + 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 useDelete() { + return true; + } + + function getURL(modules, incomingParams) { + var channel = incomingParams.channel, + start = incomingParams.start, + end = incomingParams.end; + var config = modules.config; + + var querystring = ''; + + if (start) { + querystring = '?start=' + start; + } + + if (end) { + querystring += (querystring !== '' ? '&' : '?') + 'end=' + end; + } + + return '/v3/history/sub-key/' + config.subscribeKey + '/channel/' + _utils2.default.encodeString(channel) + querystring; + } + + 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; + + + var outgoingParams = {}; + + if (start) outgoingParams.start = start; + if (end) outgoingParams.end = end; + + return {}; + } + + function handleResponse(modules, serverResponse) { + return serverResponse.payload; + } + +/***/ }), +/* 38 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -4220,13 +4373,13 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); - var _utils = __webpack_require__(18); + var _utils = __webpack_require__(16); var _utils2 = _interopRequireDefault(_utils); @@ -4314,7 +4467,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 40 */ +/* 39 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -4330,13 +4483,13 @@ return /******/ (function(modules) { // webpackBootstrap exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _operations = __webpack_require__(16); + var _operations = __webpack_require__(14); var _operations2 = _interopRequireDefault(_operations); - var _utils = __webpack_require__(18); + var _utils = __webpack_require__(16); var _utils2 = _interopRequireDefault(_utils); @@ -4435,7 +4588,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }), -/* 41 */ +/* 40 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -4446,15 +4599,15 @@ return /******/ (function(modules) { // webpackBootstrap 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 _config = __webpack_require__(3); var _config2 = _interopRequireDefault(_config); - var _categories = __webpack_require__(13); + var _categories = __webpack_require__(11); var _categories2 = _interopRequireDefault(_categories); - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -4528,6 +4681,11 @@ return /******/ (function(modules) { // webpackBootstrap value: function GET(params, endpoint, callback) { return this._modules.get(params, endpoint, callback); } + }, { + key: 'DELETE', + value: function DELETE(params, endpoint, callback) { + return this._modules.del(params, endpoint, callback); + } }, { key: '_detectErrorCategory', value: function _detectErrorCategory(err) { @@ -4555,7 +4713,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }), -/* 42 */ +/* 41 */ /***/ (function(module, exports) { "use strict"; @@ -4594,7 +4752,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports["default"]; /***/ }), -/* 43 */ +/* 42 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -4604,10 +4762,11 @@ return /******/ (function(modules) { // webpackBootstrap }); exports.get = get; exports.post = post; + exports.del = del; - var _flow_interfaces = __webpack_require__(8); + var _flow_interfaces = __webpack_require__(6); - var _utils = __webpack_require__(44); + var _utils = __webpack_require__(43); function log(url, qs, res) { var _pickLogger = function _pickLogger() { @@ -4700,8 +4859,16 @@ return /******/ (function(modules) { // webpackBootstrap return xdr.call(this, xhr, 'POST', url, params, JSON.parse(body), endpoint, callback); } + function del(params, endpoint, callback) { + var xhr = getHttpClient(); + + var url = this.getStandardOrigin() + endpoint.url; + + return xdr.call(this, xhr, 'DELETE', url, params, {}, endpoint, callback); + } + /***/ }), -/* 44 */ +/* 43 */ /***/ (function(module, exports) { 'use strict'; diff --git a/dist/titanium/pubnub.min.js b/dist/titanium/pubnub.min.js index bc361d4c4..b44ed0c2f 100644 --- a/dist/titanium/pubnub.min.js +++ b/dist/titanium/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 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)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(1),u=r(a),c=n(41),l=r(c),f=n(42),h=r(f),d=n(43),p=(n(8),function(e){function t(e){return i(this,t),e.db=new h.default,e.sdkFamily="TitaniumSDK",e.networking=new l.default({get:d.get,post:d.post}),o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))}return s(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 o(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&&(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 +!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 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)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(1),u=r(a),c=n(40),l=r(c),f=n(41),h=r(f),d=n(42),p=(n(6),function(e){function t(e){return i(this,t),e.db=new h.default,e.sdkFamily="TitaniumSDK",e.networking=new l.default({del:d.del,get:d.get,post:d.post}),o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))}return s(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 o(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;np)&&void 0===e.nsecs&&(u=0),u>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");p=a,g=u,d=s,a+=122192928e5;var l=(1e4*(268435455&a)+u)%4294967296;o[r++]=l>>>24&255,o[r++]=l>>>16&255,o[r++]=l>>>8&255,o[r++]=255&l;var f=a/4294967296*1e4&268435455;o[r++]=f>>>8&255,o[r++]=255&f,o[r++]=f>>>24&15|16,o[r++]=f>>>16&255,o[r++]=s>>>8|128,o[r++]=255&s;for(var y=e.node||h,b=0;b<6;b++)o[r+b]=y[b];return t||i(o)}function s(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||a)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t)for(var s=0;s<16;s++)t[r+s]=o[s];return t||i(o)}for(var a=n(5),u=[],c={},l=0;l<256;l++)u[l]=(l+256).toString(16).substr(1),c[u[l]]=l;var f=a(),h=[1|f[0],f[1],f[2],f[3],f[4],f[5]],d=16383&(f[6]<<8|f[7]),p=0,g=0,y=s;y.v1=o,y.v4=s,y.parse=r,y.unparse=i,e.exports=y},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){"use strict";e.exports={}},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>>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=t.useDelete&&t.useDelete()?n.DELETE(h,b,m):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(4),d=r(h),p=(n(6),n(16)),g=r(p),y=n(3),b=(r(y),n(14)),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(6),n(14)),h=r(f),d=n(16),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(6),n(14)),h=r(f),d=n(16),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(6),n(14)),h=r(f),d=n(16),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(6),n(14)),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(6),n(14)),h=r(f),d=n(16),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(6),n(14)),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(6),n(14)),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(6),n(14)),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(6),n(14)),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(6),n(14)),h=r(f),d=n(16),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(6),n(14)),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(6),n(14)),h=r(f),d=n(16),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(6),n(14)),h=r(f),d=n(16),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(6),n(14)),h=r(f),d=n(16),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(6),n(14)),h=r(f),d=n(16),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(6),n(14)),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(6),n(14)),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(6),n(14)),b=r(y),v=n(16),_=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(6),n(14)),d=r(h),p=n(16),g=r(p)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return d.default.PNDeleteMessagesOperation}function o(e,t){var n=t.channel,r=e.config;return n?r.subscribeKey?void 0:"Missing Subscribe Key":"Missing channel"}function s(){return!0}function a(e,t){var n=t.channel,r=t.start,i=t.end,o=e.config,s="";return r&&(s="?start="+r),i&&(s+=(""!==s?"&":"?")+"end="+i),"/v3/history/sub-key/"+o.subscribeKey+"/channel/"+g.default.encodeString(n)+s}function u(e){return e.config.getTransactionTimeout()}function c(){return!0}function l(e,t){var n=t.start,r=t.end,i={};return n&&(i.start=n),r&&(i.end=r),{}}function f(e,t){return t.payload}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=o,t.useDelete=s,t.getURL=a,t.getRequestTimeout=u,t.isAuthSupported=c,t.prepareParams=l,t.handleResponse=f;var h=(n(6),n(14)),d=r(h),p=n(16),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(6),n(14)),d=r(h),p=n(16),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(6),n(14)),h=r(f),d=n(16),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:"DELETE",value:function(e,t,n){return this._modules.del(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 c=this,f={};f.operation=a.operation,e.open(t,(0,l.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 c._config.logVerbosity&&r(n,i,e.responseText),u(f,t)},e.onerror=function(e){return f.error=!0,f.errorData=e.error,f.category=c._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)}function c(e,t,n){var r=i(),o=this.getStandardOrigin()+t.url;return s.call(this,r,"DELETE",o,e,{},t,n)}Object.defineProperty(t,"__esModule",{value:!0}),t.get=a,t.post=u,t.del=c;var l=(n(6),n(43))},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}])}); diff --git a/dist/web/pubnub.js b/dist/web/pubnub.js index 10411eab2..a10a98e9d 100644 --- a/dist/web/pubnub.js +++ b/dist/web/pubnub.js @@ -1,5693 +1,5857 @@ -/*! 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 _web = __webpack_require__(42); - - var _web2 = _interopRequireDefault(_web); - - 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; } - - function sendBeacon(url) { - if (navigator && navigator.sendBeacon) { - navigator.sendBeacon(url); - } else { - return false; - } - } - - var _class = function (_PubNubCore) { - _inherits(_class, _PubNubCore); - - function _class(setup) { - _classCallCheck(this, _class); - - var _setup$listenToBrowse = setup.listenToBrowserNetworkEvents, - listenToBrowserNetworkEvents = _setup$listenToBrowse === undefined ? true : _setup$listenToBrowse; - - - setup.db = _web2.default; - setup.sdkFamily = 'Web'; - setup.networking = new _networking2.default({ get: _webNode.get, post: _webNode.post, sendBeacon: sendBeacon }); - - var _this = _possibleConstructorReturn(this, (_class.__proto__ || Object.getPrototypeOf(_class)).call(this, setup)); - - if (listenToBrowserNetworkEvents) { - window.addEventListener('offline', function () { - _this.networkDownDetected(); - }); - - window.addEventListener('online', function () { - _this.networkUpDetected(); - }); - } - return _this; - } - - 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 - }); - exports.default = { - get: function get(key) { - try { - return localStorage.getItem(key); - } catch (e) { - return null; - } - }, - set: function set(key, data) { - try { - return localStorage.setItem(key, data); - } catch (e) { - return null; - } - } - }; - 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__) { - +/*! 4.16.0 / 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__(40); + + var _networking2 = _interopRequireDefault(_networking); + + var _web = __webpack_require__(41); + + var _web2 = _interopRequireDefault(_web); + + var _webNode = __webpack_require__(42); + + var _flow_interfaces = __webpack_require__(6); + + 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; } + + function sendBeacon(url) { + if (navigator && navigator.sendBeacon) { + navigator.sendBeacon(url); + } else { + return false; + } + } + + var _class = function (_PubNubCore) { + _inherits(_class, _PubNubCore); + + function _class(setup) { + _classCallCheck(this, _class); + + var _setup$listenToBrowse = setup.listenToBrowserNetworkEvents, + listenToBrowserNetworkEvents = _setup$listenToBrowse === undefined ? true : _setup$listenToBrowse; + + + setup.db = _web2.default; + setup.sdkFamily = 'Web'; + setup.networking = new _networking2.default({ del: _webNode.del, get: _webNode.get, post: _webNode.post, sendBeacon: sendBeacon }); + + var _this = _possibleConstructorReturn(this, (_class.__proto__ || Object.getPrototypeOf(_class)).call(this, setup)); + + if (listenToBrowserNetworkEvents) { + window.addEventListener('offline', function () { + _this.networkDownDetected(); + }); + + window.addEventListener('online', function () { + _this.networkUpDetected(); + }); + } + return _this; + } + + 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 _lilUuid = __webpack_require__(2); + + var _lilUuid2 = _interopRequireDefault(_lilUuid); + + var _config = __webpack_require__(3); + + var _config2 = _interopRequireDefault(_config); + + var _index = __webpack_require__(7); + + var _index2 = _interopRequireDefault(_index); + + var _subscription_manager = __webpack_require__(9); + + var _subscription_manager2 = _interopRequireDefault(_subscription_manager); + + var _listener_manager = __webpack_require__(10); + + var _listener_manager2 = _interopRequireDefault(_listener_manager); + + var _endpoint = __webpack_require__(17); + + var _endpoint2 = _interopRequireDefault(_endpoint); + + var _add_channels = __webpack_require__(18); + + var addChannelsChannelGroupConfig = _interopRequireWildcard(_add_channels); + + var _remove_channels = __webpack_require__(19); + + var removeChannelsChannelGroupConfig = _interopRequireWildcard(_remove_channels); + + var _delete_group = __webpack_require__(20); + + var deleteChannelGroupConfig = _interopRequireWildcard(_delete_group); + + var _list_groups = __webpack_require__(21); + + var listChannelGroupsConfig = _interopRequireWildcard(_list_groups); + + var _list_channels = __webpack_require__(22); + + var listChannelsInChannelGroupConfig = _interopRequireWildcard(_list_channels); + + var _add_push_channels = __webpack_require__(23); + + var addPushChannelsConfig = _interopRequireWildcard(_add_push_channels); + + var _remove_push_channels = __webpack_require__(24); + + var removePushChannelsConfig = _interopRequireWildcard(_remove_push_channels); + + var _list_push_channels = __webpack_require__(25); + + var listPushChannelsConfig = _interopRequireWildcard(_list_push_channels); + + var _remove_device = __webpack_require__(26); + + var removeDevicePushConfig = _interopRequireWildcard(_remove_device); + + var _leave = __webpack_require__(27); + + var presenceLeaveEndpointConfig = _interopRequireWildcard(_leave); + + var _where_now = __webpack_require__(28); + + var presenceWhereNowEndpointConfig = _interopRequireWildcard(_where_now); + + var _heartbeat = __webpack_require__(29); + + var presenceHeartbeatEndpointConfig = _interopRequireWildcard(_heartbeat); + + var _get_state = __webpack_require__(30); + + var presenceGetStateConfig = _interopRequireWildcard(_get_state); + + var _set_state = __webpack_require__(31); + + var presenceSetStateConfig = _interopRequireWildcard(_set_state); + + var _here_now = __webpack_require__(32); + + var presenceHereNowConfig = _interopRequireWildcard(_here_now); + + var _audit = __webpack_require__(33); + + var auditEndpointConfig = _interopRequireWildcard(_audit); + + var _grant = __webpack_require__(34); + + var grantEndpointConfig = _interopRequireWildcard(_grant); + + var _publish = __webpack_require__(35); + + var publishEndpointConfig = _interopRequireWildcard(_publish); + + var _get_history = __webpack_require__(36); + + var historyEndpointConfig = _interopRequireWildcard(_get_history); + + var _delete_messages = __webpack_require__(37); + + var deleteMessagesEndpointConfig = _interopRequireWildcard(_delete_messages); + + var _fetch_messages = __webpack_require__(38); + + var fetchMessagesEndpointConfig = _interopRequireWildcard(_fetch_messages); + + var _time = __webpack_require__(13); + + var timeEndpointConfig = _interopRequireWildcard(_time); + + var _subscribe = __webpack_require__(39); + + var subscribeEndpointConfig = _interopRequireWildcard(_subscribe); + + var _operations = __webpack_require__(14); + + var _operations2 = _interopRequireDefault(_operations); + + var _categories = __webpack_require__(11); + + var _categories2 = _interopRequireDefault(_categories); + + var _flow_interfaces = __webpack_require__(6); + + 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.deleteMessages = _endpoint2.default.bind(this, modules, deleteMessagesEndpointConfig); + 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 (0, _lilUuid2.default)(); + } + }]); + + return _class; + }(); + + _class.OPERATIONS = _operations2.default; + _class.CATEGORIES = _categories2.default; + exports.default = _class; + module.exports = exports['default']; + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + + var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! lil-uuid - v0.1 - MIT License - https://github.com/lil-js/uuid */ + (function (root, factory) { + if (true) { + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) + } else if (typeof exports === 'object') { + factory(exports) + if (typeof module === 'object' && module !== null) { + module.exports = exports.uuid + } + } else { + factory((root.lil = root.lil || {})) + } + }(this, function (exports) { + var VERSION = '0.1.0' + var uuidRegex = { + '3': /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i, + '4': /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + '5': /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + all: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i + } + + function uuid() { + var uuid = '', i, random + for (i = 0; i < 32; i++) { + random = Math.random() * 16 | 0; + if (i === 8 || i === 12 || i === 16 || i === 20) uuid += '-' + uuid += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16) + } + return uuid + } + + function isUUID(str, version) { + var pattern = uuidRegex[version || 'all'] + return pattern && pattern.test(str) || false + } + + uuid.isUUID = isUUID + uuid.VERSION = VERSION + + exports.uuid = uuid + exports.isUUID = isUUID + })); + + +/***/ }), +/* 3 */ +/***/ (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__(4); + + var _uuid2 = _interopRequireDefault(_uuid); + + var _flow_interfaces = __webpack_require__(6); + + 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.16.0'; + } + }, { + 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']; + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + + // uuid.js + // + // Copyright (c) 2010-2012 Robert Kieffer + // MIT License - http://opensource.org/licenses/mit-license.php + + // Unique ID creation requires a high quality random # generator. We feature + // detect to determine the best RNG source, normalizing to a function that + // returns 128-bits of randomness, since that's what's usually required + var _rng = __webpack_require__(5); + + // Maps for number <-> hex string conversion + var _byteToHex = []; + var _hexToByte = {}; + for (var i = 0; i < 256; i++) { + _byteToHex[i] = (i + 0x100).toString(16).substr(1); + _hexToByte[_byteToHex[i]] = i; + } + + // **`parse()` - Parse a UUID into it's component bytes** + function parse(s, buf, offset) { + var i = (buf && offset) || 0, ii = 0; + + buf = buf || []; + s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) { + if (ii < 16) { // Don't overflow! + buf[i + ii++] = _hexToByte[oct]; + } + }); + + // Zero out remaining bytes if string was short + while (ii < 16) { + buf[i + ii++] = 0; + } + + return buf; + } + + // **`unparse()` - Convert UUID byte array (ala parse()) into a string** + function unparse(buf, offset) { + var i = offset || 0, 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++]]; + } + + // **`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 : unparse(b); + } + + // **`v4()` - Generate random UUID** + + // See https://github.com/broofa/node-uuid for API details + function v4(options, buf, offset) { + // Deprecated - 'format' argument, as supported in v1.2 + 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 || unparse(rnds); + } + + // Export public API + var uuid = v4; + uuid.v1 = v1; + uuid.v4 = v4; + uuid.parse = parse; + uuid.unparse = unparse; + + module.exports = uuid; + + +/***/ }), +/* 5 */ +/***/ (function(module, exports) { + + /* WEBPACK VAR INJECTION */(function(global) { + var rng; + + var crypto = global.crypto || global.msCrypto; // for IE 11 + if (crypto && crypto.getRandomValues) { + // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto + // Moderately fast, high quality + var _rnds8 = new Uint8Array(16); + 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; }()))) + +/***/ }), +/* 6 */ +/***/ (function(module, exports) { + + 'use strict'; + + module.exports = {}; + +/***/ }), +/* 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 _config = __webpack_require__(3); + + var _config2 = _interopRequireDefault(_config); + + var _hmacSha = __webpack_require__(8); + + 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']; + +/***/ }), +/* 8 */ +/***/ (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; + +/***/ }), +/* 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 _cryptography = __webpack_require__(7); + + var _cryptography2 = _interopRequireDefault(_cryptography); + + var _config2 = __webpack_require__(3); + + var _config3 = _interopRequireDefault(_config2); + + var _listener_manager = __webpack_require__(10); + + var _listener_manager2 = _interopRequireDefault(_listener_manager); + + var _reconnection_manager = __webpack_require__(12); + + var _reconnection_manager2 = _interopRequireDefault(_reconnection_manager); + + var _deduping_manager = __webpack_require__(15); + + var _deduping_manager2 = _interopRequireDefault(_deduping_manager); + + var _utils = __webpack_require__(16); + + var _utils2 = _interopRequireDefault(_utils); + + var _flow_interfaces = __webpack_require__(6); + + var _categories = __webpack_require__(11); + + 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']; + +/***/ }), +/* 10 */ +/***/ (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__(6); + + var _categories = __webpack_require__(11); + + 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']; + +/***/ }), +/* 11 */ +/***/ (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']; + +/***/ }), +/* 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 _time = __webpack_require__(13); + + var _time2 = _interopRequireDefault(_time); + + var _flow_interfaces = __webpack_require__(6); + + 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']; + +/***/ }), +/* 13 */ +/***/ (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__(6); + + var _operations = __webpack_require__(14); + + 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() {} + +/***/ }), +/* 14 */ +/***/ (function(module, exports) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = { + PNTimeOperation: 'PNTimeOperation', + + PNHistoryOperation: 'PNHistoryOperation', + PNDeleteMessagesOperation: 'PNDeleteMessagesOperation', + 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']; + +/***/ }), +/* 15 */ +/***/ (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__(3); + + 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']; + +/***/ }), +/* 16 */ +/***/ (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 }; + +/***/ }), +/* 17 */ +/***/ (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 if (endpoint.useDelete && endpoint.useDelete()) { + callInstance = networking.DELETE(outgoingParams, 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__(4); + + var _uuid2 = _interopRequireDefault(_uuid); + + var _flow_interfaces = __webpack_require__(6); + + var _utils = __webpack_require__(16); + + var _utils2 = _interopRequireDefault(_utils); + + var _config = __webpack_require__(3); + + var _config2 = _interopRequireDefault(_config); + + var _operations = __webpack_require__(14); + + 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']; + +/***/ }), +/* 18 */ +/***/ (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__(6); + + var _operations = __webpack_require__(14); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(16); + + 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 {}; + } + +/***/ }), +/* 19 */ +/***/ (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__(6); + + var _operations = __webpack_require__(14); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(16); + + 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 {}; + } + +/***/ }), +/* 20 */ +/***/ (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__(6); + + var _operations = __webpack_require__(14); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(16); + + 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 {}; + } + +/***/ }), +/* 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__(6); + + var _operations = __webpack_require__(14); + + 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 + }; + } + +/***/ }), +/* 22 */ +/***/ (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__(6); + + var _operations = __webpack_require__(14); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(16); + + 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 + }; + } + +/***/ }), +/* 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__(6); + + var _operations = __webpack_require__(14); + + 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 {}; + } + +/***/ }), +/* 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__(6); + + var _operations = __webpack_require__(14); + + 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 {}; + } + +/***/ }), +/* 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__(6); + + var _operations = __webpack_require__(14); + + 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 }; + } + +/***/ }), +/* 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__(6); + + var _operations = __webpack_require__(14); + + 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 {}; + } + +/***/ }), +/* 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__(6); + + var _operations = __webpack_require__(14); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(16); + + 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 {}; + } + +/***/ }), +/* 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__(6); + + var _operations = __webpack_require__(14); + + 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 }; + } + +/***/ }), +/* 29 */ +/***/ (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__(6); + + var _operations = __webpack_require__(14); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(16); + + 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 {}; + } + +/***/ }), +/* 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__(6); + + var _operations = __webpack_require__(14); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(16); + + 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 }; + } + +/***/ }), +/* 31 */ +/***/ (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__(6); + + var _operations = __webpack_require__(14); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(16); + + 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 }; + } + +/***/ }), +/* 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__(6); + + var _operations = __webpack_require__(14); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(16); + + 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; + } + +/***/ }), +/* 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__(6); + + var _operations = __webpack_require__(14); + + 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; + } + +/***/ }), +/* 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__(6); + + var _operations = __webpack_require__(14); + + 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 {}; + } + +/***/ }), +/* 35 */ +/***/ (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__(6); + + var _operations = __webpack_require__(14); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(16); + + 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] }; + } + +/***/ }), +/* 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__(6); + + var _operations = __webpack_require__(14); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(16); + + 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; + } + +/***/ }), +/* 37 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOperation = getOperation; + exports.validateParams = validateParams; + exports.useDelete = useDelete; + exports.getURL = getURL; + exports.getRequestTimeout = getRequestTimeout; + exports.isAuthSupported = isAuthSupported; + exports.prepareParams = prepareParams; + exports.handleResponse = handleResponse; + + var _flow_interfaces = __webpack_require__(6); + + var _operations = __webpack_require__(14); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(16); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function getOperation() { + return _operations2.default.PNDeleteMessagesOperation; + } + + 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 useDelete() { + return true; + } + + function getURL(modules, incomingParams) { + var channel = incomingParams.channel, + start = incomingParams.start, + end = incomingParams.end; + var config = modules.config; + + var querystring = ''; + + if (start) { + querystring = '?start=' + start; + } + + if (end) { + querystring += (querystring !== '' ? '&' : '?') + 'end=' + end; + } + + return '/v3/history/sub-key/' + config.subscribeKey + '/channel/' + _utils2.default.encodeString(channel) + querystring; + } + + 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; + + + var outgoingParams = {}; + + if (start) outgoingParams.start = start; + if (end) outgoingParams.end = end; + + return {}; + } + + function handleResponse(modules, serverResponse) { + return serverResponse.payload; + } + +/***/ }), +/* 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__(6); + + var _operations = __webpack_require__(14); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(16); + + 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; + } + +/***/ }), +/* 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__(6); + + var _operations = __webpack_require__(14); + + var _operations2 = _interopRequireDefault(_operations); + + var _utils = __webpack_require__(16); + + 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 }; + } + +/***/ }), +/* 40 */ +/***/ (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__(3); + + var _config2 = _interopRequireDefault(_config); + + var _categories = __webpack_require__(11); + + var _categories2 = _interopRequireDefault(_categories); + + var _flow_interfaces = __webpack_require__(6); + + 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: 'DELETE', + value: function DELETE(params, endpoint, callback) { + return this._modules.del(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']; + +/***/ }), +/* 41 */ +/***/ (function(module, exports) { + + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = { + get: function get(key) { + try { + return localStorage.getItem(key); + } catch (e) { + return null; + } + }, + set: function set(key, data) { + try { + return localStorage.setItem(key, data); + } catch (e) { + return null; + } + } + }; + module.exports = exports["default"]; + +/***/ }), +/* 42 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.get = get; + exports.post = post; + exports.del = del; + + var _superagent = __webpack_require__(43); + + var _superagent2 = _interopRequireDefault(_superagent); + + var _flow_interfaces = __webpack_require__(6); + + 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); + } + + function del(params, endpoint, callback) { + var superagentConstruct = _superagent2.default.delete(this.getStandardOrigin() + endpoint.url).query(params); + return xdr.call(this, superagentConstruct, endpoint, callback); + } + +/***/ }), +/* 43 */ +/***/ (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__(44); + var requestBase = __webpack_require__(45); + var isObject = __webpack_require__(46); + + /** + * Noop. + */ + + function noop(){}; + + /** + * Expose `request`. + */ + + var request = module.exports = __webpack_require__(47).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; + }; + + +/***/ }), +/* 44 */ +/***/ (function(module, exports, __webpack_require__) { + /** * Expose `Emitter`. @@ -5851,444 +6015,444 @@ return /******/ (function(modules) { // webpackBootstrap 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; - - -/***/ }) -/******/ ]) -}); + + +/***/ }), +/* 45 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Module of mixed-in functions shared between node and client code + */ + var isObject = __webpack_require__(46); + + /** + * 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; + }; + + +/***/ }), +/* 46 */ +/***/ (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; + + +/***/ }), +/* 47 */ +/***/ (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/web/pubnub.min.js b/dist/web/pubnub.min.js index da7db8f1a..031c1a9e4 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;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._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;ip)&&void 0===e.nsecs&&(u=0),u>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");p=a,g=u,d=o,a+=122192928e5;var l=(1e4*(268435455&a)+u)%4294967296;s[r++]=l>>>24&255,s[r++]=l>>>16&255,s[r++]=l>>>8&255,s[r++]=255&l;var h=a/4294967296*1e4&268435455;s[r++]=h>>>8&255,s[r++]=255&h,s[r++]=h>>>24&15|16,s[r++]=h>>>16&255,s[r++]=o>>>8|128,s[r++]=255&o;for(var y=e.node||f,v=0;v<6;v++)s[r+v]=y[v];return t||i(s)}function o(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||a)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,t)for(var o=0;o<16;o++)t[r+o]=s[o];return t||i(s)}for(var a=n(5),u=[],c={},l=0;l<256;l++)u[l]=(l+256).toString(16).substr(1),c[u[l]]=l;var h=a(),f=[1|h[0],h[1],h[2],h[3],h[4],h[5]],d=16383&(h[6]<<8|h[7]),p=0,g=0,y=o;y.v1=s,y.v4=o,y.parse=r,y.unparse=i,e.exports=y},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){"use strict";e.exports={}},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>>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],M=o[3],O=t(O,w,T,M,a,7,l[0]),M=t(M,O,w,T,u,12,l[1]),T=t(T,M,O,w,c,17,l[2]),w=t(w,T,M,O,h,22,l[3]),O=t(O,w,T,M,f,7,l[4]),M=t(M,O,w,T,d,12,l[5]),T=t(T,M,O,w,p,17,l[6]),w=t(w,T,M,O,g,22,l[7]),O=t(O,w,T,M,y,7,l[8]),M=t(M,O,w,T,v,12,l[9]),T=t(T,M,O,w,b,17,l[10]),w=t(w,T,M,O,_,22,l[11]),O=t(O,w,T,M,m,7,l[12]),M=t(M,O,w,T,k,12,l[13]),T=t(T,M,O,w,P,17,l[14]),w=t(w,T,M,O,S,22,l[15]),O=r(O,w,T,M,u,5,l[16]),M=r(M,O,w,T,p,9,l[17]),T=r(T,M,O,w,_,14,l[18]),w=r(w,T,M,O,a,20,l[19]),O=r(O,w,T,M,d,5,l[20]),M=r(M,O,w,T,b,9,l[21]),T=r(T,M,O,w,S,14,l[22]),w=r(w,T,M,O,f,20,l[23]),O=r(O,w,T,M,v,5,l[24]),M=r(M,O,w,T,P,9,l[25]),T=r(T,M,O,w,h,14,l[26]),w=r(w,T,M,O,y,20,l[27]),O=r(O,w,T,M,k,5,l[28]),M=r(M,O,w,T,c,9,l[29]),T=r(T,M,O,w,g,14,l[30]),w=r(w,T,M,O,m,20,l[31]),O=i(O,w,T,M,d,4,l[32]),M=i(M,O,w,T,y,11,l[33]),T=i(T,M,O,w,_,16,l[34]),w=i(w,T,M,O,P,23,l[35]),O=i(O,w,T,M,u,4,l[36]),M=i(M,O,w,T,f,11,l[37]),T=i(T,M,O,w,g,16,l[38]),w=i(w,T,M,O,b,23,l[39]),O=i(O,w,T,M,k,4,l[40]),M=i(M,O,w,T,a,11,l[41]),T=i(T,M,O,w,h,16,l[42]),w=i(w,T,M,O,p,23,l[43]),O=i(O,w,T,M,v,4,l[44]),M=i(M,O,w,T,m,11,l[45]),T=i(T,M,O,w,S,16,l[46]),w=i(w,T,M,O,c,23,l[47]),O=s(O,w,T,M,a,6,l[48]),M=s(M,O,w,T,g,10,l[49]),T=s(T,M,O,w,P,15,l[50]),w=s(w,T,M,O,d,21,l[51]),O=s(O,w,T,M,m,6,l[52]),M=s(M,O,w,T,h,10,l[53]),T=s(T,M,O,w,b,15,l[54]),w=s(w,T,M,O,u,21,l[55]),O=s(O,w,T,M,y,6,l[56]),M=s(M,O,w,T,S,10,l[57]),T=s(T,M,O,w,p,15,l[58]),w=s(w,T,M,O,k,21,l[59]),O=s(O,w,T,M,f,6,l[60]),M=s(M,O,w,T,_,10,l[61]),T=s(T,M,O,w,c,15,l[62]),w=s(w,T,M,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]+M|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=t.useDelete&&t.useDelete()?n.DELETE(f,v,m):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(4),d=r(f),p=(n(6),n(16)),g=r(p),y=n(3),v=(r(y),n(14)),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(6),n(14)),f=r(h),d=n(16),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(6),n(14)),f=r(h),d=n(16),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(6),n(14)),f=r(h),d=n(16),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(6),n(14)),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(6),n(14)),f=r(h),d=n(16),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(6),n(14)),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(6),n(14)),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(6),n(14)),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(6),n(14)),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(6),n(14)),f=r(h),d=n(16),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(6),n(14)),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(6),n(14)),f=r(h),d=n(16),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(6),n(14)),f=r(h),d=n(16),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(6),n(14)),f=r(h),d=n(16),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(6),n(14)),f=r(h),d=n(16),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(6),n(14)),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(6),n(14)),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(6),n(14)),v=r(y),b=n(16),_=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(6),n(14)),d=r(f),p=n(16),g=r(p)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return d.default.PNDeleteMessagesOperation}function s(e,t){var n=t.channel,r=e.config;return n?r.subscribeKey?void 0:"Missing Subscribe Key":"Missing channel"}function o(){return!0}function a(e,t){var n=t.channel,r=t.start,i=t.end,s=e.config,o="";return r&&(o="?start="+r),i&&(o+=(""!==o?"&":"?")+"end="+i),"/v3/history/sub-key/"+s.subscribeKey+"/channel/"+g.default.encodeString(n)+o}function u(e){return e.config.getTransactionTimeout()}function c(){return!0}function l(e,t){var n=t.start,r=t.end,i={};return n&&(i.start=n),r&&(i.end=r),{}}function h(e,t){return t.payload}Object.defineProperty(t,"__esModule",{value:!0}),t.getOperation=i,t.validateParams=s,t.useDelete=o,t.getURL=a,t.getRequestTimeout=u,t.isAuthSupported=c,t.prepareParams=l,t.handleResponse=h;var f=(n(6),n(14)),d=r(f),p=n(16),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(6),n(14)),d=r(f),p=n(16),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(6),n(14)),f=r(h),d=n(16),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:"DELETE",value:function(e,t,n){return this._modules.del(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=c.default.get(this.getStandardOrigin()+t.url).query(e);return i.call(this,r,t,n)}function o(e,t,n,r){var s=c.default.post(this.getStandardOrigin()+n.url).query(e).send(t);return i.call(this,s,n,r)}function a(e,t,n){var r=c.default.delete(this.getStandardOrigin()+t.url).query(e);return i.call(this,r,t,n)}Object.defineProperty(t,"__esModule",{value:!0}),t.get=s,t.post=o,t.del=a;var u=n(43),c=function(e){return e&&e.__esModule?e:{default:e}}(u);n(6)},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(44),y=n(45),v=n(46),b=e.exports=n(47).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\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 +{"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":"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","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.16.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"]} diff --git a/lib/core/components/endpoint.js b/lib/core/components/endpoint.js index b4c2c03cc..97a9b5027 100644 --- a/lib/core/components/endpoint.js +++ b/lib/core/components/endpoint.js @@ -84,6 +84,8 @@ exports.default = function (modules, endpoint) { if (endpoint.usePost && endpoint.usePost(modules, incomingParams)) { var payload = endpoint.postPayload(modules, incomingParams); callInstance = networking.POST(outgoingParams, payload, networkingParams, onResponse); + } else if (endpoint.useDelete && endpoint.useDelete()) { + callInstance = networking.DELETE(outgoingParams, networkingParams, onResponse); } else { callInstance = networking.GET(outgoingParams, networkingParams, onResponse); } diff --git a/lib/core/components/endpoint.js.map b/lib/core/components/endpoint.js.map index af1cfe17c..c4e3199ef 100644 --- a/lib/core/components/endpoint.js.map +++ b/lib/core/components/endpoint.js.map @@ -1 +1 @@ -{"version":3,"sources":["core/components/endpoint.js"],"names":["modules","endpoint","networking","config","callback","promiseComponent","incomingParams","getOperation","PNTimeOperation","PNChannelGroupsOperation","Promise","createPromise","validationResult","validateParams","createValidationError","reject","PubNubError","promise","outgoingParams","prepareParams","url","decideURL","callInstance","networkingParams","operation","timeout","getRequestTimeout","uuid","UUID","pnsdk","generatePNSDK","useInstanceId","instanceid","instanceId","useRequestId","requestid","v4","isAuthSupported","getAuthKey","auth","secretKey","signRequest","onResponse","status","payload","error","parsedPayload","handleResponse","fulfill","usePost","postPayload","POST","GET","PNSubscribeOperation","message","name","constructor","Error","createError","errorPayload","type","postURL","getURL","base","sdkFamily","partnerId","getVersion","crypto","timestamp","Math","floor","Date","getTime","signInput","subscribeKey","publishKey","signPamFromParams","signature","HMACSHA256","replace"],"mappings":"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","file":"endpoint.js","sourcesContent":["import uuidGenerator from 'uuid';\n\nimport { StatusAnnouncement } from '../flow_interfaces';\nimport utils from '../utils';\nimport Config from './config';\nimport operationConstants from '../constants/operations';\n\nclass PubNubError extends Error {\n constructor(message, status) {\n super(message);\n this.name = this.constructor.name;\n this.status = status;\n this.message = message;\n }\n}\n\nfunction createError(errorPayload: Object, type: string): Object {\n errorPayload.type = type;\n errorPayload.error = true;\n return errorPayload;\n}\n\nfunction createValidationError(message: string): Object {\n return createError({ message }, 'validationError');\n}\n\nfunction decideURL(endpoint, modules, incomingParams) {\n if (endpoint.usePost && endpoint.usePost(modules, incomingParams)) {\n return endpoint.postURL(modules, incomingParams);\n } else {\n return endpoint.getURL(modules, incomingParams);\n }\n}\n\nfunction generatePNSDK(config: Config): string {\n let base = `PubNub-JS-${config.sdkFamily}`;\n\n if (config.partnerId) {\n base += `-${config.partnerId}`;\n }\n\n base += `/${config.getVersion()}`;\n\n return base;\n}\n\nfunction signRequest(modules, url, outgoingParams) {\n let { config, crypto } = modules;\n\n outgoingParams.timestamp = Math.floor(new Date().getTime() / 1000);\n let signInput = `${config.subscribeKey}\\n${config.publishKey}\\n${url}\\n`;\n signInput += utils.signPamFromParams(outgoingParams);\n\n let signature = crypto.HMACSHA256(signInput);\n signature = signature.replace(/\\+/g, '-');\n signature = signature.replace(/\\//g, '_');\n\n outgoingParams.signature = signature;\n}\n\nexport default function (modules, endpoint, ...args) {\n let { networking, config } = modules;\n let callback = null;\n let promiseComponent = null;\n let incomingParams = {};\n\n if (endpoint.getOperation() === operationConstants.PNTimeOperation || endpoint.getOperation() === operationConstants.PNChannelGroupsOperation) {\n callback = args[0];\n } else {\n incomingParams = args[0];\n callback = args[1];\n }\n\n // bridge in Promise support.\n if (typeof Promise !== 'undefined' && !callback) {\n promiseComponent = utils.createPromise();\n }\n\n let validationResult = endpoint.validateParams(modules, incomingParams);\n\n if (validationResult) {\n if (callback) {\n return callback(createValidationError(validationResult));\n } else if (promiseComponent) {\n promiseComponent.reject(new PubNubError('Validation failed, check status for details', createValidationError(validationResult)));\n return promiseComponent.promise;\n }\n return;\n }\n\n let outgoingParams = endpoint.prepareParams(modules, incomingParams);\n let url = decideURL(endpoint, modules, incomingParams);\n let callInstance;\n let networkingParams = { url,\n operation: endpoint.getOperation(),\n timeout: endpoint.getRequestTimeout(modules)\n };\n\n outgoingParams.uuid = config.UUID;\n outgoingParams.pnsdk = generatePNSDK(config);\n\n if (config.useInstanceId) {\n outgoingParams.instanceid = config.instanceId;\n }\n\n if (config.useRequestId) {\n outgoingParams.requestid = uuidGenerator.v4();\n }\n\n if (endpoint.isAuthSupported() && config.getAuthKey()) {\n outgoingParams.auth = config.getAuthKey();\n }\n\n if (config.secretKey) {\n signRequest(modules, url, outgoingParams);\n }\n\n let onResponse = (status: StatusAnnouncement, payload: Object) => {\n if (status.error) {\n if (callback) {\n callback(status);\n } else if (promiseComponent) {\n promiseComponent.reject(new PubNubError('PubNub call failed, check status for details', status));\n }\n return;\n }\n\n let parsedPayload = endpoint.handleResponse(modules, payload, incomingParams);\n\n if (callback) {\n callback(status, parsedPayload);\n } else if (promiseComponent) {\n promiseComponent.fulfill(parsedPayload);\n }\n };\n\n if (endpoint.usePost && endpoint.usePost(modules, incomingParams)) {\n let payload = endpoint.postPayload(modules, incomingParams);\n callInstance = networking.POST(outgoingParams, payload, networkingParams, onResponse);\n } else {\n callInstance = networking.GET(outgoingParams, networkingParams, onResponse);\n }\n\n if (endpoint.getOperation() === operationConstants.PNSubscribeOperation) {\n return callInstance;\n }\n\n if (promiseComponent) {\n return promiseComponent.promise;\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["core/components/endpoint.js"],"names":["modules","endpoint","networking","config","callback","promiseComponent","incomingParams","getOperation","PNTimeOperation","PNChannelGroupsOperation","Promise","createPromise","validationResult","validateParams","createValidationError","reject","PubNubError","promise","outgoingParams","prepareParams","url","decideURL","callInstance","networkingParams","operation","timeout","getRequestTimeout","uuid","UUID","pnsdk","generatePNSDK","useInstanceId","instanceid","instanceId","useRequestId","requestid","v4","isAuthSupported","getAuthKey","auth","secretKey","signRequest","onResponse","status","payload","error","parsedPayload","handleResponse","fulfill","usePost","postPayload","POST","useDelete","DELETE","GET","PNSubscribeOperation","message","name","constructor","Error","createError","errorPayload","type","postURL","getURL","base","sdkFamily","partnerId","getVersion","crypto","timestamp","Math","floor","Date","getTime","signInput","subscribeKey","publishKey","signPamFromParams","signature","HMACSHA256","replace"],"mappings":"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","file":"endpoint.js","sourcesContent":["import uuidGenerator from 'uuid';\n\nimport { StatusAnnouncement } from '../flow_interfaces';\nimport utils from '../utils';\nimport Config from './config';\nimport operationConstants from '../constants/operations';\n\nclass PubNubError extends Error {\n constructor(message, status) {\n super(message);\n this.name = this.constructor.name;\n this.status = status;\n this.message = message;\n }\n}\n\nfunction createError(errorPayload: Object, type: string): Object {\n errorPayload.type = type;\n errorPayload.error = true;\n return errorPayload;\n}\n\nfunction createValidationError(message: string): Object {\n return createError({ message }, 'validationError');\n}\n\nfunction decideURL(endpoint, modules, incomingParams) {\n if (endpoint.usePost && endpoint.usePost(modules, incomingParams)) {\n return endpoint.postURL(modules, incomingParams);\n } else {\n return endpoint.getURL(modules, incomingParams);\n }\n}\n\nfunction generatePNSDK(config: Config): string {\n let base = `PubNub-JS-${config.sdkFamily}`;\n\n if (config.partnerId) {\n base += `-${config.partnerId}`;\n }\n\n base += `/${config.getVersion()}`;\n\n return base;\n}\n\nfunction signRequest(modules, url, outgoingParams) {\n let { config, crypto } = modules;\n\n outgoingParams.timestamp = Math.floor(new Date().getTime() / 1000);\n let signInput = `${config.subscribeKey}\\n${config.publishKey}\\n${url}\\n`;\n signInput += utils.signPamFromParams(outgoingParams);\n\n let signature = crypto.HMACSHA256(signInput);\n signature = signature.replace(/\\+/g, '-');\n signature = signature.replace(/\\//g, '_');\n\n outgoingParams.signature = signature;\n}\n\nexport default function (modules, endpoint, ...args) {\n let { networking, config } = modules;\n let callback = null;\n let promiseComponent = null;\n let incomingParams = {};\n\n if (endpoint.getOperation() === operationConstants.PNTimeOperation || endpoint.getOperation() === operationConstants.PNChannelGroupsOperation) {\n callback = args[0];\n } else {\n incomingParams = args[0];\n callback = args[1];\n }\n\n // bridge in Promise support.\n if (typeof Promise !== 'undefined' && !callback) {\n promiseComponent = utils.createPromise();\n }\n\n let validationResult = endpoint.validateParams(modules, incomingParams);\n\n if (validationResult) {\n if (callback) {\n return callback(createValidationError(validationResult));\n } else if (promiseComponent) {\n promiseComponent.reject(new PubNubError('Validation failed, check status for details', createValidationError(validationResult)));\n return promiseComponent.promise;\n }\n return;\n }\n\n let outgoingParams = endpoint.prepareParams(modules, incomingParams);\n let url = decideURL(endpoint, modules, incomingParams);\n let callInstance;\n let networkingParams = { url,\n operation: endpoint.getOperation(),\n timeout: endpoint.getRequestTimeout(modules)\n };\n\n outgoingParams.uuid = config.UUID;\n outgoingParams.pnsdk = generatePNSDK(config);\n\n if (config.useInstanceId) {\n outgoingParams.instanceid = config.instanceId;\n }\n\n if (config.useRequestId) {\n outgoingParams.requestid = uuidGenerator.v4();\n }\n\n if (endpoint.isAuthSupported() && config.getAuthKey()) {\n outgoingParams.auth = config.getAuthKey();\n }\n\n if (config.secretKey) {\n signRequest(modules, url, outgoingParams);\n }\n\n let onResponse = (status: StatusAnnouncement, payload: Object) => {\n if (status.error) {\n if (callback) {\n callback(status);\n } else if (promiseComponent) {\n promiseComponent.reject(new PubNubError('PubNub call failed, check status for details', status));\n }\n return;\n }\n\n let parsedPayload = endpoint.handleResponse(modules, payload, incomingParams);\n\n if (callback) {\n callback(status, parsedPayload);\n } else if (promiseComponent) {\n promiseComponent.fulfill(parsedPayload);\n }\n };\n\n if (endpoint.usePost && endpoint.usePost(modules, incomingParams)) {\n let payload = endpoint.postPayload(modules, incomingParams);\n callInstance = networking.POST(outgoingParams, payload, networkingParams, onResponse);\n } else if (endpoint.useDelete && endpoint.useDelete()) {\n callInstance = networking.DELETE(outgoingParams, networkingParams, onResponse);\n } else {\n callInstance = networking.GET(outgoingParams, networkingParams, onResponse);\n }\n\n if (endpoint.getOperation() === operationConstants.PNSubscribeOperation) {\n return callInstance;\n }\n\n if (promiseComponent) {\n return promiseComponent.promise;\n }\n}\n"]} \ No newline at end of file diff --git a/lib/core/constants/operations.js b/lib/core/constants/operations.js index 7a4c352f2..615a01dc3 100644 --- a/lib/core/constants/operations.js +++ b/lib/core/constants/operations.js @@ -7,6 +7,7 @@ exports.default = { PNTimeOperation: 'PNTimeOperation', PNHistoryOperation: 'PNHistoryOperation', + PNDeleteMessagesOperation: 'PNDeleteMessagesOperation', PNFetchMessagesOperation: 'PNFetchMessagesOperation', PNSubscribeOperation: 'PNSubscribeOperation', diff --git a/lib/core/constants/operations.js.map b/lib/core/constants/operations.js.map index 04c2e4c5c..06a819acf 100644 --- a/lib/core/constants/operations.js.map +++ b/lib/core/constants/operations.js.map @@ -1 +1 @@ -{"version":3,"sources":["core/constants/operations.js"],"names":["PNTimeOperation","PNHistoryOperation","PNFetchMessagesOperation","PNSubscribeOperation","PNUnsubscribeOperation","PNPublishOperation","PNPushNotificationEnabledChannelsOperation","PNRemoveAllPushNotificationsOperation","PNWhereNowOperation","PNSetStateOperation","PNHereNowOperation","PNGetStateOperation","PNHeartbeatOperation","PNChannelGroupsOperation","PNRemoveGroupOperation","PNChannelsForGroupOperation","PNAddChannelsToGroupOperation","PNRemoveChannelsFromGroupOperation","PNAccessManagerGrant","PNAccessManagerAudit"],"mappings":";;;;;kBACe;AACbA,mBAAiB,iBADJ;;AAGbC,sBAAoB,oBAHP;AAIbC,4BAA0B,0BAJb;;AAObC,wBAAsB,sBAPT;AAQbC,0BAAwB,wBARX;AASbC,sBAAoB,oBATP;;AAYbC,8CAA4C,4CAZ/B;AAabC,yCAAuC,uCAb1B;;AAiBbC,uBAAqB,qBAjBR;AAkBbC,uBAAqB,qBAlBR;AAmBbC,sBAAoB,oBAnBP;AAoBbC,uBAAqB,qBApBR;AAqBbC,wBAAsB,sBArBT;;AAyBbC,4BAA0B,0BAzBb;AA0BbC,0BAAwB,wBA1BX;AA2BbC,+BAA6B,6BA3BhB;AA4BbC,iCAA+B,+BA5BlB;AA6BbC,sCAAoC,oCA7BvB;;AAiCbC,wBAAsB,sBAjCT;AAkCbC,wBAAsB;AAlCT,C","file":"operations.js","sourcesContent":["/* @flow */\nexport default {\n PNTimeOperation: 'PNTimeOperation',\n\n PNHistoryOperation: 'PNHistoryOperation',\n PNFetchMessagesOperation: 'PNFetchMessagesOperation',\n\n // pubsub\n PNSubscribeOperation: 'PNSubscribeOperation',\n PNUnsubscribeOperation: 'PNUnsubscribeOperation',\n PNPublishOperation: 'PNPublishOperation',\n\n // push\n PNPushNotificationEnabledChannelsOperation: 'PNPushNotificationEnabledChannelsOperation',\n PNRemoveAllPushNotificationsOperation: 'PNRemoveAllPushNotificationsOperation',\n //\n\n // presence\n PNWhereNowOperation: 'PNWhereNowOperation',\n PNSetStateOperation: 'PNSetStateOperation',\n PNHereNowOperation: 'PNHereNowOperation',\n PNGetStateOperation: 'PNGetStateOperation',\n PNHeartbeatOperation: 'PNHeartbeatOperation',\n //\n\n // channel group\n PNChannelGroupsOperation: 'PNChannelGroupsOperation',\n PNRemoveGroupOperation: 'PNRemoveGroupOperation',\n PNChannelsForGroupOperation: 'PNChannelsForGroupOperation',\n PNAddChannelsToGroupOperation: 'PNAddChannelsToGroupOperation',\n PNRemoveChannelsFromGroupOperation: 'PNRemoveChannelsFromGroupOperation',\n //\n\n // PAM\n PNAccessManagerGrant: 'PNAccessManagerGrant',\n PNAccessManagerAudit: 'PNAccessManagerAudit',\n //\n\n};\n"]} \ No newline at end of file +{"version":3,"sources":["core/constants/operations.js"],"names":["PNTimeOperation","PNHistoryOperation","PNDeleteMessagesOperation","PNFetchMessagesOperation","PNSubscribeOperation","PNUnsubscribeOperation","PNPublishOperation","PNPushNotificationEnabledChannelsOperation","PNRemoveAllPushNotificationsOperation","PNWhereNowOperation","PNSetStateOperation","PNHereNowOperation","PNGetStateOperation","PNHeartbeatOperation","PNChannelGroupsOperation","PNRemoveGroupOperation","PNChannelsForGroupOperation","PNAddChannelsToGroupOperation","PNRemoveChannelsFromGroupOperation","PNAccessManagerGrant","PNAccessManagerAudit"],"mappings":";;;;;kBACe;AACbA,mBAAiB,iBADJ;;AAGbC,sBAAoB,oBAHP;AAIbC,6BAA2B,2BAJd;AAKbC,4BAA0B,0BALb;;AAQbC,wBAAsB,sBART;AASbC,0BAAwB,wBATX;AAUbC,sBAAoB,oBAVP;;AAabC,8CAA4C,4CAb/B;AAcbC,yCAAuC,uCAd1B;;AAkBbC,uBAAqB,qBAlBR;AAmBbC,uBAAqB,qBAnBR;AAoBbC,sBAAoB,oBApBP;AAqBbC,uBAAqB,qBArBR;AAsBbC,wBAAsB,sBAtBT;;AA0BbC,4BAA0B,0BA1Bb;AA2BbC,0BAAwB,wBA3BX;AA4BbC,+BAA6B,6BA5BhB;AA6BbC,iCAA+B,+BA7BlB;AA8BbC,sCAAoC,oCA9BvB;;AAkCbC,wBAAsB,sBAlCT;AAmCbC,wBAAsB;AAnCT,C","file":"operations.js","sourcesContent":["/* @flow */\nexport default {\n PNTimeOperation: 'PNTimeOperation',\n\n PNHistoryOperation: 'PNHistoryOperation',\n PNDeleteMessagesOperation: 'PNDeleteMessagesOperation',\n PNFetchMessagesOperation: 'PNFetchMessagesOperation',\n\n // pubsub\n PNSubscribeOperation: 'PNSubscribeOperation',\n PNUnsubscribeOperation: 'PNUnsubscribeOperation',\n PNPublishOperation: 'PNPublishOperation',\n\n // push\n PNPushNotificationEnabledChannelsOperation: 'PNPushNotificationEnabledChannelsOperation',\n PNRemoveAllPushNotificationsOperation: 'PNRemoveAllPushNotificationsOperation',\n //\n\n // presence\n PNWhereNowOperation: 'PNWhereNowOperation',\n PNSetStateOperation: 'PNSetStateOperation',\n PNHereNowOperation: 'PNHereNowOperation',\n PNGetStateOperation: 'PNGetStateOperation',\n PNHeartbeatOperation: 'PNHeartbeatOperation',\n //\n\n // channel group\n PNChannelGroupsOperation: 'PNChannelGroupsOperation',\n PNRemoveGroupOperation: 'PNRemoveGroupOperation',\n PNChannelsForGroupOperation: 'PNChannelsForGroupOperation',\n PNAddChannelsToGroupOperation: 'PNAddChannelsToGroupOperation',\n PNRemoveChannelsFromGroupOperation: 'PNRemoveChannelsFromGroupOperation',\n //\n\n // PAM\n PNAccessManagerGrant: 'PNAccessManagerGrant',\n PNAccessManagerAudit: 'PNAccessManagerAudit',\n //\n\n};\n"]} \ No newline at end of file diff --git a/lib/core/endpoints/history.js.map b/lib/core/endpoints/history.js.map deleted file mode 100644 index 3993f0b77..000000000 --- a/lib/core/endpoints/history.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["core/endpoints/history.js"],"names":["getOperation","validateParams","getURL","getRequestTimeout","isAuthSupported","prepareParams","handleResponse","__processMessage","modules","message","config","crypto","cipherKey","decrypt","e","PNHistoryOperation","incomingParams","channel","subscribeKey","encodeString","getTransactionTimeout","start","end","reverse","count","stringifiedTimeToken","outgoingParams","include_token","string_message_token","toString","serverResponse","response","messages","startTimeToken","endTimeToken","forEach","serverHistoryItem","item","timetoken","entry","push"],"mappings":"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","file":"history.js","sourcesContent":["/* @flow */\n\nimport { FetchHistoryArguments, HistoryResponse, HistoryItem, ModulesInject } from '../flow_interfaces';\nimport operationConstants from '../constants/operations';\nimport utils from '../utils';\n\nfunction __processMessage(modules, message: Object): Object | null {\n let { config, crypto } = modules;\n if (!config.cipherKey) return message;\n\n try {\n return crypto.decrypt(message);\n } catch (e) {\n return message;\n }\n}\n\nexport function getOperation(): string {\n return operationConstants.PNHistoryOperation;\n}\n\nexport function validateParams(modules: ModulesInject, incomingParams: FetchHistoryArguments) {\n let { channel } = incomingParams;\n let { config } = modules;\n\n if (!channel) return 'Missing channel';\n if (!config.subscribeKey) return 'Missing Subscribe Key';\n}\n\nexport function getURL(modules: ModulesInject, incomingParams: FetchHistoryArguments): string {\n let { channel } = incomingParams;\n let { config } = modules;\n return `/v2/history/sub-key/${config.subscribeKey}/channel/${utils.encodeString(channel)}`;\n}\n\nexport function getRequestTimeout({ config }: ModulesInject): boolean {\n return config.getTransactionTimeout();\n}\n\nexport function isAuthSupported(): boolean {\n return true;\n}\n\nexport function prepareParams(modules: ModulesInject, incomingParams: FetchHistoryArguments): Object {\n const { start, end, reverse, count = 100, stringifiedTimeToken = false } = incomingParams;\n let outgoingParams: Object = {\n include_token: 'true'\n };\n\n outgoingParams.count = count;\n if (start) outgoingParams.start = start;\n if (end) outgoingParams.end = end;\n if (stringifiedTimeToken) outgoingParams.string_message_token = 'true';\n if (reverse != null) outgoingParams.reverse = reverse.toString();\n\n return outgoingParams;\n}\n\nexport function handleResponse(modules: ModulesInject, serverResponse: FetchHistoryArguments): HistoryResponse {\n const response: HistoryResponse = {\n messages: [],\n startTimeToken: serverResponse[1],\n endTimeToken: serverResponse[2],\n };\n\n serverResponse[0].forEach((serverHistoryItem) => {\n const item: HistoryItem = {\n timetoken: serverHistoryItem.timetoken,\n entry: __processMessage(modules, serverHistoryItem.message)\n };\n\n response.messages.push(item);\n });\n\n return response;\n}\n"]} \ No newline at end of file diff --git a/lib/core/endpoints/history/delete_messages.js b/lib/core/endpoints/history/delete_messages.js new file mode 100644 index 000000000..86be21487 --- /dev/null +++ b/lib/core/endpoints/history/delete_messages.js @@ -0,0 +1,89 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getOperation = getOperation; +exports.validateParams = validateParams; +exports.useDelete = useDelete; +exports.getURL = getURL; +exports.getRequestTimeout = getRequestTimeout; +exports.isAuthSupported = isAuthSupported; +exports.prepareParams = prepareParams; +exports.handleResponse = handleResponse; + +var _flow_interfaces = require('../../flow_interfaces'); + +var _operations = require('../../constants/operations'); + +var _operations2 = _interopRequireDefault(_operations); + +var _utils = require('../../utils'); + +var _utils2 = _interopRequireDefault(_utils); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function getOperation() { + return _operations2.default.PNDeleteMessagesOperation; +} + +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 useDelete() { + return true; +} + +function getURL(modules, incomingParams) { + var channel = incomingParams.channel, + start = incomingParams.start, + end = incomingParams.end; + var config = modules.config; + + var querystring = ''; + + if (start) { + querystring = '?start=' + start; + } + + if (end) { + querystring += (querystring !== '' ? '&' : '?') + 'end=' + end; + } + + return '/v3/history/sub-key/' + config.subscribeKey + '/channel/' + _utils2.default.encodeString(channel) + querystring; +} + +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; + + + var outgoingParams = {}; + + if (start) outgoingParams.start = start; + if (end) outgoingParams.end = end; + + return {}; +} + +function handleResponse(modules, serverResponse) { + return serverResponse.payload; +} +//# sourceMappingURL=delete_messages.js.map diff --git a/lib/core/endpoints/history/delete_messages.js.map b/lib/core/endpoints/history/delete_messages.js.map new file mode 100644 index 000000000..a3a07d6f4 --- /dev/null +++ b/lib/core/endpoints/history/delete_messages.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["core/endpoints/history/delete_messages.js"],"names":["getOperation","validateParams","useDelete","getURL","getRequestTimeout","isAuthSupported","prepareParams","handleResponse","PNDeleteMessagesOperation","modules","incomingParams","channel","config","subscribeKey","start","end","querystring","encodeString","getTransactionTimeout","outgoingParams","serverResponse","payload"],"mappings":";;;;;QAMgBA,Y,GAAAA,Y;QAIAC,c,GAAAA,c;QAQAC,S,GAAAA,S;QAIAC,M,GAAAA,M;QAgBAC,iB,GAAAA,iB;QAIAC,e,GAAAA,e;QAIAC,a,GAAAA,a;QAWAC,c,GAAAA,c;;AAvDhB;;AACA;;;;AACA;;;;;;AAEO,SAASP,YAAT,GAAgC;AACrC,SAAO,qBAAmBQ,yBAA1B;AACD;;AAEM,SAASP,cAAT,CAAwBQ,OAAxB,EAAgDC,cAAhD,EAAuF;AAAA,MACtFC,OADsF,GAC1ED,cAD0E,CACtFC,OADsF;AAAA,MAEtFC,MAFsF,GAE3EH,OAF2E,CAEtFG,MAFsF;;;AAI5F,MAAI,CAACD,OAAL,EAAc,OAAO,iBAAP;AACd,MAAI,CAACC,OAAOC,YAAZ,EAA0B,OAAO,uBAAP;AAC3B;;AAEM,SAASX,SAAT,GAAqB;AAC1B,SAAO,IAAP;AACD;;AAEM,SAASC,MAAT,CAAgBM,OAAhB,EAAwCC,cAAxC,EAAuF;AAAA,MACtFC,OADsF,GAC9DD,cAD8D,CACtFC,OADsF;AAAA,MAC7EG,KAD6E,GAC9DJ,cAD8D,CAC7EI,KAD6E;AAAA,MACtEC,GADsE,GAC9DL,cAD8D,CACtEK,GADsE;AAAA,MAEtFH,MAFsF,GAE3EH,OAF2E,CAEtFG,MAFsF;;AAG5F,MAAII,cAAc,EAAlB;;AAEA,MAAIF,KAAJ,EAAW;AACTE,8BAAwBF,KAAxB;AACD;;AAED,MAAIC,GAAJ,EAAS;AACPC,oBAAmBA,gBAAgB,EAAhB,GAAqB,GAArB,GAA2B,GAA9C,aAAyDD,GAAzD;AACD;;AAED,kCAA8BH,OAAOC,YAArC,iBAA6D,gBAAMI,YAAN,CAAmBN,OAAnB,CAA7D,GAA2FK,WAA3F;AACD;;AAEM,SAASZ,iBAAT,OAA+D;AAAA,MAAlCQ,MAAkC,QAAlCA,MAAkC;;AACpE,SAAOA,OAAOM,qBAAP,EAAP;AACD;;AAEM,SAASb,eAAT,GAAoC;AACzC,SAAO,IAAP;AACD;;AAEM,SAASC,aAAT,CAAuBG,OAAvB,EAA+CC,cAA/C,EAA8F;AAAA,MAC3FI,KAD2F,GAC5EJ,cAD4E,CAC3FI,KAD2F;AAAA,MACpFC,GADoF,GAC5EL,cAD4E,CACpFK,GADoF;;;AAGnG,MAAII,iBAAyB,EAA7B;;AAEA,MAAIL,KAAJ,EAAWK,eAAeL,KAAf,GAAuBA,KAAvB;AACX,MAAIC,GAAJ,EAASI,eAAeJ,GAAf,GAAqBA,GAArB;;AAET,SAAO,EAAP;AACD;;AAEM,SAASR,cAAT,CAAwBE,OAAxB,EAAgDW,cAAhD,EAAyF;AAC9F,SAAOA,eAAeC,OAAtB;AACD","file":"delete_messages.js","sourcesContent":["/* @flow */\n\nimport { FetchHistoryArguments, HistoryResponse, ModulesInject } from '../../flow_interfaces';\nimport operationConstants from '../../constants/operations';\nimport utils from '../../utils';\n\nexport function getOperation(): string {\n return operationConstants.PNDeleteMessagesOperation;\n}\n\nexport function validateParams(modules: ModulesInject, incomingParams: FetchHistoryArguments) {\n let { channel } = incomingParams;\n let { config } = modules;\n\n if (!channel) return 'Missing channel';\n if (!config.subscribeKey) return 'Missing Subscribe Key';\n}\n\nexport function useDelete() {\n return true;\n}\n\nexport function getURL(modules: ModulesInject, incomingParams: FetchHistoryArguments): string {\n let { channel, start, end } = incomingParams;\n let { config } = modules;\n let querystring = '';\n\n if (start) {\n querystring = `?start=${start}`;\n }\n\n if (end) {\n querystring += `${(querystring !== '' ? '&' : '?')}end=${end}`;\n }\n\n return `/v3/history/sub-key/${config.subscribeKey}/channel/${utils.encodeString(channel)}${querystring}`;\n}\n\nexport function getRequestTimeout({ config }: ModulesInject): boolean {\n return config.getTransactionTimeout();\n}\n\nexport function isAuthSupported(): boolean {\n return true;\n}\n\nexport function prepareParams(modules: ModulesInject, incomingParams: FetchHistoryArguments): Object {\n const { start, end } = incomingParams;\n\n let outgoingParams: Object = {};\n\n if (start) outgoingParams.start = start;\n if (end) outgoingParams.end = end;\n\n return {};\n}\n\nexport function handleResponse(modules: ModulesInject, serverResponse: Object): HistoryResponse {\n return serverResponse.payload;\n}\n"]} \ No newline at end of file diff --git a/lib/core/endpoints/history.js b/lib/core/endpoints/history/get_history.js similarity index 93% rename from lib/core/endpoints/history.js rename to lib/core/endpoints/history/get_history.js index 06db97874..fa6881ce9 100644 --- a/lib/core/endpoints/history.js +++ b/lib/core/endpoints/history/get_history.js @@ -11,13 +11,13 @@ exports.isAuthSupported = isAuthSupported; exports.prepareParams = prepareParams; exports.handleResponse = handleResponse; -var _flow_interfaces = require('../flow_interfaces'); +var _flow_interfaces = require('../../flow_interfaces'); -var _operations = require('../constants/operations'); +var _operations = require('../../constants/operations'); var _operations2 = _interopRequireDefault(_operations); -var _utils = require('../utils'); +var _utils = require('../../utils'); var _utils2 = _interopRequireDefault(_utils); @@ -106,4 +106,4 @@ function handleResponse(modules, serverResponse) { return response; } -//# sourceMappingURL=history.js.map +//# sourceMappingURL=get_history.js.map diff --git a/lib/core/endpoints/history/get_history.js.map b/lib/core/endpoints/history/get_history.js.map new file mode 100644 index 000000000..a25384264 --- /dev/null +++ b/lib/core/endpoints/history/get_history.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["core/endpoints/history/get_history.js"],"names":["getOperation","validateParams","getURL","getRequestTimeout","isAuthSupported","prepareParams","handleResponse","__processMessage","modules","message","config","crypto","cipherKey","decrypt","e","PNHistoryOperation","incomingParams","channel","subscribeKey","encodeString","getTransactionTimeout","start","end","reverse","count","stringifiedTimeToken","outgoingParams","include_token","string_message_token","toString","serverResponse","response","messages","startTimeToken","endTimeToken","forEach","serverHistoryItem","item","timetoken","entry","push"],"mappings":"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","file":"get_history.js","sourcesContent":["/* @flow */\n\nimport { FetchHistoryArguments, HistoryResponse, HistoryItem, ModulesInject } from '../../flow_interfaces';\nimport operationConstants from '../../constants/operations';\nimport utils from '../../utils';\n\nfunction __processMessage(modules, message: Object): Object | null {\n let { config, crypto } = modules;\n if (!config.cipherKey) return message;\n\n try {\n return crypto.decrypt(message);\n } catch (e) {\n return message;\n }\n}\n\nexport function getOperation(): string {\n return operationConstants.PNHistoryOperation;\n}\n\nexport function validateParams(modules: ModulesInject, incomingParams: FetchHistoryArguments) {\n let { channel } = incomingParams;\n let { config } = modules;\n\n if (!channel) return 'Missing channel';\n if (!config.subscribeKey) return 'Missing Subscribe Key';\n}\n\nexport function getURL(modules: ModulesInject, incomingParams: FetchHistoryArguments): string {\n let { channel } = incomingParams;\n let { config } = modules;\n return `/v2/history/sub-key/${config.subscribeKey}/channel/${utils.encodeString(channel)}`;\n}\n\nexport function getRequestTimeout({ config }: ModulesInject): boolean {\n return config.getTransactionTimeout();\n}\n\nexport function isAuthSupported(): boolean {\n return true;\n}\n\nexport function prepareParams(modules: ModulesInject, incomingParams: FetchHistoryArguments): Object {\n const { start, end, reverse, count = 100, stringifiedTimeToken = false } = incomingParams;\n let outgoingParams: Object = {\n include_token: 'true'\n };\n\n outgoingParams.count = count;\n if (start) outgoingParams.start = start;\n if (end) outgoingParams.end = end;\n if (stringifiedTimeToken) outgoingParams.string_message_token = 'true';\n if (reverse != null) outgoingParams.reverse = reverse.toString();\n\n return outgoingParams;\n}\n\nexport function handleResponse(modules: ModulesInject, serverResponse: FetchHistoryArguments): HistoryResponse {\n const response: HistoryResponse = {\n messages: [],\n startTimeToken: serverResponse[1],\n endTimeToken: serverResponse[2],\n };\n\n serverResponse[0].forEach((serverHistoryItem) => {\n const item: HistoryItem = {\n timetoken: serverHistoryItem.timetoken,\n entry: __processMessage(modules, serverHistoryItem.message)\n };\n\n response.messages.push(item);\n });\n\n return response;\n}\n"]} \ No newline at end of file diff --git a/lib/core/pubnub-common.js b/lib/core/pubnub-common.js index 1e39daed9..9fe0634dd 100644 --- a/lib/core/pubnub-common.js +++ b/lib/core/pubnub-common.js @@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", { 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 = require('uuid'); +var _lilUuid = require('lil-uuid'); -var _uuid2 = _interopRequireDefault(_uuid); +var _lilUuid2 = _interopRequireDefault(_lilUuid); var _config = require('./components/config'); @@ -102,9 +102,13 @@ var _publish = require('./endpoints/publish'); var publishEndpointConfig = _interopRequireWildcard(_publish); -var _history = require('./endpoints/history'); +var _get_history = require('./endpoints/history/get_history'); -var historyEndpointConfig = _interopRequireWildcard(_history); +var historyEndpointConfig = _interopRequireWildcard(_get_history); + +var _delete_messages = require('./endpoints/history/delete_messages'); + +var deleteMessagesEndpointConfig = _interopRequireWildcard(_delete_messages); var _fetch_messages = require('./endpoints/fetch_messages'); @@ -206,6 +210,7 @@ var _class = function () { }; this.history = _endpoint2.default.bind(this, modules, historyEndpointConfig); + this.deleteMessages = _endpoint2.default.bind(this, modules, deleteMessagesEndpointConfig); this.fetchMessages = _endpoint2.default.bind(this, modules, fetchMessagesEndpointConfig); this.time = timeEndpoint; @@ -266,7 +271,7 @@ var _class = function () { }], [{ key: 'generateUUID', value: function generateUUID() { - return _uuid2.default.v4(); + return (0, _lilUuid2.default)(); } }]); diff --git a/lib/core/pubnub-common.js.map b/lib/core/pubnub-common.js.map index 69d1d6ef9..1719d4ac0 100644 --- a/lib/core/pubnub-common.js.map +++ b/lib/core/pubnub-common.js.map @@ -1 +1 @@ -{"version":3,"sources":["core/pubnub-common.js"],"names":["addChannelsChannelGroupConfig","removeChannelsChannelGroupConfig","deleteChannelGroupConfig","listChannelGroupsConfig","listChannelsInChannelGroupConfig","addPushChannelsConfig","removePushChannelsConfig","listPushChannelsConfig","removeDevicePushConfig","presenceLeaveEndpointConfig","presenceWhereNowEndpointConfig","presenceHeartbeatEndpointConfig","presenceGetStateConfig","presenceSetStateConfig","presenceHereNowConfig","auditEndpointConfig","grantEndpointConfig","publishEndpointConfig","historyEndpointConfig","fetchMessagesEndpointConfig","timeEndpointConfig","subscribeEndpointConfig","setup","db","networking","config","_config","crypto","init","modules","timeEndpoint","bind","leaveEndpoint","heartbeatEndpoint","setStateEndpoint","subscribeEndpoint","listenerManager","_listenerManager","subscriptionManager","addListener","removeListener","removeAllListeners","channelGroups","listGroups","listChannels","addChannels","removeChannels","deleteGroup","push","deleteDevice","hereNow","whereNow","getState","setState","adaptStateChange","grant","audit","publish","fire","args","callback","replicate","storeInHistory","history","fetchMessages","time","subscribe","adaptSubscribeChange","unsubscribe","adaptUnsubscribeChange","disconnect","reconnect","destroy","isOffline","unsubscribeAll","stop","getSubscribedChannels","getSubscribedChannelGroups","encrypt","decrypt","getAuthKey","setAuthKey","setCipherKey","getUUID","setUUID","getFilterExpression","setFilterExpression","setHeartbeatInterval","getVersion","announceNetworkDown","restore","announceNetworkUp","v4","OPERATIONS","CATEGORIES"],"mappings":";;;;;;;;AAEA;;;;AAEA;;;;AACA;;;;AACA;;;;AACA;;;;AAEA;;;;AAEA;;IAAYA,6B;;AACZ;;IAAYC,gC;;AACZ;;IAAYC,wB;;AACZ;;IAAYC,uB;;AACZ;;IAAYC,gC;;AAEZ;;IAAYC,qB;;AACZ;;IAAYC,wB;;AACZ;;IAAYC,sB;;AACZ;;IAAYC,sB;;AAEZ;;IAAYC,2B;;AACZ;;IAAYC,8B;;AACZ;;IAAYC,+B;;AACZ;;IAAYC,sB;;AACZ;;IAAYC,sB;;AACZ;;IAAYC,qB;;AAEZ;;IAAYC,mB;;AACZ;;IAAYC,mB;;AAEZ;;IAAYC,qB;;AACZ;;IAAYC,qB;;AACZ;;IAAYC,2B;;AACZ;;IAAYC,kB;;AACZ;;IAAYC,uB;;AAEZ;;;;AACA;;;;AAEA;;;;;;;;;AA6DE,kBAAYC,KAAZ,EAAwC;AAAA;;AAAA;;AAAA,QAChCC,EADgC,GACbD,KADa,CAChCC,EADgC;AAAA,QAC5BC,UAD4B,GACbF,KADa,CAC5BE,UAD4B;;;AAGtC,QAAMC,SAAS,KAAKC,OAAL,GAAe,qBAAW,EAAEJ,YAAF,EAASC,MAAT,EAAX,CAA9B;AACA,QAAMI,SAAS,oBAAW,EAAEF,cAAF,EAAX,CAAf;;AAEAD,eAAWI,IAAX,CAAgBH,MAAhB;;AAEA,QAAII,UAAU,EAAEJ,cAAF,EAAUD,sBAAV,EAAsBG,cAAtB,EAAd;;AAEA,QAAMG,eAAe,mBAAgBC,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoCT,kBAApC,CAArB;AACA,QAAMY,gBAAgB,mBAAgBD,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoCpB,2BAApC,CAAtB;AACA,QAAMwB,oBAAoB,mBAAgBF,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoClB,+BAApC,CAA1B;AACA,QAAMuB,mBAAmB,mBAAgBH,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoChB,sBAApC,CAAzB;AACA,QAAMsB,oBAAoB,mBAAgBJ,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoCR,uBAApC,CAA1B;;AAGA,QAAMe,kBAAkB,KAAKC,gBAAL,GAAwB,gCAAhD;;AAEA,QAAMC,sBAAsB,mCAAwB;AAClDR,gCADkD;AAElDE,kCAFkD;AAGlDC,0CAHkD;AAIlDC,wCAJkD;AAKlDC,0CALkD;AAMlDR,cAAQE,QAAQF,MANkC;AAOlDF,cAAQI,QAAQJ,MAPkC;AAQlDW;AARkD,KAAxB,CAA5B;;AAWA,SAAKG,WAAL,GAAmBH,gBAAgBG,WAAhB,CAA4BR,IAA5B,CAAiCK,eAAjC,CAAnB;AACA,SAAKI,cAAL,GAAsBJ,gBAAgBI,cAAhB,CAA+BT,IAA/B,CAAoCK,eAApC,CAAtB;AACA,SAAKK,kBAAL,GAA0BL,gBAAgBK,kBAAhB,CAAmCV,IAAnC,CAAwCK,eAAxC,CAA1B;;AAGA,SAAKM,aAAL,GAAqB;AACnBC,kBAAY,mBAAgBZ,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoC1B,uBAApC,CADO;AAEnByC,oBAAc,mBAAgBb,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoCzB,gCAApC,CAFK;AAGnByC,mBAAa,mBAAgBd,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoC7B,6BAApC,CAHM;AAInB8C,sBAAgB,mBAAgBf,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoC5B,gCAApC,CAJG;AAKnB8C,mBAAa,mBAAgBhB,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoC3B,wBAApC;AALM,KAArB;;AAQA,SAAK8C,IAAL,GAAY;AACVH,mBAAa,mBAAgBd,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoCxB,qBAApC,CADH;AAEVyC,sBAAgB,mBAAgBf,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoCvB,wBAApC,CAFN;AAGV2C,oBAAc,mBAAgBlB,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoCrB,sBAApC,CAHJ;AAIVoC,oBAAc,mBAAgBb,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoCtB,sBAApC;AAJJ,KAAZ;;AAOA,SAAK2C,OAAL,GAAe,mBAAgBnB,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoCf,qBAApC,CAAf;AACA,SAAKqC,QAAL,GAAgB,mBAAgBpB,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoCnB,8BAApC,CAAhB;AACA,SAAK0C,QAAL,GAAgB,mBAAgBrB,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoCjB,sBAApC,CAAhB;AACA,SAAKyC,QAAL,GAAgBf,oBAAoBgB,gBAApB,CAAqCvB,IAArC,CAA0CO,mBAA1C,CAAhB;;AAEA,SAAKiB,KAAL,GAAa,mBAAgBxB,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoCb,mBAApC,CAAb;AACA,SAAKwC,KAAL,GAAa,mBAAgBzB,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoCd,mBAApC,CAAb;;AAEA,SAAK0C,OAAL,GAAe,mBAAgB1B,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoCZ,qBAApC,CAAf;;AAEA,SAAKyC,IAAL,GAAY,UAACC,IAAD,EAAOC,QAAP,EAAoB;AAC9BD,WAAKE,SAAL,GAAiB,KAAjB;AACAF,WAAKG,cAAL,GAAsB,KAAtB;AACA,aAAO,MAAKL,OAAL,CAAaE,IAAb,EAAmBC,QAAnB,CAAP;AACD,KAJD;;AAMA,SAAKG,OAAL,GAAe,mBAAgBhC,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoCX,qBAApC,CAAf;AACA,SAAK8C,aAAL,GAAqB,mBAAgBjC,IAAhB,CAAqB,IAArB,EAA2BF,OAA3B,EAAoCV,2BAApC,CAArB;;AAEA,SAAK8C,IAAL,GAAYnC,YAAZ;;AAGA,SAAKoC,SAAL,GAAiB5B,oBAAoB6B,oBAApB,CAAyCpC,IAAzC,CAA8CO,mBAA9C,CAAjB;AACA,SAAK8B,WAAL,GAAmB9B,oBAAoB+B,sBAApB,CAA2CtC,IAA3C,CAAgDO,mBAAhD,CAAnB;AACA,SAAKgC,UAAL,GAAkBhC,oBAAoBgC,UAApB,CAA+BvC,IAA/B,CAAoCO,mBAApC,CAAlB;AACA,SAAKiC,SAAL,GAAiBjC,oBAAoBiC,SAApB,CAA8BxC,IAA9B,CAAmCO,mBAAnC,CAAjB;;AAEA,SAAKkC,OAAL,GAAe,UAACC,SAAD,EAAwB;AACrCnC,0BAAoBoC,cAApB,CAAmCD,SAAnC;AACAnC,0BAAoBgC,UAApB;AACD,KAHD;;AAMA,SAAKK,IAAL,GAAY,KAAKH,OAAjB;;AAGA,SAAKE,cAAL,GAAsBpC,oBAAoBoC,cAApB,CAAmC3C,IAAnC,CAAwCO,mBAAxC,CAAtB;;AAEA,SAAKsC,qBAAL,GAA6BtC,oBAAoBsC,qBAApB,CAA0C7C,IAA1C,CAA+CO,mBAA/C,CAA7B;AACA,SAAKuC,0BAAL,GAAkCvC,oBAAoBuC,0BAApB,CAA+C9C,IAA/C,CAAoDO,mBAApD,CAAlC;;AAGA,SAAKwC,OAAL,GAAenD,OAAOmD,OAAP,CAAe/C,IAAf,CAAoBJ,MAApB,CAAf;AACA,SAAKoD,OAAL,GAAepD,OAAOoD,OAAP,CAAehD,IAAf,CAAoBJ,MAApB,CAAf;;AAGA,SAAKqD,UAAL,GAAkBnD,QAAQJ,MAAR,CAAeuD,UAAf,CAA0BjD,IAA1B,CAA+BF,QAAQJ,MAAvC,CAAlB;AACA,SAAKwD,UAAL,GAAkBpD,QAAQJ,MAAR,CAAewD,UAAf,CAA0BlD,IAA1B,CAA+BF,QAAQJ,MAAvC,CAAlB;AACA,SAAKyD,YAAL,GAAoBrD,QAAQJ,MAAR,CAAeyD,YAAf,CAA4BnD,IAA5B,CAAiCF,QAAQJ,MAAzC,CAApB;AACA,SAAK0D,OAAL,GAAetD,QAAQJ,MAAR,CAAe0D,OAAf,CAAuBpD,IAAvB,CAA4BF,QAAQJ,MAApC,CAAf;AACA,SAAK2D,OAAL,GAAevD,QAAQJ,MAAR,CAAe2D,OAAf,CAAuBrD,IAAvB,CAA4BF,QAAQJ,MAApC,CAAf;AACA,SAAK4D,mBAAL,GAA2BxD,QAAQJ,MAAR,CAAe4D,mBAAf,CAAmCtD,IAAnC,CAAwCF,QAAQJ,MAAhD,CAA3B;AACA,SAAK6D,mBAAL,GAA2BzD,QAAQJ,MAAR,CAAe6D,mBAAf,CAAmCvD,IAAnC,CAAwCF,QAAQJ,MAAhD,CAA3B;;AAEA,SAAK8D,oBAAL,GAA4B1D,QAAQJ,MAAR,CAAe8D,oBAAf,CAAoCxD,IAApC,CAAyCF,QAAQJ,MAAjD,CAA5B;AACD;;;;iCAGoB;AACnB,aAAO,KAAKC,OAAL,CAAa8D,UAAb,EAAP;AACD;;;0CAGqB;AACpB,WAAKnD,gBAAL,CAAsBoD,mBAAtB;;AAEA,UAAI,KAAK/D,OAAL,CAAagE,OAAjB,EAA0B;AACxB,aAAKpB,UAAL;AACD,OAFD,MAEO;AACL,aAAKE,OAAL,CAAa,IAAb;AACD;AACF;;;wCAEmB;AAClB,WAAKnC,gBAAL,CAAsBsD,iBAAtB;AACA,WAAKpB,SAAL;AACD;;;mCAG6B;AAC5B,aAAO,eAAcqB,EAAd,EAAP;AACD;;;;;;OAEMC,U;OACAC,U","file":"pubnub-common.js","sourcesContent":["/* @flow */\n\nimport uuidGenerator from 'uuid';\n\nimport Config from './components/config';\nimport Crypto from './components/cryptography/index';\nimport SubscriptionManager from './components/subscription_manager';\nimport ListenerManager from './components/listener_manager';\n\nimport endpointCreator from './components/endpoint';\n\nimport * as addChannelsChannelGroupConfig from './endpoints/channel_groups/add_channels';\nimport * as removeChannelsChannelGroupConfig from './endpoints/channel_groups/remove_channels';\nimport * as deleteChannelGroupConfig from './endpoints/channel_groups/delete_group';\nimport * as listChannelGroupsConfig from './endpoints/channel_groups/list_groups';\nimport * as listChannelsInChannelGroupConfig from './endpoints/channel_groups/list_channels';\n\nimport * as addPushChannelsConfig from './endpoints/push/add_push_channels';\nimport * as removePushChannelsConfig from './endpoints/push/remove_push_channels';\nimport * as listPushChannelsConfig from './endpoints/push/list_push_channels';\nimport * as removeDevicePushConfig from './endpoints/push/remove_device';\n\nimport * as presenceLeaveEndpointConfig from './endpoints/presence/leave';\nimport * as presenceWhereNowEndpointConfig from './endpoints/presence/where_now';\nimport * as presenceHeartbeatEndpointConfig from './endpoints/presence/heartbeat';\nimport * as presenceGetStateConfig from './endpoints/presence/get_state';\nimport * as presenceSetStateConfig from './endpoints/presence/set_state';\nimport * as presenceHereNowConfig from './endpoints/presence/here_now';\n\nimport * as auditEndpointConfig from './endpoints/access_manager/audit';\nimport * as grantEndpointConfig from './endpoints/access_manager/grant';\n\nimport * as publishEndpointConfig from './endpoints/publish';\nimport * as historyEndpointConfig from './endpoints/history';\nimport * as fetchMessagesEndpointConfig from './endpoints/fetch_messages';\nimport * as timeEndpointConfig from './endpoints/time';\nimport * as subscribeEndpointConfig from './endpoints/subscribe';\n\nimport OPERATIONS from './constants/operations';\nimport CATEGORIES from './constants/categories';\n\nimport { InternalSetupStruct } from './flow_interfaces';\n\nexport default class {\n\n _config: Config;\n _listenerManager: ListenerManager;\n\n // tell flow about the mounted endpoint\n time: Function;\n publish: Function;\n fire: Function;\n\n history: Function;\n fetchMessages: Function;\n\n //\n channelGroups: Object;\n //\n push: Object;\n //\n hereNow: Function;\n whereNow: Function;\n getState: Function;\n setState: Function;\n //\n grant: Function;\n audit: Function;\n //\n subscribe: Function;\n unsubscribe: Function;\n unsubscribeAll: Function;\n\n disconnect: Function;\n reconnect: Function;\n\n\n destroy: Function;\n stop: Function;\n\n getSubscribedChannels: Function;\n getSubscribedChannelGroups: Function;\n\n addListener: Function;\n removeListener: Function;\n removeAllListeners: Function;\n\n getAuthKey: Function;\n setAuthKey: Function;\n\n setCipherKey: Function;\n setUUID: Function;\n getUUID: Function;\n\n getFilterExpression: Function;\n setFilterExpression: Function;\n\n encrypt: Function;\n decrypt: Function;\n\n //\n\n constructor(setup: InternalSetupStruct) {\n let { db, networking } = setup;\n\n const config = this._config = new Config({ setup, db });\n const crypto = new Crypto({ config });\n\n networking.init(config);\n\n let modules = { config, networking, crypto };\n\n const timeEndpoint = endpointCreator.bind(this, modules, timeEndpointConfig);\n const leaveEndpoint = endpointCreator.bind(this, modules, presenceLeaveEndpointConfig);\n const heartbeatEndpoint = endpointCreator.bind(this, modules, presenceHeartbeatEndpointConfig);\n const setStateEndpoint = endpointCreator.bind(this, modules, presenceSetStateConfig);\n const subscribeEndpoint = endpointCreator.bind(this, modules, subscribeEndpointConfig);\n\n // managers\n const listenerManager = this._listenerManager = new ListenerManager();\n\n const subscriptionManager = new SubscriptionManager({\n timeEndpoint,\n leaveEndpoint,\n heartbeatEndpoint,\n setStateEndpoint,\n subscribeEndpoint,\n crypto: modules.crypto,\n config: modules.config,\n listenerManager\n });\n\n this.addListener = listenerManager.addListener.bind(listenerManager);\n this.removeListener = listenerManager.removeListener.bind(listenerManager);\n this.removeAllListeners = listenerManager.removeAllListeners.bind(listenerManager);\n\n /* channel groups */\n this.channelGroups = {\n listGroups: endpointCreator.bind(this, modules, listChannelGroupsConfig),\n listChannels: endpointCreator.bind(this, modules, listChannelsInChannelGroupConfig),\n addChannels: endpointCreator.bind(this, modules, addChannelsChannelGroupConfig),\n removeChannels: endpointCreator.bind(this, modules, removeChannelsChannelGroupConfig),\n deleteGroup: endpointCreator.bind(this, modules, deleteChannelGroupConfig)\n };\n /* push */\n this.push = {\n addChannels: endpointCreator.bind(this, modules, addPushChannelsConfig),\n removeChannels: endpointCreator.bind(this, modules, removePushChannelsConfig),\n deleteDevice: endpointCreator.bind(this, modules, removeDevicePushConfig),\n listChannels: endpointCreator.bind(this, modules, listPushChannelsConfig)\n };\n /* presence */\n this.hereNow = endpointCreator.bind(this, modules, presenceHereNowConfig);\n this.whereNow = endpointCreator.bind(this, modules, presenceWhereNowEndpointConfig);\n this.getState = endpointCreator.bind(this, modules, presenceGetStateConfig);\n this.setState = subscriptionManager.adaptStateChange.bind(subscriptionManager);\n /* PAM */\n this.grant = endpointCreator.bind(this, modules, grantEndpointConfig);\n this.audit = endpointCreator.bind(this, modules, auditEndpointConfig);\n //\n this.publish = endpointCreator.bind(this, modules, publishEndpointConfig);\n\n this.fire = (args, callback) => {\n args.replicate = false;\n args.storeInHistory = false;\n return this.publish(args, callback);\n };\n\n this.history = endpointCreator.bind(this, modules, historyEndpointConfig);\n this.fetchMessages = endpointCreator.bind(this, modules, fetchMessagesEndpointConfig);\n\n this.time = timeEndpoint;\n\n // subscription related methods\n this.subscribe = subscriptionManager.adaptSubscribeChange.bind(subscriptionManager);\n this.unsubscribe = subscriptionManager.adaptUnsubscribeChange.bind(subscriptionManager);\n this.disconnect = subscriptionManager.disconnect.bind(subscriptionManager);\n this.reconnect = subscriptionManager.reconnect.bind(subscriptionManager);\n\n this.destroy = (isOffline: boolean) => {\n subscriptionManager.unsubscribeAll(isOffline);\n subscriptionManager.disconnect();\n };\n\n // --- deprecated ------------------\n this.stop = this.destroy; // --------\n // --- deprecated ------------------\n\n this.unsubscribeAll = subscriptionManager.unsubscribeAll.bind(subscriptionManager);\n\n this.getSubscribedChannels = subscriptionManager.getSubscribedChannels.bind(subscriptionManager);\n this.getSubscribedChannelGroups = subscriptionManager.getSubscribedChannelGroups.bind(subscriptionManager);\n\n // mount crypto\n this.encrypt = crypto.encrypt.bind(crypto);\n this.decrypt = crypto.decrypt.bind(crypto);\n\n /* config */\n this.getAuthKey = modules.config.getAuthKey.bind(modules.config);\n this.setAuthKey = modules.config.setAuthKey.bind(modules.config);\n this.setCipherKey = modules.config.setCipherKey.bind(modules.config);\n this.getUUID = modules.config.getUUID.bind(modules.config);\n this.setUUID = modules.config.setUUID.bind(modules.config);\n this.getFilterExpression = modules.config.getFilterExpression.bind(modules.config);\n this.setFilterExpression = modules.config.setFilterExpression.bind(modules.config);\n\n this.setHeartbeatInterval = modules.config.setHeartbeatInterval.bind(modules.config);\n }\n\n\n getVersion(): string {\n return this._config.getVersion();\n }\n\n // network hooks to indicate network changes\n networkDownDetected() {\n this._listenerManager.announceNetworkDown();\n\n if (this._config.restore) {\n this.disconnect();\n } else {\n this.destroy(true);\n }\n }\n\n networkUpDetected() {\n this._listenerManager.announceNetworkUp();\n this.reconnect();\n }\n\n\n static generateUUID(): string {\n return uuidGenerator.v4();\n }\n\n static OPERATIONS = OPERATIONS;\n static CATEGORIES = CATEGORIES;\n\n}\n"]} \ No newline at end of file +{"version":3,"sources":["core/pubnub-common.js"],"names":["addChannelsChannelGroupConfig","removeChannelsChannelGroupConfig","deleteChannelGroupConfig","listChannelGroupsConfig","listChannelsInChannelGroupConfig","addPushChannelsConfig","removePushChannelsConfig","listPushChannelsConfig","removeDevicePushConfig","presenceLeaveEndpointConfig","presenceWhereNowEndpointConfig","presenceHeartbeatEndpointConfig","presenceGetStateConfig","presenceSetStateConfig","presenceHereNowConfig","auditEndpointConfig","grantEndpointConfig","publishEndpointConfig","historyEndpointConfig","deleteMessagesEndpointConfig","fetchMessagesEndpointConfig","timeEndpointConfig","subscribeEndpointConfig","setup","db","networking","config","_config","crypto","init","modules","timeEndpoint","bind","leaveEndpoint","heartbeatEndpoint","setStateEndpoint","subscribeEndpoint","listenerManager","_listenerManager","subscriptionManager","addListener","removeListener","removeAllListeners","channelGroups","listGroups","listChannels","addChannels","removeChannels","deleteGroup","push","deleteDevice","hereNow","whereNow","getState","setState","adaptStateChange","grant","audit","publish","fire","args","callback","replicate","storeInHistory","history","deleteMessages","fetchMessages","time","subscribe","adaptSubscribeChange","unsubscribe","adaptUnsubscribeChange","disconnect","reconnect","destroy","isOffline","unsubscribeAll","stop","getSubscribedChannels","getSubscribedChannelGroups","encrypt","decrypt","getAuthKey","setAuthKey","setCipherKey","getUUID","setUUID","getFilterExpression","setFilterExpression","setHeartbeatInterval","getVersion","announceNetworkDown","restore","announceNetworkUp","OPERATIONS","CATEGORIES"],"mappings":"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","file":"pubnub-common.js","sourcesContent":["/* @flow */\n\nimport uuidGenerator from 'lil-uuid';\n\nimport Config from './components/config';\nimport Crypto from './components/cryptography/index';\nimport SubscriptionManager from './components/subscription_manager';\nimport ListenerManager from './components/listener_manager';\n\nimport endpointCreator from './components/endpoint';\n\nimport * as addChannelsChannelGroupConfig from './endpoints/channel_groups/add_channels';\nimport * as removeChannelsChannelGroupConfig from './endpoints/channel_groups/remove_channels';\nimport * as deleteChannelGroupConfig from './endpoints/channel_groups/delete_group';\nimport * as listChannelGroupsConfig from './endpoints/channel_groups/list_groups';\nimport * as listChannelsInChannelGroupConfig from './endpoints/channel_groups/list_channels';\n\nimport * as addPushChannelsConfig from './endpoints/push/add_push_channels';\nimport * as removePushChannelsConfig from './endpoints/push/remove_push_channels';\nimport * as listPushChannelsConfig from './endpoints/push/list_push_channels';\nimport * as removeDevicePushConfig from './endpoints/push/remove_device';\n\nimport * as presenceLeaveEndpointConfig from './endpoints/presence/leave';\nimport * as presenceWhereNowEndpointConfig from './endpoints/presence/where_now';\nimport * as presenceHeartbeatEndpointConfig from './endpoints/presence/heartbeat';\nimport * as presenceGetStateConfig from './endpoints/presence/get_state';\nimport * as presenceSetStateConfig from './endpoints/presence/set_state';\nimport * as presenceHereNowConfig from './endpoints/presence/here_now';\n\nimport * as auditEndpointConfig from './endpoints/access_manager/audit';\nimport * as grantEndpointConfig from './endpoints/access_manager/grant';\n\nimport * as publishEndpointConfig from './endpoints/publish';\nimport * as historyEndpointConfig from './endpoints/history/get_history';\nimport * as deleteMessagesEndpointConfig from './endpoints/history/delete_messages';\nimport * as fetchMessagesEndpointConfig from './endpoints/fetch_messages';\nimport * as timeEndpointConfig from './endpoints/time';\nimport * as subscribeEndpointConfig from './endpoints/subscribe';\n\nimport OPERATIONS from './constants/operations';\nimport CATEGORIES from './constants/categories';\n\nimport { InternalSetupStruct } from './flow_interfaces';\n\nexport default class {\n\n _config: Config;\n _listenerManager: ListenerManager;\n\n // tell flow about the mounted endpoint\n time: Function;\n publish: Function;\n fire: Function;\n\n history: Function;\n deleteHistory: Function;\n fetchMessages: Function;\n\n //\n channelGroups: Object;\n //\n push: Object;\n //\n hereNow: Function;\n whereNow: Function;\n getState: Function;\n setState: Function;\n //\n grant: Function;\n audit: Function;\n //\n subscribe: Function;\n unsubscribe: Function;\n unsubscribeAll: Function;\n\n disconnect: Function;\n reconnect: Function;\n\n\n destroy: Function;\n stop: Function;\n\n getSubscribedChannels: Function;\n getSubscribedChannelGroups: Function;\n\n addListener: Function;\n removeListener: Function;\n removeAllListeners: Function;\n\n getAuthKey: Function;\n setAuthKey: Function;\n\n setCipherKey: Function;\n setUUID: Function;\n getUUID: Function;\n\n getFilterExpression: Function;\n setFilterExpression: Function;\n\n encrypt: Function;\n decrypt: Function;\n\n //\n\n constructor(setup: InternalSetupStruct) {\n let { db, networking } = setup;\n\n const config = this._config = new Config({ setup, db });\n const crypto = new Crypto({ config });\n\n networking.init(config);\n\n let modules = { config, networking, crypto };\n\n const timeEndpoint = endpointCreator.bind(this, modules, timeEndpointConfig);\n const leaveEndpoint = endpointCreator.bind(this, modules, presenceLeaveEndpointConfig);\n const heartbeatEndpoint = endpointCreator.bind(this, modules, presenceHeartbeatEndpointConfig);\n const setStateEndpoint = endpointCreator.bind(this, modules, presenceSetStateConfig);\n const subscribeEndpoint = endpointCreator.bind(this, modules, subscribeEndpointConfig);\n\n // managers\n const listenerManager = this._listenerManager = new ListenerManager();\n\n const subscriptionManager = new SubscriptionManager({\n timeEndpoint,\n leaveEndpoint,\n heartbeatEndpoint,\n setStateEndpoint,\n subscribeEndpoint,\n crypto: modules.crypto,\n config: modules.config,\n listenerManager\n });\n\n this.addListener = listenerManager.addListener.bind(listenerManager);\n this.removeListener = listenerManager.removeListener.bind(listenerManager);\n this.removeAllListeners = listenerManager.removeAllListeners.bind(listenerManager);\n\n /* channel groups */\n this.channelGroups = {\n listGroups: endpointCreator.bind(this, modules, listChannelGroupsConfig),\n listChannels: endpointCreator.bind(this, modules, listChannelsInChannelGroupConfig),\n addChannels: endpointCreator.bind(this, modules, addChannelsChannelGroupConfig),\n removeChannels: endpointCreator.bind(this, modules, removeChannelsChannelGroupConfig),\n deleteGroup: endpointCreator.bind(this, modules, deleteChannelGroupConfig)\n };\n /* push */\n this.push = {\n addChannels: endpointCreator.bind(this, modules, addPushChannelsConfig),\n removeChannels: endpointCreator.bind(this, modules, removePushChannelsConfig),\n deleteDevice: endpointCreator.bind(this, modules, removeDevicePushConfig),\n listChannels: endpointCreator.bind(this, modules, listPushChannelsConfig)\n };\n /* presence */\n this.hereNow = endpointCreator.bind(this, modules, presenceHereNowConfig);\n this.whereNow = endpointCreator.bind(this, modules, presenceWhereNowEndpointConfig);\n this.getState = endpointCreator.bind(this, modules, presenceGetStateConfig);\n this.setState = subscriptionManager.adaptStateChange.bind(subscriptionManager);\n /* PAM */\n this.grant = endpointCreator.bind(this, modules, grantEndpointConfig);\n this.audit = endpointCreator.bind(this, modules, auditEndpointConfig);\n //\n this.publish = endpointCreator.bind(this, modules, publishEndpointConfig);\n\n this.fire = (args, callback) => {\n args.replicate = false;\n args.storeInHistory = false;\n return this.publish(args, callback);\n };\n\n this.history = endpointCreator.bind(this, modules, historyEndpointConfig);\n this.deleteMessages = endpointCreator.bind(this, modules, deleteMessagesEndpointConfig);\n this.fetchMessages = endpointCreator.bind(this, modules, fetchMessagesEndpointConfig);\n\n this.time = timeEndpoint;\n\n // subscription related methods\n this.subscribe = subscriptionManager.adaptSubscribeChange.bind(subscriptionManager);\n this.unsubscribe = subscriptionManager.adaptUnsubscribeChange.bind(subscriptionManager);\n this.disconnect = subscriptionManager.disconnect.bind(subscriptionManager);\n this.reconnect = subscriptionManager.reconnect.bind(subscriptionManager);\n\n this.destroy = (isOffline: boolean) => {\n subscriptionManager.unsubscribeAll(isOffline);\n subscriptionManager.disconnect();\n };\n\n // --- deprecated ------------------\n this.stop = this.destroy; // --------\n // --- deprecated ------------------\n\n this.unsubscribeAll = subscriptionManager.unsubscribeAll.bind(subscriptionManager);\n\n this.getSubscribedChannels = subscriptionManager.getSubscribedChannels.bind(subscriptionManager);\n this.getSubscribedChannelGroups = subscriptionManager.getSubscribedChannelGroups.bind(subscriptionManager);\n\n // mount crypto\n this.encrypt = crypto.encrypt.bind(crypto);\n this.decrypt = crypto.decrypt.bind(crypto);\n\n /* config */\n this.getAuthKey = modules.config.getAuthKey.bind(modules.config);\n this.setAuthKey = modules.config.setAuthKey.bind(modules.config);\n this.setCipherKey = modules.config.setCipherKey.bind(modules.config);\n this.getUUID = modules.config.getUUID.bind(modules.config);\n this.setUUID = modules.config.setUUID.bind(modules.config);\n this.getFilterExpression = modules.config.getFilterExpression.bind(modules.config);\n this.setFilterExpression = modules.config.setFilterExpression.bind(modules.config);\n\n this.setHeartbeatInterval = modules.config.setHeartbeatInterval.bind(modules.config);\n }\n\n\n getVersion(): string {\n return this._config.getVersion();\n }\n\n // network hooks to indicate network changes\n networkDownDetected() {\n this._listenerManager.announceNetworkDown();\n\n if (this._config.restore) {\n this.disconnect();\n } else {\n this.destroy(true);\n }\n }\n\n networkUpDetected() {\n this._listenerManager.announceNetworkUp();\n this.reconnect();\n }\n\n\n static generateUUID(): string {\n return uuidGenerator();\n }\n\n static OPERATIONS = OPERATIONS;\n static CATEGORIES = CATEGORIES;\n\n}\n"]} \ No newline at end of file diff --git a/lib/networking/index.js b/lib/networking/index.js index 10edd93cb..d4d52d5d2 100644 --- a/lib/networking/index.js +++ b/lib/networking/index.js @@ -88,6 +88,11 @@ var _class = function () { value: function GET(params, endpoint, callback) { return this._modules.get(params, endpoint, callback); } + }, { + key: 'DELETE', + value: function DELETE(params, endpoint, callback) { + return this._modules.del(params, endpoint, callback); + } }, { key: '_detectErrorCategory', value: function _detectErrorCategory(err) { diff --git a/lib/networking/index.js.map b/lib/networking/index.js.map index f4097fc62..40ec561e1 100644 --- a/lib/networking/index.js.map +++ b/lib/networking/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["networking/index.js"],"names":["modules","_modules","Object","keys","forEach","key","bind","config","_config","_maxSubDomain","_currentSubDomain","Math","floor","random","_providedFQDN","secure","origin","_coreParams","shiftStandardOrigin","indexOf","newSubDomain","toString","replace","failover","_standardOrigin","nextOrigin","params","body","endpoint","callback","post","get","err","code","PNNetworkIssuesCategory","status","hasOwnProperty","timeout","PNTimeoutCategory","response","badRequest","PNBadRequestCategory","forbidden","PNAccessDeniedCategory","PNUnknownCategory"],"mappings":";;;;;;;;AAEA;;;;AACA;;;;AAEA;;;;;;;AAkBE,kBAAYA,OAAZ,EAAwC;AAAA;;AAAA;;AACtC,SAAKC,QAAL,GAAgB,EAAhB;;AAEAC,WAAOC,IAAP,CAAYH,OAAZ,EAAqBI,OAArB,CAA6B,UAACC,GAAD,EAAS;AACpC,YAAKJ,QAAL,CAAcI,GAAd,IAAqBL,QAAQK,GAAR,EAAaC,IAAb,OAArB;AACD,KAFD;AAGD;;;;yBAEIC,M,EAAgB;AACnB,WAAKC,OAAL,GAAeD,MAAf;;AAEA,WAAKE,aAAL,GAAqB,EAArB;AACA,WAAKC,iBAAL,GAAyBC,KAAKC,KAAL,CAAWD,KAAKE,MAAL,KAAgB,KAAKJ,aAAhC,CAAzB;AACA,WAAKK,aAAL,GAAqB,CAAC,KAAKN,OAAL,CAAaO,MAAb,GAAsB,UAAtB,GAAmC,SAApC,IAAiD,KAAKP,OAAL,CAAaQ,MAAnF;AACA,WAAKC,WAAL,GAAmB,EAAnB;;AAGA,WAAKC,mBAAL;AACD;;;iCAEoB;AAEnB,UAAI,KAAKJ,aAAL,CAAmBK,OAAnB,CAA2B,SAA3B,MAA0C,CAAC,CAA/C,EAAkD;AAChD,eAAO,KAAKL,aAAZ;AACD;;AAED,UAAIM,qBAAJ;;AAEA,WAAKV,iBAAL,GAAyB,KAAKA,iBAAL,GAAyB,CAAlD;;AAEA,UAAI,KAAKA,iBAAL,IAA0B,KAAKD,aAAnC,EAAkD;AAChD,aAAKC,iBAAL,GAAyB,CAAzB;AACD;;AAEDU,qBAAe,KAAKV,iBAAL,CAAuBW,QAAvB,EAAf;;AAEA,aAAO,KAAKP,aAAL,CAAmBQ,OAAnB,CAA2B,QAA3B,SAA0CF,YAA1C,CAAP;AACD;;;0CAGsD;AAAA,UAAnCG,QAAmC,uEAAf,KAAe;;AACrD,WAAKC,eAAL,GAAuB,KAAKC,UAAL,CAAgBF,QAAhB,CAAvB;;AAEA,aAAO,KAAKC,eAAZ;AACD;;;wCAE2B;AAC1B,aAAO,KAAKA,eAAZ;AACD;;;yBAEIE,M,EAAgBC,I,EAAcC,Q,EAA8BC,Q,EAAoB;AACnF,aAAO,KAAK5B,QAAL,CAAc6B,IAAd,CAAmBJ,MAAnB,EAA2BC,IAA3B,EAAiCC,QAAjC,EAA2CC,QAA3C,CAAP;AACD;;;wBAEGH,M,EAAgBE,Q,EAA8BC,Q,EAAoB;AACpE,aAAO,KAAK5B,QAAL,CAAc8B,GAAd,CAAkBL,MAAlB,EAA0BE,QAA1B,EAAoCC,QAApC,CAAP;AACD;;;yCAEoBG,G,EAAqB;AACxC,UAAIA,IAAIC,IAAJ,KAAa,WAAjB,EAA8B,OAAO,qBAAkBC,uBAAzB;AAC9B,UAAIF,IAAIC,IAAJ,KAAa,cAAjB,EAAiC,OAAO,qBAAkBC,uBAAzB;AACjC,UAAIF,IAAIC,IAAJ,KAAa,YAAjB,EAA+B,OAAO,qBAAkBC,uBAAzB;AAC/B,UAAIF,IAAIC,IAAJ,KAAa,WAAjB,EAA8B,OAAO,qBAAkBC,uBAAzB;;AAE9B,UAAIF,IAAIG,MAAJ,KAAe,CAAf,IAAqBH,IAAII,cAAJ,CAAmB,QAAnB,KAAgC,OAAOJ,IAAIG,MAAX,KAAsB,WAA/E,EAA6F,OAAO,qBAAkBD,uBAAzB;AAC7F,UAAIF,IAAIK,OAAR,EAAiB,OAAO,qBAAkBC,iBAAzB;;AAEjB,UAAIN,IAAIO,QAAR,EAAkB;AAChB,YAAIP,IAAIO,QAAJ,CAAaC,UAAjB,EAA6B,OAAO,qBAAkBC,oBAAzB;AAC7B,YAAIT,IAAIO,QAAJ,CAAaG,SAAjB,EAA4B,OAAO,qBAAkBC,sBAAzB;AAC7B;;AAED,aAAO,qBAAkBC,iBAAzB;AACD","file":"index.js","sourcesContent":["/* @flow */\n\nimport Config from '../core/components/config';\nimport categoryConstants from '../core/constants/categories';\n\nimport { EndpointDefinition, NetworkingModules } from '../core/flow_interfaces';\n\nexport default class {\n _modules: NetworkingModules;\n _config: Config;\n\n _maxSubDomain: number;\n _currentSubDomain: number;\n\n _standardOrigin: string;\n _subscribeOrigin: string;\n\n _providedFQDN: string;\n\n _requestTimeout: number;\n\n _coreParams: Object; /* items that must be passed with each request. */\n\n constructor(modules: NetworkingModules) {\n this._modules = {};\n\n Object.keys(modules).forEach((key) => {\n this._modules[key] = modules[key].bind(this);\n });\n }\n\n init(config: Config) {\n this._config = config;\n\n this._maxSubDomain = 20;\n this._currentSubDomain = Math.floor(Math.random() * this._maxSubDomain);\n this._providedFQDN = (this._config.secure ? 'https://' : 'http://') + this._config.origin;\n this._coreParams = {};\n\n // create initial origins\n this.shiftStandardOrigin();\n }\n\n nextOrigin(): string {\n // if a custom origin is supplied, use do not bother with shuffling subdomains\n if (this._providedFQDN.indexOf('pubsub.') === -1) {\n return this._providedFQDN;\n }\n\n let newSubDomain: string;\n\n this._currentSubDomain = this._currentSubDomain + 1;\n\n if (this._currentSubDomain >= this._maxSubDomain) {\n this._currentSubDomain = 1;\n }\n\n newSubDomain = this._currentSubDomain.toString();\n\n return this._providedFQDN.replace('pubsub', `ps${newSubDomain}`);\n }\n\n // origin operations\n shiftStandardOrigin(failover: boolean = false): string {\n this._standardOrigin = this.nextOrigin(failover);\n\n return this._standardOrigin;\n }\n\n getStandardOrigin(): string {\n return this._standardOrigin;\n }\n\n POST(params: Object, body: string, endpoint: EndpointDefinition, callback: Function) {\n return this._modules.post(params, body, endpoint, callback);\n }\n\n GET(params: Object, endpoint: EndpointDefinition, callback: Function) {\n return this._modules.get(params, endpoint, callback);\n }\n\n _detectErrorCategory(err: Object): string {\n if (err.code === 'ENOTFOUND') return categoryConstants.PNNetworkIssuesCategory;\n if (err.code === 'ECONNREFUSED') return categoryConstants.PNNetworkIssuesCategory;\n if (err.code === 'ECONNRESET') return categoryConstants.PNNetworkIssuesCategory;\n if (err.code === 'EAI_AGAIN') return categoryConstants.PNNetworkIssuesCategory;\n\n if (err.status === 0 || (err.hasOwnProperty('status') && typeof err.status === 'undefined')) return categoryConstants.PNNetworkIssuesCategory;\n if (err.timeout) return categoryConstants.PNTimeoutCategory;\n\n if (err.response) {\n if (err.response.badRequest) return categoryConstants.PNBadRequestCategory;\n if (err.response.forbidden) return categoryConstants.PNAccessDeniedCategory;\n }\n\n return categoryConstants.PNUnknownCategory;\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["networking/index.js"],"names":["modules","_modules","Object","keys","forEach","key","bind","config","_config","_maxSubDomain","_currentSubDomain","Math","floor","random","_providedFQDN","secure","origin","_coreParams","shiftStandardOrigin","indexOf","newSubDomain","toString","replace","failover","_standardOrigin","nextOrigin","params","body","endpoint","callback","post","get","del","err","code","PNNetworkIssuesCategory","status","hasOwnProperty","timeout","PNTimeoutCategory","response","badRequest","PNBadRequestCategory","forbidden","PNAccessDeniedCategory","PNUnknownCategory"],"mappings":";;;;;;;;AAEA;;;;AACA;;;;AAEA;;;;;;;AAkBE,kBAAYA,OAAZ,EAAwC;AAAA;;AAAA;;AACtC,SAAKC,QAAL,GAAgB,EAAhB;;AAEAC,WAAOC,IAAP,CAAYH,OAAZ,EAAqBI,OAArB,CAA6B,UAACC,GAAD,EAAS;AACpC,YAAKJ,QAAL,CAAcI,GAAd,IAAqBL,QAAQK,GAAR,EAAaC,IAAb,OAArB;AACD,KAFD;AAGD;;;;yBAEIC,M,EAAgB;AACnB,WAAKC,OAAL,GAAeD,MAAf;;AAEA,WAAKE,aAAL,GAAqB,EAArB;AACA,WAAKC,iBAAL,GAAyBC,KAAKC,KAAL,CAAWD,KAAKE,MAAL,KAAgB,KAAKJ,aAAhC,CAAzB;AACA,WAAKK,aAAL,GAAqB,CAAC,KAAKN,OAAL,CAAaO,MAAb,GAAsB,UAAtB,GAAmC,SAApC,IAAiD,KAAKP,OAAL,CAAaQ,MAAnF;AACA,WAAKC,WAAL,GAAmB,EAAnB;;AAGA,WAAKC,mBAAL;AACD;;;iCAEoB;AAEnB,UAAI,KAAKJ,aAAL,CAAmBK,OAAnB,CAA2B,SAA3B,MAA0C,CAAC,CAA/C,EAAkD;AAChD,eAAO,KAAKL,aAAZ;AACD;;AAED,UAAIM,qBAAJ;;AAEA,WAAKV,iBAAL,GAAyB,KAAKA,iBAAL,GAAyB,CAAlD;;AAEA,UAAI,KAAKA,iBAAL,IAA0B,KAAKD,aAAnC,EAAkD;AAChD,aAAKC,iBAAL,GAAyB,CAAzB;AACD;;AAEDU,qBAAe,KAAKV,iBAAL,CAAuBW,QAAvB,EAAf;;AAEA,aAAO,KAAKP,aAAL,CAAmBQ,OAAnB,CAA2B,QAA3B,SAA0CF,YAA1C,CAAP;AACD;;;0CAGsD;AAAA,UAAnCG,QAAmC,uEAAf,KAAe;;AACrD,WAAKC,eAAL,GAAuB,KAAKC,UAAL,CAAgBF,QAAhB,CAAvB;;AAEA,aAAO,KAAKC,eAAZ;AACD;;;wCAE2B;AAC1B,aAAO,KAAKA,eAAZ;AACD;;;yBAEIE,M,EAAgBC,I,EAAcC,Q,EAA8BC,Q,EAAoB;AACnF,aAAO,KAAK5B,QAAL,CAAc6B,IAAd,CAAmBJ,MAAnB,EAA2BC,IAA3B,EAAiCC,QAAjC,EAA2CC,QAA3C,CAAP;AACD;;;wBAEGH,M,EAAgBE,Q,EAA8BC,Q,EAAoB;AACpE,aAAO,KAAK5B,QAAL,CAAc8B,GAAd,CAAkBL,MAAlB,EAA0BE,QAA1B,EAAoCC,QAApC,CAAP;AACD;;;2BAEMH,M,EAAgBE,Q,EAA8BC,Q,EAAoB;AACvE,aAAO,KAAK5B,QAAL,CAAc+B,GAAd,CAAkBN,MAAlB,EAA0BE,QAA1B,EAAoCC,QAApC,CAAP;AACD;;;yCAEoBI,G,EAAqB;AACxC,UAAIA,IAAIC,IAAJ,KAAa,WAAjB,EAA8B,OAAO,qBAAkBC,uBAAzB;AAC9B,UAAIF,IAAIC,IAAJ,KAAa,cAAjB,EAAiC,OAAO,qBAAkBC,uBAAzB;AACjC,UAAIF,IAAIC,IAAJ,KAAa,YAAjB,EAA+B,OAAO,qBAAkBC,uBAAzB;AAC/B,UAAIF,IAAIC,IAAJ,KAAa,WAAjB,EAA8B,OAAO,qBAAkBC,uBAAzB;;AAE9B,UAAIF,IAAIG,MAAJ,KAAe,CAAf,IAAqBH,IAAII,cAAJ,CAAmB,QAAnB,KAAgC,OAAOJ,IAAIG,MAAX,KAAsB,WAA/E,EAA6F,OAAO,qBAAkBD,uBAAzB;AAC7F,UAAIF,IAAIK,OAAR,EAAiB,OAAO,qBAAkBC,iBAAzB;;AAEjB,UAAIN,IAAIO,QAAR,EAAkB;AAChB,YAAIP,IAAIO,QAAJ,CAAaC,UAAjB,EAA6B,OAAO,qBAAkBC,oBAAzB;AAC7B,YAAIT,IAAIO,QAAJ,CAAaG,SAAjB,EAA4B,OAAO,qBAAkBC,sBAAzB;AAC7B;;AAED,aAAO,qBAAkBC,iBAAzB;AACD","file":"index.js","sourcesContent":["/* @flow */\n\nimport Config from '../core/components/config';\nimport categoryConstants from '../core/constants/categories';\n\nimport { EndpointDefinition, NetworkingModules } from '../core/flow_interfaces';\n\nexport default class {\n _modules: NetworkingModules;\n _config: Config;\n\n _maxSubDomain: number;\n _currentSubDomain: number;\n\n _standardOrigin: string;\n _subscribeOrigin: string;\n\n _providedFQDN: string;\n\n _requestTimeout: number;\n\n _coreParams: Object; /* items that must be passed with each request. */\n\n constructor(modules: NetworkingModules) {\n this._modules = {};\n\n Object.keys(modules).forEach((key) => {\n this._modules[key] = modules[key].bind(this);\n });\n }\n\n init(config: Config) {\n this._config = config;\n\n this._maxSubDomain = 20;\n this._currentSubDomain = Math.floor(Math.random() * this._maxSubDomain);\n this._providedFQDN = (this._config.secure ? 'https://' : 'http://') + this._config.origin;\n this._coreParams = {};\n\n // create initial origins\n this.shiftStandardOrigin();\n }\n\n nextOrigin(): string {\n // if a custom origin is supplied, use do not bother with shuffling subdomains\n if (this._providedFQDN.indexOf('pubsub.') === -1) {\n return this._providedFQDN;\n }\n\n let newSubDomain: string;\n\n this._currentSubDomain = this._currentSubDomain + 1;\n\n if (this._currentSubDomain >= this._maxSubDomain) {\n this._currentSubDomain = 1;\n }\n\n newSubDomain = this._currentSubDomain.toString();\n\n return this._providedFQDN.replace('pubsub', `ps${newSubDomain}`);\n }\n\n // origin operations\n shiftStandardOrigin(failover: boolean = false): string {\n this._standardOrigin = this.nextOrigin(failover);\n\n return this._standardOrigin;\n }\n\n getStandardOrigin(): string {\n return this._standardOrigin;\n }\n\n POST(params: Object, body: string, endpoint: EndpointDefinition, callback: Function) {\n return this._modules.post(params, body, endpoint, callback);\n }\n\n GET(params: Object, endpoint: EndpointDefinition, callback: Function) {\n return this._modules.get(params, endpoint, callback);\n }\n\n DELETE(params: Object, endpoint: EndpointDefinition, callback: Function) {\n return this._modules.del(params, endpoint, callback);\n }\n\n _detectErrorCategory(err: Object): string {\n if (err.code === 'ENOTFOUND') return categoryConstants.PNNetworkIssuesCategory;\n if (err.code === 'ECONNREFUSED') return categoryConstants.PNNetworkIssuesCategory;\n if (err.code === 'ECONNRESET') return categoryConstants.PNNetworkIssuesCategory;\n if (err.code === 'EAI_AGAIN') return categoryConstants.PNNetworkIssuesCategory;\n\n if (err.status === 0 || (err.hasOwnProperty('status') && typeof err.status === 'undefined')) return categoryConstants.PNNetworkIssuesCategory;\n if (err.timeout) return categoryConstants.PNTimeoutCategory;\n\n if (err.response) {\n if (err.response.badRequest) return categoryConstants.PNBadRequestCategory;\n if (err.response.forbidden) return categoryConstants.PNAccessDeniedCategory;\n }\n\n return categoryConstants.PNUnknownCategory;\n }\n}\n"]} \ No newline at end of file diff --git a/lib/networking/modules/react_native.js b/lib/networking/modules/react_native.js index 86c81f02e..2f7962b18 100644 --- a/lib/networking/modules/react_native.js +++ b/lib/networking/modules/react_native.js @@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", { }); exports.get = get; exports.post = post; +exports.del = del; var _flow_interfaces = require('../../core/flow_interfaces'); @@ -73,4 +74,10 @@ function post(params, body, endpoint, callback) { return xdr.call(this, 'POST', url, params, body, endpoint, callback); } + +function del(params, endpoint, callback) { + var url = this.getStandardOrigin() + endpoint.url; + + return xdr.call(this, 'DELETE', url, params, '', endpoint, callback); +} //# sourceMappingURL=react_native.js.map diff --git a/lib/networking/modules/react_native.js.map b/lib/networking/modules/react_native.js.map index 88c8b3a2b..91371dc27 100644 --- a/lib/networking/modules/react_native.js.map +++ b/lib/networking/modules/react_native.js.map @@ -1 +1 @@ -{"version":3,"sources":["networking/modules/react_native.js"],"names":["get","post","log","url","qs","res","_pickLogger","console","start","Date","getTime","timestamp","toISOString","logger","now","elapsed","timestampDone","xdr","method","params","body","endpoint","callback","status","operation","fetch","then","response","error","statusCode","json","resp","_config","logVerbosity","catch","e","errorData","category","_detectErrorCategory","getStandardOrigin","call"],"mappings":";;;;;QA6DgBA,G,GAAAA,G;QAMAC,I,GAAAA,I;;AAhEhB;;AACA;;AAIA,SAASC,GAAT,CAAaC,GAAb,EAAkBC,EAAlB,EAAsBC,GAAtB,EAA2B;AACzB,MAAIC,cAAc,SAAdA,WAAc,GAAM;AACtB,QAAIC,WAAWA,QAAQL,GAAvB,EAA4B,OAAOK,OAAP;AAC5B,WAAOA,OAAP;AACD,GAHD;;AAKA,MAAIC,QAAQ,IAAIC,IAAJ,GAAWC,OAAX,EAAZ;AACA,MAAIC,YAAY,IAAIF,IAAJ,GAAWG,WAAX,EAAhB;AACA,MAAIC,SAASP,aAAb;AACAO,SAAOX,GAAP,CAAW,OAAX;AACAW,SAAOX,GAAP,OAAeS,SAAf,QAA6B,IAA7B,EAAmCR,GAAnC,EAAwC,IAAxC,EAA8CC,EAA9C;AACAS,SAAOX,GAAP,CAAW,OAAX;;AAEA,MAAIY,MAAM,IAAIL,IAAJ,GAAWC,OAAX,EAAV;AACA,MAAIK,UAAUD,MAAMN,KAApB;AACA,MAAIQ,gBAAgB,IAAIP,IAAJ,GAAWG,WAAX,EAApB;;AAEAC,SAAOX,GAAP,CAAW,QAAX;AACAW,SAAOX,GAAP,OAAec,aAAf,WAAkCD,OAAlC,QAA8C,IAA9C,EAAoDZ,GAApD,EAAyD,IAAzD,EAA+DC,EAA/D,EAAmE,IAAnE,EAAyEC,GAAzE;AACAQ,SAAOX,GAAP,CAAW,OAAX;AACD;;AAED,SAASe,GAAT,CAAaC,MAAb,EAA6Bf,GAA7B,EAA0CgB,MAA1C,EAA0DC,IAA1D,EAAwEC,QAAxE,EAAsGC,QAAtG,EAAgI;AAAA;;AAC9H,MAAIC,SAA6B,EAAjC;AACAA,SAAOC,SAAP,GAAmBH,SAASG,SAA5B;;AAEAC,QAAM,qBAAStB,GAAT,EAAcgB,MAAd,CAAN,EAA6B,EAAED,cAAF,EAAUE,UAAV,EAA7B,EACGM,IADH,CACQ,UAACC,QAAD,EAAc;AAClBJ,WAAOK,KAAP,GAAe,KAAf;;AAEA,QAAID,SAASJ,MAAb,EAAqB;AACnBA,aAAOM,UAAP,GAAoBF,SAASJ,MAA7B;AACD;;AAED,WAAOI,SAASG,IAAT,EAAP;AACD,GATH,EAUGJ,IAVH,CAUQ,UAACC,QAAD,EAAc;AAClB,QAAII,OAAOJ,QAAX;;AAEA,QAAI,MAAKK,OAAL,CAAaC,YAAjB,EAA+B;AAC7B/B,UAAIC,GAAJ,EAASgB,MAAT,EAAiBY,IAAjB;AACD;;AAEDT,aAASC,MAAT,EAAiBQ,IAAjB;AACD,GAlBH,EAmBGG,KAnBH,CAmBS,UAACC,CAAD,EAAO;AACZZ,WAAOK,KAAP,GAAe,IAAf;AACAL,WAAOa,SAAP,GAAmBD,EAAEP,KAArB;AACAL,WAAOc,QAAP,GAAkB,MAAKC,oBAAL,CAA0BH,EAAEP,KAA5B,CAAlB;AACAN,aAASC,MAAT,EAAiB,IAAjB;AACD,GAxBH;AAyBD;;AAEM,SAASvB,GAAT,CAAamB,MAAb,EAA6BE,QAA7B,EAA2DC,QAA3D,EAA+E;AACpF,MAAInB,MAAM,KAAKoC,iBAAL,KAA2BlB,SAASlB,GAA9C;;AAEA,SAAOc,IAAIuB,IAAJ,CAAS,IAAT,EAAe,KAAf,EAAsBrC,GAAtB,EAA2BgB,MAA3B,EAAmC,EAAnC,EAAuCE,QAAvC,EAAiDC,QAAjD,CAAP;AACD;;AAEM,SAASrB,IAAT,CAAckB,MAAd,EAA8BC,IAA9B,EAA4CC,QAA5C,EAA0EC,QAA1E,EAA8F;AACnG,MAAInB,MAAM,KAAKoC,iBAAL,KAA2BlB,SAASlB,GAA9C;;AAEA,SAAOc,IAAIuB,IAAJ,CAAS,IAAT,EAAe,MAAf,EAAuBrC,GAAvB,EAA4BgB,MAA5B,EAAoCC,IAApC,EAA0CC,QAA1C,EAAoDC,QAApD,CAAP;AACD","file":"react_native.js","sourcesContent":["/* @flow */\n/* global console */\n\nimport { EndpointDefinition, StatusAnnouncement } from '../../core/flow_interfaces';\nimport { buildUrl } from '../utils';\n\ndeclare var fetch: any;\n\nfunction log(url, qs, res) {\n let _pickLogger = () => {\n if (console && console.log) return console; // eslint-disable-line no-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', url, '\\n', qs); // eslint-disable-line no-console\n logger.log('-----'); // eslint-disable-line no-console\n\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', url, '\\n', qs, '\\n', res); // eslint-disable-line no-console\n logger.log('-----');\n}\n\nfunction xdr(method: string, url: string, params: Object, body: string, endpoint: EndpointDefinition, callback: Function): void {\n let status: StatusAnnouncement = {};\n status.operation = endpoint.operation;\n\n fetch(buildUrl(url, params), { method, body })\n .then((response) => {\n status.error = false;\n\n if (response.status) {\n status.statusCode = response.status;\n }\n\n return response.json();\n })\n .then((response) => {\n let resp = response;\n\n if (this._config.logVerbosity) {\n log(url, params, resp);\n }\n\n callback(status, resp);\n })\n .catch((e) => {\n status.error = true;\n status.errorData = e.error;\n status.category = this._detectErrorCategory(e.error);\n callback(status, null);\n });\n}\n\nexport function get(params: Object, endpoint: EndpointDefinition, callback: Function) {\n let url = this.getStandardOrigin() + endpoint.url;\n\n return xdr.call(this, 'GET', url, params, '', endpoint, callback);\n}\n\nexport function post(params: Object, body: string, endpoint: EndpointDefinition, callback: Function) {\n let url = this.getStandardOrigin() + endpoint.url;\n\n return xdr.call(this, 'POST', url, params, body, endpoint, callback);\n}\n"]} \ No newline at end of file +{"version":3,"sources":["networking/modules/react_native.js"],"names":["get","post","del","log","url","qs","res","_pickLogger","console","start","Date","getTime","timestamp","toISOString","logger","now","elapsed","timestampDone","xdr","method","params","body","endpoint","callback","status","operation","fetch","then","response","error","statusCode","json","resp","_config","logVerbosity","catch","e","errorData","category","_detectErrorCategory","getStandardOrigin","call"],"mappings":"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","file":"react_native.js","sourcesContent":["/* @flow */\n/* global console */\n\nimport { EndpointDefinition, StatusAnnouncement } from '../../core/flow_interfaces';\nimport { buildUrl } from '../utils';\n\ndeclare var fetch: any;\n\nfunction log(url, qs, res) {\n let _pickLogger = () => {\n if (console && console.log) return console; // eslint-disable-line no-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', url, '\\n', qs); // eslint-disable-line no-console\n logger.log('-----'); // eslint-disable-line no-console\n\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', url, '\\n', qs, '\\n', res); // eslint-disable-line no-console\n logger.log('-----');\n}\n\nfunction xdr(method: string, url: string, params: Object, body: string, endpoint: EndpointDefinition, callback: Function): void {\n let status: StatusAnnouncement = {};\n status.operation = endpoint.operation;\n\n fetch(buildUrl(url, params), { method, body })\n .then((response) => {\n status.error = false;\n\n if (response.status) {\n status.statusCode = response.status;\n }\n\n return response.json();\n })\n .then((response) => {\n let resp = response;\n\n if (this._config.logVerbosity) {\n log(url, params, resp);\n }\n\n callback(status, resp);\n })\n .catch((e) => {\n status.error = true;\n status.errorData = e.error;\n status.category = this._detectErrorCategory(e.error);\n callback(status, null);\n });\n}\n\nexport function get(params: Object, endpoint: EndpointDefinition, callback: Function) {\n let url = this.getStandardOrigin() + endpoint.url;\n\n return xdr.call(this, 'GET', url, params, '', endpoint, callback);\n}\n\nexport function post(params: Object, body: string, endpoint: EndpointDefinition, callback: Function) {\n let url = this.getStandardOrigin() + endpoint.url;\n\n return xdr.call(this, 'POST', url, params, body, endpoint, callback);\n}\n\nexport function del(params: Object, endpoint: EndpointDefinition, callback: Function) {\n let url = this.getStandardOrigin() + endpoint.url;\n\n return xdr.call(this, 'DELETE', url, params, '', endpoint, callback);\n}\n"]} \ No newline at end of file diff --git a/lib/networking/modules/titanium.js b/lib/networking/modules/titanium.js index 65104e89e..1af3d93d5 100644 --- a/lib/networking/modules/titanium.js +++ b/lib/networking/modules/titanium.js @@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", { }); exports.get = get; exports.post = post; +exports.del = del; var _flow_interfaces = require('../../core/flow_interfaces'); @@ -100,4 +101,12 @@ function post(params, body, endpoint, callback) { return xdr.call(this, xhr, 'POST', url, params, JSON.parse(body), endpoint, callback); } + +function del(params, endpoint, callback) { + var xhr = getHttpClient(); + + var url = this.getStandardOrigin() + endpoint.url; + + return xdr.call(this, xhr, 'DELETE', url, params, {}, endpoint, callback); +} //# sourceMappingURL=titanium.js.map diff --git a/lib/networking/modules/titanium.js.map b/lib/networking/modules/titanium.js.map index 487f211b9..aa92ecfaa 100644 --- a/lib/networking/modules/titanium.js.map +++ b/lib/networking/modules/titanium.js.map @@ -1 +1 @@ -{"version":3,"sources":["networking/modules/titanium.js"],"names":["get","post","log","url","qs","res","_pickLogger","Ti","API","window","console","start","Date","getTime","timestamp","toISOString","logger","now","elapsed","timestampDone","getHttpClient","Platform","osname","XMLHttpRequest","Network","createHTTPClient","keepAlive","xhr","_config","enableKeepAlive","xdr","method","params","body","endpoint","callback","status","operation","open","call","onload","error","statusCode","resp","JSON","parse","responseText","logVerbosity","onerror","e","errorData","category","_detectErrorCategory","timeout","Infinity","send","getStandardOrigin"],"mappings":"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","file":"titanium.js","sourcesContent":["/* @flow */\n/* global XMLHttpRequest, window, console */\n\nimport { EndpointDefinition, StatusAnnouncement } from '../../core/flow_interfaces';\nimport { buildUrl } from '../utils';\n\ndeclare var Ti: any;\n\nfunction log(url, qs, res) {\n let _pickLogger = () => {\n if (Ti && Ti.API && Ti.API.log) return Ti.API; // 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', url, '\\n', qs); // eslint-disable-line no-console\n logger.log('-----'); // eslint-disable-line no-console\n\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', url, '\\n', qs, '\\n', res); // eslint-disable-line no-console\n logger.log('-----');\n}\n\nfunction getHttpClient(): any {\n if (Ti.Platform.osname === 'mobileweb') {\n return new XMLHttpRequest();\n } else {\n return Ti.Network.createHTTPClient();\n }\n}\n\nfunction keepAlive(xhr: any): void {\n if (Ti.Platform.osname !== 'mobileweb' && this._config.keepAlive) {\n xhr.enableKeepAlive = true;\n }\n}\n\nfunction xdr(xhr: any, method: string, url: string, params: Object, body: Object, endpoint: EndpointDefinition, callback: Function): void {\n let status: StatusAnnouncement = {};\n status.operation = endpoint.operation;\n\n xhr.open(method, buildUrl(url, params), true);\n\n keepAlive.call(this, xhr);\n\n xhr.onload = () => {\n status.error = false;\n\n if (xhr.status) {\n status.statusCode = xhr.status;\n }\n\n let resp = JSON.parse(xhr.responseText);\n\n if (this._config.logVerbosity) {\n log(url, params, xhr.responseText);\n }\n\n return callback(status, resp);\n };\n\n xhr.onerror = (e) => {\n status.error = true;\n status.errorData = e.error;\n status.category = this._detectErrorCategory(e.error);\n return callback(status, null);\n };\n\n xhr.timeout = Ti.Platform.osname === 'android' ? 2147483647 : Infinity;\n\n xhr.send(body);\n}\n\nexport function get(params: Object, endpoint: EndpointDefinition, callback: Function) {\n let xhr = getHttpClient();\n\n let url = this.getStandardOrigin() + endpoint.url;\n\n return xdr.call(this, xhr, 'GET', url, params, {}, endpoint, callback);\n}\n\nexport function post(params: Object, body: string, endpoint: EndpointDefinition, callback: Function) {\n let xhr = getHttpClient();\n\n let url = this.getStandardOrigin() + endpoint.url;\n\n return xdr.call(this, xhr, 'POST', url, params, JSON.parse(body), endpoint, callback);\n}\n"]} \ No newline at end of file +{"version":3,"sources":["networking/modules/titanium.js"],"names":["get","post","del","log","url","qs","res","_pickLogger","Ti","API","window","console","start","Date","getTime","timestamp","toISOString","logger","now","elapsed","timestampDone","getHttpClient","Platform","osname","XMLHttpRequest","Network","createHTTPClient","keepAlive","xhr","_config","enableKeepAlive","xdr","method","params","body","endpoint","callback","status","operation","open","call","onload","error","statusCode","resp","JSON","parse","responseText","logVerbosity","onerror","e","errorData","category","_detectErrorCategory","timeout","Infinity","send","getStandardOrigin"],"mappings":"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","file":"titanium.js","sourcesContent":["/* @flow */\n/* global XMLHttpRequest, window, console */\n\nimport { EndpointDefinition, StatusAnnouncement } from '../../core/flow_interfaces';\nimport { buildUrl } from '../utils';\n\ndeclare var Ti: any;\n\nfunction log(url, qs, res) {\n let _pickLogger = () => {\n if (Ti && Ti.API && Ti.API.log) return Ti.API; // 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', url, '\\n', qs); // eslint-disable-line no-console\n logger.log('-----'); // eslint-disable-line no-console\n\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', url, '\\n', qs, '\\n', res); // eslint-disable-line no-console\n logger.log('-----');\n}\n\nfunction getHttpClient(): any {\n if (Ti.Platform.osname === 'mobileweb') {\n return new XMLHttpRequest();\n } else {\n return Ti.Network.createHTTPClient();\n }\n}\n\nfunction keepAlive(xhr: any): void {\n if (Ti.Platform.osname !== 'mobileweb' && this._config.keepAlive) {\n xhr.enableKeepAlive = true;\n }\n}\n\nfunction xdr(xhr: any, method: string, url: string, params: Object, body: Object, endpoint: EndpointDefinition, callback: Function): void {\n let status: StatusAnnouncement = {};\n status.operation = endpoint.operation;\n\n xhr.open(method, buildUrl(url, params), true);\n\n keepAlive.call(this, xhr);\n\n xhr.onload = () => {\n status.error = false;\n\n if (xhr.status) {\n status.statusCode = xhr.status;\n }\n\n let resp = JSON.parse(xhr.responseText);\n\n if (this._config.logVerbosity) {\n log(url, params, xhr.responseText);\n }\n\n return callback(status, resp);\n };\n\n xhr.onerror = (e) => {\n status.error = true;\n status.errorData = e.error;\n status.category = this._detectErrorCategory(e.error);\n return callback(status, null);\n };\n\n xhr.timeout = Ti.Platform.osname === 'android' ? 2147483647 : Infinity;\n\n xhr.send(body);\n}\n\nexport function get(params: Object, endpoint: EndpointDefinition, callback: Function) {\n let xhr = getHttpClient();\n\n let url = this.getStandardOrigin() + endpoint.url;\n\n return xdr.call(this, xhr, 'GET', url, params, {}, endpoint, callback);\n}\n\nexport function post(params: Object, body: string, endpoint: EndpointDefinition, callback: Function) {\n let xhr = getHttpClient();\n\n let url = this.getStandardOrigin() + endpoint.url;\n\n return xdr.call(this, xhr, 'POST', url, params, JSON.parse(body), endpoint, callback);\n}\n\nexport function del(params: Object, endpoint: EndpointDefinition, callback: Function) {\n let xhr = getHttpClient();\n\n let url = this.getStandardOrigin() + endpoint.url;\n\n return xdr.call(this, xhr, 'DELETE', url, params, {}, endpoint, callback);\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 acacac69d..16e7874db 100644 --- a/lib/networking/modules/web-node.js +++ b/lib/networking/modules/web-node.js @@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", { }); exports.get = get; exports.post = post; +exports.del = del; var _superagent = require('superagent'); @@ -92,4 +93,9 @@ 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); } + +function del(params, endpoint, callback) { + var superagentConstruct = _superagent2.default.delete(this.getStandardOrigin() + endpoint.url).query(params); + return xdr.call(this, superagentConstruct, endpoint, callback); +} //# sourceMappingURL=web-node.js.map diff --git a/lib/networking/modules/web-node.js.map b/lib/networking/modules/web-node.js.map index 1a0facfa1..b7db44ae0 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","timeout","end","err","resp","status","error","operation","statusCode","errorData","category","_detectErrorCategory","parsedResponse","JSON","parse","message","service","params","getStandardOrigin","query","body","send"],"mappings":"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","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 +{"version":3,"sources":["networking/modules/web-node.js"],"names":["get","post","del","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","delete"],"mappings":"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","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\nexport function del(params: Object, endpoint: EndpointDefinition, callback: Function): superagent {\n let superagentConstruct = superagent\n .delete(this.getStandardOrigin() + endpoint.url)\n .query(params);\n return xdr.call(this, superagentConstruct, endpoint, callback);\n}\n"]} diff --git a/lib/node/index.js b/lib/node/index.js index 2000d9997..84f5b3798 100755 --- a/lib/node/index.js +++ b/lib/node/index.js @@ -37,7 +37,7 @@ var _class = function (_PubNubCore) { _classCallCheck(this, _class); setup.db = new _common2.default(); - setup.networking = new _networking2.default({ keepAlive: _node.keepAlive, get: _webNode.get, post: _webNode.post, proxy: _node.proxy }); + setup.networking = new _networking2.default({ keepAlive: _node.keepAlive, del: _webNode.del, get: _webNode.get, post: _webNode.post, proxy: _node.proxy }); setup.sdkFamily = 'Nodejs'; return _possibleConstructorReturn(this, (_class.__proto__ || Object.getPrototypeOf(_class)).call(this, setup)); diff --git a/lib/node/index.js.map b/lib/node/index.js.map index bd9889912..1141f3b93 100644 --- a/lib/node/index.js.map +++ b/lib/node/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["node/index.js"],"names":["setup","db","networking","keepAlive","get","post","proxy","sdkFamily"],"mappings":";;;;;;AAEA;;;;AACA;;;;AACA;;;;AACA;;AACA;;AACA;;;;;;;;;;;;;AAGE,kBAAYA,KAAZ,EAAwC;AAAA;;AACtCA,UAAMC,EAAN,GAAW,sBAAX;AACAD,UAAME,UAAN,GAAmB,yBAAe,EAAEC,0BAAF,EAAaC,iBAAb,EAAkBC,mBAAlB,EAAwBC,kBAAxB,EAAf,CAAnB;AACAN,UAAMO,SAAN,GAAkB,QAAlB;;AAHsC,2GAKhCP,KALgC;AAMvC","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 { keepAlive, proxy } from '../networking/modules/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({ keepAlive, get, post, proxy });\n setup.sdkFamily = 'Nodejs';\n\n super(setup);\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["node/index.js"],"names":["setup","db","networking","keepAlive","del","get","post","proxy","sdkFamily"],"mappings":";;;;;;AAEA;;;;AACA;;;;AACA;;;;AACA;;AACA;;AACA;;;;;;;;;;;;;AAGE,kBAAYA,KAAZ,EAAwC;AAAA;;AACtCA,UAAMC,EAAN,GAAW,sBAAX;AACAD,UAAME,UAAN,GAAmB,yBAAe,EAAEC,0BAAF,EAAaC,iBAAb,EAAkBC,iBAAlB,EAAuBC,mBAAvB,EAA6BC,kBAA7B,EAAf,CAAnB;AACAP,UAAMQ,SAAN,GAAkB,QAAlB;;AAHsC,2GAKhCR,KALgC;AAMvC","file":"index.js","sourcesContent":[" /* @flow */\n\nimport PubNubCore from '../core/pubnub-common';\nimport Networking from '../networking';\nimport Database from '../db/common';\nimport { del, get, post } from '../networking/modules/web-node';\nimport { keepAlive, proxy } from '../networking/modules/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({ keepAlive, del, get, post, proxy });\n setup.sdkFamily = 'Nodejs';\n\n super(setup);\n }\n}\n"]} \ No newline at end of file diff --git a/lib/react_native/index.js b/lib/react_native/index.js index e11b5744c..f730e2a21 100644 --- a/lib/react_native/index.js +++ b/lib/react_native/index.js @@ -35,7 +35,7 @@ var _class = function (_PubNubCore) { _classCallCheck(this, _class); setup.db = new _common2.default(); - setup.networking = new _networking2.default({ get: _webNode.get, post: _webNode.post }); + setup.networking = new _networking2.default({ del: _webNode.del, get: _webNode.get, post: _webNode.post }); setup.sdkFamily = 'ReactNative'; setup.ssl = true; return _possibleConstructorReturn(this, (_class.__proto__ || Object.getPrototypeOf(_class)).call(this, setup)); diff --git a/lib/react_native/index.js.map b/lib/react_native/index.js.map index 2894f96e3..d21dfec56 100644 --- a/lib/react_native/index.js.map +++ b/lib/react_native/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["react_native/index.js"],"names":["setup","db","networking","get","post","sdkFamily","ssl"],"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,aAAlB;AACAL,UAAMM,GAAN,GAAY,IAAZ;AAJsC,2GAKhCN,KALgC;AAMvC","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 = 'ReactNative';\n setup.ssl = true;\n super(setup);\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["react_native/index.js"],"names":["setup","db","networking","del","get","post","sdkFamily","ssl"],"mappings":";;;;;;AAEA;;;;AACA;;;;AACA;;;;AACA;;AACA;;;;;;;;;;;;;AAGE,kBAAYA,KAAZ,EAAwC;AAAA;;AACtCA,UAAMC,EAAN,GAAW,sBAAX;AACAD,UAAME,UAAN,GAAmB,yBAAe,EAAEC,iBAAF,EAAOC,iBAAP,EAAYC,mBAAZ,EAAf,CAAnB;AACAL,UAAMM,SAAN,GAAkB,aAAlB;AACAN,UAAMO,GAAN,GAAY,IAAZ;AAJsC,2GAKhCP,KALgC;AAMvC","file":"index.js","sourcesContent":["/* @flow */\n\nimport PubNubCore from '../core/pubnub-common';\nimport Networking from '../networking';\nimport Database from '../db/common';\nimport { del, 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({ del, get, post });\n setup.sdkFamily = 'ReactNative';\n setup.ssl = true;\n super(setup);\n }\n}\n"]} \ No newline at end of file diff --git a/lib/titanium/index.js b/lib/titanium/index.js index eae4ad7fb..2fbc6347e 100644 --- a/lib/titanium/index.js +++ b/lib/titanium/index.js @@ -37,7 +37,7 @@ var PubNub = function (_PubNubCore) { setup.db = new _common2.default(); setup.sdkFamily = 'TitaniumSDK'; - setup.networking = new _networking2.default({ get: _titanium.get, post: _titanium.post }); + setup.networking = new _networking2.default({ del: _titanium.del, get: _titanium.get, post: _titanium.post }); return _possibleConstructorReturn(this, (PubNub.__proto__ || Object.getPrototypeOf(PubNub)).call(this, setup)); } diff --git a/lib/titanium/index.js.map b/lib/titanium/index.js.map index cd1a9f79d..38b228378 100644 --- a/lib/titanium/index.js.map +++ b/lib/titanium/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["titanium/index.js"],"names":["PubNub","setup","db","sdkFamily","networking","get","post","default"],"mappings":";;;;;;;AAEA;;;;AACA;;;;AACA;;;;AACA;;AACA;;;;;;;;;;IAEMA,M;;;AACJ,kBAAYC,KAAZ,EAAwC;AAAA;;AACtCA,UAAMC,EAAN,GAAW,sBAAX;AACAD,UAAME,SAAN,GAAkB,aAAlB;AACAF,UAAMG,UAAN,GAAmB,yBAAe,EAAEC,kBAAF,EAAOC,oBAAP,EAAf,CAAnB;;AAHsC,2GAKhCL,KALgC;AAMvC;;;;;QAGgBM,O,GAAVP,M","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/titanium';\nimport { InternalSetupStruct } from '../core/flow_interfaces';\n\nclass PubNub extends PubNubCore {\n constructor(setup: InternalSetupStruct) {\n setup.db = new Database();\n setup.sdkFamily = 'TitaniumSDK';\n setup.networking = new Networking({ get, post });\n\n super(setup);\n }\n}\n\nexport { PubNub as default };\n"]} \ No newline at end of file +{"version":3,"sources":["titanium/index.js"],"names":["PubNub","setup","db","sdkFamily","networking","del","get","post","default"],"mappings":";;;;;;;AAEA;;;;AACA;;;;AACA;;;;AACA;;AACA;;;;;;;;;;IAEMA,M;;;AACJ,kBAAYC,KAAZ,EAAwC;AAAA;;AACtCA,UAAMC,EAAN,GAAW,sBAAX;AACAD,UAAME,SAAN,GAAkB,aAAlB;AACAF,UAAMG,UAAN,GAAmB,yBAAe,EAAEC,kBAAF,EAAOC,kBAAP,EAAYC,oBAAZ,EAAf,CAAnB;;AAHsC,2GAKhCN,KALgC;AAMvC;;;;;QAGgBO,O,GAAVR,M","file":"index.js","sourcesContent":["/* @flow */\n\nimport PubNubCore from '../core/pubnub-common';\nimport Networking from '../networking';\nimport Database from '../db/common';\nimport { del, get, post } from '../networking/modules/titanium';\nimport { InternalSetupStruct } from '../core/flow_interfaces';\n\nclass PubNub extends PubNubCore {\n constructor(setup: InternalSetupStruct) {\n setup.db = new Database();\n setup.sdkFamily = 'TitaniumSDK';\n setup.networking = new Networking({ del, get, post });\n\n super(setup);\n }\n}\n\nexport { PubNub as default };\n"]} \ No newline at end of file diff --git a/lib/web/index.js b/lib/web/index.js index c9f320e0e..6568058cf 100644 --- a/lib/web/index.js +++ b/lib/web/index.js @@ -48,7 +48,7 @@ var _class = function (_PubNubCore) { setup.db = _web2.default; setup.sdkFamily = 'Web'; - setup.networking = new _networking2.default({ get: _webNode.get, post: _webNode.post, sendBeacon: sendBeacon }); + setup.networking = new _networking2.default({ del: _webNode.del, get: _webNode.get, post: _webNode.post, sendBeacon: sendBeacon }); var _this = _possibleConstructorReturn(this, (_class.__proto__ || Object.getPrototypeOf(_class)).call(this, setup)); diff --git a/lib/web/index.js.map b/lib/web/index.js.map index 61e615a91..0774cc96a 100644 --- a/lib/web/index.js.map +++ b/lib/web/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["web/index.js"],"names":["sendBeacon","url","navigator","setup","listenToBrowserNetworkEvents","db","sdkFamily","networking","get","post","window","addEventListener","networkDownDetected","networkUpDetected"],"mappings":";;;;;;AAGA;;;;AACA;;;;AACA;;;;AACA;;AACA;;;;;;;;;;AAEA,SAASA,UAAT,CAAoBC,GAApB,EAAiC;AAC/B,MAAIC,aAAaA,UAAUF,UAA3B,EAAuC;AACrCE,cAAUF,UAAV,CAAqBC,GAArB;AACD,GAFD,MAEO;AACL,WAAO,KAAP;AACD;AACF;;;;;AAGC,kBAAYE,KAAZ,EAAwC;AAAA;;AAAA,gCAEUA,KAFV,CAE9BC,4BAF8B;AAAA,QAE9BA,4BAF8B,yCAEC,IAFD;;;AAItCD,UAAME,EAAN;AACAF,UAAMG,SAAN,GAAkB,KAAlB;AACAH,UAAMI,UAAN,GAAmB,yBAAe,EAAEC,iBAAF,EAAOC,mBAAP,EAAaT,sBAAb,EAAf,CAAnB;;AANsC,gHAQhCG,KARgC;;AAUtC,QAAIC,4BAAJ,EAAkC;AAEhCM,aAAOC,gBAAP,CAAwB,SAAxB,EAAmC,YAAM;AACvC,cAAKC,mBAAL;AACD,OAFD;;AAIAF,aAAOC,gBAAP,CAAwB,QAAxB,EAAkC,YAAM;AACtC,cAAKE,iBAAL;AACD,OAFD;AAGD;AAnBqC;AAoBvC","file":"index.js","sourcesContent":["/* @flow */\n/* global navigator, window */\n\nimport PubNubCore from '../core/pubnub-common';\nimport Networking from '../networking';\nimport db from '../db/web';\nimport { get, post } from '../networking/modules/web-node';\nimport { InternalSetupStruct } from '../core/flow_interfaces';\n\nfunction sendBeacon(url: string) {\n if (navigator && navigator.sendBeacon) {\n navigator.sendBeacon(url);\n } else {\n return false;\n }\n}\n\nexport default class extends PubNubCore {\n constructor(setup: InternalSetupStruct) {\n // extract config.\n const { listenToBrowserNetworkEvents = true } = setup;\n\n setup.db = db;\n setup.sdkFamily = 'Web';\n setup.networking = new Networking({ get, post, sendBeacon });\n\n super(setup);\n\n if (listenToBrowserNetworkEvents) {\n // mount network events.\n window.addEventListener('offline', () => {\n this.networkDownDetected();\n });\n\n window.addEventListener('online', () => {\n this.networkUpDetected();\n });\n }\n }\n\n}\n"]} \ No newline at end of file +{"version":3,"sources":["web/index.js"],"names":["sendBeacon","url","navigator","setup","listenToBrowserNetworkEvents","db","sdkFamily","networking","del","get","post","window","addEventListener","networkDownDetected","networkUpDetected"],"mappings":";;;;;;AAGA;;;;AACA;;;;AACA;;;;AACA;;AACA;;;;;;;;;;AAEA,SAASA,UAAT,CAAoBC,GAApB,EAAiC;AAC/B,MAAIC,aAAaA,UAAUF,UAA3B,EAAuC;AACrCE,cAAUF,UAAV,CAAqBC,GAArB;AACD,GAFD,MAEO;AACL,WAAO,KAAP;AACD;AACF;;;;;AAGC,kBAAYE,KAAZ,EAAwC;AAAA;;AAAA,gCAEUA,KAFV,CAE9BC,4BAF8B;AAAA,QAE9BA,4BAF8B,yCAEC,IAFD;;;AAItCD,UAAME,EAAN;AACAF,UAAMG,SAAN,GAAkB,KAAlB;AACAH,UAAMI,UAAN,GAAmB,yBAAe,EAAEC,iBAAF,EAAOC,iBAAP,EAAYC,mBAAZ,EAAkBV,sBAAlB,EAAf,CAAnB;;AANsC,gHAQhCG,KARgC;;AAUtC,QAAIC,4BAAJ,EAAkC;AAEhCO,aAAOC,gBAAP,CAAwB,SAAxB,EAAmC,YAAM;AACvC,cAAKC,mBAAL;AACD,OAFD;;AAIAF,aAAOC,gBAAP,CAAwB,QAAxB,EAAkC,YAAM;AACtC,cAAKE,iBAAL;AACD,OAFD;AAGD;AAnBqC;AAoBvC","file":"index.js","sourcesContent":["/* @flow */\n/* global navigator, window */\n\nimport PubNubCore from '../core/pubnub-common';\nimport Networking from '../networking';\nimport db from '../db/web';\nimport { del, get, post } from '../networking/modules/web-node';\nimport { InternalSetupStruct } from '../core/flow_interfaces';\n\nfunction sendBeacon(url: string) {\n if (navigator && navigator.sendBeacon) {\n navigator.sendBeacon(url);\n } else {\n return false;\n }\n}\n\nexport default class extends PubNubCore {\n constructor(setup: InternalSetupStruct) {\n // extract config.\n const { listenToBrowserNetworkEvents = true } = setup;\n\n setup.db = db;\n setup.sdkFamily = 'Web';\n setup.networking = new Networking({ del, get, post, sendBeacon });\n\n super(setup);\n\n if (listenToBrowserNetworkEvents) {\n // mount network events.\n window.addEventListener('offline', () => {\n this.networkDownDetected();\n });\n\n window.addEventListener('online', () => {\n this.networkUpDetected();\n });\n }\n }\n\n}\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 3b79d2ab4..bc73343e6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pubnub", - "version": "4.15.1", + "version": "4.16.0", "author": "PubNub ", "description": "Publish & Subscribe Real-time Messaging with PubNub", "bin": {}, @@ -27,9 +27,9 @@ ], "dependencies": { "agentkeepalive": "^3.1.0", + "lil-uuid": "^0.1.1", "superagent": "^2.3.0", - "superagent-proxy": "^1.0.2", - "uuid": "^3.0.1" + "superagent-proxy": "^1.0.2" }, "noAnalyze": false, "devDependencies": { @@ -90,4 +90,4 @@ "engine": { "node": ">=0.8" } -} \ No newline at end of file +} diff --git a/src/core/components/config.js b/src/core/components/config.js index b1f2d131d..fd85b79de 100644 --- a/src/core/components/config.js +++ b/src/core/components/config.js @@ -218,7 +218,7 @@ export default class { setSendBeaconConfig(val: boolean): this { this._useSendBeacon = val; return this; } getVersion(): string { - return '4.15.1'; + return '4.16.0'; } _decideUUID(providedUUID: string): string { diff --git a/src/core/components/endpoint.js b/src/core/components/endpoint.js index eb4eb5f51..7fc21c390 100644 --- a/src/core/components/endpoint.js +++ b/src/core/components/endpoint.js @@ -137,6 +137,8 @@ export default function (modules, endpoint, ...args) { if (endpoint.usePost && endpoint.usePost(modules, incomingParams)) { let payload = endpoint.postPayload(modules, incomingParams); callInstance = networking.POST(outgoingParams, payload, networkingParams, onResponse); + } else if (endpoint.useDelete && endpoint.useDelete()) { + callInstance = networking.DELETE(outgoingParams, networkingParams, onResponse); } else { callInstance = networking.GET(outgoingParams, networkingParams, onResponse); } diff --git a/src/core/constants/operations.js b/src/core/constants/operations.js index 895707829..d2273b482 100644 --- a/src/core/constants/operations.js +++ b/src/core/constants/operations.js @@ -3,6 +3,7 @@ export default { PNTimeOperation: 'PNTimeOperation', PNHistoryOperation: 'PNHistoryOperation', + PNDeleteMessagesOperation: 'PNDeleteMessagesOperation', PNFetchMessagesOperation: 'PNFetchMessagesOperation', // pubsub diff --git a/src/core/endpoints/history/delete_messages.js b/src/core/endpoints/history/delete_messages.js new file mode 100644 index 000000000..e68e4eedb --- /dev/null +++ b/src/core/endpoints/history/delete_messages.js @@ -0,0 +1,60 @@ +/* @flow */ + +import { FetchHistoryArguments, HistoryResponse, ModulesInject } from '../../flow_interfaces'; +import operationConstants from '../../constants/operations'; +import utils from '../../utils'; + +export function getOperation(): string { + return operationConstants.PNDeleteMessagesOperation; +} + +export function validateParams(modules: ModulesInject, incomingParams: FetchHistoryArguments) { + let { channel } = incomingParams; + let { config } = modules; + + if (!channel) return 'Missing channel'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; +} + +export function useDelete() { + return true; +} + +export function getURL(modules: ModulesInject, incomingParams: FetchHistoryArguments): string { + let { channel, start, end } = incomingParams; + let { config } = modules; + let querystring = ''; + + if (start) { + querystring = `?start=${start}`; + } + + if (end) { + querystring += `${(querystring !== '' ? '&' : '?')}end=${end}`; + } + + return `/v3/history/sub-key/${config.subscribeKey}/channel/${utils.encodeString(channel)}${querystring}`; +} + +export function getRequestTimeout({ config }: ModulesInject): boolean { + return config.getTransactionTimeout(); +} + +export function isAuthSupported(): boolean { + return true; +} + +export function prepareParams(modules: ModulesInject, incomingParams: FetchHistoryArguments): Object { + const { start, end } = incomingParams; + + let outgoingParams: Object = {}; + + if (start) outgoingParams.start = start; + if (end) outgoingParams.end = end; + + return {}; +} + +export function handleResponse(modules: ModulesInject, serverResponse: Object): HistoryResponse { + return serverResponse.payload; +} diff --git a/src/core/endpoints/history.js b/src/core/endpoints/history/get_history.js similarity index 94% rename from src/core/endpoints/history.js rename to src/core/endpoints/history/get_history.js index 7a85485e3..c49a52493 100644 --- a/src/core/endpoints/history.js +++ b/src/core/endpoints/history/get_history.js @@ -1,8 +1,8 @@ /* @flow */ -import { FetchHistoryArguments, HistoryResponse, HistoryItem, ModulesInject } from '../flow_interfaces'; -import operationConstants from '../constants/operations'; -import utils from '../utils'; +import { FetchHistoryArguments, HistoryResponse, HistoryItem, ModulesInject } from '../../flow_interfaces'; +import operationConstants from '../../constants/operations'; +import utils from '../../utils'; function __processMessage(modules, message: Object): Object | null { let { config, crypto } = modules; diff --git a/src/core/pubnub-common.js b/src/core/pubnub-common.js index 562d1ea70..3dd22f84e 100644 --- a/src/core/pubnub-common.js +++ b/src/core/pubnub-common.js @@ -1,6 +1,6 @@ /* @flow */ -import uuidGenerator from 'uuid'; +import uuidGenerator from 'lil-uuid'; import Config from './components/config'; import Crypto from './components/cryptography/index'; @@ -31,7 +31,8 @@ import * as auditEndpointConfig from './endpoints/access_manager/audit'; import * as grantEndpointConfig from './endpoints/access_manager/grant'; import * as publishEndpointConfig from './endpoints/publish'; -import * as historyEndpointConfig from './endpoints/history'; +import * as historyEndpointConfig from './endpoints/history/get_history'; +import * as deleteMessagesEndpointConfig from './endpoints/history/delete_messages'; import * as fetchMessagesEndpointConfig from './endpoints/fetch_messages'; import * as timeEndpointConfig from './endpoints/time'; import * as subscribeEndpointConfig from './endpoints/subscribe'; @@ -52,6 +53,7 @@ export default class { fire: Function; history: Function; + deleteHistory: Function; fetchMessages: Function; // @@ -167,6 +169,7 @@ export default class { }; this.history = endpointCreator.bind(this, modules, historyEndpointConfig); + this.deleteMessages = endpointCreator.bind(this, modules, deleteMessagesEndpointConfig); this.fetchMessages = endpointCreator.bind(this, modules, fetchMessagesEndpointConfig); this.time = timeEndpoint; @@ -230,7 +233,7 @@ export default class { static generateUUID(): string { - return uuidGenerator.v4(); + return uuidGenerator(); } static OPERATIONS = OPERATIONS; diff --git a/src/networking/index.js b/src/networking/index.js index 4146260d3..e78058170 100644 --- a/src/networking/index.js +++ b/src/networking/index.js @@ -79,6 +79,10 @@ export default class { return this._modules.get(params, endpoint, callback); } + DELETE(params: Object, endpoint: EndpointDefinition, callback: Function) { + return this._modules.del(params, endpoint, callback); + } + _detectErrorCategory(err: Object): string { if (err.code === 'ENOTFOUND') return categoryConstants.PNNetworkIssuesCategory; if (err.code === 'ECONNREFUSED') return categoryConstants.PNNetworkIssuesCategory; diff --git a/src/networking/modules/react_native.js b/src/networking/modules/react_native.js index 7eec6aaa8..d4ff4971e 100644 --- a/src/networking/modules/react_native.js +++ b/src/networking/modules/react_native.js @@ -70,3 +70,9 @@ export function post(params: Object, body: string, endpoint: EndpointDefinition, return xdr.call(this, 'POST', url, params, body, endpoint, callback); } + +export function del(params: Object, endpoint: EndpointDefinition, callback: Function) { + let url = this.getStandardOrigin() + endpoint.url; + + return xdr.call(this, 'DELETE', url, params, '', endpoint, callback); +} diff --git a/src/networking/modules/titanium.js b/src/networking/modules/titanium.js index 9777545da..eead0e355 100644 --- a/src/networking/modules/titanium.js +++ b/src/networking/modules/titanium.js @@ -94,3 +94,11 @@ export function post(params: Object, body: string, endpoint: EndpointDefinition, return xdr.call(this, xhr, 'POST', url, params, JSON.parse(body), endpoint, callback); } + +export function del(params: Object, endpoint: EndpointDefinition, callback: Function) { + let xhr = getHttpClient(); + + let url = this.getStandardOrigin() + endpoint.url; + + return xdr.call(this, xhr, 'DELETE', url, params, {}, endpoint, callback); +} diff --git a/src/networking/modules/web-node.js b/src/networking/modules/web-node.js index 408b5e936..43dad73df 100644 --- a/src/networking/modules/web-node.js +++ b/src/networking/modules/web-node.js @@ -87,3 +87,10 @@ export function post(params: Object, body: string, endpoint: EndpointDefinition, .send(body); return xdr.call(this, superagentConstruct, endpoint, callback); } + +export function del(params: Object, endpoint: EndpointDefinition, callback: Function): superagent { + let superagentConstruct = superagent + .delete(this.getStandardOrigin() + endpoint.url) + .query(params); + return xdr.call(this, superagentConstruct, endpoint, callback); +} diff --git a/src/node/index.js b/src/node/index.js index e77834653..84e0cb4a6 100755 --- a/src/node/index.js +++ b/src/node/index.js @@ -3,14 +3,14 @@ import PubNubCore from '../core/pubnub-common'; import Networking from '../networking'; import Database from '../db/common'; -import { get, post } from '../networking/modules/web-node'; +import { del, get, post } from '../networking/modules/web-node'; import { keepAlive, proxy } from '../networking/modules/node'; import { InternalSetupStruct } from '../core/flow_interfaces'; export default class extends PubNubCore { constructor(setup: InternalSetupStruct) { setup.db = new Database(); - setup.networking = new Networking({ keepAlive, get, post, proxy }); + setup.networking = new Networking({ keepAlive, del, get, post, proxy }); setup.sdkFamily = 'Nodejs'; super(setup); diff --git a/src/react_native/index.js b/src/react_native/index.js index 2e0a50231..64151de84 100644 --- a/src/react_native/index.js +++ b/src/react_native/index.js @@ -3,13 +3,13 @@ import PubNubCore from '../core/pubnub-common'; import Networking from '../networking'; import Database from '../db/common'; -import { get, post } from '../networking/modules/web-node'; +import { del, 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.networking = new Networking({ del, get, post }); setup.sdkFamily = 'ReactNative'; setup.ssl = true; super(setup); diff --git a/src/titanium/index.js b/src/titanium/index.js index f0c081016..b61e1b92b 100644 --- a/src/titanium/index.js +++ b/src/titanium/index.js @@ -3,14 +3,14 @@ import PubNubCore from '../core/pubnub-common'; import Networking from '../networking'; import Database from '../db/common'; -import { get, post } from '../networking/modules/titanium'; +import { del, get, post } from '../networking/modules/titanium'; import { InternalSetupStruct } from '../core/flow_interfaces'; class PubNub extends PubNubCore { constructor(setup: InternalSetupStruct) { setup.db = new Database(); setup.sdkFamily = 'TitaniumSDK'; - setup.networking = new Networking({ get, post }); + setup.networking = new Networking({ del, get, post }); super(setup); } diff --git a/src/web/index.js b/src/web/index.js index 6dbda8285..a6a702890 100644 --- a/src/web/index.js +++ b/src/web/index.js @@ -4,7 +4,7 @@ import PubNubCore from '../core/pubnub-common'; import Networking from '../networking'; import db from '../db/web'; -import { get, post } from '../networking/modules/web-node'; +import { del, get, post } from '../networking/modules/web-node'; import { InternalSetupStruct } from '../core/flow_interfaces'; function sendBeacon(url: string) { @@ -22,7 +22,7 @@ export default class extends PubNubCore { setup.db = db; setup.sdkFamily = 'Web'; - setup.networking = new Networking({ get, post, sendBeacon }); + setup.networking = new Networking({ del, get, post, sendBeacon }); super(setup); diff --git a/test/unit/common.test.js b/test/unit/common.test.js index 4468cc84c..903f663ee 100644 --- a/test/unit/common.test.js +++ b/test/unit/common.test.js @@ -2,7 +2,7 @@ import assert from 'assert'; import sinon from 'sinon'; -import uuidGenerator from 'uuid'; +import uuidGenerator from 'lil-uuid'; import PubNub from '../../src/node/index'; import CryptoJS from '../../src/core/components/cryptography/hmac-sha256'; @@ -12,11 +12,11 @@ describe('#core / mounting point', () => { }); afterEach(() => { - uuidGenerator.v4.restore(); + uuidGenerator(); }); it('supports UUID generation', () => { - assert.equal(PubNub.generateUUID(), 'uuidCustom'); + assert.equal(uuidGenerator.isUUID(PubNub.generateUUID()), true); }); it('supports encryption', () => {